{
  "swagger": "2.0",
  "info": {
    "title": "Endor Labs REST API Reference",
    "description": "Integrate your application with Endor Labs using the REST API.",
    "version": "1.0"
  },
  "tags": [
    {
      "name": "AgentCatalogService"
    },
    {
      "name": "AgentConfigService"
    },
    {
      "name": "AgentHookEventService"
    },
    {
      "name": "AgentHookPolicyDefinitionService"
    },
    {
      "name": "AgentSessionService"
    },
    {
      "name": "AgentSessionCountQueryService"
    },
    {
      "name": "AgentTelemetryService"
    },
    {
      "name": "AgentToolService"
    },
    {
      "name": "AgentWorkflowService"
    },
    {
      "name": "AgenticAggregateService"
    },
    {
      "name": "AgenticInventoryService"
    },
    {
      "name": "AICreditMetricService"
    },
    {
      "name": "AIEmbeddingsRequestService"
    },
    {
      "name": "AIQueryService"
    },
    {
      "name": "AIRequestService"
    },
    {
      "name": "AISastCustomerContextService"
    },
    {
      "name": "AISastContextSummaryService"
    },
    {
      "name": "AISASTScanCacheService"
    },
    {
      "name": "AnalyticsExecutionRecordService"
    },
    {
      "name": "APIKeyValidatorService"
    },
    {
      "name": "APIKeyService"
    },
    {
      "name": "ApproveServiceRequestService"
    },
    {
      "name": "ArtifactLogService"
    },
    {
      "name": "ArtifactOperationService"
    },
    {
      "name": "ArtifactSignatureService"
    },
    {
      "name": "AssuredPackageVersionService"
    },
    {
      "name": "AuditLogService"
    },
    {
      "name": "ArchivedAuditLogService"
    },
    {
      "name": "AuthenticationService"
    },
    {
      "name": "AuthenticationLogService"
    },
    {
      "name": "AuthorizationPolicyService"
    },
    {
      "name": "AuthorizationService"
    },
    {
      "name": "CallGraphDataService"
    },
    {
      "name": "CIRunService"
    },
    {
      "name": "ChangeImpactService"
    },
    {
      "name": "ClientLogService"
    },
    {
      "name": "CodeOwnersService"
    },
    {
      "name": "ContainerBaseImageUpdateImpactQueryService"
    },
    {
      "name": "ContainerBaseImageUpdateImpactRecordsQueryService"
    },
    {
      "name": "ContributorService"
    },
    {
      "name": "ContributorHistoryService"
    },
    {
      "name": "ContributorIdentityMappingService"
    },
    {
      "name": "CertificateRequestService"
    },
    {
      "name": "CustomTemplateService"
    },
    {
      "name": "DashboardConfigService"
    },
    {
      "name": "DashboardSummaryQueryService"
    },
    {
      "name": "DemoService"
    },
    {
      "name": "DependencyMetadataService"
    },
    {
      "name": "BatchDependencyMetadataService"
    },
    {
      "name": "DepsDevPackageService"
    },
    {
      "name": "DetectLicenseQueryService"
    },
    {
      "name": "DistinctEntryService"
    },
    {
      "name": "EndorIgnoreEntryService"
    },
    {
      "name": "EndorLicenseService"
    },
    {
      "name": "ErrorParsingRuleService"
    },
    {
      "name": "EvaluationMethodService"
    },
    {
      "name": "EvaluationParameterService"
    },
    {
      "name": "ExporterService"
    },
    {
      "name": "ExternalProviderModelService"
    },
    {
      "name": "FeedbackService"
    },
    {
      "name": "FileSegmentsService"
    },
    {
      "name": "BatchFileSegmentsService"
    },
    {
      "name": "FileHashQueryRequestService"
    },
    {
      "name": "FindingService"
    },
    {
      "name": "FindingLogService"
    },
    {
      "name": "FunctionGraphDataService"
    },
    {
      "name": "GHEAppRegistrationService"
    },
    {
      "name": "GithubTokenService"
    },
    {
      "name": "HuggingFaceModelService"
    },
    {
      "name": "HuggingFaceOrganizationService"
    },
    {
      "name": "IdentityProviderService"
    },
    {
      "name": "SegmentIndexRequestService"
    },
    {
      "name": "IngestionStateService"
    },
    {
      "name": "InstallationService"
    },
    {
      "name": "InvitationService"
    },
    {
      "name": "IPAddressPolicyService"
    },
    {
      "name": "JobService"
    },
    {
      "name": "JVMClassMetadataService"
    },
    {
      "name": "LicenseService"
    },
    {
      "name": "LicenseDependencyService"
    },
    {
      "name": "LicenseNoticesReportService"
    },
    {
      "name": "LicenseSummaryService"
    },
    {
      "name": "LinterResultService"
    },
    {
      "name": "MalwareService"
    },
    {
      "name": "QueryMalwareService"
    },
    {
      "name": "MalwareDetectionAnalysisTaskService"
    },
    {
      "name": "MalwareDetectionArtifactDownloadStatusService"
    },
    {
      "name": "MalwareDetectionAssessmentService"
    },
    {
      "name": "MalwareDetectionIoCService"
    },
    {
      "name": "MalwareDetectionPackageService"
    },
    {
      "name": "MalwareDetectionPackageIoCService"
    },
    {
      "name": "MalwareDetectionWorkflowService"
    },
    {
      "name": "MalwareExposureService"
    },
    {
      "name": "MCPServerLogService"
    },
    {
      "name": "MetricService"
    },
    {
      "name": "MetricConfigurationService"
    },
    {
      "name": "NamespaceService"
    },
    {
      "name": "NotificationService"
    },
    {
      "name": "BatchNotificationService"
    },
    {
      "name": "NotificationActionService"
    },
    {
      "name": "NotificationTargetService"
    },
    {
      "name": "OnboardService"
    },
    {
      "name": "OnPremSchedulerService"
    },
    {
      "name": "OptimizedQueryService"
    },
    {
      "name": "OrganizationAllowedWorkflowsService"
    },
    {
      "name": "OrganizationBlockListService"
    },
    {
      "name": "OrganizationCICDPermissionsService"
    },
    {
      "name": "OrganizationCustomPermissionListService"
    },
    {
      "name": "OrganizationCustomRoleListService"
    },
    {
      "name": "OrganizationHookService"
    },
    {
      "name": "OrganizationInstallationListService"
    },
    {
      "name": "OrganizationInvitationListService"
    },
    {
      "name": "OrganizationMemberListService"
    },
    {
      "name": "OrganizationOutsideCollaboratorListService"
    },
    {
      "name": "OrganizationRunnerGroupConfigService"
    },
    {
      "name": "OrganizationSecurityManagerListService"
    },
    {
      "name": "OrganizationWorkflowPermissionsService"
    },
    {
      "name": "OSSDependencyRequestService"
    },
    {
      "name": "PackageService"
    },
    {
      "name": "PackageFirewallLogService"
    },
    {
      "name": "PackageLicenseService"
    },
    {
      "name": "PackageLicenseOverrideService"
    },
    {
      "name": "PackageLicenseQueryService"
    },
    {
      "name": "BatchPackageLicenseQueryService"
    },
    {
      "name": "PackageManagerService"
    },
    {
      "name": "PackageVersionService"
    },
    {
      "name": "PackageVersionLicenseQueryService"
    },
    {
      "name": "PackageVersionsMetadataService"
    },
    {
      "name": "PackageVersionMetadataQueryService"
    },
    {
      "name": "PackageVersionSourceMetadataService"
    },
    {
      "name": "PlatformAccountService"
    },
    {
      "name": "PlatformOrganizationService"
    },
    {
      "name": "PluginBinaryService"
    },
    {
      "name": "PolicyService"
    },
    {
      "name": "PolicyTemplateService"
    },
    {
      "name": "PolicyValidationService"
    },
    {
      "name": "PRCommentConfigService"
    },
    {
      "name": "ProjectService"
    },
    {
      "name": "ProjectSummaryService"
    },
    {
      "name": "ProvisioningResultService"
    },
    {
      "name": "QueryService"
    },
    {
      "name": "RegistryIngestionCheckpointService"
    },
    {
      "name": "RepositoryService"
    },
    {
      "name": "RepositoryBranchProtectionService"
    },
    {
      "name": "RepositoryCheckRunService"
    },
    {
      "name": "RepositoryCodeownersFileService"
    },
    {
      "name": "RepositoryCollaboratorsService"
    },
    {
      "name": "RepositoryCommitService"
    },
    {
      "name": "RepositoryDeploymentEnvConfigService"
    },
    {
      "name": "RepositoryHookService"
    },
    {
      "name": "RepositoryIssueService"
    },
    {
      "name": "RepositoryPullRequestService"
    },
    {
      "name": "RepositoryReleaseService"
    },
    {
      "name": "RepositoryScanMetadataService"
    },
    {
      "name": "RepositoryStatusService"
    },
    {
      "name": "RepositoryTagProtectionService"
    },
    {
      "name": "RepositoryVersionService"
    },
    {
      "name": "RequestAssuredPackageVersionService"
    },
    {
      "name": "RuleSetImportService"
    },
    {
      "name": "SavedQueryService"
    },
    {
      "name": "SBOMExportService"
    },
    {
      "name": "SBOMImportService"
    },
    {
      "name": "SBOMOrganizationalContactService"
    },
    {
      "name": "ScanCreditUsageService"
    },
    {
      "name": "ScanLogRequestService"
    },
    {
      "name": "ScanProfileService"
    },
    {
      "name": "ScanRequestService"
    },
    {
      "name": "ScanResultService"
    },
    {
      "name": "ScanWorkflowService"
    },
    {
      "name": "ScanWorkflowResultService"
    },
    {
      "name": "SCMAppService"
    },
    {
      "name": "SCMCredentialService"
    },
    {
      "name": "SCMWebhookEventService"
    },
    {
      "name": "ScopePolicyService"
    },
    {
      "name": "SecretRuleService"
    },
    {
      "name": "SecurityReviewPullRequestService"
    },
    {
      "name": "SecurityReviewQueryService"
    },
    {
      "name": "SegmentMatchValidateRequestService"
    },
    {
      "name": "SegmentQueryRequestService"
    },
    {
      "name": "SemgrepRuleService"
    },
    {
      "name": "ServiceRequestService"
    },
    {
      "name": "ServiceTokenService"
    },
    {
      "name": "QuerySimilarPackagesService"
    },
    {
      "name": "SupportAccessRequestService"
    },
    {
      "name": "SupportedToolChainProfileService"
    },
    {
      "name": "SupportedToolChainVersionService"
    },
    {
      "name": "SystemConfigService"
    },
    {
      "name": "TableRowGroupService"
    },
    {
      "name": "TelemetryService"
    },
    {
      "name": "TenantService"
    },
    {
      "name": "ToolPatternService"
    },
    {
      "name": "UITelemetryService"
    },
    {
      "name": "UserService"
    },
    {
      "name": "UserInfoService"
    },
    {
      "name": "UserTelemetryService"
    },
    {
      "name": "VectorStoreService"
    },
    {
      "name": "VectorStoreQueryService"
    },
    {
      "name": "VectorStoreMetadataQueryService"
    },
    {
      "name": "VectorStoreDataService"
    },
    {
      "name": "VectorStoreDataDeleteQueryService"
    },
    {
      "name": "VectorStoreDataDocumentConsistencyQueryService"
    },
    {
      "name": "VersionUpgradeService"
    },
    {
      "name": "VEXExportService"
    },
    {
      "name": "VulnerabilityService"
    },
    {
      "name": "QueryVulnerabilityService"
    }
  ],
  "schemes": [
    "https"
  ],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/v1/auth": {
      "get": {
        "summary": "Verify",
        "description": "Returns user authentication data and allows a user to validate their token.",
        "operationId": "UserInfoService_Verify",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1UserInfoResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "tags": [
          "UserInfoService"
        ],
        "x-internal": true
      }
    },
    "/v1/auth/api-key/validate": {
      "post": {
        "summary": "CreateAPIKeyReq",
        "description": "Validates an API key.",
        "operationId": "APIKeyValidatorService_CreateAPIKeyValidator",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ValidateAPIKeyReq"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "Validates an API key.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1ValidateAPIKeyReq"
            }
          }
        ],
        "tags": [
          "APIKeyValidatorService"
        ]
      }
    },
    "/v1/auth/{authentication_source}": {
      "get": {
        "summary": "Authenticate",
        "description": "Initiates an authentication request and returns a token along with the token expiration time for an authenticated user.",
        "operationId": "AuthenticationService_Authenticate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AuthenticationResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "authentication_source",
            "description": "Specifies a user's authentication method, such as \"GitHub\".",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "key",
            "description": "The API key used for system authentication.\n\nKey is required only if the authentication source is \"api-key\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "secret",
            "description": "The API secret used for system authentication.\n\nSecret is required only if the authentication source is \"api-key\".",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AuthenticationService"
        ]
      }
    },
    "/v1/auth/{authentication_source}/logout": {
      "get": {
        "summary": "Logout",
        "description": "Clears the user session and cookies.",
        "operationId": "AuthenticationService_Logout",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AuthenticationResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "authentication_source",
            "description": "Specifies a user's authentication method, such as \"GitHub\".",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "key",
            "description": "The API key used for system authentication.\n\nKey is required only if the authentication source is \"api-key\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "secret",
            "description": "The API secret used for system authentication.\n\nSecret is required only if the authentication source is \"api-key\".",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AuthenticationService"
        ]
      }
    },
    "/v1/custom-templates/{custom_template_type}/default": {
      "get": {
        "summary": "GetDefaultTemplate",
        "description": "Fetches the default template for the given template type.",
        "operationId": "CustomTemplateService_GetDefaultTemplate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1CustomTemplate"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "custom_template_type",
            "description": "template_type is the type of the template.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "platform_type",
            "description": "platform_type is the platform type for the templates being fetched for PR Comments.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "PLATFORM_SOURCE_UNSPECIFIED"
          }
        ],
        "tags": [
          "CustomTemplateService"
        ],
        "x-internal": true
      }
    },
    "/v1/github-tokens": {
      "get": {
        "summary": "ListGithubTokens",
        "description": "Lists all available GitHub tokens.",
        "operationId": "GithubTokenService_ListGithubTokens",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListGithubTokensResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "GithubTokenService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/agent-configs": {
      "patch": {
        "summary": "UpdateAgentConfig",
        "description": "Updates a specified AgentConfig.",
        "operationId": "AgentConfigService_UpdateAgentConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgentConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AgentConfigServiceUpdateAgentConfigBody"
            }
          }
        ],
        "tags": [
          "AgentConfigService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/agent-hook-events": {
      "patch": {
        "summary": "UpdateAgentHookEvent",
        "description": "Updates an AgentHookEvent specified by its UUID.",
        "operationId": "AgentHookEventService_UpdateAgentHookEvent",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgentHookEvent"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AgentHookEventServiceUpdateAgentHookEventBody"
            }
          }
        ],
        "tags": [
          "AgentHookEventService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/agent-hook-policy-definitions": {
      "patch": {
        "summary": "UpdateAgentHookPolicyDefinition",
        "description": "Updates a specified AgentHookPolicyDefinition.",
        "operationId": "AgentHookPolicyDefinitionService_UpdateAgentHookPolicyDefinition",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgentHookPolicyDefinition"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AgentHookPolicyDefinitionServiceUpdateAgentHookPolicyDefinitionBody"
            }
          }
        ],
        "tags": [
          "AgentHookPolicyDefinitionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/agent-sessions": {
      "patch": {
        "summary": "UpdateAgentSession",
        "description": "Updates a specified AgentSession.",
        "operationId": "AgentSessionService_UpdateAgentSession",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgentSession"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AgentSessionServiceUpdateAgentSessionBody"
            }
          }
        ],
        "tags": [
          "AgentSessionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/agent-workflows": {
      "patch": {
        "summary": "UpdateAgentWorkflow",
        "description": "Updates a specified AgentWorkflow.",
        "operationId": "AgentWorkflowService_UpdateAgentWorkflow",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgentWorkflow"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AgentWorkflowServiceUpdateAgentWorkflowBody"
            }
          }
        ],
        "tags": [
          "AgentWorkflowService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/agentic-inventory": {
      "patch": {
        "summary": "UpdateAgenticInventory updates an agentic inventory record.",
        "operationId": "AgenticInventoryService_UpdateAgenticInventory",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgenticInventory"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AgenticInventoryServiceUpdateAgenticInventoryBody"
            }
          }
        ],
        "tags": [
          "AgenticInventoryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/ai-sast-context-summaries": {
      "patch": {
        "summary": "UpdateAISastContextSummary refreshes section contents and inputs_hash.",
        "operationId": "AISastContextSummaryService_UpdateAISastContextSummary",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AISastContextSummary"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AISastContextSummaryServiceUpdateAISastContextSummaryBody"
            }
          }
        ],
        "tags": [
          "AISastContextSummaryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/ai-sast-customer-contexts": {
      "patch": {
        "summary": "UpdateAISastCustomerContext updates an entry from the request body.",
        "operationId": "AISastCustomerContextService_UpdateAISastCustomerContext",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AISastCustomerContext"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AISastCustomerContextServiceUpdateAISastCustomerContextBody"
            }
          }
        ],
        "tags": [
          "AISastCustomerContextService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/ai-sast-scan-caches": {
      "patch": {
        "summary": "UpdateAISASTScanCache",
        "description": "Updates an AI SAST scan cache entry with the information in the request body.",
        "operationId": "AISASTScanCacheService_UpdateAISASTScanCache",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AISASTScanCache"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AISASTScanCacheServiceUpdateAISASTScanCacheBody"
            }
          }
        ],
        "tags": [
          "AISASTScanCacheService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/analytics-execution-records": {
      "patch": {
        "summary": "UpdateAnalyticsExecutionRecord",
        "description": "Updates the analytic execution record objects.",
        "operationId": "AnalyticsExecutionRecordService_UpdateAnalyticsExecutionRecord",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AnalyticsExecutionRecord"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AnalyticsExecutionRecordServiceUpdateAnalyticsExecutionRecordBody"
            }
          }
        ],
        "tags": [
          "AnalyticsExecutionRecordService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/artifact-signatures": {
      "patch": {
        "summary": "UpdateArtifactSignature",
        "description": "Updates the artifact signature.",
        "operationId": "ArtifactSignatureService_UpdateArtifactSignature",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ArtifactSignature"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ArtifactSignatureServiceUpdateArtifactSignatureBody"
            }
          }
        ],
        "tags": [
          "ArtifactSignatureService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/assured-package-versions": {
      "patch": {
        "summary": "UpdateAssuredPackageVersion",
        "description": "Updates a specified assured package version.",
        "operationId": "AssuredPackageVersionService_UpdateAssuredPackageVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AssuredPackageVersion"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AssuredPackageVersionServiceUpdateAssuredPackageVersionBody"
            }
          }
        ],
        "tags": [
          "AssuredPackageVersionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/authorization-policies": {
      "patch": {
        "summary": "UpdateAuthorizationPolicy",
        "description": "Updates the authorization policy for a given tenant.",
        "operationId": "AuthorizationPolicyService_UpdateAuthorizationPolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AuthorizationPolicy"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AuthorizationPolicyServiceUpdateAuthorizationPolicyBody"
            }
          }
        ],
        "tags": [
          "AuthorizationPolicyService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/call-graph-data": {
      "patch": {
        "summary": "UpdateCallGraphData",
        "description": "Updates the metadata of a callgraph.",
        "operationId": "CallGraphDataService_UpdateCallGraphData",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1CallGraphData"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CallGraphDataServiceUpdateCallGraphDataBody"
            }
          }
        ],
        "tags": [
          "CallGraphDataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/ci-runs": {
      "patch": {
        "summary": "UpdateCIRun",
        "description": "Updates a specified CI run.",
        "operationId": "CIRunService_UpdateCIRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1CIRun"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CIRunServiceUpdateCIRunBody"
            }
          }
        ],
        "tags": [
          "CIRunService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/codeowners": {
      "patch": {
        "summary": "UpdateCodeOwners",
        "description": "Updates the CodeOwner object specified by the UUID.",
        "operationId": "CodeOwnersService_UpdateCodeOwners",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1CodeOwners"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CodeOwnersServiceUpdateCodeOwnersBody"
            }
          }
        ],
        "tags": [
          "CodeOwnersService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/contributor-history": {
      "patch": {
        "summary": "UpdateContributorHistory",
        "description": "Updates a contributor history record with the information in the request body.",
        "operationId": "ContributorHistoryService_UpdateContributorHistory",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ContributorHistory"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ContributorHistoryServiceUpdateContributorHistoryBody"
            }
          }
        ],
        "tags": [
          "ContributorHistoryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/contributor-identity-mappings": {
      "patch": {
        "summary": "UpdateContributorIdentityMapping updates a mapping; canonical_email is recomputed server-side when spec changes.",
        "operationId": "ContributorIdentityMappingService_UpdateContributorIdentityMapping",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ContributorIdentityMapping"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ContributorIdentityMappingServiceUpdateContributorIdentityMappingBody"
            }
          }
        ],
        "tags": [
          "ContributorIdentityMappingService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/dashboard-config": {
      "patch": {
        "summary": "UpdateDashboardConfig",
        "description": "Updates a specified dashboard configuration.",
        "operationId": "DashboardConfigService_UpdateDashboardConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DashboardConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DashboardConfigServiceUpdateDashboardConfigBody"
            }
          }
        ],
        "tags": [
          "DashboardConfigService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/demos": {
      "patch": {
        "summary": "UpdateDemo",
        "description": "Updates a provided namespace based on its UUID.",
        "operationId": "DemoService_UpdateDemo",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Demo"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DemoServiceUpdateDemoBody"
            }
          }
        ],
        "tags": [
          "DemoService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/dependency-metadata": {
      "patch": {
        "summary": "UpdateDependencyMetadata",
        "description": "Update a specified dependency metadata object.",
        "operationId": "DependencyMetadataService_UpdateDependencyMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DependencyMetadata"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DependencyMetadataServiceUpdateDependencyMetadataBody"
            }
          }
        ],
        "tags": [
          "DependencyMetadataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/endor-ignore-entries": {
      "patch": {
        "summary": "UpdateEndorIgnoreEntry",
        "description": "Updates the EndorIgnoreEntry object identified by the UUID.",
        "operationId": "EndorIgnoreEntryService_UpdateEndorIgnoreEntry",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1EndorIgnoreEntry"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EndorIgnoreEntryServiceUpdateEndorIgnoreEntryBody"
            }
          }
        ],
        "tags": [
          "EndorIgnoreEntryService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/endor-licenses": {
      "patch": {
        "summary": "UpdateEndorLicense",
        "description": "Updates a specified Endor Labs license.",
        "operationId": "EndorLicenseService_UpdateEndorLicense",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1EndorLicense"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EndorLicenseServiceUpdateEndorLicenseBody"
            }
          }
        ],
        "tags": [
          "EndorLicenseService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/error-parsing-rules": {
      "patch": {
        "summary": "UpdateErrorParsingRule",
        "description": "Updates an error parsing rule with the information in the request body.",
        "operationId": "ErrorParsingRuleService_UpdateErrorParsingRule",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ErrorParsingRule"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ErrorParsingRuleServiceUpdateErrorParsingRuleBody"
            }
          }
        ],
        "tags": [
          "ErrorParsingRuleService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/evaluation-methods": {
      "patch": {
        "summary": "UpdateEvaluationMethod",
        "description": "Updates the evaluation method.",
        "operationId": "EvaluationMethodService_UpdateEvaluationMethod",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1EvaluationMethod"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EvaluationMethodServiceUpdateEvaluationMethodBody"
            }
          }
        ],
        "tags": [
          "EvaluationMethodService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/evaluation-parameters": {
      "patch": {
        "summary": "UpdateEvaluationParameter",
        "description": "Updates an evaluation parameter.",
        "operationId": "EvaluationParameterService_UpdateEvaluationParameter",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1EvaluationParameter"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EvaluationParameterServiceUpdateEvaluationParameterBody"
            }
          }
        ],
        "tags": [
          "EvaluationParameterService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/exporters": {
      "patch": {
        "summary": "UpdateExporter",
        "description": "Updates a exporter.",
        "operationId": "ExporterService_UpdateExporter",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Exporter"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ExporterServiceUpdateExporterBody"
            }
          }
        ],
        "tags": [
          "ExporterService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/feedbacks": {
      "patch": {
        "summary": "UpdateFeedback",
        "description": "Updates a feedback with the information in the request body.",
        "operationId": "FeedbackService_UpdateFeedback",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Feedback"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/FeedbackServiceUpdateFeedbackBody"
            }
          }
        ],
        "tags": [
          "FeedbackService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/file-segments": {
      "patch": {
        "summary": "UpdateFileSegments",
        "description": "Update a specified file segment object.",
        "operationId": "FileSegmentsService_UpdateFileSegments",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1FileSegments"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/FileSegmentsServiceUpdateFileSegmentsBody"
            }
          }
        ],
        "tags": [
          "FileSegmentsService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/findings": {
      "patch": {
        "summary": "UpdateFinding",
        "description": "Update a specified finding.",
        "operationId": "FindingService_UpdateFinding",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Finding"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/FindingServiceUpdateFindingBody"
            }
          }
        ],
        "tags": [
          "FindingService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/function-graph-data": {
      "patch": {
        "summary": "UpdateFunctionGraphData",
        "description": "Updates the metadata of a callgraph.",
        "operationId": "FunctionGraphDataService_UpdateFunctionGraphData",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1FunctionGraphData"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/FunctionGraphDataServiceUpdateFunctionGraphDataBody"
            }
          }
        ],
        "tags": [
          "FunctionGraphDataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/identity-providers": {
      "patch": {
        "summary": "UpdateIdentityProvider",
        "description": "Updates an identity provider.",
        "operationId": "IdentityProviderService_UpdateIdentityProvider",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1IdentityProvider"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IdentityProviderServiceUpdateIdentityProviderBody"
            }
          }
        ],
        "tags": [
          "IdentityProviderService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/ingestion-state": {
      "patch": {
        "summary": "UpdateIngestionState updates the ingestion state.\nNote: This RPC is defined for code generation purposes (to generate URI method for UpdateIngestionStateRequest).\nThe actual update operations are performed directly by ingestors via database access, not through this RPC.",
        "operationId": "IngestionStateService_UpdateIngestionState",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1IngestionState"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IngestionStateServiceUpdateIngestionStateBody"
            }
          }
        ],
        "tags": [
          "IngestionStateService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/installations": {
      "patch": {
        "summary": "UpdateInstallation",
        "description": "Updates an installation.",
        "operationId": "InstallationService_UpdateInstallation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Installation"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/InstallationServiceUpdateInstallationBody"
            }
          }
        ],
        "tags": [
          "InstallationService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/invitations": {
      "patch": {
        "summary": "UpdateInvitation",
        "description": "Updates the invitation.",
        "operationId": "InvitationService_UpdateInvitation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Invitation"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/InvitationServiceUpdateInvitationBody"
            }
          }
        ],
        "tags": [
          "InvitationService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/ip-address-policies": {
      "patch": {
        "summary": "UpdateIPAddressPolicy",
        "description": "Updates a specified IPAddressPolicy.",
        "operationId": "IPAddressPolicyService_UpdateIPAddressPolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1IPAddressPolicy"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IPAddressPolicyServiceUpdateIPAddressPolicyBody"
            }
          }
        ],
        "tags": [
          "IPAddressPolicyService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/jobs": {
      "patch": {
        "summary": "UpdateJob",
        "description": "Updates the job.",
        "operationId": "JobService_UpdateJob",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/endorv1Job"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/JobServiceUpdateJobBody"
            }
          }
        ],
        "tags": [
          "JobService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/jvm-class-metadata": {
      "patch": {
        "summary": "UpdateJVMClassMetadata",
        "description": "Updates an jvm class metadata.",
        "operationId": "JVMClassMetadataService_UpdateJVMClassMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1JVMClassMetadata"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/JVMClassMetadataServiceUpdateJVMClassMetadataBody"
            }
          }
        ],
        "tags": [
          "JVMClassMetadataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/license-dependencies": {
      "patch": {
        "summary": "UpdateLicenseDependency",
        "description": "Updates the license dependency.",
        "operationId": "LicenseDependencyService_UpdateLicenseDependency",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1LicenseDependency"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LicenseDependencyServiceUpdateLicenseDependencyBody"
            }
          }
        ],
        "tags": [
          "LicenseDependencyService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/license-summaries": {
      "patch": {
        "summary": "UpdateLicenseSummary",
        "description": "Updates the license summary.",
        "operationId": "LicenseSummaryService_UpdateLicenseSummary",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1LicenseSummary"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LicenseSummaryServiceUpdateLicenseSummaryBody"
            }
          }
        ],
        "tags": [
          "LicenseSummaryService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/licenses": {
      "patch": {
        "summary": "UpdateLicense",
        "description": "Updates the license.",
        "operationId": "LicenseService_UpdateLicense",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/endorv1License"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LicenseServiceUpdateLicenseBody"
            }
          }
        ],
        "tags": [
          "LicenseService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/linter-results": {
      "patch": {
        "summary": "UpdateLinterResult",
        "description": "Updates a linter result.",
        "operationId": "LinterResultService_UpdateLinterResult",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1LinterResult"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LinterResultServiceUpdateLinterResultBody"
            }
          }
        ],
        "tags": [
          "LinterResultService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/malware": {
      "patch": {
        "summary": "UpdateMalware",
        "description": "Updates a malware record identified by the UUID.",
        "operationId": "MalwareService_UpdateMalware",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Malware"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MalwareServiceUpdateMalwareBody"
            }
          }
        ],
        "tags": [
          "MalwareService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/malware-detection-analysis-tasks": {
      "patch": {
        "summary": "UpdateMalwareDetectionAnalysisTask updates an analysis task.",
        "operationId": "MalwareDetectionAnalysisTaskService_UpdateMalwareDetectionAnalysisTask",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionAnalysisTask"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MalwareDetectionAnalysisTaskServiceUpdateMalwareDetectionAnalysisTaskBody"
            }
          }
        ],
        "tags": [
          "MalwareDetectionAnalysisTaskService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/malware-detection-artifact-download-status": {
      "patch": {
        "summary": "UpdateMalwareDetectionArtifactDownloadStatus updates an artifact download status.",
        "operationId": "MalwareDetectionArtifactDownloadStatusService_UpdateMalwareDetectionArtifactDownloadStatus",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionArtifactDownloadStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MalwareDetectionArtifactDownloadStatusServiceUpdateMalwareDetectionArtifactDownloadStatusBody"
            }
          }
        ],
        "tags": [
          "MalwareDetectionArtifactDownloadStatusService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/malware-detection-assessments": {
      "patch": {
        "summary": "UpdateMalwareDetectionAssessment updates an assessment.",
        "operationId": "MalwareDetectionAssessmentService_UpdateMalwareDetectionAssessment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionAssessment"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MalwareDetectionAssessmentServiceUpdateMalwareDetectionAssessmentBody"
            }
          }
        ],
        "tags": [
          "MalwareDetectionAssessmentService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/malware-detection-iocs": {
      "patch": {
        "summary": "UpdateMalwareDetectionIoC updates an IoC.",
        "operationId": "MalwareDetectionIoCService_UpdateMalwareDetectionIoC",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionIoC"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MalwareDetectionIoCServiceUpdateMalwareDetectionIoCBody"
            }
          }
        ],
        "tags": [
          "MalwareDetectionIoCService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/malware-detection-package-iocs": {
      "patch": {
        "summary": "UpdateMalwareDetectionPackageIoC updates a package-IoC relationship.",
        "operationId": "MalwareDetectionPackageIoCService_UpdateMalwareDetectionPackageIoC",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionPackageIoC"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MalwareDetectionPackageIoCServiceUpdateMalwareDetectionPackageIoCBody"
            }
          }
        ],
        "tags": [
          "MalwareDetectionPackageIoCService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/malware-detection-packages": {
      "patch": {
        "summary": "UpdateMalwareDetectionPackage updates a package record.",
        "operationId": "MalwareDetectionPackageService_UpdateMalwareDetectionPackage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionPackage"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MalwareDetectionPackageServiceUpdateMalwareDetectionPackageBody"
            }
          }
        ],
        "tags": [
          "MalwareDetectionPackageService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/malware-detection-workflows": {
      "patch": {
        "summary": "UpdateMalwareDetectionWorkflow updates an existing workflow configuration.",
        "operationId": "MalwareDetectionWorkflowService_UpdateMalwareDetectionWorkflow",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionWorkflow"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MalwareDetectionWorkflowServiceUpdateMalwareDetectionWorkflowBody"
            }
          }
        ],
        "tags": [
          "MalwareDetectionWorkflowService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/malware-exposure": {
      "patch": {
        "summary": "UpdateMalwareExposure",
        "description": "Updates the MalwareExposure object specified by the UUID.",
        "operationId": "MalwareExposureService_UpdateMalwareExposure",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareExposure"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MalwareExposureServiceUpdateMalwareExposureBody"
            }
          }
        ],
        "tags": [
          "MalwareExposureService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/metrics": {
      "patch": {
        "summary": "UpdateMetric",
        "description": "Updates a specified metric.\nThis will only be used by the backend services, the user/UI wil never have to do this.",
        "operationId": "MetricService_UpdateMetric",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/endorv1Metric"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MetricServiceUpdateMetricBody"
            }
          }
        ],
        "tags": [
          "MetricService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/namespaces": {
      "patch": {
        "summary": "UpdateNamespace",
        "description": "Updates a provided namespace based on its UUID.",
        "operationId": "NamespaceService_UpdateNamespace",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Namespace"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/NamespaceServiceUpdateNamespaceBody"
            }
          }
        ],
        "tags": [
          "NamespaceService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/namespaces/{object.uuid}/namespaces": {
      "patch": {
        "summary": "UpdateNamespace",
        "description": "Updates a provided namespace based on its UUID.",
        "operationId": "NamespaceService_UpdateNamespace2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Namespace"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "object.uuid",
            "description": "The UUID of a namespace.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/NamespaceServiceUpdateNamespaceBody"
            }
          }
        ],
        "tags": [
          "NamespaceService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/notification-targets": {
      "patch": {
        "summary": "UpdateNotificationTarget",
        "description": "Updates a notification target.",
        "operationId": "NotificationTargetService_UpdateNotificationTarget",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1NotificationTarget"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/NotificationTargetServiceUpdateNotificationTargetBody"
            }
          }
        ],
        "tags": [
          "NotificationTargetService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/notifications": {
      "patch": {
        "summary": "UpdateNotification",
        "description": "Updates the notification.",
        "operationId": "NotificationService_UpdateNotification",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Notification"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/NotificationServiceUpdateNotificationBody"
            }
          }
        ],
        "tags": [
          "NotificationService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/onprem-schedulers": {
      "patch": {
        "summary": "UpdateOnPremScheduler updates the specified onprem scheduler.",
        "operationId": "OnPremSchedulerService_UpdateOnPremScheduler",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OnPremScheduler"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OnPremSchedulerServiceUpdateOnPremSchedulerBody"
            }
          }
        ],
        "tags": [
          "OnPremSchedulerService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/organization-allowed-workflows": {
      "patch": {
        "summary": "UpdateOrganizationAllowedWorkflows",
        "description": "Updates the allowed workflows object of an organization.",
        "operationId": "OrganizationAllowedWorkflowsService_UpdateOrganizationAllowedWorkflows",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationAllowedWorkflows"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationAllowedWorkflowsServiceUpdateOrganizationAllowedWorkflowsBody"
            }
          }
        ],
        "tags": [
          "OrganizationAllowedWorkflowsService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/organization-block-lists": {
      "patch": {
        "summary": "UpdateOrganizationBlockList",
        "description": "Updates the blocked user list of a platform organization.",
        "operationId": "OrganizationBlockListService_UpdateOrganizationBlockList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationBlockList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationBlockListServiceUpdateOrganizationBlockListBody"
            }
          }
        ],
        "tags": [
          "OrganizationBlockListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/organization-cicd-permissions": {
      "patch": {
        "summary": "UpdateOrganizationCICDPermissions",
        "description": "Updates the CI/CD permissions object of a platform organization.",
        "operationId": "OrganizationCICDPermissionsService_UpdateOrganizationCICDPermissions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationCICDPermissions"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationCICDPermissionsServiceUpdateOrganizationCICDPermissionsBody"
            }
          }
        ],
        "tags": [
          "OrganizationCICDPermissionsService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/organization-custom-permission-lists": {
      "patch": {
        "summary": "UpdateOrganizationCustomPermissionList",
        "description": "Updates the custom fine grained permissions of a platform organization.",
        "operationId": "OrganizationCustomPermissionListService_UpdateOrganizationCustomPermissionList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationCustomPermissionList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationCustomPermissionListServiceUpdateOrganizationCustomPermissionListBody"
            }
          }
        ],
        "tags": [
          "OrganizationCustomPermissionListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/organization-custom-role-lists": {
      "patch": {
        "summary": "UpdateOrganizationCustomRoleList",
        "description": "Updates the custom role list of a platform organization.",
        "operationId": "OrganizationCustomRoleListService_UpdateOrganizationCustomRoleList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationCustomRoleList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationCustomRoleListServiceUpdateOrganizationCustomRoleListBody"
            }
          }
        ],
        "tags": [
          "OrganizationCustomRoleListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/organization-hooks": {
      "patch": {
        "summary": "UpdateOrganizationHook",
        "description": "Updates an organization hook.",
        "operationId": "OrganizationHookService_UpdateOrganizationHook",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationHook"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationHookServiceUpdateOrganizationHookBody"
            }
          }
        ],
        "tags": [
          "OrganizationHookService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/organization-installation-lists": {
      "patch": {
        "summary": "UpdateOrganizationInstallationList",
        "description": "Updates the installation information of a platform organization.",
        "operationId": "OrganizationInstallationListService_UpdateOrganizationInstallationList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationInstallationList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationInstallationListServiceUpdateOrganizationInstallationListBody"
            }
          }
        ],
        "tags": [
          "OrganizationInstallationListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/organization-invitation-lists": {
      "patch": {
        "summary": "UpdateOrganizationInvitationList",
        "description": "Updates invitations of a platform organization.",
        "operationId": "OrganizationInvitationListService_UpdateOrganizationInvitationList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationInvitationList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationInvitationListServiceUpdateOrganizationInvitationListBody"
            }
          }
        ],
        "tags": [
          "OrganizationInvitationListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/organization-member-lists": {
      "patch": {
        "summary": "UpdateOrganizationMemberList",
        "description": "Updates the members of a platform organization.",
        "operationId": "OrganizationMemberListService_UpdateOrganizationMemberList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationMemberList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationMemberListServiceUpdateOrganizationMemberListBody"
            }
          }
        ],
        "tags": [
          "OrganizationMemberListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/organization-outside-collaborator-lists": {
      "patch": {
        "summary": "UpdateOrganizationOutsideCollaboratorList",
        "description": "Updates outside collaborators of a platform organization.",
        "operationId": "OrganizationOutsideCollaboratorListService_UpdateOrganizationOutsideCollaboratorList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationOutsideCollaboratorList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationOutsideCollaboratorListServiceUpdateOrganizationOutsideCollaboratorListBody"
            }
          }
        ],
        "tags": [
          "OrganizationOutsideCollaboratorListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/organization-runner-group-config": {
      "patch": {
        "summary": "UpdateOrganizationRunnerGroupConfig",
        "description": "Updates the runner group configuration of a platform organization.",
        "operationId": "OrganizationRunnerGroupConfigService_UpdateOrganizationRunnerGroupConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationRunnerGroupConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationRunnerGroupConfigServiceUpdateOrganizationRunnerGroupConfigBody"
            }
          }
        ],
        "tags": [
          "OrganizationRunnerGroupConfigService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/organization-security-manager-lists": {
      "patch": {
        "summary": "UpdateOrganizationSecurityManagerList",
        "description": "Updates security managers of a platform organization.",
        "operationId": "OrganizationSecurityManagerListService_UpdateOrganizationSecurityManagerList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationSecurityManagerList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationSecurityManagerListServiceUpdateOrganizationSecurityManagerListBody"
            }
          }
        ],
        "tags": [
          "OrganizationSecurityManagerListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/organization-workflow-permissions": {
      "patch": {
        "summary": "UpdateOrganizationWorkflowPermissions",
        "description": "Updates workflow permissions of an organization.",
        "operationId": "OrganizationWorkflowPermissionsService_UpdateOrganizationWorkflowPermissions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationWorkflowPermissions"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationWorkflowPermissionsServiceUpdateOrganizationWorkflowPermissionsBody"
            }
          }
        ],
        "tags": [
          "OrganizationWorkflowPermissionsService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/package-license-overrides": {
      "patch": {
        "summary": "UpdatePackageLicenseOverride",
        "description": "Updates a specified package license override.",
        "operationId": "PackageLicenseOverrideService_UpdatePackageLicenseOverride",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageLicenseOverride"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PackageLicenseOverrideServiceUpdatePackageLicenseOverrideBody"
            }
          }
        ],
        "tags": [
          "PackageLicenseOverrideService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/package-licenses": {
      "patch": {
        "summary": "UpdatePackageLicense",
        "description": "Updates the package license.",
        "operationId": "PackageLicenseService_UpdatePackageLicense",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageLicense"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PackageLicenseServiceUpdatePackageLicenseBody"
            }
          }
        ],
        "tags": [
          "PackageLicenseService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/package-managers": {
      "patch": {
        "summary": "UpdatePackageManager",
        "description": "Updates a specified package manager.",
        "operationId": "PackageManagerService_UpdatePackageManager",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageManager"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PackageManagerServiceUpdatePackageManagerBody"
            }
          }
        ],
        "tags": [
          "PackageManagerService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/package-version-source-metadata": {
      "patch": {
        "summary": "UpdatePackageVersionSourceMetadata",
        "description": "Updates an package version source metadata.",
        "operationId": "PackageVersionSourceMetadataService_UpdatePackageVersionSourceMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageVersionSourceMetadata"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PackageVersionSourceMetadataServiceUpdatePackageVersionSourceMetadataBody"
            }
          }
        ],
        "tags": [
          "PackageVersionSourceMetadataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/package-versions": {
      "patch": {
        "summary": "UpdatePackageVersion",
        "description": "Updates a specified package version.",
        "operationId": "PackageVersionService_UpdatePackageVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageVersion"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PackageVersionServiceUpdatePackageVersionBody"
            }
          }
        ],
        "tags": [
          "PackageVersionService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/packages": {
      "patch": {
        "summary": "UpdatePackage",
        "description": "Updates a specified package.",
        "operationId": "PackageService_UpdatePackage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/endorv1Package"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PackageServiceUpdatePackageBody"
            }
          }
        ],
        "tags": [
          "PackageService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/platform-accounts": {
      "patch": {
        "summary": "UpdatePlatformAccount",
        "description": "Updates a platform account.",
        "operationId": "PlatformAccountService_UpdatePlatformAccount",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PlatformAccount"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PlatformAccountServiceUpdatePlatformAccountBody"
            }
          }
        ],
        "tags": [
          "PlatformAccountService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/platform-organizations": {
      "patch": {
        "summary": "UpdatePlatformOrganization",
        "description": "Updates a platform organization.",
        "operationId": "PlatformOrganizationService_UpdatePlatformOrganization",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PlatformOrganization"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PlatformOrganizationServiceUpdatePlatformOrganizationBody"
            }
          }
        ],
        "tags": [
          "PlatformOrganizationService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/policies": {
      "patch": {
        "summary": "UpdatePolicy",
        "description": "Updates the policy.",
        "operationId": "PolicyService_UpdatePolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Policy"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PolicyServiceUpdatePolicyBody"
            }
          }
        ],
        "tags": [
          "PolicyService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/policy-templates": {
      "patch": {
        "summary": "UpdatePolicyTemplate",
        "description": "Updates a policy template.",
        "operationId": "PolicyTemplateService_UpdatePolicyTemplate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PolicyTemplate"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PolicyTemplateServiceUpdatePolicyTemplateBody"
            }
          }
        ],
        "tags": [
          "PolicyTemplateService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/pr-comment-configs": {
      "patch": {
        "summary": "UpdatePRCommentConfig",
        "description": "Updates the the PR comment configuration.",
        "operationId": "PRCommentConfigService_UpdatePRCommentConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PRCommentConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PRCommentConfigServiceUpdatePRCommentConfigBody"
            }
          }
        ],
        "tags": [
          "PRCommentConfigService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/project-summaries": {
      "patch": {
        "summary": "UpdateProjectSummary",
        "description": "Updates a project summary with the information in the request body.",
        "operationId": "ProjectSummaryService_UpdateProjectSummary",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ProjectSummary"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ProjectSummaryServiceUpdateProjectSummaryBody"
            }
          }
        ],
        "tags": [
          "ProjectSummaryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/projects": {
      "patch": {
        "summary": "UpdateProject",
        "description": "Updates the specified project with the information in the request body.",
        "operationId": "ProjectService_UpdateProject",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Project"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ProjectServiceUpdateProjectBody"
            }
          }
        ],
        "tags": [
          "ProjectService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/provisioning-results": {
      "patch": {
        "summary": "UpdateProvisioningResult",
        "description": "Update a specified provisioning result.",
        "operationId": "ProvisioningResultService_UpdateProvisioningResult",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ProvisioningResult"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ProvisioningResultServiceUpdateProvisioningResultBody"
            }
          }
        ],
        "tags": [
          "ProvisioningResultService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/registry-ingestion-checkpoints": {
      "patch": {
        "summary": "UpdateRegistryIngestionCheckpoint",
        "description": "Updates a registry ingestion checkpoint.",
        "operationId": "RegistryIngestionCheckpointService_UpdateRegistryIngestionCheckpoint",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RegistryIngestionCheckpoint"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RegistryIngestionCheckpointServiceUpdateRegistryIngestionCheckpointBody"
            }
          }
        ],
        "tags": [
          "RegistryIngestionCheckpointService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/repositories": {
      "patch": {
        "summary": "UpdateRepository",
        "description": "Updates a source control repository with the information in the request body.",
        "operationId": "RepositoryService_UpdateRepository",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Repository"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryServiceUpdateRepositoryBody"
            }
          }
        ],
        "tags": [
          "RepositoryService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/repository-branch-protections": {
      "patch": {
        "summary": "UpdateRepositoryBranchProtection",
        "description": "Updates a repository branch protection with the information in the request body.",
        "operationId": "RepositoryBranchProtectionService_UpdateRepositoryBranchProtection",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryBranchProtection"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryBranchProtectionServiceUpdateRepositoryBranchProtectionBody"
            }
          }
        ],
        "tags": [
          "RepositoryBranchProtectionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/repository-check-runs": {
      "patch": {
        "summary": "UpdateRepositoryCheckRun",
        "description": "Updates a repository check run with the information in the request body.",
        "operationId": "RepositoryCheckRunService_UpdateRepositoryCheckRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryCheckRun"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryCheckRunServiceUpdateRepositoryCheckRunBody"
            }
          }
        ],
        "tags": [
          "RepositoryCheckRunService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/repository-codeowners-file": {
      "patch": {
        "summary": "UpdateRepositoryCodeownersFile",
        "description": "Updates a repository's codeowners file information with the information in the request body.",
        "operationId": "RepositoryCodeownersFileService_UpdateRepositoryCodeownersFile",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryCodeownersFile"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryCodeownersFileServiceUpdateRepositoryCodeownersFileBody"
            }
          }
        ],
        "tags": [
          "RepositoryCodeownersFileService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/repository-collaborators": {
      "patch": {
        "summary": "UpdateRepositoryCollaborators",
        "description": "Updates a repository collaborator with the information in the request body.",
        "operationId": "RepositoryCollaboratorsService_UpdateRepositoryCollaborators",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryCollaborators"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryCollaboratorsServiceUpdateRepositoryCollaboratorsBody"
            }
          }
        ],
        "tags": [
          "RepositoryCollaboratorsService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/repository-commits": {
      "patch": {
        "summary": "UpdateRepositoryCommit",
        "description": "Updates a repository commit with the information in the request body.",
        "operationId": "RepositoryCommitService_UpdateRepositoryCommit",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryCommit"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryCommitServiceUpdateRepositoryCommitBody"
            }
          }
        ],
        "tags": [
          "RepositoryCommitService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/repository-deployment-env-config": {
      "patch": {
        "summary": "UpdateRepositoryDeploymentEnvConfig",
        "description": "Updates a repository's deployment environment configuration with the information in the request body.",
        "operationId": "RepositoryDeploymentEnvConfigService_UpdateRepositoryDeploymentEnvConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryDeploymentEnvConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryDeploymentEnvConfigServiceUpdateRepositoryDeploymentEnvConfigBody"
            }
          }
        ],
        "tags": [
          "RepositoryDeploymentEnvConfigService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/repository-hooks": {
      "patch": {
        "summary": "UpdateRepositoryHook",
        "description": "Updates a repository hook with the information in the request body.",
        "operationId": "RepositoryHookService_UpdateRepositoryHook",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryHook"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryHookServiceUpdateRepositoryHookBody"
            }
          }
        ],
        "tags": [
          "RepositoryHookService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/repository-issues": {
      "patch": {
        "summary": "UpdateRepositoryIssue",
        "description": "Updates a repository issue with the information in the request body.",
        "operationId": "RepositoryIssueService_UpdateRepositoryIssue",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryIssue"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryIssueServiceUpdateRepositoryIssueBody"
            }
          }
        ],
        "tags": [
          "RepositoryIssueService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/repository-pull-requests": {
      "patch": {
        "summary": "UpdateRepositoryPullRequest",
        "description": "Updates a repository pull request with the information in the request body.",
        "operationId": "RepositoryPullRequestService_UpdateRepositoryPullRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryPullRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryPullRequestServiceUpdateRepositoryPullRequestBody"
            }
          }
        ],
        "tags": [
          "RepositoryPullRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/repository-releases": {
      "patch": {
        "summary": "UpdateRepositoryRelease",
        "description": "Updates a repository release with the information in the request body.",
        "operationId": "RepositoryReleaseService_UpdateRepositoryRelease",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryRelease"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryReleaseServiceUpdateRepositoryReleaseBody"
            }
          }
        ],
        "tags": [
          "RepositoryReleaseService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/repository-scan-metadata": {
      "patch": {
        "summary": "UpdateRepository",
        "description": "Updates the scan metadata of a repository.",
        "operationId": "RepositoryScanMetadataService_UpdateRepositoryScanMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryScanMetadata"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryScanMetadataServiceUpdateRepositoryScanMetadataBody"
            }
          }
        ],
        "tags": [
          "RepositoryScanMetadataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/repository-statuses": {
      "patch": {
        "summary": "UpdateRepositoryStatus",
        "description": "Updates a repository status with the information in the request body.",
        "operationId": "RepositoryStatusService_UpdateRepositoryStatus",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryStatusServiceUpdateRepositoryStatusBody"
            }
          }
        ],
        "tags": [
          "RepositoryStatusService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/repository-tag-protections": {
      "patch": {
        "summary": "UpdateRepositoryTagProtection",
        "description": "Updates a repository's tag protection information.",
        "operationId": "RepositoryTagProtectionService_UpdateRepositoryTagProtection",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryTagProtection"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryTagProtectionServiceUpdateRepositoryTagProtectionBody"
            }
          }
        ],
        "tags": [
          "RepositoryTagProtectionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/repository-versions": {
      "patch": {
        "summary": "UpdateRepositoryVersion",
        "description": "Updates a specified repository version with the information in the request body.",
        "operationId": "RepositoryVersionService_UpdateRepositoryVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryVersion"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryVersionServiceUpdateRepositoryVersionBody"
            }
          }
        ],
        "tags": [
          "RepositoryVersionService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/request-assured-package-versions": {
      "patch": {
        "summary": "UpdateRequestAssuredPackageVersion",
        "description": "Updates a specified request assured package version.",
        "operationId": "RequestAssuredPackageVersionService_UpdateRequestAssuredPackageVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RequestAssuredPackageVersion"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RequestAssuredPackageVersionServiceUpdateRequestAssuredPackageVersionBody"
            }
          }
        ],
        "tags": [
          "RequestAssuredPackageVersionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/rule-set-imports": {
      "patch": {
        "summary": "UpdateRuleSetImport",
        "description": "Updates an imported set of rules.",
        "operationId": "RuleSetImportService_UpdateRuleSetImport",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ImportedRuleSet"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RuleSetImportServiceUpdateRuleSetImportBody"
            }
          }
        ],
        "tags": [
          "RuleSetImportService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/saved-queries": {
      "patch": {
        "summary": "UpdateSavedQuery",
        "description": "Updates the saved queries.",
        "operationId": "SavedQueryService_UpdateSavedQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SavedQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SavedQueryServiceUpdateSavedQueryBody"
            }
          }
        ],
        "tags": [
          "SavedQueryService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/sbom-imports": {
      "patch": {
        "summary": "UpdateSBOMImport",
        "description": "Updates an imported SBOM.",
        "operationId": "SBOMImportService_UpdateSBOMImport",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ImportedSBOM"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SBOMImportServiceUpdateSBOMImportBody"
            }
          }
        ],
        "tags": [
          "SBOMImportService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/sbom-organizational-contacts": {
      "patch": {
        "summary": "UpdateSBOMOrganizationalContact",
        "description": "Updates an SBOM organizational contact.",
        "operationId": "SBOMOrganizationalContactService_UpdateSBOMOrganizationalContact",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SBOMOrganizationalContact"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SBOMOrganizationalContactServiceUpdateSBOMOrganizationalContactBody"
            }
          }
        ],
        "tags": [
          "SBOMOrganizationalContactService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/scan-profiles": {
      "patch": {
        "summary": "UpdateScanProfile updates a specified Toolchain profile.",
        "operationId": "ScanProfileService_UpdateScanProfile",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScanProfile"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ScanProfileServiceUpdateScanProfileBody"
            }
          }
        ],
        "tags": [
          "ScanProfileService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/scan-requests": {
      "patch": {
        "summary": "UpdateScanRequest",
        "description": "Updates a scan request with the information in the request\nbody.",
        "operationId": "ScanRequestService_UpdateScanRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScanRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ScanRequestServiceUpdateScanRequestBody"
            }
          }
        ],
        "tags": [
          "ScanRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/scan-results": {
      "patch": {
        "summary": "UpdateScanResult",
        "description": "Update a specified scan result.",
        "operationId": "ScanResultService_UpdateScanResult",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScanResult"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ScanResultServiceUpdateScanResultBody"
            }
          }
        ],
        "tags": [
          "ScanResultService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/scan-workflow-results": {
      "patch": {
        "summary": "UpdateScanWorkflowResult",
        "description": "Updates the specified scan workflow result with the information in the request body.",
        "operationId": "ScanWorkflowResultService_UpdateScanWorkflowResult",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScanWorkflowResult"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ScanWorkflowResultServiceUpdateScanWorkflowResultBody"
            }
          }
        ],
        "tags": [
          "ScanWorkflowResultService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/scan-workflows": {
      "patch": {
        "summary": "UpdateScanWorkflow",
        "description": "Updates the specified scan workflow with the information in the request\nbody.",
        "operationId": "ScanWorkflowService_UpdateScanWorkflow",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScanWorkflow"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ScanWorkflowServiceUpdateScanWorkflowBody"
            }
          }
        ],
        "tags": [
          "ScanWorkflowService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/scm-credentials": {
      "patch": {
        "summary": "UpdateSCMCredential updates the SCM credential specified in the request.",
        "operationId": "SCMCredentialService_UpdateSCMCredential",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SCMCredential"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SCMCredentialServiceUpdateSCMCredentialBody"
            }
          }
        ],
        "tags": [
          "SCMCredentialService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/scm_app": {
      "patch": {
        "summary": "UpdateSCMApp",
        "description": "Updates an SCM app.",
        "operationId": "SCMAppService_UpdateSCMApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SCMApp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SCMAppServiceUpdateSCMAppBody"
            }
          }
        ],
        "tags": [
          "SCMAppService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/scope-policies": {
      "patch": {
        "summary": "UpdateScopePolicy",
        "description": "Updates the scope policy.",
        "operationId": "ScopePolicyService_UpdateScopePolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScopePolicy"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ScopePolicyServiceUpdateScopePolicyBody"
            }
          }
        ],
        "tags": [
          "ScopePolicyService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/secret-rules": {
      "patch": {
        "summary": "UpdateSecretRule",
        "description": "Updates a secret rule.",
        "operationId": "SecretRuleService_UpdateSecretRule",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SecretRule"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SecretRuleServiceUpdateSecretRuleBody"
            }
          }
        ],
        "tags": [
          "SecretRuleService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/security-review-pull-requests": {
      "patch": {
        "summary": "UpdateSecurityReviewPullRequest",
        "description": "Updates a security review pull request with the information in the request body.",
        "operationId": "SecurityReviewPullRequestService_UpdateSecurityReviewPullRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SecurityReviewPullRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SecurityReviewPullRequestServiceUpdateSecurityReviewPullRequestBody"
            }
          }
        ],
        "tags": [
          "SecurityReviewPullRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/semgrep-rules": {
      "patch": {
        "summary": "UpdateSemgrepRule",
        "description": "Updates the Semgrep rule.",
        "operationId": "SemgrepRuleService_UpdateSemgrepRule",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SemgrepRule"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SemgrepRuleServiceUpdateSemgrepRuleBody"
            }
          }
        ],
        "tags": [
          "SemgrepRuleService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/service-requests": {
      "patch": {
        "summary": "UpdateServiceRequest",
        "description": "Updates a specified service request.",
        "operationId": "ServiceRequestService_UpdateServiceRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ServiceRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ServiceRequestServiceUpdateServiceRequestBody"
            }
          }
        ],
        "tags": [
          "ServiceRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/supported-toolchain-versions": {
      "patch": {
        "summary": "UpdateSupportedToolChainVersion updates a specified Toolchain profile.",
        "operationId": "SupportedToolChainVersionService_UpdateSupportedToolChainVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SupportedToolChainVersion"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SupportedToolChainVersionServiceUpdateSupportedToolChainVersionBody"
            }
          }
        ],
        "tags": [
          "SupportedToolChainVersionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/system-config": {
      "patch": {
        "summary": "UpdateSystemConfig",
        "description": "Updates the system configuration.",
        "operationId": "SystemConfigService_UpdateSystemConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SystemConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SystemConfigServiceUpdateSystemConfigBody"
            }
          }
        ],
        "tags": [
          "SystemConfigService"
        ]
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/table-row-groups": {
      "patch": {
        "summary": "UpdateTableRowGroup",
        "description": "Updates the table row group.",
        "operationId": "TableRowGroupService_UpdateTableRowGroup",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1TableRowGroup"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TableRowGroupServiceUpdateTableRowGroupBody"
            }
          }
        ],
        "tags": [
          "TableRowGroupService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/tool-patterns": {
      "patch": {
        "summary": "UpdateToolPattern",
        "description": "Updates a tool pattern.",
        "operationId": "ToolPatternService_UpdateToolPattern",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ToolPattern"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ToolPatternServiceUpdateToolPatternBody"
            }
          }
        ],
        "tags": [
          "ToolPatternService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/user-telemetries": {
      "patch": {
        "summary": "UpdateUserTelemetry",
        "description": "Updates a given user telemetry.",
        "operationId": "UserTelemetryService_UpdateUserTelemetry",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1UserTelemetry"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserTelemetryServiceUpdateUserTelemetryBody"
            }
          }
        ],
        "tags": [
          "UserTelemetryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{object.tenant_meta.namespace}/version-upgrades": {
      "patch": {
        "summary": "UpdateVersionUpgrade",
        "description": "Updates a version upgrade.",
        "operationId": "VersionUpgradeService_UpdateVersionUpgrade",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1VersionUpgrade"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "object.tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VersionUpgradeServiceUpdateVersionUpgradeBody"
            }
          }
        ],
        "tags": [
          "VersionUpgradeService"
        ]
      }
    },
    "/v1/namespaces/{target_namespace}/auth": {
      "get": {
        "summary": "GetActivePermissions",
        "description": "Returns user authentication data and allows a user to validate their token.",
        "operationId": "UserInfoService_GetActivePermissions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1UserInfoResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "target_namespace",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "UserInfoService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agent-configs": {
      "get": {
        "summary": "ListAgentConfigs",
        "description": "Lists all AgentConfings visible in a namespace.",
        "operationId": "AgentConfigService_ListAgentConfigs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAgentConfigsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AgentConfigService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateAgentConfig",
        "description": "Creates an AgentConfig.",
        "operationId": "AgentConfigService_CreateAgentConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgentConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AgentConfigServiceCreateAgentConfigBody"
            }
          }
        ],
        "tags": [
          "AgentConfigService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agent-configs/{uuid}": {
      "get": {
        "summary": "GetAgentConfig",
        "description": "Fetches an AgentConfig specified by its UUID.",
        "operationId": "AgentConfigService_GetAgentConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgentConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AgentConfigService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteAgentConfig",
        "description": "Deletes an AgentConfig specified by its UUID.",
        "operationId": "AgentConfigService_DeleteAgentConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AgentConfigService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agent-hook-events": {
      "get": {
        "summary": "ListAgentHookEvents",
        "description": "Lists all AgentHookEvents visible in a namespace.",
        "operationId": "AgentHookEventService_ListAgentHookEvents",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAgentHookEventsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AgentHookEventService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateAgentHookEvent",
        "description": "Creates an AgentHookEvent.",
        "operationId": "AgentHookEventService_CreateAgentHookEvent",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgentHookEvent"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AgentHookEventServiceCreateAgentHookEventBody"
            }
          }
        ],
        "tags": [
          "AgentHookEventService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agent-hook-events/{uuid}": {
      "delete": {
        "summary": "DeleteAgentHookEvent",
        "description": "Deletes an AgentHookEvent specified by its UUID.",
        "operationId": "AgentHookEventService_DeleteAgentHookEvent",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AgentHookEventService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agent-hook-policy-definitions": {
      "get": {
        "summary": "ListAgentHookPolicyDefinitions",
        "description": "Lists all AgentHookPolicyDefinitions visible in a namespace.",
        "operationId": "AgentHookPolicyDefinitionService_ListAgentHookPolicyDefinitions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAgentHookPolicyDefinitionsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AgentHookPolicyDefinitionService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateAgentHookPolicyDefinition",
        "description": "Creates an AgentHookPolicyDefinition.",
        "operationId": "AgentHookPolicyDefinitionService_CreateAgentHookPolicyDefinition",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgentHookPolicyDefinition"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AgentHookPolicyDefinitionServiceCreateAgentHookPolicyDefinitionBody"
            }
          }
        ],
        "tags": [
          "AgentHookPolicyDefinitionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agent-hook-policy-definitions/{uuid}": {
      "get": {
        "summary": "GetAgentHookPolicyDefinition",
        "description": "Fetches an AgentHookPolicyDefinition specified by its UUID.",
        "operationId": "AgentHookPolicyDefinitionService_GetAgentHookPolicyDefinition",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgentHookPolicyDefinition"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AgentHookPolicyDefinitionService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteAgentHookPolicyDefinition",
        "description": "Deletes an AgentHookPolicyDefinition specified by its UUID.",
        "operationId": "AgentHookPolicyDefinitionService_DeleteAgentHookPolicyDefinition",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AgentHookPolicyDefinitionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agent-sessions": {
      "get": {
        "summary": "ListAgentSessions",
        "description": "Lists all AgentSessions visible in a namespace.",
        "operationId": "AgentSessionService_ListAgentSessions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAgentSessionsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AgentSessionService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateAgentSession",
        "description": "Creates an AgentSession.",
        "operationId": "AgentSessionService_CreateAgentSession",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgentSession"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AgentSessionServiceCreateAgentSessionBody"
            }
          }
        ],
        "tags": [
          "AgentSessionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agent-sessions/{uuid}": {
      "get": {
        "summary": "GetAgentSession",
        "description": "Fetches an AgentSession specified by its UUID.",
        "operationId": "AgentSessionService_GetAgentSession",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgentSession"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AgentSessionService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteAgentSession",
        "description": "Deletes an AgentSession specified by its UUID.",
        "operationId": "AgentSessionService_DeleteAgentSession",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AgentSessionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agent-telemetry/activity": {
      "get": {
        "summary": "ListAgentActivity",
        "description": "Returns the per-agent usage summary for a tenant.",
        "operationId": "AgentTelemetryService_ListAgentActivity",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAgentActivityResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "window_days",
            "description": "Look-back window in days. Defaults to 7 when zero.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          }
        ],
        "tags": [
          "AgentTelemetryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agent-telemetry/agents/{agent_id}/calls": {
      "get": {
        "summary": "ListAgentCalls",
        "description": "Returns one agent's recent captured calls, newest first.",
        "operationId": "AgentTelemetryService_ListAgentCalls",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAgentCallsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "agent_id",
            "description": "The agent whose calls to return; matches EndorAgent.id in the catalog.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "Max rows to return. Defaults to 100 when zero.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "page_token",
            "description": "Opaque continuation token from a prior response.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "decision",
            "description": "Optional exact-match filter on decision. Accepted values: allowed, denied\n(case-sensitive); any other value is rejected.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "operation",
            "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",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AgentTelemetryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agent-tools": {
      "get": {
        "summary": "ListAgentTools",
        "description": "Lists all AgentTools visible in a namespace and available in the backend.",
        "operationId": "AgentToolService_ListAgentTools",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAgentToolsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AgentToolService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateAgentTool",
        "description": "Creates an entry for an agent tool. Not supported yet.",
        "operationId": "AgentToolService_CreateAgentTool",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgentTool"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AgentToolServiceCreateAgentToolBody"
            }
          }
        ],
        "tags": [
          "AgentToolService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agent-workflows": {
      "get": {
        "summary": "ListAgentWorkflows",
        "description": "Lists all AgentWorkflows visible in a namespace.",
        "operationId": "AgentWorkflowService_ListAgentWorkflows",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAgentWorkflowsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AgentWorkflowService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateAgentWorkflow",
        "description": "Creates an AgentWorkflow.",
        "operationId": "AgentWorkflowService_CreateAgentWorkflow",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgentWorkflow"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AgentWorkflowServiceCreateAgentWorkflowBody"
            }
          }
        ],
        "tags": [
          "AgentWorkflowService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agent-workflows/{uuid}": {
      "get": {
        "summary": "GetAgentWorkflow",
        "description": "Fetches an AgentWorkflow specified by its UUID.",
        "operationId": "AgentWorkflowService_GetAgentWorkflow",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgentWorkflow"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AgentWorkflowService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteAgentWorkflow",
        "description": "Deletes an AgentWorkflow specified by its UUID.",
        "operationId": "AgentWorkflowService_DeleteAgentWorkflow",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AgentWorkflowService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agentic-aggregates": {
      "get": {
        "summary": "ListAgenticAggregates returns aggregate records matching the given filters.",
        "operationId": "AgenticAggregateService_ListAgenticAggregates",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAgenticAggregateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AgenticAggregateService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agentic-aggregates/{uuid}": {
      "get": {
        "summary": "GetAgenticAggregate returns a single aggregate record by UUID.",
        "operationId": "AgenticAggregateService_GetAgenticAggregate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgenticAggregate"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AgenticAggregateService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteAgenticAggregate removes an aggregate record by UUID.",
        "operationId": "AgenticAggregateService_DeleteAgenticAggregate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AgenticAggregateService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agentic-inventory": {
      "get": {
        "summary": "ListAgenticInventory lists agentic inventory records.",
        "operationId": "AgenticInventoryService_ListAgenticInventory",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAgenticInventoryResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AgenticInventoryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agentic-inventory/{uuid}": {
      "get": {
        "summary": "GetAgenticInventory returns an agentic inventory record by UUID.",
        "operationId": "AgenticInventoryService_GetAgenticInventory",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgenticInventory"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AgenticInventoryService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteAgenticInventory deletes an agentic inventory record by UUID.",
        "operationId": "AgenticInventoryService_DeleteAgenticInventory",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AgenticInventoryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agents": {
      "get": {
        "summary": "ListEndorAgents",
        "description": "Returns the agent catalog. V1 returns the global catalog regardless of\nnamespace and applies no server-side filtering, sorting, or pagination;\nonly tenant_meta.namespace is read from the request.",
        "operationId": "AgentCatalogService_ListEndorAgents",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListEndorAgentsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AgentCatalogService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/agents/{uuid}": {
      "get": {
        "summary": "GetEndorAgent",
        "description": "Returns a single agent by uuid. Only uuid and tenant_meta.namespace are\nread from the request; other GetRequest fields are ignored in V1.",
        "operationId": "AgentCatalogService_GetEndorAgent",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1EndorAgent"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AgentCatalogService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ai-credit-metrics": {
      "get": {
        "summary": "ListAICreditMetrics",
        "description": "Lists all AICreditMetric visible for root namespace.",
        "operationId": "AICreditMetricService_ListAICreditMetrics",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAICreditMetricsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AICreditMetricService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ai-credit-metrics/{uuid}": {
      "get": {
        "summary": "GetAICreditMetric",
        "description": "Fetches an AICreditMetric specified by its UUID.",
        "operationId": "AICreditMetricService_GetAICreditMetric",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AICreditMetric"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AICreditMetricService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ai-embeddings-requests": {
      "post": {
        "summary": "CreateAIEmbeddingsRequest",
        "description": "Creates an embedding request.",
        "operationId": "AIEmbeddingsRequestService_CreateAIEmbeddingsRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AIEmbeddingsRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AIEmbeddingsRequestServiceCreateAIEmbeddingsRequestBody"
            }
          }
        ],
        "tags": [
          "AIEmbeddingsRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ai-queries": {
      "post": {
        "summary": "CreateAIQuery",
        "description": "Queries metrics for specific values. It returns back a text response.",
        "operationId": "AIQueryService_CreateAIQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AIQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AIQueryServiceCreateAIQueryBody"
            }
          }
        ],
        "tags": [
          "AIQueryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ai-requests": {
      "get": {
        "summary": "ListAIRequests",
        "description": "Lists all AIRequests visible in a namespace.",
        "operationId": "AIRequestService_ListAIRequests",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAIRequestsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AIRequestService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateAIRequest",
        "description": "Creates an AIRequest.",
        "operationId": "AIRequestService_CreateAIRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AIRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AIRequestServiceCreateAIRequestBody"
            }
          }
        ],
        "tags": [
          "AIRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ai-requests/{uuid}": {
      "get": {
        "summary": "GetAIRequest",
        "description": "Fetches an AIRequest specified by its UUID.",
        "operationId": "AIRequestService_GetAIRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AIRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AIRequestService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteAIRequest",
        "description": "Deletes an AIRequest specified by its UUID.",
        "operationId": "AIRequestService_DeleteAIRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AIRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ai-sast-context-summaries": {
      "get": {
        "summary": "ListAISastContextSummaries lists entries in a namespace; filter on project UUID and scope fields.",
        "operationId": "AISastContextSummaryService_ListAISastContextSummaries",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAISastContextSummariesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AISastContextSummaryService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateAISastContextSummary upserts on project scope or path scope.",
        "operationId": "AISastContextSummaryService_CreateAISastContextSummary",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AISastContextSummary"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AISastContextSummaryServiceCreateAISastContextSummaryBody"
            }
          }
        ],
        "tags": [
          "AISastContextSummaryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ai-sast-context-summaries/{uuid}": {
      "get": {
        "summary": "GetAISastContextSummary fetches an entry by UUID.",
        "operationId": "AISastContextSummaryService_GetAISastContextSummary",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AISastContextSummary"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AISastContextSummaryService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteAISastContextSummary deletes an entry by UUID.",
        "operationId": "AISastContextSummaryService_DeleteAISastContextSummary",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AISastContextSummaryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ai-sast-customer-contexts": {
      "get": {
        "summary": "ListAISastCustomerContexts lists entries in a namespace; filter on parent fields for tenant or project scope.",
        "operationId": "AISastCustomerContextService_ListAISastCustomerContexts",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAISastCustomerContextsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AISastCustomerContextService"
        ]
      },
      "post": {
        "summary": "CreateAISastCustomerContext creates a scoped context; namespace scope is carried by tenant_meta.namespace.",
        "operationId": "AISastCustomerContextService_CreateAISastCustomerContext",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AISastCustomerContext"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AISastCustomerContextServiceCreateAISastCustomerContextBody"
            }
          }
        ],
        "tags": [
          "AISastCustomerContextService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ai-sast-customer-contexts/{uuid}": {
      "get": {
        "summary": "GetAISastCustomerContext fetches an entry by UUID.",
        "operationId": "AISastCustomerContextService_GetAISastCustomerContext",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AISastCustomerContext"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AISastCustomerContextService"
        ]
      },
      "delete": {
        "summary": "DeleteAISastCustomerContext deletes an entry by UUID.",
        "operationId": "AISastCustomerContextService_DeleteAISastCustomerContext",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AISastCustomerContextService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ai-sast-scan-caches": {
      "get": {
        "summary": "ListAISASTScanCaches",
        "description": "Lists AI SAST scan cache entries in a given namespace.",
        "operationId": "AISASTScanCacheService_ListAISASTScanCaches",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAISASTScanCachesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AISASTScanCacheService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateAISASTScanCache",
        "description": "Creates an AI SAST scan cache entry. Upserts if a matching entry\n(same project, repository version, file path, and content hash)\nalready exists, updating the outcome and segments in place.",
        "operationId": "AISASTScanCacheService_CreateAISASTScanCache",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AISASTScanCache"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AISASTScanCacheServiceCreateAISASTScanCacheBody"
            }
          }
        ],
        "tags": [
          "AISASTScanCacheService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ai-sast-scan-caches/{uuid}": {
      "get": {
        "summary": "GetAISASTScanCache",
        "description": "Fetches an AI SAST scan cache entry identified by its UUID.",
        "operationId": "AISASTScanCacheService_GetAISASTScanCache",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AISASTScanCache"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AISASTScanCacheService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteAISASTScanCache",
        "description": "Deletes an AI SAST scan cache entry specified by its UUID.",
        "operationId": "AISASTScanCacheService_DeleteAISASTScanCache",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AISASTScanCacheService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/analytics-execution-records": {
      "get": {
        "summary": "ListAnalyticsExecutionRecord",
        "description": "Lists all analytics execution records for a given namespace.",
        "operationId": "AnalyticsExecutionRecordService_ListAnalyticsExecutionRecord",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAnalyticsExecutionRecordResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AnalyticsExecutionRecordService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateAnalyticsExecutionRecord",
        "description": "Creates an analytics execution record in a given namespace.",
        "operationId": "AnalyticsExecutionRecordService_CreateAnalyticsExecutionRecord",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AnalyticsExecutionRecord"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AnalyticsExecutionRecordServiceCreateAnalyticsExecutionRecordBody"
            }
          }
        ],
        "tags": [
          "AnalyticsExecutionRecordService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/analytics-execution-records/{uuid}": {
      "get": {
        "summary": "GetAnalyticsExecutionRecord",
        "description": "Fetches the analytics execution records for a specified UUID.",
        "operationId": "AnalyticsExecutionRecordService_GetAnalyticsExecutionRecord",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AnalyticsExecutionRecord"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AnalyticsExecutionRecordService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/api-keys": {
      "get": {
        "summary": "ListAPIKeys",
        "description": "Lists all API keys for a given namespace.",
        "operationId": "APIKeyService_ListAPIKeys",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAPIKeysResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "APIKeyService"
        ]
      },
      "post": {
        "summary": "CreateAPIKey",
        "description": "Creates an API key.",
        "operationId": "APIKeyService_CreateAPIKey",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1APIKey"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/APIKeyServiceCreateAPIKeyBody"
            }
          }
        ],
        "tags": [
          "APIKeyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/api-keys/{uuid}": {
      "get": {
        "summary": "GetAPIKey",
        "description": "Fetches the API key dentified by the UUID.",
        "operationId": "APIKeyService_GetAPIKey",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1APIKey"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "APIKeyService"
        ]
      },
      "delete": {
        "summary": "DeleteAPIKey",
        "description": "Deletes the API key specified by the UUID.",
        "operationId": "APIKeyService_DeleteAPIKey",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "APIKeyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/approve-service-requests": {
      "get": {
        "summary": "ListApproveServiceRequests",
        "description": "Lists all approve service requests in a namespace.",
        "operationId": "ApproveServiceRequestService_ListApproveServiceRequests",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListApproveServiceRequestsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ApproveServiceRequestService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateApproveServiceRequest",
        "description": "Creates an approve service request.",
        "operationId": "ApproveServiceRequestService_CreateApproveServiceRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ApproveServiceRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ApproveServiceRequestServiceCreateApproveServiceRequestBody"
            }
          }
        ],
        "tags": [
          "ApproveServiceRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/approve-service-requests/{uuid}": {
      "get": {
        "summary": "GetApproveServiceRequest",
        "description": "Fetches an approve service request specified by its UUID.",
        "operationId": "ApproveServiceRequestService_GetApproveServiceRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ApproveServiceRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ApproveServiceRequestService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteApproveServiceRequest",
        "description": "Deletes an approve service request specified by its UUID.",
        "operationId": "ApproveServiceRequestService_DeleteApproveServiceRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ApproveServiceRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/artifact-logs": {
      "get": {
        "summary": "ListArtifactLogs",
        "description": "Returns a list of artifact logs based on the specified list parameters.",
        "operationId": "ArtifactLogService_ListArtifactLogs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListArtifactLogsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ArtifactLogService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateArtifactLog",
        "description": "Creates a artifact log.",
        "operationId": "ArtifactLogService_CreateArtifactLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ArtifactLog"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ArtifactLogServiceCreateArtifactLogBody"
            }
          }
        ],
        "tags": [
          "ArtifactLogService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/artifact-logs/{uuid}": {
      "get": {
        "summary": "GetArtifactLog",
        "description": "Returns a specified artifact log.",
        "operationId": "ArtifactLogService_GetArtifactLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ArtifactLog"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ArtifactLogService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteArtifactLog",
        "description": "Deletes a artifact log specified by its UUID.",
        "operationId": "ArtifactLogService_DeleteArtifactLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ArtifactLogService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/artifact-operations": {
      "post": {
        "summary": "CreateArtifactOperation",
        "description": "Services the artifact operations.",
        "operationId": "ArtifactOperationService_CreateArtifactOperation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ArtifactOperation"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ArtifactOperationServiceCreateArtifactOperationBody"
            }
          }
        ],
        "tags": [
          "ArtifactOperationService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/artifact-signatures": {
      "get": {
        "summary": "ListArtifactSignatures",
        "description": "Lists all artifact signatures.",
        "operationId": "ArtifactSignatureService_ListArtifactSignatures",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListArtifactSignaturesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ArtifactSignatureService"
        ]
      },
      "post": {
        "summary": "CreateArtifactSignature",
        "description": "Creates a new artifact signature.",
        "operationId": "ArtifactSignatureService_CreateArtifactSignature",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ArtifactSignature"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ArtifactSignatureServiceCreateArtifactSignatureBody"
            }
          }
        ],
        "tags": [
          "ArtifactSignatureService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/artifact-signatures/{uuid}": {
      "get": {
        "summary": "GetArtifactSignature",
        "description": "Fetches an artifact signature identified by the UUID.",
        "operationId": "ArtifactSignatureService_GetArtifactSignature",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ArtifactSignature"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ArtifactSignatureService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/assured-package-versions": {
      "get": {
        "summary": "ListAssuredPackageVersions",
        "description": "Lists all assured package versions in a given namespace",
        "operationId": "AssuredPackageVersionService_ListAssuredPackageVersions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAssuredPackageVersionsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AssuredPackageVersionService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateAssuredPackageVersion",
        "description": "Creates an assured package version in a given namespace.",
        "operationId": "AssuredPackageVersionService_CreateAssuredPackageVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AssuredPackageVersion"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AssuredPackageVersionServiceCreateAssuredPackageVersionBody"
            }
          }
        ],
        "tags": [
          "AssuredPackageVersionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/assured-package-versions/{uuid}": {
      "get": {
        "summary": "GetAssuredPackageVersion",
        "description": "Fetches the assured package version identified by the UUID.",
        "operationId": "AssuredPackageVersionService_GetAssuredPackageVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AssuredPackageVersion"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AssuredPackageVersionService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteAssuredPackageVersion",
        "description": "Deletes an assured package version specified by its UUID.",
        "operationId": "AssuredPackageVersionService_DeleteAssuredPackageVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AssuredPackageVersionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/audit-logs": {
      "get": {
        "summary": "ListAuditLogs",
        "description": "List all audit logs in a given namespace.",
        "operationId": "AuditLogService_ListAuditLogs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAuditLogsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AuditLogService"
        ]
      },
      "post": {
        "summary": "CreateAuditLog",
        "description": "Creates an audit log for a given object.",
        "operationId": "AuditLogService_CreateAuditLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AuditLog"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AuditLogServiceCreateAuditLogBody"
            }
          }
        ],
        "tags": [
          "AuditLogService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/audit-logs/archived": {
      "get": {
        "summary": "ListArchivedAuditLogs",
        "description": "List all archived audit logs in a given namespace.",
        "operationId": "ArchivedAuditLogService_ListArchivedAuditLogs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAuditLogsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ArchivedAuditLogService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/audit-logs/{uuid}": {
      "get": {
        "summary": "GetAuditLog",
        "description": "Fetches an audit log identified by the UUID.",
        "operationId": "AuditLogService_GetAuditLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AuditLog"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AuditLogService"
        ]
      },
      "delete": {
        "summary": "DeleteAuditLog",
        "description": "Deletes an audit log specified by its UUID.",
        "operationId": "AuditLogService_DeleteAuditLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AuditLogService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/authentication-logs": {
      "get": {
        "summary": "ListAuthenticationLogs",
        "description": "Lists all authentication logs in a given namespace.",
        "operationId": "AuthenticationLogService_ListAuthenticationLogs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAuthenticationLogsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AuthenticationLogService"
        ]
      },
      "post": {
        "summary": "CreateAuthenticationLog",
        "description": "Creates an authentication log for a given object.",
        "operationId": "AuthenticationLogService_CreateAuthenticationLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AuthenticationLog"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AuthenticationLogServiceCreateAuthenticationLogBody"
            }
          }
        ],
        "tags": [
          "AuthenticationLogService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/authentication-logs/{uuid}": {
      "get": {
        "summary": "GetAuthenticationLog",
        "description": "Fetches the authentication log identified by the UUID.",
        "operationId": "AuthenticationLogService_GetAuthenticationLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AuthenticationLog"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AuthenticationLogService"
        ]
      },
      "delete": {
        "summary": "DeleteAuthenticationLog",
        "description": "Deletes the authentication log specified by its UUID.",
        "operationId": "AuthenticationLogService_DeleteAuthenticationLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AuthenticationLogService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/authorization-policies": {
      "get": {
        "summary": "ListAuthorizationPolicies",
        "description": "Lists all authorization policies for a given tenant.",
        "operationId": "AuthorizationPolicyService_ListAuthorizationPolicies",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListAuthorizationPoliciesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AuthorizationPolicyService"
        ]
      },
      "post": {
        "summary": "CreateAuthorizationPolicy",
        "description": "Creates an authorization policy for a given tenant.",
        "operationId": "AuthorizationPolicyService_CreateAuthorizationPolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AuthorizationPolicy"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AuthorizationPolicyServiceCreateAuthorizationPolicyBody"
            }
          }
        ],
        "tags": [
          "AuthorizationPolicyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/authorization-policies/{uuid}": {
      "get": {
        "summary": "GetAuthorizationPolicy",
        "description": "Fetches an authorization policy specified by its UUID.",
        "operationId": "AuthorizationPolicyService_GetAuthorizationPolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AuthorizationPolicy"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "AuthorizationPolicyService"
        ]
      },
      "delete": {
        "summary": "DeleteAuthorizationPolicy",
        "description": "Deletes an authorization policy specified by its UUID.",
        "operationId": "AuthorizationPolicyService_DeleteAuthorizationPolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "AuthorizationPolicyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/batch/dependency-metadata": {
      "post": {
        "summary": "CreateBatchDependencyMetadata",
        "description": "Create multiple dependency metadata objects through a batch API call.",
        "operationId": "BatchDependencyMetadataService_CreateBatchDependencyMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1BatchDependencyMetadata"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/BatchDependencyMetadataServiceCreateBatchDependencyMetadataBody"
            }
          }
        ],
        "tags": [
          "BatchDependencyMetadataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/batch/file-segments": {
      "post": {
        "summary": "CreateBatchFileSegments",
        "description": "Create multiple file segment objects through a batch API call.",
        "operationId": "BatchFileSegmentsService_CreateBatchFileSegments",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1BatchFileSegments"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/BatchFileSegmentsServiceCreateBatchFileSegmentsBody"
            }
          }
        ],
        "tags": [
          "BatchFileSegmentsService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/batch/notifications": {
      "post": {
        "summary": "CreateBatchNotification",
        "description": "Create multiple notification objects through a batch API call.",
        "operationId": "BatchNotificationService_CreateBatchNotification",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1BatchNotification"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/BatchNotificationServiceCreateBatchNotificationBody"
            }
          }
        ],
        "tags": [
          "BatchNotificationService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/call-graph-data": {
      "get": {
        "summary": "ListCallGraphData",
        "description": "Lists all call graph data in a namespace.",
        "operationId": "CallGraphDataService_ListCallGraphData",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListCallGraphDataResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "CallGraphDataService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreateCallGraphData",
        "description": "Creates a call graph. The object must\nprovide a parent ID that is the associated package version\nthat this call graph belongs to. A create operation will replace\nany previous data and is considered an upsert.",
        "operationId": "CallGraphDataService_CreateCallGraphData",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1CallGraphData"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CallGraphDataServiceCreateCallGraphDataBody"
            }
          }
        ],
        "tags": [
          "CallGraphDataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/call-graph-data/{uuid}": {
      "get": {
        "summary": "GetCallGraphData",
        "description": "Fetches the call graph for a given package version that is\ncaptured in the parent UUID.",
        "operationId": "CallGraphDataService_GetCallGraphData",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1CallGraphData"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "CallGraphDataService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeleteCallGraphData",
        "description": "Deletes a call graph for the given package version that\nis captured in the parent UUID.",
        "operationId": "CallGraphDataService_DeleteCallGraphData",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "CallGraphDataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/certificate-requests": {
      "post": {
        "summary": "CreateCertificate",
        "description": "Creates a new certificate from the provided certificate request.",
        "operationId": "CertificateRequestService_CreateCertificate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1CertificateRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CertificateRequestServiceCreateCertificateBody"
            }
          }
        ],
        "tags": [
          "CertificateRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ci-runs": {
      "get": {
        "summary": "ListCIRuns",
        "description": "Lists all CI runs in a namespace.",
        "operationId": "CIRunService_ListCIRuns",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListCIRunsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "CIRunService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateCIRun",
        "description": "Creates a CI run.",
        "operationId": "CIRunService_CreateCIRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1CIRun"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CIRunServiceCreateCIRunBody"
            }
          }
        ],
        "tags": [
          "CIRunService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ci-runs/{uuid}": {
      "get": {
        "summary": "GetCIRun",
        "description": "Fetches a CI run specified by its UUID.",
        "operationId": "CIRunService_GetCIRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1CIRun"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "CIRunService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteCIRun",
        "description": "Deletes a CI run specified by its UUID.",
        "operationId": "CIRunService_DeleteCIRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "CIRunService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/client-logs": {
      "post": {
        "summary": "CreateClientLog",
        "description": "Creates a client log for a given object.",
        "operationId": "ClientLogService_CreateClientLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ClientLog"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientLogServiceCreateClientLogBody"
            }
          }
        ],
        "tags": [
          "ClientLogService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/codeowners": {
      "get": {
        "summary": "ListCodeOwners",
        "description": "Lists all CodeOwners objects in a namespace.",
        "operationId": "CodeOwnersService_ListCodeOwners",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListCodeOwnersResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "CodeOwnersService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreateCodeOwners",
        "description": "Creates a CodeOwners object.",
        "operationId": "CodeOwnersService_CreateCodeOwners",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1CodeOwners"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CodeOwnersServiceCreateCodeOwnersBody"
            }
          }
        ],
        "tags": [
          "CodeOwnersService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/codeowners/{uuid}": {
      "get": {
        "summary": "GetCodeOwners",
        "description": "Fetches the CodeOwners object identified by the UUID.",
        "operationId": "CodeOwnersService_GetCodeOwners",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1CodeOwners"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "CodeOwnersService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeleteCodeOwners",
        "description": "Deletes the CodeOwners object specified by the UUID.",
        "operationId": "CodeOwnersService_DeleteCodeOwners",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "CodeOwnersService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/contributor-history": {
      "get": {
        "summary": "ListContributorHistory",
        "description": "Lists contributor history records in the given namespace.",
        "operationId": "ContributorHistoryService_ListContributorHistory",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListContributorHistoryResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ContributorHistoryService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateContributorHistory",
        "description": "Creates a contributor history snapshot record.",
        "operationId": "ContributorHistoryService_CreateContributorHistory",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ContributorHistory"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ContributorHistoryServiceCreateContributorHistoryBody"
            }
          }
        ],
        "tags": [
          "ContributorHistoryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/contributor-history/{uuid}": {
      "get": {
        "summary": "GetContributorHistory",
        "description": "Fetches a contributor history record identified by its UUID.",
        "operationId": "ContributorHistoryService_GetContributorHistory",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ContributorHistory"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ContributorHistoryService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteContributorHistory",
        "description": "Deletes a contributor history record specified by its UUID.",
        "operationId": "ContributorHistoryService_DeleteContributorHistory",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ContributorHistoryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/contributor-identity-mappings": {
      "get": {
        "summary": "ListContributorIdentityMappings lists mappings in the namespace.\nUse a list filter on spec.associated_emails (e.g. contains) to find every GitHub identity that lists a given email.",
        "operationId": "ContributorIdentityMappingService_ListContributorIdentityMappings",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListContributorIdentityMappingsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ContributorIdentityMappingService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateContributorIdentityMapping upserts a mapping keyed by tenant namespace and spec.login.",
        "operationId": "ContributorIdentityMappingService_CreateContributorIdentityMapping",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ContributorIdentityMapping"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ContributorIdentityMappingServiceCreateContributorIdentityMappingBody"
            }
          }
        ],
        "tags": [
          "ContributorIdentityMappingService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/contributor-identity-mappings/{uuid}": {
      "get": {
        "summary": "GetContributorIdentityMapping fetches a mapping by UUID.",
        "operationId": "ContributorIdentityMappingService_GetContributorIdentityMapping",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ContributorIdentityMapping"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ContributorIdentityMappingService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteContributorIdentityMapping deletes a mapping by UUID.",
        "operationId": "ContributorIdentityMappingService_DeleteContributorIdentityMapping",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ContributorIdentityMappingService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/contributors": {
      "get": {
        "summary": "ListContributors",
        "description": "Lists contributor records in the given namespace.",
        "operationId": "ContributorService_ListContributors",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListContributorsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ContributorService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateContributor",
        "description": "Upserts a contributor record.",
        "operationId": "ContributorService_CreateContributor",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Contributor"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ContributorServiceCreateContributorBody"
            }
          }
        ],
        "tags": [
          "ContributorService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/contributors/{uuid}": {
      "get": {
        "summary": "GetContributor",
        "description": "Fetches a contributor record identified by its UUID.",
        "operationId": "ContributorService_GetContributor",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Contributor"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ContributorService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/dashboard-config": {
      "get": {
        "summary": "ListDashboardConfig",
        "description": "Lists all dashboard configuration objects.",
        "operationId": "DashboardConfigService_ListDashboardConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListDashboardConfigResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "DashboardConfigService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateDashboardConfig",
        "description": "Creates a dashboard configuration object.",
        "operationId": "DashboardConfigService_CreateDashboardConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DashboardConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DashboardConfigServiceCreateDashboardConfigBody"
            }
          }
        ],
        "tags": [
          "DashboardConfigService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/dashboard-config/{uuid}": {
      "get": {
        "summary": "GetDashboardConfig",
        "description": "Fetches a specified dashboard configuration.",
        "operationId": "DashboardConfigService_GetDashboardConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DashboardConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "DashboardConfigService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteDashboardConfig",
        "description": "Deletes a specified dashboard configuration.",
        "operationId": "DashboardConfigService_DeleteDashboardConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "DashboardConfigService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/demos": {
      "get": {
        "summary": "ListDemos",
        "description": "Lists all namespaces in a tenant.",
        "operationId": "DemoService_ListDemos",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListDemosResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "DemoService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateDemo",
        "description": "Creates a namespace.",
        "operationId": "DemoService_CreateDemo",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Demo"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DemoServiceCreateDemoBody"
            }
          }
        ],
        "tags": [
          "DemoService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/demos/{uuid}": {
      "get": {
        "summary": "Hide the API from API docs. This is internal only service.\nGetDemo",
        "description": "Returns a provided namespace based on its UUID.",
        "operationId": "DemoService_GetDemo",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Demo"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "DemoService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteDemo",
        "description": "Deletes a provided namespace based on its UUID.",
        "operationId": "DemoService_DeleteDemo",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "DemoService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/dependency-metadata": {
      "get": {
        "summary": "ListDependencyMetadata",
        "description": "List dependency metadata objects based on the specified list\nparameters.",
        "operationId": "DependencyMetadataService_ListDependencyMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListDependencyMetadataResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "DependencyMetadataService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreateDependencyMetadata",
        "description": "Creates a dependency metadata object.",
        "operationId": "DependencyMetadataService_CreateDependencyMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DependencyMetadata"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DependencyMetadataServiceCreateDependencyMetadataBody"
            }
          }
        ],
        "tags": [
          "DependencyMetadataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/dependency-metadata/{uuid}": {
      "get": {
        "summary": "GetDependencyMetadata",
        "description": "Returns a specified dependency metadata object.",
        "operationId": "DependencyMetadataService_GetDependencyMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DependencyMetadata"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "DependencyMetadataService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeleteDependencyMetadata",
        "description": "Delete a specified dependency metadata object.",
        "operationId": "DependencyMetadataService_DeleteDependencyMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "DependencyMetadataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/depsdev-packages": {
      "get": {
        "summary": "ListDepsDevPackage",
        "description": "List DepsDevPackage objects based on the specified list parameters.",
        "operationId": "DepsDevPackageService_ListDepsDevPackage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListDepsDevPackageResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "DepsDevPackageService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateDepsDevPackage",
        "description": "Creates a DepsDevPackage object.",
        "operationId": "DepsDevPackageService_CreateDepsDevPackage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DepsDevPackage"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DepsDevPackageServiceCreateDepsDevPackageBody"
            }
          }
        ],
        "tags": [
          "DepsDevPackageService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/depsdev-packages/{uuid}": {
      "get": {
        "summary": "GetDepsDevPackage",
        "description": "Returns a specified DepsDevPackage object.",
        "operationId": "DepsDevPackageService_GetDepsDevPackage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DepsDevPackage"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "DepsDevPackageService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteDepsDevPackage",
        "description": "Delete a specified DepsDevPackage object.",
        "operationId": "DepsDevPackageService_DeleteDepsDevPackage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "DepsDevPackageService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/distinct-entries": {
      "get": {
        "summary": "ListDistinctEntry lists distinct tracking records.",
        "operationId": "DistinctEntryService_ListDistinctEntry",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListDistinctEntryResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "DistinctEntryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/distinct-entries/{uuid}": {
      "get": {
        "summary": "GetDistinctEntry returns a distinct tracking record by UUID.",
        "operationId": "DistinctEntryService_GetDistinctEntry",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DistinctEntry"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "DistinctEntryService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteDistinctEntry deletes a distinct tracking record by UUID.",
        "operationId": "DistinctEntryService_DeleteDistinctEntry",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "DistinctEntryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/endor-ignore-entries": {
      "get": {
        "summary": "ListEndorIgnoreEntries",
        "description": "Lists all EndorIgnoreEntry objects in a namespace.",
        "operationId": "EndorIgnoreEntryService_ListEndorIgnoreEntries",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListEndorIgnoreEntriesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "EndorIgnoreEntryService"
        ]
      },
      "post": {
        "summary": "CreateEndorIgnoreEntry",
        "description": "Creates an EndorIgnoreEntry object.",
        "operationId": "EndorIgnoreEntryService_CreateEndorIgnoreEntry",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1EndorIgnoreEntry"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EndorIgnoreEntryServiceCreateEndorIgnoreEntryBody"
            }
          }
        ],
        "tags": [
          "EndorIgnoreEntryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/endor-ignore-entries/{uuid}": {
      "get": {
        "summary": "GetEndorIgnoreEntry",
        "description": "Fetches the EndorIgnoreEntry object identified by the UUID.",
        "operationId": "EndorIgnoreEntryService_GetEndorIgnoreEntry",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1EndorIgnoreEntry"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "EndorIgnoreEntryService"
        ]
      },
      "delete": {
        "summary": "DeleteEndorIgnoreEntry",
        "description": "Deletes the EndorIgnoreEntry object identified by the UUID.",
        "operationId": "EndorIgnoreEntryService_DeleteEndorIgnoreEntry",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "EndorIgnoreEntryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/endor-licenses": {
      "get": {
        "summary": "ListEndorLicenses",
        "description": "Lists all Endor Labs licenses in a namespace.",
        "operationId": "EndorLicenseService_ListEndorLicenses",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListEndorLicensesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "EndorLicenseService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateEndorLicense",
        "description": "Creates an Endor Labs license.",
        "operationId": "EndorLicenseService_CreateEndorLicense",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1EndorLicense"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EndorLicenseServiceCreateEndorLicenseBody"
            }
          }
        ],
        "tags": [
          "EndorLicenseService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/endor-licenses/{uuid}": {
      "get": {
        "summary": "GetEndorLicense",
        "description": "Fetches an Endor Labs license specified by its UUID.",
        "operationId": "EndorLicenseService_GetEndorLicense",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1EndorLicense"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "EndorLicenseService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteEndorLicense",
        "description": "Deletes an Endor Labs license specified by its UUID.",
        "operationId": "EndorLicenseService_DeleteEndorLicense",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "EndorLicenseService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/error-parsing-rules": {
      "get": {
        "summary": "ListErrorParsingRules",
        "description": "Lists all error parsing rules in the given namespace.",
        "operationId": "ErrorParsingRuleService_ListErrorParsingRules",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListErrorParsingRulesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ErrorParsingRuleService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateErrorParsingRule",
        "description": "Creates an error parsing rule.",
        "operationId": "ErrorParsingRuleService_CreateErrorParsingRule",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ErrorParsingRule"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ErrorParsingRuleServiceCreateErrorParsingRuleBody"
            }
          }
        ],
        "tags": [
          "ErrorParsingRuleService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/error-parsing-rules/{uuid}": {
      "get": {
        "summary": "GetErrorParsingRule",
        "description": "Fetches an error parsing rule identified by the UUID.",
        "operationId": "ErrorParsingRuleService_GetErrorParsingRule",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ErrorParsingRule"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ErrorParsingRuleService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteErrorParsingRule",
        "description": "Deletes an error parsing rule specified by the UUID.",
        "operationId": "ErrorParsingRuleService_DeleteErrorParsingRule",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ErrorParsingRuleService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/evaluation-methods": {
      "get": {
        "summary": "ListEvaluationMethods",
        "description": "Lists all evaluation methods.",
        "operationId": "EvaluationMethodService_ListEvaluationMethods",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListEvaluationMethodsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "EvaluationMethodService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateEvaluationMethod",
        "description": "Creates an evaluation method.",
        "operationId": "EvaluationMethodService_CreateEvaluationMethod",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1EvaluationMethod"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EvaluationMethodServiceCreateEvaluationMethodBody"
            }
          }
        ],
        "tags": [
          "EvaluationMethodService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/evaluation-methods/{uuid}": {
      "get": {
        "summary": "GetEvaluationMethod",
        "description": "Fetches the evaluation method identified by the UUID.",
        "operationId": "EvaluationMethodService_GetEvaluationMethod",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1EvaluationMethod"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "EvaluationMethodService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteEvaluationMethod",
        "description": "Deletes the evaluation method specified by the UUID.",
        "operationId": "EvaluationMethodService_DeleteEvaluationMethod",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "EvaluationMethodService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/evaluation-parameters": {
      "get": {
        "summary": "ListEvaluationParameters",
        "description": "Lists all evaluation parameters.",
        "operationId": "EvaluationParameterService_ListEvaluationParameters",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListEvaluationParametersResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "EvaluationParameterService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateEvaluationParameter",
        "description": "Creates a evaluation parameter.",
        "operationId": "EvaluationParameterService_CreateEvaluationParameter",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1EvaluationParameter"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EvaluationParameterServiceCreateEvaluationParameterBody"
            }
          }
        ],
        "tags": [
          "EvaluationParameterService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/evaluation-parameters/{uuid}": {
      "get": {
        "summary": "GetEvaluationParameter",
        "description": "Fetches the evaluation parameter identified by the UUID.",
        "operationId": "EvaluationParameterService_GetEvaluationParameter",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1EvaluationParameter"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "EvaluationParameterService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteEvaluationParameter",
        "description": "Deletes the evaluation parameter specified by the UUID.",
        "operationId": "EvaluationParameterService_DeleteEvaluationParameter",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "EvaluationParameterService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/exporters": {
      "get": {
        "summary": "ListExporters",
        "description": "Lists all exporters.",
        "operationId": "ExporterService_ListExporters",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListExportersResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ExporterService"
        ]
      },
      "post": {
        "summary": "CreateExporter",
        "description": "Creates a exporter.",
        "operationId": "ExporterService_CreateExporter",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Exporter"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ExporterServiceCreateExporterBody"
            }
          }
        ],
        "tags": [
          "ExporterService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/exporters/{uuid}": {
      "get": {
        "summary": "GetExporter",
        "description": "Fetches the exporter identified by the UUID.",
        "operationId": "ExporterService_GetExporter",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Exporter"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ExporterService"
        ]
      },
      "delete": {
        "summary": "DeleteExporter",
        "description": "Deletes the exporter specified by the UUID.",
        "operationId": "ExporterService_DeleteExporter",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ExporterService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/external-provider-models": {
      "get": {
        "summary": "ListExternalProviderModels",
        "description": "Lists all external provider models in a given namespace.",
        "operationId": "ExternalProviderModelService_ListExternalProviderModels",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListExternalProviderModelsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ExternalProviderModelService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateExternalProviderModel",
        "description": "Creates an external provider model.",
        "operationId": "ExternalProviderModelService_CreateExternalProviderModel",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ExternalProviderModel"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ExternalProviderModelServiceCreateExternalProviderModelBody"
            }
          }
        ],
        "tags": [
          "ExternalProviderModelService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/external-provider-models/{uuid}": {
      "get": {
        "summary": "GetExternalProviderModel",
        "description": "Fetches the external provider model specified by the UUID.",
        "operationId": "ExternalProviderModelService_GetExternalProviderModel",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ExternalProviderModel"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ExternalProviderModelService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteExternalProviderModel",
        "description": "Deletes a specified external provider model specified by the UUID.",
        "operationId": "ExternalProviderModelService_DeleteExternalProviderModel",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ExternalProviderModelService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/feedbacks": {
      "get": {
        "summary": "ListFeedbacks",
        "description": "Lists the feedbacks in a given namespace.",
        "operationId": "FeedbackService_ListFeedbacks",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListFeedbacksResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "FeedbackService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateFeedback",
        "description": "Creates a feedback.",
        "operationId": "FeedbackService_CreateFeedback",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Feedback"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/FeedbackServiceCreateFeedbackBody"
            }
          }
        ],
        "tags": [
          "FeedbackService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/feedbacks/{uuid}": {
      "get": {
        "summary": "GetFeedback",
        "description": "Fetches a feedback identified by a given UUID.",
        "operationId": "FeedbackService_GetFeedback",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Feedback"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "FeedbackService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteFeedback",
        "description": "Deletes a feedback specified by its UUID.",
        "operationId": "FeedbackService_DeleteFeedback",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "FeedbackService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/file-segments": {
      "get": {
        "summary": "ListFileSegments",
        "description": "List file segment objects based on the specified list parameters.",
        "operationId": "FileSegmentsService_ListFileSegments",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListFileSegmentsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "FileSegmentsService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateFileSegments",
        "description": "Creates a file segment object.",
        "operationId": "FileSegmentsService_CreateFileSegments",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1FileSegments"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/FileSegmentsServiceCreateFileSegmentsBody"
            }
          }
        ],
        "tags": [
          "FileSegmentsService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/file-segments/{uuid}": {
      "get": {
        "summary": "GetFileSegments",
        "description": "Return a specified file segment object.",
        "operationId": "FileSegmentsService_GetFileSegments",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1FileSegments"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "FileSegmentsService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteFileSegments",
        "description": "Delete a specified file segment object.",
        "operationId": "FileSegmentsService_DeleteFileSegments",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "FileSegmentsService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/filehash-query-request": {
      "post": {
        "summary": "CreateFileHashQueryRequest",
        "description": "Creates a file hash query request.",
        "operationId": "FileHashQueryRequestService_CreateFileHashQueryRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1FileHashQueryRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/FileHashQueryRequestServiceCreateFileHashQueryRequestBody"
            }
          }
        ],
        "tags": [
          "FileHashQueryRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/finding-logs": {
      "get": {
        "summary": "ListFindingLogs",
        "description": "Returns a list of finding logs based on the specified list parameters.",
        "operationId": "FindingLogService_ListFindingLogs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListFindingLogsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "FindingLogService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreateFindingLog",
        "description": "Creates a finding log.",
        "operationId": "FindingLogService_CreateFindingLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1FindingLog"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/FindingLogServiceCreateFindingLogBody"
            }
          }
        ],
        "tags": [
          "FindingLogService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/finding-logs/{uuid}": {
      "get": {
        "summary": "GetFindingLog",
        "description": "Returns a specified finding log.",
        "operationId": "FindingLogService_GetFindingLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1FindingLog"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "FindingLogService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeleteFindingLog",
        "description": "Deletes a finding log specified by its UUID.",
        "operationId": "FindingLogService_DeleteFindingLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "FindingLogService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/findings": {
      "get": {
        "summary": "ListFindings",
        "description": "List findings based on the specified list parameters.",
        "operationId": "FindingService_ListFindings",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListFindingsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "FindingService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreateFinding",
        "description": "Create a finding.",
        "operationId": "FindingService_CreateFinding",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Finding"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/FindingServiceCreateFindingBody"
            }
          }
        ],
        "tags": [
          "FindingService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/findings/{uuid}": {
      "get": {
        "summary": "GetFinding",
        "description": "Fetch the finding identified by the UUID.",
        "operationId": "FindingService_GetFinding",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Finding"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "FindingService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeleteFinding",
        "description": "Delete the finding specified by the UUID.",
        "operationId": "FindingService_DeleteFinding",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "FindingService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/function-graph-data": {
      "get": {
        "summary": "ListFunctionGraphData",
        "description": "Lists all function graph data in a namespace.",
        "operationId": "FunctionGraphDataService_ListFunctionGraphData",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListFunctionGraphDataResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "FunctionGraphDataService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateFunctionGraphData",
        "description": "Creates a function graph. The object must\nprovide a parent ID that is the associated package version\nto which the function graph belongs. A create operation will replace\nany previous data and is considered an upsert.",
        "operationId": "FunctionGraphDataService_CreateFunctionGraphData",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1FunctionGraphData"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/FunctionGraphDataServiceCreateFunctionGraphDataBody"
            }
          }
        ],
        "tags": [
          "FunctionGraphDataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/function-graph-data/{uuid}": {
      "get": {
        "summary": "GetFunctionGraphData",
        "description": "Fetches the function graph for a given package version that is captured in the parent_uuid.",
        "operationId": "FunctionGraphDataService_GetFunctionGraphData",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1FunctionGraphData"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "FunctionGraphDataService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteFunctionGraphData",
        "description": "Deletes a function graph for the given package version that is captured in the parent_uuid.",
        "operationId": "FunctionGraphDataService_DeleteFunctionGraphData",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "FunctionGraphDataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ghe-app-registration": {
      "post": {
        "summary": "CreateGHEAppRegistration",
        "description": "Creates a GHE app registration link to register the app in the GHE instance.",
        "operationId": "GHEAppRegistrationService_CreateGHEAppRegistration",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1GHEAppRegistration"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/GHEAppRegistrationServiceCreateGHEAppRegistrationBody"
            }
          }
        ],
        "tags": [
          "GHEAppRegistrationService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/hugging-face-models": {
      "get": {
        "summary": "ListHuggingFaceModels",
        "description": "Lists all HuggingFace models in a given namespace.",
        "operationId": "HuggingFaceModelService_ListHuggingFaceModels",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListHuggingFaceModelsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "HuggingFaceModelService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreateHuggingFaceModel",
        "description": "Creates a HuggingFace model.",
        "operationId": "HuggingFaceModelService_CreateHuggingFaceModel",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1HuggingFaceModel"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/HuggingFaceModelServiceCreateHuggingFaceModelBody"
            }
          }
        ],
        "tags": [
          "HuggingFaceModelService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/hugging-face-models/{uuid}": {
      "get": {
        "summary": "GetHuggingFaceModel",
        "description": "Fetches the HuggingFace model specified by the UUID.",
        "operationId": "HuggingFaceModelService_GetHuggingFaceModel",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1HuggingFaceModel"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "HuggingFaceModelService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeleteHuggingFaceModel",
        "description": "Deletes a specified HuggingFace model specified by the UUID.",
        "operationId": "HuggingFaceModelService_DeleteHuggingFaceModel",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "HuggingFaceModelService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/hugging-face-organizations": {
      "get": {
        "summary": "ListHuggingFaceOrganizations",
        "description": "Lists all HuggingFace organizations in a given namespace.",
        "operationId": "HuggingFaceOrganizationService_ListHuggingFaceOrganizations",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListHuggingFaceOrganizationsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "HuggingFaceOrganizationService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreateHuggingFaceOrganization",
        "description": "Creates a HuggingFace organization.",
        "operationId": "HuggingFaceOrganizationService_CreateHuggingFaceOrganization",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1HuggingFaceOrganization"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/HuggingFaceOrganizationServiceCreateHuggingFaceOrganizationBody"
            }
          }
        ],
        "tags": [
          "HuggingFaceOrganizationService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/hugging-face-organizations/{uuid}": {
      "get": {
        "summary": "GetHuggingFaceOrganization",
        "description": "Fetches the HuggingFace organization specified by the UUID.",
        "operationId": "HuggingFaceOrganizationService_GetHuggingFaceOrganization",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1HuggingFaceOrganization"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "HuggingFaceOrganizationService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeleteHuggingFaceOrganization",
        "description": "Deletes a specified HuggingFace organization.",
        "operationId": "HuggingFaceOrganizationService_DeleteHuggingFaceOrganization",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "HuggingFaceOrganizationService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/identity-providers": {
      "get": {
        "summary": "ListIdentityProviders",
        "description": "Lists all identity providers.",
        "operationId": "IdentityProviderService_ListIdentityProviders",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListIdentityProvidersResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "IdentityProviderService"
        ]
      },
      "post": {
        "summary": "CreateIdentityProvider",
        "description": "Creates an identity provider.",
        "operationId": "IdentityProviderService_CreateIdentityProvider",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1IdentityProvider"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IdentityProviderServiceCreateIdentityProviderBody"
            }
          }
        ],
        "tags": [
          "IdentityProviderService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/identity-providers/{uuid}": {
      "get": {
        "summary": "GetIdentityProvider",
        "description": "Fetches the identity provider specified by the UUID.",
        "operationId": "IdentityProviderService_GetIdentityProvider",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1IdentityProvider"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "IdentityProviderService"
        ]
      },
      "delete": {
        "summary": "DeleteIdentityProvider",
        "description": "Deletes the identity provider specified by the UUID.",
        "operationId": "IdentityProviderService_DeleteIdentityProvider",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "IdentityProviderService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ingestion-state": {
      "get": {
        "summary": "ListIngestionState returns the ingestion state as a list.",
        "operationId": "IngestionStateService_ListIngestionState",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListIngestionStateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "IngestionStateService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateIngestionState creates an ingestion state.",
        "operationId": "IngestionStateService_CreateIngestionState",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1IngestionState"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IngestionStateServiceCreateIngestionStateBody"
            }
          }
        ],
        "tags": [
          "IngestionStateService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ingestion-state/{uuid}": {
      "get": {
        "summary": "GetIngestionState fetches the ingestion state specified by the UUID.",
        "operationId": "IngestionStateService_GetIngestionState",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1IngestionState"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "IngestionStateService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/installations": {
      "get": {
        "summary": "ListInstallations",
        "description": "Lists all installations.",
        "operationId": "InstallationService_ListInstallations",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListInstallationsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "InstallationService"
        ]
      },
      "post": {
        "summary": "CreateInstallation",
        "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",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Installation"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/InstallationServiceCreateInstallationBody"
            }
          }
        ],
        "tags": [
          "InstallationService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/installations/{uuid}": {
      "get": {
        "summary": "GetInstallation",
        "description": "Fetches an installation identified by the UUID.",
        "operationId": "InstallationService_GetInstallation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Installation"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "InstallationService"
        ]
      },
      "delete": {
        "summary": "DeleteInstallation",
        "description": "Deletes an installation specified by the UUID.",
        "operationId": "InstallationService_DeleteInstallation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "InstallationService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/invitations": {
      "get": {
        "summary": "ListInvitations",
        "description": "Lists the invitations in a namespace.",
        "operationId": "InvitationService_ListInvitations",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListInvitationsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "InvitationService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreateInvitation",
        "description": "Creates an invitation.",
        "operationId": "InvitationService_CreateInvitation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Invitation"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/InvitationServiceCreateInvitationBody"
            }
          }
        ],
        "tags": [
          "InvitationService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/invitations/{uuid}": {
      "get": {
        "summary": "GetInvitation",
        "description": "Fetches the invitation identified by the UUID.",
        "operationId": "InvitationService_GetInvitation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Invitation"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "InvitationService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeleteInvitation",
        "description": "Deletes the invitation specified by the UUID",
        "operationId": "InvitationService_DeleteInvitation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "InvitationService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ip-address-policies": {
      "get": {
        "summary": "ListIPAddresssPolicies",
        "description": "Returns a list of finding logs based on the specified list parameters.",
        "operationId": "IPAddressPolicyService_ListIPAddressPolicies",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListIPAddressPoliciesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "IPAddressPolicyService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreateIPAddressPolicy",
        "description": "Creates a finding log.",
        "operationId": "IPAddressPolicyService_CreateIPAddressPolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1IPAddressPolicy"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IPAddressPolicyServiceCreateIPAddressPolicyBody"
            }
          }
        ],
        "tags": [
          "IPAddressPolicyService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ip-address-policies/{uuid}": {
      "get": {
        "summary": "GetIPAddressPolicy",
        "description": "Returns a specified finding log.",
        "operationId": "IPAddressPolicyService_GetIPAddressPolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1IPAddressPolicy"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "IPAddressPolicyService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeleteIPAddressPolicy",
        "description": "Deletes a finding log specified by its UUID.",
        "operationId": "IPAddressPolicyService_DeleteIPAddressPolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "IPAddressPolicyService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/jobs": {
      "get": {
        "summary": "ListJobs",
        "description": "List all jobs.",
        "operationId": "JobService_ListJobs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListJobsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "JobService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateJob",
        "description": "Creates a job.",
        "operationId": "JobService_CreateJob",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/endorv1Job"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/JobServiceCreateJobBody"
            }
          }
        ],
        "tags": [
          "JobService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/jobs/{uuid}": {
      "get": {
        "summary": "GetJob",
        "description": "Fetches the job identified by the UUID.",
        "operationId": "JobService_GetJob",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/endorv1Job"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "JobService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteJob",
        "description": "Deletes the job specified by the UUID.",
        "operationId": "JobService_DeleteJob",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "JobService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/jvm-class-metadata": {
      "get": {
        "summary": "ListJVMClassMetadata",
        "description": "Lists all jvm class metadata in a given namespace.",
        "operationId": "JVMClassMetadataService_ListJVMClassMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListJVMClassMetadataResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "JVMClassMetadataService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateJVMClassMetadata",
        "description": "Creates a jvm class metadata.",
        "operationId": "JVMClassMetadataService_CreateJVMClassMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1JVMClassMetadata"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/JVMClassMetadataServiceCreateJVMClassMetadataBody"
            }
          }
        ],
        "tags": [
          "JVMClassMetadataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/jvm-class-metadata/{uuid}": {
      "get": {
        "summary": "GetJVMClassMetadata",
        "description": "Fetches the class metadata for a jvm class given an uuid.",
        "operationId": "JVMClassMetadataService_GetJVMClassMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1JVMClassMetadata"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "JVMClassMetadataService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteJVMClassMetadata",
        "description": "Deletes a jvm class metadata of a specified UUID.",
        "operationId": "JVMClassMetadataService_DeleteJVMClassMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "JVMClassMetadataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/license-dependencies": {
      "get": {
        "summary": "ListLicenseDependencies",
        "description": "Lists all the license dependencies in a given namespace.",
        "operationId": "LicenseDependencyService_ListLicenseDependencies",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListLicenseDependenciesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "LicenseDependencyService"
        ]
      },
      "post": {
        "summary": "CreateLicenseDependency",
        "description": "Creates a license dependency.",
        "operationId": "LicenseDependencyService_CreateLicenseDependency",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1LicenseDependency"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LicenseDependencyServiceCreateLicenseDependencyBody"
            }
          }
        ],
        "tags": [
          "LicenseDependencyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/license-dependencies/{uuid}": {
      "get": {
        "summary": "GetLicenseDependency",
        "description": "Fetches the license dependency specified by the UUID.",
        "operationId": "LicenseDependencyService_GetLicenseDependency",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1LicenseDependency"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "LicenseDependencyService"
        ]
      },
      "delete": {
        "summary": "DeleteLicenseDependency",
        "description": "Deletes the license dependency specified by the UUID.",
        "operationId": "LicenseDependencyService_DeleteLicenseDependency",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "LicenseDependencyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/license-notices-reports": {
      "post": {
        "summary": "GenerateLicenseNoticesReport",
        "description": "Creates a license notices report.",
        "operationId": "LicenseNoticesReportService_CreateLicenseNoticesReport",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1LicenseNoticesReport"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LicenseNoticesReportServiceCreateLicenseNoticesReportBody"
            }
          }
        ],
        "tags": [
          "LicenseNoticesReportService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/license-summaries": {
      "get": {
        "summary": "ListLicenseSummaries",
        "description": "Lists all the license summaries in a given namespace.",
        "operationId": "LicenseSummaryService_ListLicenseSummaries",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListLicenseSummariesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "LicenseSummaryService"
        ]
      },
      "post": {
        "summary": "CreateLicenseSummary",
        "description": "Creates a license summary.",
        "operationId": "LicenseSummaryService_CreateLicenseSummary",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1LicenseSummary"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LicenseSummaryServiceCreateLicenseSummaryBody"
            }
          }
        ],
        "tags": [
          "LicenseSummaryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/license-summaries/{uuid}": {
      "get": {
        "summary": "GetLicenseSummary",
        "description": "Fetches the license summary specified by the UUID.",
        "operationId": "LicenseSummaryService_GetLicenseSummary",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1LicenseSummary"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "LicenseSummaryService"
        ]
      },
      "delete": {
        "summary": "DeleteLicenseSummary",
        "description": "Deletes the license summary specified by the UUID.",
        "operationId": "LicenseSummaryService_DeleteLicenseSummary",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "LicenseSummaryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/licenses": {
      "get": {
        "summary": "ListLicenses",
        "description": "Lists all licenses in a namespace.",
        "operationId": "LicenseService_ListLicenses",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListLicenseResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "LicenseService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateLicense",
        "description": "Creates a license.",
        "operationId": "LicenseService_CreateLicense",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/endorv1License"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LicenseServiceCreateLicenseBody"
            }
          }
        ],
        "tags": [
          "LicenseService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/licenses/{uuid}": {
      "get": {
        "summary": "GetLicense",
        "description": "Fetches the license specified by the UUID.",
        "operationId": "LicenseService_GetLicense",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/endorv1License"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "LicenseService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteLicense",
        "description": "Deletes the license identified by the UUID.",
        "operationId": "LicenseService_DeleteLicense",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "LicenseService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/linter-results": {
      "get": {
        "summary": "ListLinterResults",
        "description": "Lists all linter results.",
        "operationId": "LinterResultService_ListLinterResults",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListLinterResultsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "LinterResultService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreateLinterResult",
        "description": "Creates a Semgrep rule.",
        "operationId": "LinterResultService_CreateLinterResult",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1LinterResult"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LinterResultServiceCreateLinterResultBody"
            }
          }
        ],
        "tags": [
          "LinterResultService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/linter-results/{uuid}": {
      "get": {
        "summary": "GetLinterResult",
        "description": "Fetches the linter result identified by the UUID.",
        "operationId": "LinterResultService_GetLinterResult",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1LinterResult"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "LinterResultService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeleteLinterResult",
        "description": "Deletes the linter result specified by the UUID.",
        "operationId": "LinterResultService_DeleteLinterResult",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "LinterResultService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware": {
      "get": {
        "summary": "ListMalware",
        "description": "List all malware in the namespace.",
        "operationId": "MalwareService_ListMalware",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListMalwareResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MalwareService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreateMalware",
        "description": "Creates a malware based on the ID.",
        "operationId": "MalwareService_CreateMalware",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Malware"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MalwareServiceCreateMalwareBody"
            }
          }
        ],
        "tags": [
          "MalwareService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware-detection-analysis-tasks": {
      "get": {
        "summary": "ListMalwareDetectionAnalysisTasks lists all analysis tasks in the namespace.",
        "operationId": "MalwareDetectionAnalysisTaskService_ListMalwareDetectionAnalysisTasks",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListMalwareDetectionAnalysisTasksResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MalwareDetectionAnalysisTaskService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateMalwareDetectionAnalysisTask creates a new analysis task.",
        "operationId": "MalwareDetectionAnalysisTaskService_CreateMalwareDetectionAnalysisTask",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionAnalysisTask"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MalwareDetectionAnalysisTaskServiceCreateMalwareDetectionAnalysisTaskBody"
            }
          }
        ],
        "tags": [
          "MalwareDetectionAnalysisTaskService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware-detection-analysis-tasks/{uuid}": {
      "get": {
        "summary": "GetMalwareDetectionAnalysisTask fetches an analysis task by UUID.",
        "operationId": "MalwareDetectionAnalysisTaskService_GetMalwareDetectionAnalysisTask",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionAnalysisTask"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "MalwareDetectionAnalysisTaskService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteMalwareDetectionAnalysisTask deletes an analysis task.",
        "operationId": "MalwareDetectionAnalysisTaskService_DeleteMalwareDetectionAnalysisTask",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MalwareDetectionAnalysisTaskService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware-detection-artifact-download-status": {
      "get": {
        "summary": "ListMalwareDetectionArtifactDownloadStatus lists all artifact download status in the namespace.",
        "operationId": "MalwareDetectionArtifactDownloadStatusService_ListMalwareDetectionArtifactDownloadStatus",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListMalwareDetectionArtifactDownloadStatusResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MalwareDetectionArtifactDownloadStatusService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateMalwareDetectionArtifactDownloadStatus creates a new artifact download status.",
        "operationId": "MalwareDetectionArtifactDownloadStatusService_CreateMalwareDetectionArtifactDownloadStatus",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionArtifactDownloadStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MalwareDetectionArtifactDownloadStatusServiceCreateMalwareDetectionArtifactDownloadStatusBody"
            }
          }
        ],
        "tags": [
          "MalwareDetectionArtifactDownloadStatusService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware-detection-artifact-download-status/{uuid}": {
      "get": {
        "summary": "GetMalwareDetectionArtifactDownloadStatus fetches an artifact download status by UUID.",
        "operationId": "MalwareDetectionArtifactDownloadStatusService_GetMalwareDetectionArtifactDownloadStatus",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionArtifactDownloadStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "MalwareDetectionArtifactDownloadStatusService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteMalwareDetectionArtifactDownloadStatus deletes an artifact download status.",
        "operationId": "MalwareDetectionArtifactDownloadStatusService_DeleteMalwareDetectionArtifactDownloadStatus",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MalwareDetectionArtifactDownloadStatusService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware-detection-assessments": {
      "get": {
        "summary": "ListMalwareDetectionAssessments lists all assessments in the namespace.",
        "operationId": "MalwareDetectionAssessmentService_ListMalwareDetectionAssessments",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListMalwareDetectionAssessmentsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MalwareDetectionAssessmentService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateMalwareDetectionAssessment creates a new assessment.",
        "operationId": "MalwareDetectionAssessmentService_CreateMalwareDetectionAssessment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionAssessment"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MalwareDetectionAssessmentServiceCreateMalwareDetectionAssessmentBody"
            }
          }
        ],
        "tags": [
          "MalwareDetectionAssessmentService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware-detection-assessments/{uuid}": {
      "get": {
        "summary": "GetMalwareDetectionAssessment fetches an assessment by UUID.",
        "operationId": "MalwareDetectionAssessmentService_GetMalwareDetectionAssessment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionAssessment"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "MalwareDetectionAssessmentService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteMalwareDetectionAssessment deletes an assessment.",
        "operationId": "MalwareDetectionAssessmentService_DeleteMalwareDetectionAssessment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MalwareDetectionAssessmentService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware-detection-iocs": {
      "get": {
        "summary": "ListMalwareDetectionIoCs lists all IoCs in the namespace.",
        "operationId": "MalwareDetectionIoCService_ListMalwareDetectionIoCs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListMalwareDetectionIoCsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MalwareDetectionIoCService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateMalwareDetectionIoC creates a new IoC.",
        "operationId": "MalwareDetectionIoCService_CreateMalwareDetectionIoC",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionIoC"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MalwareDetectionIoCServiceCreateMalwareDetectionIoCBody"
            }
          }
        ],
        "tags": [
          "MalwareDetectionIoCService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware-detection-iocs/{uuid}": {
      "get": {
        "summary": "GetMalwareDetectionIoC fetches an IoC by UUID.",
        "operationId": "MalwareDetectionIoCService_GetMalwareDetectionIoC",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionIoC"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "MalwareDetectionIoCService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteMalwareDetectionIoC deletes an IoC.",
        "operationId": "MalwareDetectionIoCService_DeleteMalwareDetectionIoC",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MalwareDetectionIoCService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware-detection-package-iocs": {
      "get": {
        "summary": "ListMalwareDetectionPackageIoCs lists all package-IoC relationships in the namespace.",
        "operationId": "MalwareDetectionPackageIoCService_ListMalwareDetectionPackageIoCs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListMalwareDetectionPackageIoCsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MalwareDetectionPackageIoCService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateMalwareDetectionPackageIoC creates a new package-IoC relationship.",
        "operationId": "MalwareDetectionPackageIoCService_CreateMalwareDetectionPackageIoC",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionPackageIoC"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MalwareDetectionPackageIoCServiceCreateMalwareDetectionPackageIoCBody"
            }
          }
        ],
        "tags": [
          "MalwareDetectionPackageIoCService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware-detection-package-iocs/{uuid}": {
      "get": {
        "summary": "GetMalwareDetectionPackageIoC fetches a package-IoC relationship by UUID.",
        "operationId": "MalwareDetectionPackageIoCService_GetMalwareDetectionPackageIoC",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionPackageIoC"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "MalwareDetectionPackageIoCService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteMalwareDetectionPackageIoC deletes a package-IoC relationship.",
        "operationId": "MalwareDetectionPackageIoCService_DeleteMalwareDetectionPackageIoC",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MalwareDetectionPackageIoCService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware-detection-packages": {
      "get": {
        "summary": "ListMalwareDetectionPackages lists all packages in the namespace.",
        "operationId": "MalwareDetectionPackageService_ListMalwareDetectionPackages",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListMalwareDetectionPackagesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MalwareDetectionPackageService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateMalwareDetectionPackage creates a new package record.",
        "operationId": "MalwareDetectionPackageService_CreateMalwareDetectionPackage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionPackage"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MalwareDetectionPackageServiceCreateMalwareDetectionPackageBody"
            }
          }
        ],
        "tags": [
          "MalwareDetectionPackageService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware-detection-packages/{uuid}": {
      "get": {
        "summary": "GetMalwareDetectionPackage fetches a package by UUID.",
        "operationId": "MalwareDetectionPackageService_GetMalwareDetectionPackage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionPackage"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "MalwareDetectionPackageService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteMalwareDetectionPackage deletes a package record.",
        "operationId": "MalwareDetectionPackageService_DeleteMalwareDetectionPackage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MalwareDetectionPackageService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware-detection-workflows": {
      "get": {
        "summary": "ListMalwareDetectionWorkflows lists all workflows in the namespace.",
        "operationId": "MalwareDetectionWorkflowService_ListMalwareDetectionWorkflows",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListMalwareDetectionWorkflowsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MalwareDetectionWorkflowService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateMalwareDetectionWorkflow creates a new workflow configuration.",
        "operationId": "MalwareDetectionWorkflowService_CreateMalwareDetectionWorkflow",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionWorkflow"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MalwareDetectionWorkflowServiceCreateMalwareDetectionWorkflowBody"
            }
          }
        ],
        "tags": [
          "MalwareDetectionWorkflowService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware-detection-workflows/{uuid}": {
      "get": {
        "summary": "GetMalwareDetectionWorkflow fetches a workflow by UUID.",
        "operationId": "MalwareDetectionWorkflowService_GetMalwareDetectionWorkflow",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareDetectionWorkflow"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "MalwareDetectionWorkflowService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteMalwareDetectionWorkflow deletes a workflow configuration.",
        "operationId": "MalwareDetectionWorkflowService_DeleteMalwareDetectionWorkflow",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MalwareDetectionWorkflowService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware-exposure": {
      "get": {
        "summary": "ListMalwareExposure",
        "description": "Lists all MalwareExposure objects in a namespace.",
        "operationId": "MalwareExposureService_ListMalwareExposure",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListMalwareExposureResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MalwareExposureService"
        ]
      },
      "post": {
        "summary": "CreateMalwareExposure",
        "description": "Creates a MalwareExposure object.",
        "operationId": "MalwareExposureService_CreateMalwareExposure",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareExposure"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MalwareExposureServiceCreateMalwareExposureBody"
            }
          }
        ],
        "tags": [
          "MalwareExposureService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware-exposure/{uuid}": {
      "get": {
        "summary": "GetMalwareExposure",
        "description": "Fetches the MalwareExposure object identified by the UUID.",
        "operationId": "MalwareExposureService_GetMalwareExposure",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MalwareExposure"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "MalwareExposureService"
        ]
      },
      "delete": {
        "summary": "DeleteMalwareExposure",
        "description": "Deletes the MalwareExposure object specified by the UUID.",
        "operationId": "MalwareExposureService_DeleteMalwareExposure",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MalwareExposureService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/malware/{uuid}": {
      "get": {
        "summary": "GetMalware",
        "description": "Fetches a malware identified by the UUID.",
        "operationId": "MalwareService_GetMalware",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Malware"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "MalwareService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeleteMalware",
        "description": "Deletes a malware record identified by the UUID.",
        "operationId": "MalwareService_DeleteMalware",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MalwareService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/master-toolchain-profiles": {
      "get": {
        "summary": "ListSupportedToolChainProfiles returns a list of toolchain profiles in a specified namespace.",
        "operationId": "SupportedToolChainProfileService_ListSupportedToolChainProfiles2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListSupportedToolChainProfilesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SupportedToolChainProfileService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/master-toolchain-profiles/{uuid}": {
      "get": {
        "operationId": "SupportedToolChainProfileService_GetSupportedToolChainProfile2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SupportedToolChainProfile"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "SupportedToolChainProfileService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/master-toolchain-versions": {
      "get": {
        "summary": "ListSupportedToolChainVersions returns a list of toolchain profiles in a specified namespace.",
        "operationId": "SupportedToolChainVersionService_ListSupportedToolChainVersions2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListSupportedToolChainVersionsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SupportedToolChainVersionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/master-toolchain-versions/{uuid}": {
      "get": {
        "summary": "GetSupportedToolChainVersion returns a toolchain profile specified by its UUID.",
        "operationId": "SupportedToolChainVersionService_GetSupportedToolChainVersion2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SupportedToolChainVersion"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "SupportedToolChainVersionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/mcp-server-logs": {
      "get": {
        "summary": "ListMCPServerLogs",
        "description": "Lists all MCP server logs visible in a namespace.",
        "operationId": "MCPServerLogService_ListMCPServerLogs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListMCPServerLogsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MCPServerLogService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateMCPServerLog",
        "description": "Creates an MCPServerLog.",
        "operationId": "MCPServerLogService_CreateMCPServerLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MCPServerLog"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MCPServerLogServiceCreateMCPServerLogBody"
            }
          }
        ],
        "tags": [
          "MCPServerLogService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/mcp-server-logs/{uuid}": {
      "get": {
        "summary": "GetMCPServerLog",
        "description": "Fetches an MCPServerLog specified by its UUID.",
        "operationId": "MCPServerLogService_GetMCPServerLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1MCPServerLog"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "MCPServerLogService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteMCPServerLog",
        "description": "Deletes an MCPServerLog specified by its UUID.",
        "operationId": "MCPServerLogService_DeleteMCPServerLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MCPServerLogService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/metrics": {
      "get": {
        "summary": "ListMetrics",
        "description": "Lists all metrics in a specified namespace.",
        "operationId": "MetricService_ListMetrics",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListMetricsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MetricService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreateMetric",
        "description": "Creates a metric for the given parent.\nThis will be only called by the backend services, and not from the user/UI\nIt should be noted that the creation of the resource\nwill be an upsert if the given spec.external_id and spec.platform_resource\nwere already created.",
        "operationId": "MetricService_CreateMetric",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/endorv1Metric"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MetricServiceCreateMetricBody"
            }
          }
        ],
        "tags": [
          "MetricService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/metrics/{uuid}": {
      "get": {
        "summary": "GetMetric",
        "description": "Fetches a metric specified by its UUID.",
        "operationId": "MetricService_GetMetric",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/endorv1Metric"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "MetricService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeleteMetric",
        "description": "Deletes a metric specified by its UUID.",
        "operationId": "MetricService_DeleteMetric",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MetricService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/namespaces": {
      "get": {
        "summary": "ListNamespaces",
        "description": "Lists all namespaces in a tenant.",
        "operationId": "NamespaceService_ListNamespaces",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListNamespacesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "NamespaceService"
        ]
      },
      "post": {
        "summary": "CreateNamespace",
        "description": "Creates a namespace.",
        "operationId": "NamespaceService_CreateNamespace",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Namespace"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/NamespaceServiceCreateNamespaceBody"
            }
          }
        ],
        "tags": [
          "NamespaceService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/namespaces/{uuid}": {
      "get": {
        "summary": "GetNamespace",
        "description": "Fetches a namespace identified by its UUID.",
        "operationId": "NamespaceService_GetNamespace",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Namespace"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "NamespaceService"
        ]
      },
      "delete": {
        "summary": "DeleteNamespace",
        "description": "Deletes a namespace based on its UUID.",
        "operationId": "NamespaceService_DeleteNamespace",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "NamespaceService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/notification-actions": {
      "post": {
        "summary": "CreateNotificationAction",
        "description": "Runs the action for a notification target in the server.",
        "operationId": "NotificationActionService_CreateNotificationAction",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/endorv1NotificationAction"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/NotificationActionServiceCreateNotificationActionBody"
            }
          }
        ],
        "tags": [
          "NotificationActionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/notification-targets": {
      "get": {
        "summary": "ListNotificationTargets",
        "description": "Lists all notification targets.",
        "operationId": "NotificationTargetService_ListNotificationTargets",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListNotificationTargetsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "NotificationTargetService"
        ]
      },
      "post": {
        "summary": "CreateNotificationTarget",
        "description": "Creates a notification target.",
        "operationId": "NotificationTargetService_CreateNotificationTarget",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1NotificationTarget"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/NotificationTargetServiceCreateNotificationTargetBody"
            }
          }
        ],
        "tags": [
          "NotificationTargetService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/notification-targets/{uuid}": {
      "get": {
        "summary": "GetNotificationTarget",
        "description": "Fetches the notification target identified by the UUID.",
        "operationId": "NotificationTargetService_GetNotificationTarget",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1NotificationTarget"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "NotificationTargetService"
        ]
      },
      "delete": {
        "summary": "DeleteNotificationTarget",
        "description": "Deletes the notification target specified by the UUID.",
        "operationId": "NotificationTargetService_DeleteNotificationTarget",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "NotificationTargetService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/notifications": {
      "get": {
        "summary": "ListNotifications",
        "description": "List all notifications.",
        "operationId": "NotificationService_ListNotifications",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListNotificationsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "NotificationService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreateNotification",
        "description": "Creates a notification.",
        "operationId": "NotificationService_CreateNotification",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Notification"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/NotificationServiceCreateNotificationBody"
            }
          }
        ],
        "tags": [
          "NotificationService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/notifications/{uuid}": {
      "get": {
        "summary": "GetNotification",
        "description": "Fetches the notification identified by the UUID.",
        "operationId": "NotificationService_GetNotification",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Notification"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "NotificationService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeleteNotification",
        "description": "Deletes the notification specified by the UUID.",
        "operationId": "NotificationService_DeleteNotification",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "NotificationService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/onprem-schedulers": {
      "get": {
        "summary": "ListOnPremSchedulers returns a list of onprem schedulers in a specified namespace.",
        "operationId": "OnPremSchedulerService_ListOnPremSchedulers",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListOnPremSchedulersResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OnPremSchedulerService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreateOnPremScheduler creates an onprem scheduler.",
        "operationId": "OnPremSchedulerService_CreateOnPremScheduler",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OnPremScheduler"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OnPremSchedulerServiceCreateOnPremSchedulerBody"
            }
          }
        ],
        "tags": [
          "OnPremSchedulerService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/onprem-schedulers/{uuid}": {
      "get": {
        "summary": "GetOnPremScheduler returns an onprem scheduler specified by its UUID.",
        "operationId": "OnPremSchedulerService_GetOnPremScheduler",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OnPremScheduler"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "OnPremSchedulerService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeleteOnPremScheduler deletes an onprem scheduler specified by its UUID.",
        "operationId": "OnPremSchedulerService_DeleteOnPremScheduler",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OnPremSchedulerService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/optimized-queries": {
      "post": {
        "summary": "CreateOptimizedQuery handles different kinds of finding queries by\nbreaking the query into smaller queries and then aggregating the results.",
        "operationId": "OptimizedQueryService_CreateOptimizedQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OptimizedQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OptimizedQueryServiceCreateOptimizedQueryBody"
            }
          }
        ],
        "tags": [
          "OptimizedQueryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-allowed-workflows": {
      "get": {
        "summary": "ListOrganizationAllowedWorkflows",
        "description": "Lists all allowed workflows objects of an organization.",
        "operationId": "OrganizationAllowedWorkflowsService_ListOrganizationAllowedWorkflows",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListOrganizationAllowedWorkflowsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationAllowedWorkflowsService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateOrganizationAllowedWorkflows",
        "description": "Creates an organization allowed workflows object.",
        "operationId": "OrganizationAllowedWorkflowsService_CreateOrganizationAllowedWorkflows",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationAllowedWorkflows"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationAllowedWorkflowsServiceCreateOrganizationAllowedWorkflowsBody"
            }
          }
        ],
        "tags": [
          "OrganizationAllowedWorkflowsService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-allowed-workflows/{uuid}": {
      "get": {
        "summary": "GetOrganizationAllowedWorkflows",
        "description": "Fetches the allowed workflows object of an organization identified by the UUID",
        "operationId": "OrganizationAllowedWorkflowsService_GetOrganizationAllowedWorkflows",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationAllowedWorkflows"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationAllowedWorkflowsService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteOrganizationAllowedWorkflows",
        "description": "Deletes an allowed workflows object of an organization identified by the UUID",
        "operationId": "OrganizationAllowedWorkflowsService_DeleteOrganizationAllowedWorkflows",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationAllowedWorkflowsService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-block-lists": {
      "get": {
        "summary": "ListOrganizationBlockLists",
        "description": "Lists the blocked user lists of multiple platform organizations.",
        "operationId": "OrganizationBlockListService_ListOrganizationBlockLists",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListOrganizationBlockListsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationBlockListService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateOrganizationBlockList",
        "description": "Creates a blocked user list of a platform organization.",
        "operationId": "OrganizationBlockListService_CreateOrganizationBlockList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationBlockList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationBlockListServiceCreateOrganizationBlockListBody"
            }
          }
        ],
        "tags": [
          "OrganizationBlockListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-block-lists/{uuid}": {
      "get": {
        "summary": "GetOrganizationBlockList",
        "description": "Fetches the blocked user list of a platform organization identified by the UUID.",
        "operationId": "OrganizationBlockListService_GetOrganizationBlockList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationBlockList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationBlockListService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteOrganizationBlockList",
        "description": "Deletes the blocked user list a platform organization specified by the UUID.",
        "operationId": "OrganizationBlockListService_DeleteOrganizationBlockList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationBlockListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-cicd-permissions": {
      "get": {
        "summary": "ListOrganizationCICDPermissions",
        "description": "Lists CI/CD permissions objects of multiple organizations.",
        "operationId": "OrganizationCICDPermissionsService_ListOrganizationCICDPermissions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListOrganizationCICDPermissionsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationCICDPermissionsService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "OrganizationCICDPermissions",
        "description": "Creates a CI/CD permissions object of a platform organization.",
        "operationId": "OrganizationCICDPermissionsService_CreateOrganizationCICDPermissions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationCICDPermissions"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationCICDPermissionsServiceCreateOrganizationCICDPermissionsBody"
            }
          }
        ],
        "tags": [
          "OrganizationCICDPermissionsService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-cicd-permissions/{uuid}": {
      "get": {
        "summary": "GetOrganizationCICDPermissions",
        "description": "Fetches the permissions objects of a platform organization identified by the UUID.",
        "operationId": "OrganizationCICDPermissionsService_GetOrganizationCICDPermissions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationCICDPermissions"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationCICDPermissionsService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteOrganizationCICDPermissions",
        "description": "Deletes the CI/CD permissions objects of a platform organization specified by the UUID.",
        "operationId": "OrganizationCICDPermissionsService_DeleteOrganizationCICDPermissions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationCICDPermissionsService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-custom-permission-lists": {
      "get": {
        "summary": "ListOrganizationCustomPermissionLists",
        "description": "Lists the custom fine grained permissions of multiple platform organizations.",
        "operationId": "OrganizationCustomPermissionListService_ListOrganizationCustomPermissionLists",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListOrganizationCustomPermissionListsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationCustomPermissionListService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateOrganizationCustomPermissionList",
        "description": "Creates custom fine grained permissions of a platform organization.",
        "operationId": "OrganizationCustomPermissionListService_CreateOrganizationCustomPermissionList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationCustomPermissionList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationCustomPermissionListServiceCreateOrganizationCustomPermissionListBody"
            }
          }
        ],
        "tags": [
          "OrganizationCustomPermissionListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-custom-permission-lists/{uuid}": {
      "get": {
        "summary": "GetOrganizationCustomPermissionList",
        "description": "Lists the custom fine grained permissions of a platform organization identified by the UUID.",
        "operationId": "OrganizationCustomPermissionListService_GetOrganizationCustomPermissionList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationCustomPermissionList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationCustomPermissionListService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteOrganizationCustomPermissionList",
        "description": "Deletes the custom fine grained permissions of a platform organization specified by the UUID.",
        "operationId": "OrganizationCustomPermissionListService_DeleteOrganizationCustomPermissionList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationCustomPermissionListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-custom-role-lists": {
      "get": {
        "summary": "ListOrganizationCustomRoleLists",
        "description": "Lists the custom role lists of multiple organizations.",
        "operationId": "OrganizationCustomRoleListService_ListOrganizationCustomRoleLists",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListOrganizationCustomRoleListsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationCustomRoleListService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateOrganizationCustomRoleList//",
        "description": "Creates a custom role list of a platform organization.",
        "operationId": "OrganizationCustomRoleListService_CreateOrganizationCustomRoleList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationCustomRoleList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationCustomRoleListServiceCreateOrganizationCustomRoleListBody"
            }
          }
        ],
        "tags": [
          "OrganizationCustomRoleListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-custom-role-lists/{uuid}": {
      "get": {
        "summary": "GetOrganizationCustomRoleList",
        "description": "Fetches the custom role list of a platform organization identified by the UUID.",
        "operationId": "OrganizationCustomRoleListService_GetOrganizationCustomRoleList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationCustomRoleList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationCustomRoleListService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteOrganizationCustomRoleList",
        "description": "Deletes the custom role list of a platform organization specified by the UUID.",
        "operationId": "OrganizationCustomRoleListService_DeleteOrganizationCustomRoleList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationCustomRoleListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-hooks": {
      "get": {
        "summary": "ListOrganizationHooks",
        "description": "Lists the organization hooks.",
        "operationId": "OrganizationHookService_ListOrganizationHooks",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListOrganizationHooksResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationHookService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateOrganizationHook",
        "description": "Creates an organization hook.\n\nThe creation of the resource will be an upsert if the given spec.external_id is already available.",
        "operationId": "OrganizationHookService_CreateOrganizationHook",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationHook"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationHookServiceCreateOrganizationHookBody"
            }
          }
        ],
        "tags": [
          "OrganizationHookService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-hooks/{uuid}": {
      "get": {
        "summary": "GetOrganizationHook",
        "description": "Fetches an organization hook.",
        "operationId": "OrganizationHookService_GetOrganizationHook",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationHook"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationHookService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteOrganizationHook",
        "description": "Deletes an organization hook.",
        "operationId": "OrganizationHookService_DeleteOrganizationHook",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationHookService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-installation-lists": {
      "get": {
        "summary": "ListOrganizationInstallationLists",
        "description": "Lists the installation information of multiple platform organizations.",
        "operationId": "OrganizationInstallationListService_ListOrganizationInstallationLists",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListOrganizationInstallationListsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationInstallationListService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateOrganizationInstallationList",
        "description": "Creates the installation information of a platform organization.",
        "operationId": "OrganizationInstallationListService_CreateOrganizationInstallationList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationInstallationList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationInstallationListServiceCreateOrganizationInstallationListBody"
            }
          }
        ],
        "tags": [
          "OrganizationInstallationListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-installation-lists/{uuid}": {
      "get": {
        "summary": "GetOrganizationInstallationList",
        "description": "Fetches the installation information of a platform organization.",
        "operationId": "OrganizationInstallationListService_GetOrganizationInstallationList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationInstallationList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationInstallationListService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteOrganizationInstallationList",
        "description": "Deletes the installation information of a platform organization.",
        "operationId": "OrganizationInstallationListService_DeleteOrganizationInstallationList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationInstallationListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-invitation-lists": {
      "get": {
        "summary": "ListOrganizationInvitationLists",
        "description": "Lists the invitations of multiple platform organizations.",
        "operationId": "OrganizationInvitationListService_ListOrganizationInvitationLists",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListOrganizationInvitationListsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationInvitationListService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateOrganizationInvitationList",
        "description": "Creates invitations of a platform organization.",
        "operationId": "OrganizationInvitationListService_CreateOrganizationInvitationList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationInvitationList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationInvitationListServiceCreateOrganizationInvitationListBody"
            }
          }
        ],
        "tags": [
          "OrganizationInvitationListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-invitation-lists/{uuid}": {
      "get": {
        "summary": "GetOrganizationInvitationList",
        "description": "Fetches invitations of a platform organization.",
        "operationId": "OrganizationInvitationListService_GetOrganizationInvitationList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationInvitationList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationInvitationListService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteOrganizationInvitationList",
        "description": "Deletes invitations of a platform organization.",
        "operationId": "OrganizationInvitationListService_DeleteOrganizationInvitationList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationInvitationListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-member-lists": {
      "get": {
        "summary": "ListOrganizationMemberLists",
        "description": "Lists the members of multiple platform organizations.",
        "operationId": "OrganizationMemberListService_ListOrganizationMemberLists",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListOrganizationMemberListsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationMemberListService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateOrganizationMemberList",
        "description": "Creates the members of a platform organization.",
        "operationId": "OrganizationMemberListService_CreateOrganizationMemberList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationMemberList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationMemberListServiceCreateOrganizationMemberListBody"
            }
          }
        ],
        "tags": [
          "OrganizationMemberListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-member-lists/{uuid}": {
      "get": {
        "summary": "GetOrganizationMemberList",
        "description": "Fetches the members of a platform organization identified by the UUID.",
        "operationId": "OrganizationMemberListService_GetOrganizationMemberList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationMemberList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationMemberListService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteOrganizationMemberList",
        "description": "Deletes the members of a platform organization specified by the UUID.",
        "operationId": "OrganizationMemberListService_DeleteOrganizationMemberList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationMemberListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-outside-collaborator-lists": {
      "get": {
        "summary": "ListOrganizationOutsideCollaboratorLists",
        "description": "Lists outside collaborators of platform organizations.",
        "operationId": "OrganizationOutsideCollaboratorListService_ListOrganizationOutsideCollaboratorLists",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListOrganizationOutsideCollaboratorListsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationOutsideCollaboratorListService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateOrganizationOutsideCollaboratorList",
        "description": "Creates outside collaborators of a platform organization.",
        "operationId": "OrganizationOutsideCollaboratorListService_CreateOrganizationOutsideCollaboratorList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationOutsideCollaboratorList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationOutsideCollaboratorListServiceCreateOrganizationOutsideCollaboratorListBody"
            }
          }
        ],
        "tags": [
          "OrganizationOutsideCollaboratorListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-outside-collaborator-lists/{uuid}": {
      "get": {
        "summary": "GetOrganizationOutsideCollaboratorList",
        "description": "Fetches outside collaborators of a platform organization identified by the UUID.",
        "operationId": "OrganizationOutsideCollaboratorListService_GetOrganizationOutsideCollaboratorList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationOutsideCollaboratorList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationOutsideCollaboratorListService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteOrganizationOutsideCollaboratorList",
        "description": "Deletes outside collaborators of a platform organization specified by the UUID.",
        "operationId": "OrganizationOutsideCollaboratorListService_DeleteOrganizationOutsideCollaboratorList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationOutsideCollaboratorListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-runner-group-config": {
      "get": {
        "summary": "ListOrganizationRunnerGroupConfig",
        "description": "Lists the runner group configurations of multiple platform organizations.",
        "operationId": "OrganizationRunnerGroupConfigService_ListOrganizationRunnerGroupConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListOrganizationRunnerGroupConfigsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationRunnerGroupConfigService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateOrganizationRunnerGroupConfig",
        "description": "Creates the runner group configuration of a platform organization.",
        "operationId": "OrganizationRunnerGroupConfigService_CreateOrganizationRunnerGroupConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationRunnerGroupConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationRunnerGroupConfigServiceCreateOrganizationRunnerGroupConfigBody"
            }
          }
        ],
        "tags": [
          "OrganizationRunnerGroupConfigService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-runner-group-config/{uuid}": {
      "get": {
        "summary": "GetOrganizationRunnerGroupConfig",
        "description": "Fetches the runner group configuration of a platform organization identified by the UUID.",
        "operationId": "OrganizationRunnerGroupConfigService_GetOrganizationRunnerGroupConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationRunnerGroupConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationRunnerGroupConfigService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteOrganizationRunnerGroupConfig",
        "description": "Deletes the runner group configuration of a platform organization specified by the UUID.",
        "operationId": "OrganizationRunnerGroupConfigService_DeleteOrganizationRunnerGroupConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationRunnerGroupConfigService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-security-manager-lists": {
      "get": {
        "summary": "ListOrganizationSecurityManagerLists",
        "description": "Lists security managers of multiple platform organizations.",
        "operationId": "OrganizationSecurityManagerListService_ListOrganizationSecurityManagerLists",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListOrganizationSecurityManagerListsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationSecurityManagerListService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateOrganizationSecurityManagerList",
        "description": "Creates security managers of a platform organization.",
        "operationId": "OrganizationSecurityManagerListService_CreateOrganizationSecurityManagerList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationSecurityManagerList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationSecurityManagerListServiceCreateOrganizationSecurityManagerListBody"
            }
          }
        ],
        "tags": [
          "OrganizationSecurityManagerListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-security-manager-lists/{uuid}": {
      "get": {
        "summary": "GetOrganizationSecurityManagerList",
        "description": "Fetches security managers of a platform organization.",
        "operationId": "OrganizationSecurityManagerListService_GetOrganizationSecurityManagerList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationSecurityManagerList"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationSecurityManagerListService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteOrganizationSecurityManagerList",
        "description": "Deletes security managers of a platform organization specified by the UUID.",
        "operationId": "OrganizationSecurityManagerListService_DeleteOrganizationSecurityManagerList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationSecurityManagerListService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-workflow-permissions": {
      "get": {
        "summary": "ListOrganizationWorkflowPermissions",
        "description": "Lists workflow permissions of an organization.",
        "operationId": "OrganizationWorkflowPermissionsService_ListOrganizationWorkflowPermissions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListOrganizationWorkflowPermissionsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationWorkflowPermissionsService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateOrganizationWorkflowPermissions",
        "description": "Creates a workflow permissions object of an organization.",
        "operationId": "OrganizationWorkflowPermissionsService_CreateOrganizationWorkflowPermissions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationWorkflowPermissions"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationWorkflowPermissionsServiceCreateOrganizationWorkflowPermissionsBody"
            }
          }
        ],
        "tags": [
          "OrganizationWorkflowPermissionsService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/organization-workflow-permissions/{uuid}": {
      "get": {
        "summary": "GetOrganizationWorkflowPermissions",
        "description": "Fetches the workflow permissions object of an organization identified by the UUID.",
        "operationId": "OrganizationWorkflowPermissionsService_GetOrganizationWorkflowPermissions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OrganizationWorkflowPermissions"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "OrganizationWorkflowPermissionsService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteOrganizationWorkflowPermissions",
        "description": "Deletes workflow permissions of an organization.",
        "operationId": "OrganizationWorkflowPermissionsService_DeleteOrganizationWorkflowPermissions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "OrganizationWorkflowPermissionsService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/oss-dependency-requests": {
      "post": {
        "summary": "CreateOSSDependencyRequest",
        "description": "Creates an OSS dependency request.",
        "operationId": "OSSDependencyRequestService_CreateOSSDependencyRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1OSSDependencyRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OSSDependencyRequestServiceCreateOSSDependencyRequestBody"
            }
          }
        ],
        "tags": [
          "OSSDependencyRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-firewall-logs": {
      "get": {
        "summary": "ListPackageFirewallLogs",
        "description": "Lists all package firewall logs in a given namespace.",
        "operationId": "PackageFirewallLogService_ListPackageFirewallLogs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListPackageFirewallLogsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PackageFirewallLogService"
        ]
      },
      "post": {
        "summary": "CreatePackageFirewallLog",
        "description": "Creates a package firewall log.",
        "operationId": "PackageFirewallLogService_CreatePackageFirewallLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageFirewallLog"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PackageFirewallLogServiceCreatePackageFirewallLogBody"
            }
          }
        ],
        "tags": [
          "PackageFirewallLogService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-firewall-logs/{uuid}": {
      "get": {
        "summary": "GetPackageFirewallLog",
        "description": "Fetches the package firewall log identified by the UUID.",
        "operationId": "PackageFirewallLogService_GetPackageFirewallLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageFirewallLog"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PackageFirewallLogService"
        ]
      },
      "delete": {
        "summary": "DeletePackageFirewallLog",
        "description": "Deletes the package firewall log specified by its UUID.",
        "operationId": "PackageFirewallLogService_DeletePackageFirewallLog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PackageFirewallLogService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-license-overrides": {
      "get": {
        "summary": "ListPackageLicenseOverrides",
        "description": "Lists all package license overrides in a namespace.",
        "operationId": "PackageLicenseOverrideService_ListPackageLicenseOverrides",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListPackageLicenseOverridesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PackageLicenseOverrideService"
        ]
      },
      "post": {
        "summary": "CreatePackageLicenseOverride",
        "description": "Creates a package license override.",
        "operationId": "PackageLicenseOverrideService_CreatePackageLicenseOverride",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageLicenseOverride"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PackageLicenseOverrideServiceCreatePackageLicenseOverrideBody"
            }
          }
        ],
        "tags": [
          "PackageLicenseOverrideService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-license-overrides/{uuid}": {
      "get": {
        "summary": "GetPackageLicenseOverride",
        "description": "Gets a package license override by its UUID.",
        "operationId": "PackageLicenseOverrideService_GetPackageLicenseOverride",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageLicenseOverride"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PackageLicenseOverrideService"
        ]
      },
      "delete": {
        "summary": "DeletePackageLicenseOverride",
        "description": "Deletes a specified package license override.",
        "operationId": "PackageLicenseOverrideService_DeletePackageLicenseOverride",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PackageLicenseOverrideService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-licenses": {
      "get": {
        "summary": "ListPackageLicenses",
        "description": "Lists all the package licenses in a given namespace.",
        "operationId": "PackageLicenseService_ListPackageLicenses",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListPackageLicenseResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PackageLicenseService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreatePackageLicense",
        "description": "Creates a package license.",
        "operationId": "PackageLicenseService_CreatePackageLicense",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageLicense"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PackageLicenseServiceCreatePackageLicenseBody"
            }
          }
        ],
        "tags": [
          "PackageLicenseService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-licenses/{uuid}": {
      "get": {
        "summary": "GetPackageLicense",
        "description": "Fetches the package license specified by the UUID.",
        "operationId": "PackageLicenseService_GetPackageLicense",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageLicense"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PackageLicenseService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeletePackageLicense",
        "description": "Deletes the package license specified by the UUID.",
        "operationId": "PackageLicenseService_DeletePackageLicense",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PackageLicenseService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-managers": {
      "get": {
        "summary": "ListPackageManagers",
        "description": "Lists all package managers in a given namespace",
        "operationId": "PackageManagerService_ListPackageManagers",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListPackageManagersResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PackageManagerService"
        ]
      },
      "post": {
        "summary": "CreatePackageManager",
        "description": "Creates a package manager in a given namespace.",
        "operationId": "PackageManagerService_CreatePackageManager",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageManager"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PackageManagerServiceCreatePackageManagerBody"
            }
          }
        ],
        "tags": [
          "PackageManagerService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-managers/{uuid}": {
      "get": {
        "summary": "GetPackageManager",
        "description": "Fetches the package manager identified by the UUID.",
        "operationId": "PackageManagerService_GetPackageManager",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageManager"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PackageManagerService"
        ]
      },
      "delete": {
        "summary": "DeletePackageManager",
        "description": "Deletes a package manager specified by its UUID.",
        "operationId": "PackageManagerService_DeletePackageManager",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PackageManagerService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-version-source-metadata": {
      "get": {
        "summary": "ListPackageVersionSourceMetadata",
        "description": "Lists all the package version source metadata in a given namespace.",
        "operationId": "PackageVersionSourceMetadataService_ListPackageVersionSourceMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListPackageVersionSourceMetadataResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PackageVersionSourceMetadataService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreatePackageVersionSourceMetadata",
        "description": "Creates a package version source metadata.",
        "operationId": "PackageVersionSourceMetadataService_CreatePackageVersionSourceMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageVersionSourceMetadata"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PackageVersionSourceMetadataServiceCreatePackageVersionSourceMetadataBody"
            }
          }
        ],
        "tags": [
          "PackageVersionSourceMetadataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-version-source-metadata/{uuid}": {
      "get": {
        "summary": "GetPackageVersionSourceMetadata",
        "description": "Fetches the package version source metadata of a specified UUID.",
        "operationId": "PackageVersionSourceMetadataService_GetPackageVersionSourceMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageVersionSourceMetadata"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PackageVersionSourceMetadataService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeletePackageVersionSourceMetadata",
        "description": "Deletes a package version source metadata of a specified UUID.",
        "operationId": "PackageVersionSourceMetadataService_DeletePackageVersionSourceMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PackageVersionSourceMetadataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-versions": {
      "get": {
        "summary": "ListPackageVersions",
        "description": "Lists all the package versions in a given namespace.",
        "operationId": "PackageVersionService_ListPackageVersions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListPackageVersionsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PackageVersionService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreatePackageVersion",
        "description": "Creates a package version.",
        "operationId": "PackageVersionService_CreatePackageVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageVersion"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PackageVersionServiceCreatePackageVersionBody"
            }
          }
        ],
        "tags": [
          "PackageVersionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-versions-metadata": {
      "get": {
        "summary": "ListPackageVersionsMetadata",
        "description": "Lists all the package versions in a given namespace.",
        "operationId": "PackageVersionsMetadataService_ListPackageVersionsMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListPackageVersionsMetadataResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PackageVersionsMetadataService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreatePackageVersionsMetadata",
        "description": "Creates a package version metadata.",
        "operationId": "PackageVersionsMetadataService_CreatePackageVersionsMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageVersionMetadata"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PackageVersionsMetadataServiceCreatePackageVersionsMetadataBody"
            }
          }
        ],
        "tags": [
          "PackageVersionsMetadataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-versions-metadata/{uuid}": {
      "get": {
        "summary": "GetPackageVersionsMetadata",
        "description": "Fetches a package version metadata specified by the UUID.",
        "operationId": "PackageVersionsMetadataService_GetPackageVersionsMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageVersionMetadata"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PackageVersionsMetadataService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeletePackageVersionsMetadata",
        "description": "Deletes a package version metadata specified by the UUID.",
        "operationId": "PackageVersionsMetadataService_DeletePackageVersionsMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PackageVersionsMetadataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/package-versions/{uuid}": {
      "get": {
        "summary": "GetPackageVersion",
        "description": "Fetches a package version specified by the UUID.",
        "operationId": "PackageVersionService_GetPackageVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageVersion"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PackageVersionService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeletePackageVersion",
        "description": "Deletes a package version specified by the UUID.",
        "operationId": "PackageVersionService_DeletePackageVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PackageVersionService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/packages": {
      "get": {
        "summary": "ListPackages",
        "description": "Lists all packages in a specified namespace.",
        "operationId": "PackageService_ListPackages",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListPackagesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PackageService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreatePackage",
        "description": "Creates a package.",
        "operationId": "PackageService_CreatePackage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/endorv1Package"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PackageServiceCreatePackageBody"
            }
          }
        ],
        "tags": [
          "PackageService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/packages/{uuid}": {
      "get": {
        "summary": "GetPackage",
        "description": "Fetches a package specified by its UUID.",
        "operationId": "PackageService_GetPackage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/endorv1Package"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PackageService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeletePackage",
        "description": "Deletes a package specified by its UUID.",
        "operationId": "PackageService_DeletePackage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PackageService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/platform-accounts": {
      "get": {
        "summary": "ListPlatformAccounts",
        "description": "Lists all platform accounts in a namespace.",
        "operationId": "PlatformAccountService_ListPlatformAccounts",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListPlatformAccountsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PlatformAccountService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreatePlatformAccount",
        "description": "Creates a platform account.\nThe creation of the resource will be an upsert if the given spec.external_id and spec.platform_resource\nwere already created.",
        "operationId": "PlatformAccountService_CreatePlatformAccount",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PlatformAccount"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PlatformAccountServiceCreatePlatformAccountBody"
            }
          }
        ],
        "tags": [
          "PlatformAccountService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/platform-accounts/{uuid}": {
      "get": {
        "summary": "GetPlatformAccount",
        "description": "Fetches a platform account identified by the UUID.",
        "operationId": "PlatformAccountService_GetPlatformAccount",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PlatformAccount"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PlatformAccountService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeletePlatformAccount",
        "description": "Deletes a platform account specified by the UUID.",
        "operationId": "PlatformAccountService_DeletePlatformAccount",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PlatformAccountService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/platform-organizations": {
      "get": {
        "summary": "ListPlatformOrganizations",
        "description": "Lists all platform organizations in a namespace.",
        "operationId": "PlatformOrganizationService_ListPlatformOrganizations",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListPlatformOrganizationsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PlatformOrganizationService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreatePlatformOrganization",
        "description": "Creates a platform organization identified by the UUID.",
        "operationId": "PlatformOrganizationService_CreatePlatformOrganization",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PlatformOrganization"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PlatformOrganizationServiceCreatePlatformOrganizationBody"
            }
          }
        ],
        "tags": [
          "PlatformOrganizationService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/platform-organizations/{uuid}": {
      "get": {
        "summary": "GetPlatformOrganization returns a platform organization.",
        "operationId": "PlatformOrganizationService_GetPlatformOrganization",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PlatformOrganization"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PlatformOrganizationService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeletePlatformOrganization",
        "description": "Deletes a platform organization specified by the UUID.",
        "operationId": "PlatformOrganizationService_DeletePlatformOrganization",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PlatformOrganizationService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/policies": {
      "get": {
        "summary": "ListPolicies",
        "description": "Lists all policies in a namespace.",
        "operationId": "PolicyService_ListPolicies",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListPoliciesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PolicyService"
        ]
      },
      "post": {
        "summary": "CreatePolicy",
        "description": "Creates a policy.",
        "operationId": "PolicyService_CreatePolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Policy"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PolicyServiceCreatePolicyBody"
            }
          }
        ],
        "tags": [
          "PolicyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/policies/{uuid}": {
      "get": {
        "summary": "GetPolicy",
        "description": "Fetches the policy identified by the UUID.",
        "operationId": "PolicyService_GetPolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Policy"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PolicyService"
        ]
      },
      "delete": {
        "summary": "DeletePolicy",
        "description": "Deletes the policy specified by the UUID.",
        "operationId": "PolicyService_DeletePolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PolicyService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/policy-templates": {
      "get": {
        "summary": "ListPolicyTemplates",
        "description": "Lists all policy templates in a namespace.",
        "operationId": "PolicyTemplateService_ListPolicyTemplates",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListPolicyTemplatesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PolicyTemplateService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreatePolicyTemplate",
        "description": "Creates a policy template.",
        "operationId": "PolicyTemplateService_CreatePolicyTemplate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PolicyTemplate"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PolicyTemplateServiceCreatePolicyTemplateBody"
            }
          }
        ],
        "tags": [
          "PolicyTemplateService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/policy-templates/{uuid}": {
      "get": {
        "summary": "GetPolicyTemplate",
        "description": "Fetches the policy template identified by the UUID.",
        "operationId": "PolicyTemplateService_GetPolicyTemplate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PolicyTemplate"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PolicyTemplateService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeletePolicyTemplate",
        "description": "Deletes the policy template specified by the UUID.",
        "operationId": "PolicyTemplateService_DeletePolicyTemplate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PolicyTemplateService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/policy/validate": {
      "post": {
        "summary": "CreatePolicyValidation",
        "description": "Creates a policy validation request.",
        "operationId": "PolicyValidationService_CreatePolicyValidation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PolicyValidation"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PolicyValidationServiceCreatePolicyValidationBody"
            }
          }
        ],
        "tags": [
          "PolicyValidationService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/pr-comment-configs": {
      "get": {
        "summary": "ListPRCommentConfigs",
        "description": "List all PR comment configurations for the tenant namespace.",
        "operationId": "PRCommentConfigService_ListPRCommentConfigs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListPRCommentConfigsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PRCommentConfigService"
        ]
      },
      "post": {
        "summary": "CreatePRCommentConfig",
        "description": "Creates a PR comment configuration.",
        "operationId": "PRCommentConfigService_CreatePRCommentConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PRCommentConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PRCommentConfigServiceCreatePRCommentConfigBody"
            }
          }
        ],
        "tags": [
          "PRCommentConfigService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/pr-comment-configs/{uuid}": {
      "get": {
        "summary": "GetPRCommentConfig",
        "description": "Fetches the PR comment configuration specified by the UUID.",
        "operationId": "PRCommentConfigService_GetPRCommentConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PRCommentConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PRCommentConfigService"
        ]
      },
      "delete": {
        "summary": "DeletePRCommentConfig",
        "description": "Deletes the PR comment configuration identified by the UUID.",
        "operationId": "PRCommentConfigService_DeletePRCommentConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PRCommentConfigService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/project-summaries": {
      "get": {
        "summary": "ListProjectSummaries",
        "description": "Lists all project summaries in the given namespace.",
        "operationId": "ProjectSummaryService_ListProjectSummaries",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListProjectSummariesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ProjectSummaryService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateProjectSummary",
        "description": "Creates a project summary.\n\nThe creation of the resource will be an upsert if the given\nmeta.parent_uuid is already available.",
        "operationId": "ProjectSummaryService_CreateProjectSummary",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ProjectSummary"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ProjectSummaryServiceCreateProjectSummaryBody"
            }
          }
        ],
        "tags": [
          "ProjectSummaryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/project-summaries/{uuid}": {
      "get": {
        "summary": "GetProjectSummary",
        "description": "Fetches a project summary identified by the UUID.",
        "operationId": "ProjectSummaryService_GetProjectSummary",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ProjectSummary"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ProjectSummaryService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteProjectSummary",
        "description": "Deletes a project summary specified by the UUID.",
        "operationId": "ProjectSummaryService_DeleteProjectSummary",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ProjectSummaryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/projects": {
      "get": {
        "summary": "ListProjects",
        "description": "Lists all projects in a given namespace.",
        "operationId": "ProjectService_ListProjects",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListProjectsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ProjectService"
        ]
      },
      "post": {
        "summary": "CreateProject",
        "description": "Creates a project in a given namespace.",
        "operationId": "ProjectService_CreateProject",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Project"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ProjectServiceCreateProjectBody"
            }
          }
        ],
        "tags": [
          "ProjectService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/projects/{uuid}": {
      "get": {
        "summary": "GetProject",
        "description": "Fetches comprehensive information about a project identified by a given\nUUID.",
        "operationId": "ProjectService_GetProject",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Project"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ProjectService"
        ]
      },
      "delete": {
        "summary": "DeleteProject",
        "description": "Deletes a project specified by its UUID.",
        "operationId": "ProjectService_DeleteProject",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ProjectService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/provisioning-results": {
      "get": {
        "summary": "ListProvisioningResults returns a list of provisioning results in a specified namespace.",
        "operationId": "ProvisioningResultService_ListProvisioningResults",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListProvisioningResultsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ProvisioningResultService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreateProvisioningResult creates a provisioning result.",
        "operationId": "ProvisioningResultService_CreateProvisioningResult",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ProvisioningResult"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ProvisioningResultServiceCreateProvisioningResultBody"
            }
          }
        ],
        "tags": [
          "ProvisioningResultService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/provisioning-results/{uuid}": {
      "get": {
        "summary": "GetProvisioningResult returns a provisioning result specified by its UUID.",
        "operationId": "ProvisioningResultService_GetProvisioningResult",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ProvisioningResult"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ProvisioningResultService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeleteProvisioningResult deletes a provisioning result specified by its UUID.",
        "operationId": "ProvisioningResultService_DeleteProvisioningResult",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ProvisioningResultService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries": {
      "post": {
        "summary": "CreateQuery",
        "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",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Query"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/QueryServiceCreateQueryBody"
            }
          }
        ],
        "tags": [
          "QueryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/agent-sessions-count": {
      "post": {
        "summary": "CreateAgentSessionCountQuery",
        "description": "Returns the total number of agent sessions in the namespace,\nregardless of session ownership.",
        "operationId": "AgentSessionCountQueryService_CreateAgentSessionCountQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1AgentSessionCountQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AgentSessionCountQueryServiceCreateAgentSessionCountQueryBody"
            }
          }
        ],
        "tags": [
          "AgentSessionCountQueryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/batch-package-license-queries": {
      "post": {
        "summary": "CreateBatchPackageLicenseQuery",
        "description": "Creates a batch query to fetch merged license data for multiple package versions in one call.\nEach item in spec.queries must have spec.package_version_uuid set. The server populates\nspec.licenses, spec.copyrights, spec.notices, and spec.applied_overrides on each returned item.",
        "operationId": "BatchPackageLicenseQueryService_CreateBatchPackageLicenseQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1BatchPackageLicenseQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/BatchPackageLicenseQueryServiceCreateBatchPackageLicenseQueryBody"
            }
          }
        ],
        "tags": [
          "BatchPackageLicenseQueryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/container-base-image-update-impact-records": {
      "post": {
        "summary": "CreateContainerBaseImageUpdateImpactRecordsQuery",
        "description": "Computes (does not persist) one page of the fixed or introduced findings for\na single base image update option and a single severity or reachability\nbucket.",
        "operationId": "ContainerBaseImageUpdateImpactRecordsQueryService_CreateContainerBaseImageUpdateImpactRecordsQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ContainerBaseImageUpdateImpactRecordsQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ContainerBaseImageUpdateImpactRecordsQueryServiceCreateContainerBaseImageUpdateImpactRecordsQueryBody"
            }
          }
        ],
        "tags": [
          "ContainerBaseImageUpdateImpactRecordsQueryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/container-base-image-update-impacts": {
      "post": {
        "summary": "CreateContainerBaseImageUpdateImpactQuery",
        "description": "Computes (does not persist) the vulnerability finding impact of each\navailable base image update option for a scanned container image.",
        "operationId": "ContainerBaseImageUpdateImpactQueryService_CreateContainerBaseImageUpdateImpactQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ContainerBaseImageUpdateImpactQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ContainerBaseImageUpdateImpactQueryServiceCreateContainerBaseImageUpdateImpactQueryBody"
            }
          }
        ],
        "tags": [
          "ContainerBaseImageUpdateImpactQueryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/dashboard-summaries": {
      "post": {
        "summary": "CreateDashboardSummaryQuery.",
        "description": "Creates a dashboard summary query.",
        "operationId": "DashboardSummaryQueryService_CreateDashboardSummaryQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DashboardSummaryQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DashboardSummaryQueryServiceCreateDashboardSummaryQueryBody"
            }
          }
        ],
        "tags": [
          "DashboardSummaryQueryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/detect-license-queries": {
      "post": {
        "summary": "CreateDetectLicenseQuery",
        "description": "Creates a query to detect what license a given block of text represents.",
        "operationId": "DetectLicenseQueryService_CreateDetectLicenseQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1DetectLicenseQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DetectLicenseQueryServiceCreateDetectLicenseQueryBody"
            }
          }
        ],
        "tags": [
          "DetectLicenseQueryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/malware": {
      "post": {
        "summary": "CreateQueryMalware",
        "description": "Queries malware for specific values.\nUse this method to query malware for a specific package version.",
        "operationId": "QueryMalwareService_CreateQueryMalware",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1QueryMalware"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/QueryMalwareServiceCreateQueryMalwareBody"
            }
          }
        ],
        "tags": [
          "QueryMalwareService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/package-license-queries": {
      "post": {
        "summary": "CreatePackageLicenseQuery",
        "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",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageLicenseQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PackageLicenseQueryServiceCreatePackageLicenseQueryBody"
            }
          }
        ],
        "tags": [
          "PackageLicenseQueryService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/package-version-licenses": {
      "post": {
        "operationId": "PackageVersionLicenseQueryService_CreatePackageVersionLicenseQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageVersionLicenseQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PackageVersionLicenseQueryServiceCreatePackageVersionLicenseQueryBody"
            }
          }
        ],
        "tags": [
          "PackageVersionLicenseQueryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/package-versions-metadata": {
      "post": {
        "summary": "Creates a package version metadata query.",
        "description": "When sending the request, you can choose to give a version for the package.\nThe result of the request will be different based on this though.\n\nWhile not giving the version, only the version and release time of the package versions found will be returned.\nWhile giving the version, all attributes of the version metadata will be returned.",
        "operationId": "PackageVersionMetadataQueryService_CreatePackageVersionMetadataQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PackageVersionMetadataQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PackageVersionMetadataQueryServiceCreatePackageVersionMetadataQueryBody"
            }
          }
        ],
        "tags": [
          "PackageVersionMetadataQueryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/security-review": {
      "post": {
        "summary": "CreateSecurityReviewQuery.",
        "description": "Creates a security review dashboard summary query.",
        "operationId": "SecurityReviewQueryService_CreateSecurityReviewQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SecurityReviewQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SecurityReviewQueryServiceCreateSecurityReviewQueryBody"
            }
          }
        ],
        "tags": [
          "SecurityReviewQueryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/similar-packages": {
      "post": {
        "summary": "Queries packages which is lexicographically similar to a given package.",
        "operationId": "QuerySimilarPackagesService_CreateQuerySimilarPackages",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1QuerySimilarPackages"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/QuerySimilarPackagesServiceCreateQuerySimilarPackagesBody"
            }
          }
        ],
        "tags": [
          "QuerySimilarPackagesService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/vector-store-data": {
      "post": {
        "summary": "CreateVectorStoreMetadataQuery",
        "description": "Queries vector stores by metadata filter.",
        "operationId": "VectorStoreMetadataQueryService_CreateVectorStoreMetadataQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1VectorStoreMetadataQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VectorStoreMetadataQueryServiceCreateVectorStoreMetadataQueryBody"
            }
          }
        ],
        "tags": [
          "VectorStoreMetadataQueryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/vector-store-data-document-consistency": {
      "post": {
        "summary": "CreateVectorStoreDataDocumentConsistencyQuery",
        "description": "Checks which documents need to be updated in a vector store.\nThis is a lightweight check that avoids sending full document content.",
        "operationId": "VectorStoreDataDocumentConsistencyQueryService_CreateVectorStoreDataDocumentConsistencyQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1VectorStoreDataDocumentConsistencyQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VectorStoreDataDocumentConsistencyQueryServiceCreateVectorStoreDataDocumentConsistencyQueryBody"
            }
          }
        ],
        "tags": [
          "VectorStoreDataDocumentConsistencyQueryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/vector-stores": {
      "post": {
        "summary": "CreateVectorStoreQuery",
        "description": "Queries vector stores for data.",
        "operationId": "VectorStoreQueryService_CreateVectorStoreQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1VectorStoreQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VectorStoreQueryServiceCreateVectorStoreQueryBody"
            }
          }
        ],
        "tags": [
          "VectorStoreQueryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/queries/vulnerabilities": {
      "post": {
        "summary": "CreateQueryVulnerability",
        "description": "Queries vulnerabilities for specific values.\nUse this method to query vulnerabilities for a specific package version.",
        "operationId": "QueryVulnerabilityService_CreateQueryVulnerability",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1QueryVulnerability"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/QueryVulnerabilityServiceCreateQueryVulnerabilityBody"
            }
          }
        ],
        "tags": [
          "QueryVulnerabilityService"
        ],
        "x-internal": false
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/registry-ingestion-checkpoints": {
      "get": {
        "summary": "ListRegistryIngestionCheckpoint",
        "description": "Lists registry ingestion checkpoints in a namespace.",
        "operationId": "RegistryIngestionCheckpointService_ListRegistryIngestionCheckpoint",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListRegistryIngestionCheckpointResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RegistryIngestionCheckpointService"
        ]
      },
      "post": {
        "summary": "CreateRegistryIngestionCheckpoint",
        "description": "Creates a registry ingestion checkpoint.",
        "operationId": "RegistryIngestionCheckpointService_CreateRegistryIngestionCheckpoint",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RegistryIngestionCheckpoint"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RegistryIngestionCheckpointServiceCreateRegistryIngestionCheckpointBody"
            }
          }
        ],
        "tags": [
          "RegistryIngestionCheckpointService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/registry-ingestion-checkpoints/{uuid}": {
      "get": {
        "summary": "GetRegistryIngestionCheckpoint",
        "description": "Fetches the registry ingestion checkpoint specified by the UUID.",
        "operationId": "RegistryIngestionCheckpointService_GetRegistryIngestionCheckpoint",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RegistryIngestionCheckpoint"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RegistryIngestionCheckpointService"
        ]
      },
      "delete": {
        "summary": "DeleteRegistryIngestionCheckpoint",
        "description": "Deletes the registry ingestion checkpoint specified by the UUID.",
        "operationId": "RegistryIngestionCheckpointService_DeleteRegistryIngestionCheckpoint",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RegistryIngestionCheckpointService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repositories": {
      "get": {
        "summary": "ListRepositories",
        "description": "Lists the source control repositories in a given namespace.",
        "operationId": "RepositoryService_ListRepositories",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListRepositoriesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryService"
        ]
      },
      "post": {
        "summary": "CreateRepository",
        "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",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Repository"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryServiceCreateRepositoryBody"
            }
          }
        ],
        "tags": [
          "RepositoryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repositories/{uuid}": {
      "get": {
        "summary": "GetRepository",
        "description": "Fetches a source control repository identified by a given UUID.",
        "operationId": "RepositoryService_GetRepository",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Repository"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RepositoryService"
        ]
      },
      "delete": {
        "summary": "DeleteRepository",
        "description": "Deletes a source control repository specified by its UUID.",
        "operationId": "RepositoryService_DeleteRepository",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-branch-protections": {
      "get": {
        "summary": "ListRepositoryBranchProtections",
        "description": "Lists the repository branch protections in the given namespace.",
        "operationId": "RepositoryBranchProtectionService_ListRepositoryBranchProtections",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListRepositoryBranchProtectionsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryBranchProtectionService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateRepositoryBranchProtection",
        "description": "Creates a repository branch protection.",
        "operationId": "RepositoryBranchProtectionService_CreateRepositoryBranchProtection",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryBranchProtection"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryBranchProtectionServiceCreateRepositoryBranchProtectionBody"
            }
          }
        ],
        "tags": [
          "RepositoryBranchProtectionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-branch-protections/{uuid}": {
      "get": {
        "summary": "GetRepositoryBranchProtection",
        "description": "Fetches a respository branch protection identified by the UUID.",
        "operationId": "RepositoryBranchProtectionService_GetRepositoryBranchProtection",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryBranchProtection"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RepositoryBranchProtectionService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteRepositoryBranchProtection",
        "description": "Deletes a repository branch protection specified by the UUID.",
        "operationId": "RepositoryBranchProtectionService_DeleteRepositoryBranchProtection",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryBranchProtectionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-check-runs": {
      "get": {
        "summary": "ListRepositoryCheckRuns",
        "description": "Lists all repository check runs in the given namespace.",
        "operationId": "RepositoryCheckRunService_ListRepositoryCheckRuns",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListRepositoryCheckRunsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryCheckRunService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateRepositoryCheckRun",
        "description": "Creates a repository check run.\n\nThe creation of the resource will be an upsert if the given spec.commit_sha and spec.platform_source\nare already available.",
        "operationId": "RepositoryCheckRunService_CreateRepositoryCheckRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryCheckRun"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryCheckRunServiceCreateRepositoryCheckRunBody"
            }
          }
        ],
        "tags": [
          "RepositoryCheckRunService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-check-runs/{uuid}": {
      "get": {
        "summary": "GetRepositoryCheckRun",
        "description": "Fetches a repository check run identified by the UUID.",
        "operationId": "RepositoryCheckRunService_GetRepositoryCheckRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryCheckRun"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RepositoryCheckRunService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteRepositoryCheckRun",
        "description": "Deletes a repository check run specified by the UUID.",
        "operationId": "RepositoryCheckRunService_DeleteRepositoryCheckRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryCheckRunService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-codeowners-file": {
      "get": {
        "summary": "ListRepositoryCodeownersFile",
        "description": "Lists the repository's codeowners file information in the given namespace.",
        "operationId": "RepositoryCodeownersFileService_ListRepositoryCodeownersFile",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListRepositoryCodeownersFileResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryCodeownersFileService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateRepositoryCodeownersFile",
        "description": "Creates repository codeowners file information.",
        "operationId": "RepositoryCodeownersFileService_CreateRepositoryCodeownersFile",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryCodeownersFile"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryCodeownersFileServiceCreateRepositoryCodeownersFileBody"
            }
          }
        ],
        "tags": [
          "RepositoryCodeownersFileService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-codeowners-file/{uuid}": {
      "get": {
        "summary": "GetRepositoryCodeownersFile",
        "description": "Fetches a repository's codeowners file information identified by the UUID.",
        "operationId": "RepositoryCodeownersFileService_GetRepositoryCodeownersFile",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryCodeownersFile"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RepositoryCodeownersFileService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteRepositoryCodeownersFile",
        "description": "Deletes a repository's codeowners file information.",
        "operationId": "RepositoryCodeownersFileService_DeleteRepositoryCodeownersFile",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryCodeownersFileService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-collaborators": {
      "get": {
        "summary": "ListRepositoryCollaborators",
        "description": "Lists the repository collaborators in the given namespace.",
        "operationId": "RepositoryCollaboratorsService_ListRepositoryCollaborators",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListRepositoryCollaboratorsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryCollaboratorsService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateRepositoryCollaborators",
        "description": "Creates a repository collaborator.",
        "operationId": "RepositoryCollaboratorsService_CreateRepositoryCollaborators",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryCollaborators"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryCollaboratorsServiceCreateRepositoryCollaboratorsBody"
            }
          }
        ],
        "tags": [
          "RepositoryCollaboratorsService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-collaborators/{uuid}": {
      "get": {
        "summary": "GetRepositoryCollaborators",
        "description": "Fetches a repository collaborator identified by the UUID.",
        "operationId": "RepositoryCollaboratorsService_GetRepositoryCollaborators",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryCollaborators"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RepositoryCollaboratorsService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteRepositoryCollaborators",
        "description": "Deletes a repository collaborator specified by the UUID.",
        "operationId": "RepositoryCollaboratorsService_DeleteRepositoryCollaborators",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryCollaboratorsService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-commits": {
      "get": {
        "summary": "ListRepositoryCommits",
        "description": "Lists repository commits in a given namespace.",
        "operationId": "RepositoryCommitService_ListRepositoryCommits",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListRepositoryCommitsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryCommitService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateRepositoryCommit",
        "description": "Creates a repository commit.",
        "operationId": "RepositoryCommitService_CreateRepositoryCommit",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryCommit"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryCommitServiceCreateRepositoryCommitBody"
            }
          }
        ],
        "tags": [
          "RepositoryCommitService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-commits/{uuid}": {
      "get": {
        "summary": "GetRepositoryCommit",
        "description": "Fetches a repository commit identified by the UUID.",
        "operationId": "RepositoryCommitService_GetRepositoryCommit",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryCommit"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RepositoryCommitService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteRepositoryCommit",
        "description": "Deletes a repository commit specified by the UUID.",
        "operationId": "RepositoryCommitService_DeleteRepositoryCommit",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryCommitService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-deployment-env-config": {
      "get": {
        "summary": "ListRepositoryDeploymentEnvConfig",
        "description": "Lists all repository's deployment environment configurations in the namespace.",
        "operationId": "RepositoryDeploymentEnvConfigService_ListRepositoryDeploymentEnvConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListRepositoryDeploymentEnvConfigResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryDeploymentEnvConfigService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateRepositoryDeploymentEnvConfig",
        "description": "Creates the repository's deployment environment configuration information.",
        "operationId": "RepositoryDeploymentEnvConfigService_CreateRepositoryDeploymentEnvConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryDeploymentEnvConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryDeploymentEnvConfigServiceCreateRepositoryDeploymentEnvConfigBody"
            }
          }
        ],
        "tags": [
          "RepositoryDeploymentEnvConfigService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-deployment-env-config/{uuid}": {
      "get": {
        "summary": "GetRepositoryDeploymentEnvConfig",
        "description": "Fetches a repository's deployment environment configuration identified by the UUID.",
        "operationId": "RepositoryDeploymentEnvConfigService_GetRepositoryDeploymentEnvConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryDeploymentEnvConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RepositoryDeploymentEnvConfigService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteRepositoryDeploymentEnvConfig",
        "description": "Deletes a rrepository's deployment environment configuration specified by the UUID.",
        "operationId": "RepositoryDeploymentEnvConfigService_DeleteRepositoryDeploymentEnvConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryDeploymentEnvConfigService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-hooks": {
      "get": {
        "summary": "ListRepositoryHooks",
        "description": "Lists all repository hooks in the given namespace.",
        "operationId": "RepositoryHookService_ListRepositoryHooks",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListRepositoryHooksResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryHookService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateRepositoryHook",
        "description": "Creates a repository hook.\n\nThe creation of the resource will be an upsert if the given spec.external_id is already available.",
        "operationId": "RepositoryHookService_CreateRepositoryHook",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryHook"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryHookServiceCreateRepositoryHookBody"
            }
          }
        ],
        "tags": [
          "RepositoryHookService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-hooks/{uuid}": {
      "get": {
        "summary": "GetRepositoryHook",
        "description": "Fetches a repository hook identified by the UUID.",
        "operationId": "RepositoryHookService_GetRepositoryHook",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryHook"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RepositoryHookService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteRepositoryHook",
        "description": "Deletes a repository hook specified by the UUID.",
        "operationId": "RepositoryHookService_DeleteRepositoryHook",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryHookService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-issues": {
      "get": {
        "summary": "ListRepositoryIssues",
        "description": "Lists all repository issues in the given namespace.",
        "operationId": "RepositoryIssueService_ListRepositoryIssues",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListRepositoryIssuesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryIssueService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateRepositoryIssue",
        "description": "Creates a repository issue.\n\nCreation of the resource will be an upsert if the given spec.external_id and spec.platform_resource\nare already available.",
        "operationId": "RepositoryIssueService_CreateRepositoryIssue",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryIssue"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryIssueServiceCreateRepositoryIssueBody"
            }
          }
        ],
        "tags": [
          "RepositoryIssueService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-issues/{uuid}": {
      "get": {
        "summary": "GetRepositoryIssue",
        "description": "Fetches a repository issue identified by the UUID.",
        "operationId": "RepositoryIssueService_GetRepositoryIssue",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryIssue"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RepositoryIssueService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteRepositoryIssue",
        "description": "Deletes a repository issue specified by the UUID.",
        "operationId": "RepositoryIssueService_DeleteRepositoryIssue",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryIssueService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-pull-requests": {
      "get": {
        "summary": "ListRepositoryPullRequests",
        "description": "Lists all repository pull requests in the given namespace.",
        "operationId": "RepositoryPullRequestService_ListRepositoryPullRequests",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListRepositoryPullRequestsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryPullRequestService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateRepositoryPullRequest",
        "description": "Creates a repository pull request.\n\nThe creation of the resource will be an upsert if the given spec.external_id and spec.platform_resource\nare already available.",
        "operationId": "RepositoryPullRequestService_CreateRepositoryPullRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryPullRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryPullRequestServiceCreateRepositoryPullRequestBody"
            }
          }
        ],
        "tags": [
          "RepositoryPullRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-pull-requests/{uuid}": {
      "get": {
        "summary": "GetRepositoryPullRequest",
        "description": "Fetches a repository pull request identified by the UUID.",
        "operationId": "RepositoryPullRequestService_GetRepositoryPullRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryPullRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RepositoryPullRequestService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteRepositoryPullRequest",
        "description": "Deletes a repository pull request specified by the UUID.",
        "operationId": "RepositoryPullRequestService_DeleteRepositoryPullRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryPullRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-releases": {
      "get": {
        "summary": "ListRepositoryReleases",
        "description": "Lists all repository releases in the given namespace.",
        "operationId": "RepositoryReleaseService_ListRepositoryReleases",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListRepositoryReleasesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryReleaseService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateRepositoryRelease",
        "description": "Creates a repository release.\n\nThe creation of the resource will be an upsert if the given spec.external_id and spec.platform_resource\nare already available.",
        "operationId": "RepositoryReleaseService_CreateRepositoryRelease",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryRelease"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryReleaseServiceCreateRepositoryReleaseBody"
            }
          }
        ],
        "tags": [
          "RepositoryReleaseService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-releases/{uuid}": {
      "get": {
        "summary": "GetRepositoryRelease",
        "description": "Fetches a repository release identified by the UUID.",
        "operationId": "RepositoryReleaseService_GetRepositoryRelease",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryRelease"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RepositoryReleaseService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteRepositoryRelease",
        "description": "Deletes a repository release specified by the UUID.",
        "operationId": "RepositoryReleaseService_DeleteRepositoryRelease",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryReleaseService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-scan-metadata": {
      "get": {
        "summary": "ListRepositoryScanMetadata",
        "description": "Lists all scan metadata of a repository.",
        "operationId": "RepositoryScanMetadataService_ListRepositoryScanMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListRepositoryScanMetadataResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryScanMetadataService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateRepositoryScanMetadata",
        "description": "Creates the scan metadata of a repository.",
        "operationId": "RepositoryScanMetadataService_CreateRepositoryScanMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryScanMetadata"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryScanMetadataServiceCreateRepositoryScanMetadataBody"
            }
          }
        ],
        "tags": [
          "RepositoryScanMetadataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-scan-metadata/{uuid}": {
      "get": {
        "summary": "GetRepository",
        "description": "Fetches the scan meta data of a repository identified by the UUID.",
        "operationId": "RepositoryScanMetadataService_GetRepositoryScanMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryScanMetadata"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RepositoryScanMetadataService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteRepositoryScanMetadata",
        "description": "Deletes the scan metadata of a repository specified by the UUID.",
        "operationId": "RepositoryScanMetadataService_DeleteRepositoryScanMetadata",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryScanMetadataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-statuses": {
      "get": {
        "summary": "ListRepositoryStatuses",
        "description": "Lists all repository statuses in the given namespace.",
        "operationId": "RepositoryStatusService_ListRepositoryStatuses",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListRepositoryStatusesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryStatusService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateRepositoryStatus",
        "description": "Creates a repository status.\n\nThe creation of the resource will be an upsert if the given spec.commit_sha and spec.platform_source\nare already available.",
        "operationId": "RepositoryStatusService_CreateRepositoryStatus",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryStatusServiceCreateRepositoryStatusBody"
            }
          }
        ],
        "tags": [
          "RepositoryStatusService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-statuses/{uuid}": {
      "get": {
        "summary": "GetRepositoryStatus",
        "description": "Fetches a repository status identified by the UUID.",
        "operationId": "RepositoryStatusService_GetRepositoryStatus",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryStatus"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RepositoryStatusService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteRepositoryStatus",
        "description": "Deletes a repository status specified by the UUID.",
        "operationId": "RepositoryStatusService_DeleteRepositoryStatus",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryStatusService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-tag-protections": {
      "get": {
        "summary": "ListRepositoryTagProtection",
        "description": "Lists all repository's tag protections information.",
        "operationId": "RepositoryTagProtectionService_ListRepositoryTagProtection",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListRepositoryTagProtectionResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryTagProtectionService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateRepositoryTagProtection",
        "description": "Creates repository's tag protection information.",
        "operationId": "RepositoryTagProtectionService_CreateRepositoryTagProtection",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryTagProtection"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryTagProtectionServiceCreateRepositoryTagProtectionBody"
            }
          }
        ],
        "tags": [
          "RepositoryTagProtectionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-tag-protections/{uuid}": {
      "get": {
        "summary": "GetRepositoryTagProtection",
        "description": "Fetches a repository's tag protection information identified by the UUID.",
        "operationId": "RepositoryTagProtectionService_GetRepositoryTagProtection",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryTagProtection"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RepositoryTagProtectionService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteRepositoryTagProtection",
        "description": "Deletes a repository's tag protection information specified by the UUID.",
        "operationId": "RepositoryTagProtectionService_DeleteRepositoryTagProtection",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryTagProtectionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-versions": {
      "get": {
        "summary": "ListRepositoryVersions",
        "description": "Lists all repository versions in a given namespace.",
        "operationId": "RepositoryVersionService_ListRepositoryVersions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListRepositoryVersionsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryVersionService"
        ]
      },
      "post": {
        "summary": "CreateRepositoryVersion",
        "description": "Creates a repository version or updates a repository version if it already exists.",
        "operationId": "RepositoryVersionService_CreateRepositoryVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryVersion"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RepositoryVersionServiceCreateRepositoryVersionBody"
            }
          }
        ],
        "tags": [
          "RepositoryVersionService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/repository-versions/{uuid}": {
      "get": {
        "summary": "GetRepositoryVersion",
        "description": "Fetches a repository version specified by its UUID.",
        "operationId": "RepositoryVersionService_GetRepositoryVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RepositoryVersion"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RepositoryVersionService"
        ]
      },
      "delete": {
        "summary": "DeleteRepositoryVersion",
        "description": "Deletes a repository version specified by its UUID.",
        "operationId": "RepositoryVersionService_DeleteRepositoryVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RepositoryVersionService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/request-assured-package-versions": {
      "get": {
        "summary": "ListRequestAssuredPackageVersions",
        "description": "Lists all request assured package versions in a given namespace",
        "operationId": "RequestAssuredPackageVersionService_ListRequestAssuredPackageVersions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListRequestAssuredPackageVersionsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RequestAssuredPackageVersionService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateRequestAssuredPackageVersion",
        "description": "Creates a request assured package version in a given namespace.",
        "operationId": "RequestAssuredPackageVersionService_CreateRequestAssuredPackageVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RequestAssuredPackageVersion"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RequestAssuredPackageVersionServiceCreateRequestAssuredPackageVersionBody"
            }
          }
        ],
        "tags": [
          "RequestAssuredPackageVersionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/request-assured-package-versions/{uuid}": {
      "get": {
        "summary": "GetRequestAssuredPackageVersion",
        "description": "Fetches the request assured package version identified by the UUID.",
        "operationId": "RequestAssuredPackageVersionService_GetRequestAssuredPackageVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1RequestAssuredPackageVersion"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RequestAssuredPackageVersionService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteRequestAssuredPackageVersion",
        "description": "Deletes a request assured package version specified by its UUID.",
        "operationId": "RequestAssuredPackageVersionService_DeleteRequestAssuredPackageVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RequestAssuredPackageVersionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/rule-set-imports": {
      "get": {
        "summary": "ListRuleSetImports",
        "description": "Lists all imported rule set objects in a namespace.",
        "operationId": "RuleSetImportService_ListRuleSetImports",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListRuleSetImportsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RuleSetImportService"
        ]
      },
      "post": {
        "summary": "CreateRuleSetImport",
        "description": "Imports the given set of rules.",
        "operationId": "RuleSetImportService_CreateRuleSetImport",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ImportedRuleSet"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RuleSetImportServiceCreateRuleSetImportBody"
            }
          }
        ],
        "tags": [
          "RuleSetImportService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/rule-set-imports/{uuid}": {
      "get": {
        "summary": "GetRuleSetImport",
        "description": "Fetches an imported rule set object specified by its UUID.",
        "operationId": "RuleSetImportService_GetRuleSetImport",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ImportedRuleSet"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RuleSetImportService"
        ]
      },
      "delete": {
        "summary": "DeleteRuleSetImport",
        "description": "Deletes an imported rule set object specified by its UUID.",
        "operationId": "RuleSetImportService_DeleteRuleSetImport",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "RuleSetImportService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/saved-queries": {
      "get": {
        "summary": "ListSavedQueries",
        "description": "Lists all saved queries in a namespace.",
        "operationId": "SavedQueryService_ListSavedQueries",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListSavedQueriesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SavedQueryService"
        ]
      },
      "post": {
        "summary": "CreateSavedQuery",
        "description": "Creates a saved query.",
        "operationId": "SavedQueryService_CreateSavedQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SavedQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SavedQueryServiceCreateSavedQueryBody"
            }
          }
        ],
        "tags": [
          "SavedQueryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/saved-queries/{uuid}": {
      "get": {
        "summary": "GetSavedQuery",
        "description": "Fetches the saved query identified by the UUID.",
        "operationId": "SavedQueryService_GetSavedQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SavedQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "SavedQueryService"
        ]
      },
      "delete": {
        "summary": "DeleteSavedQuery",
        "description": "Deletes the saved query specified by the UUID.",
        "operationId": "SavedQueryService_DeleteSavedQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SavedQueryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/saved-queries/{uuid}/evaluate": {
      "get": {
        "summary": "EvaluateSavedQuery",
        "description": "Evaluates the saved query, then returns the query and the result.",
        "operationId": "SavedQueryService_EvaluateSavedQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SavedQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "SavedQueryService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/sbom-export": {
      "post": {
        "summary": "CreateSBOMExport",
        "description": "Creates an SBOM export.",
        "operationId": "SBOMExportService_CreateSBOMExport",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ExportedSBOM"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SBOMExportServiceCreateSBOMExportBody"
            }
          }
        ],
        "tags": [
          "SBOMExportService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/sbom-imports": {
      "get": {
        "summary": "ListSBOMImports",
        "description": "Lists all imported SBOMS in a namespace.",
        "operationId": "SBOMImportService_ListSBOMImports",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListSBOMImportsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SBOMImportService"
        ]
      },
      "post": {
        "summary": "CreateSBOMImport",
        "description": "Imports the given SBOM.",
        "operationId": "SBOMImportService_CreateSBOMImport",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ImportedSBOM"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SBOMImportServiceCreateSBOMImportBody"
            }
          }
        ],
        "tags": [
          "SBOMImportService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/sbom-imports/{uuid}": {
      "get": {
        "summary": "GetSBOMImport",
        "description": "Fetches an imported SBOM specified by its UUID.",
        "operationId": "SBOMImportService_GetSBOMImport",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ImportedSBOM"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "SBOMImportService"
        ]
      },
      "delete": {
        "summary": "DeleteSBOMImport",
        "description": "Deletes an imported SBOM specified by its UUID.",
        "operationId": "SBOMImportService_DeleteSBOMImport",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SBOMImportService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/sbom-organizational-contacts": {
      "get": {
        "summary": "ListSBOMOrganizationalContacts",
        "description": "Lists all SBOM organizational contacts in a namespace.",
        "operationId": "SBOMOrganizationalContactService_ListSBOMOrganizationalContacts",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListSBOMOrganizationalContactsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SBOMOrganizationalContactService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateSBOMOrganizationalContact",
        "description": "Creates an SBOM organizational contact.",
        "operationId": "SBOMOrganizationalContactService_CreateSBOMOrganizationalContact",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SBOMOrganizationalContact"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SBOMOrganizationalContactServiceCreateSBOMOrganizationalContactBody"
            }
          }
        ],
        "tags": [
          "SBOMOrganizationalContactService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/sbom-organizational-contacts/{uuid}": {
      "get": {
        "summary": "GetSBOMOrganizationalContact",
        "description": "Fetches an SBOM organizational contact specified by its UUID.",
        "operationId": "SBOMOrganizationalContactService_GetSBOMOrganizationalContact",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SBOMOrganizationalContact"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "SBOMOrganizationalContactService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteSBOMOrganizationalContact",
        "description": "Deletes an SBOM organizational contact specified by its UUID.",
        "operationId": "SBOMOrganizationalContactService_DeleteSBOMOrganizationalContact",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SBOMOrganizationalContactService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-credit-usages": {
      "get": {
        "summary": "ListScanCreditUsages",
        "description": "Lists ScanCreditUsage records visible in the namespace.",
        "operationId": "ScanCreditUsageService_ListScanCreditUsages",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListScanCreditUsagesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ScanCreditUsageService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateScanCreditUsage",
        "description": "Creates a ScanCreditUsage snapshot for a tenant. Called by the licensing\naggregation job at the end of each run.",
        "operationId": "ScanCreditUsageService_CreateScanCreditUsage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScanCreditUsage"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ScanCreditUsageServiceCreateScanCreditUsageBody"
            }
          }
        ],
        "tags": [
          "ScanCreditUsageService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-credit-usages/{uuid}": {
      "get": {
        "summary": "GetScanCreditUsage",
        "description": "Fetches a ScanCreditUsage record specified by its UUID.",
        "operationId": "ScanCreditUsageService_GetScanCreditUsage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScanCreditUsage"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ScanCreditUsageService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-log-requests": {
      "post": {
        "summary": "CreateScanLogRequest",
        "description": "Create a scan log request.",
        "operationId": "ScanLogRequestService_CreateScanLogRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScanLogRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ScanLogRequestServiceCreateScanLogRequestBody"
            }
          }
        ],
        "tags": [
          "ScanLogRequestService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-profiles": {
      "get": {
        "summary": "ListScanProfiles returns a list of toolchain profiles in a specified\nnamespace.",
        "operationId": "ScanProfileService_ListScanProfiles",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListScanProfilesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ScanProfileService"
        ]
      },
      "post": {
        "summary": "CreateScanProfile creates a toolchain profile.",
        "operationId": "ScanProfileService_CreateScanProfile",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScanProfile"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ScanProfileServiceCreateScanProfileBody"
            }
          }
        ],
        "tags": [
          "ScanProfileService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-profiles/{uuid}": {
      "get": {
        "summary": "GetScanProfile returns a toolchain profile specified by its UUID.",
        "operationId": "ScanProfileService_GetScanProfile",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScanProfile"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ScanProfileService"
        ]
      },
      "delete": {
        "summary": "DeleteScanProfile deletes a toolchain profile specified by its UUID.",
        "operationId": "ScanProfileService_DeleteScanProfile",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ScanProfileService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-requests": {
      "get": {
        "summary": "ListScanRequests",
        "description": "Lists the scan requests in a given namespace.",
        "operationId": "ScanRequestService_ListScanRequests",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListScanRequestsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ScanRequestService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateScanRequest",
        "description": "Creates a scan request.",
        "operationId": "ScanRequestService_CreateScanRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScanRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ScanRequestServiceCreateScanRequestBody"
            }
          }
        ],
        "tags": [
          "ScanRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-requests/{uuid}": {
      "get": {
        "summary": "GetScanRequest",
        "description": "Fetches a scan request identified by a given UUID.",
        "operationId": "ScanRequestService_GetScanRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScanRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ScanRequestService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteScanRequest",
        "description": "Deletes a scan request specified by its UUID.",
        "operationId": "ScanRequestService_DeleteScanRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ScanRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-results": {
      "get": {
        "summary": "ListScanResults",
        "description": "List scan results based on the specified list parameters.",
        "operationId": "ScanResultService_ListScanResults",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListScanResultsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ScanResultService"
        ]
      },
      "post": {
        "summary": "CreateScanResult",
        "description": "Create a scan result.",
        "operationId": "ScanResultService_CreateScanResult",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScanResult"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ScanResultServiceCreateScanResultBody"
            }
          }
        ],
        "tags": [
          "ScanResultService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-results/{uuid}": {
      "get": {
        "summary": "GetScanResult",
        "description": "Return a specified scan result.",
        "operationId": "ScanResultService_GetScanResult",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScanResult"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ScanResultService"
        ]
      },
      "delete": {
        "summary": "DeleteScanResult",
        "description": "Delete a specified scan result.",
        "operationId": "ScanResultService_DeleteScanResult",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ScanResultService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-workflow-results": {
      "get": {
        "summary": "ListScanWorkflowResults",
        "description": "Lists all scan workflow results in a given namespace.",
        "operationId": "ScanWorkflowResultService_ListScanWorkflowResults",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListScanWorkflowResultsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ScanWorkflowResultService"
        ]
      },
      "post": {
        "summary": "CreateScanWorkflowResult",
        "description": "Creates a scan workflow result in a given namespace.",
        "operationId": "ScanWorkflowResultService_CreateScanWorkflowResult",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScanWorkflowResult"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ScanWorkflowResultServiceCreateScanWorkflowResultBody"
            }
          }
        ],
        "tags": [
          "ScanWorkflowResultService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-workflow-results/{uuid}": {
      "get": {
        "summary": "GetScanWorkflowResult",
        "description": "Fetches comprehensive information about a scan workflow result identified by a given UUID.",
        "operationId": "ScanWorkflowResultService_GetScanWorkflowResult",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScanWorkflowResult"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ScanWorkflowResultService"
        ]
      },
      "delete": {
        "summary": "DeleteScanWorkflowResult",
        "description": "Deletes a scan workflow result specified by its UUID.",
        "operationId": "ScanWorkflowResultService_DeleteScanWorkflowResult",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ScanWorkflowResultService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-workflows": {
      "get": {
        "summary": "ListScanWorkflows",
        "description": "Lists all scan workflows in a given namespace.",
        "operationId": "ScanWorkflowService_ListScanWorkflows",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListScanWorkflowsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ScanWorkflowService"
        ]
      },
      "post": {
        "summary": "CreateScanWorkflow",
        "description": "Creates a scan workflow in a given namespace.",
        "operationId": "ScanWorkflowService_CreateScanWorkflow",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScanWorkflow"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ScanWorkflowServiceCreateScanWorkflowBody"
            }
          }
        ],
        "tags": [
          "ScanWorkflowService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scan-workflows/{uuid}": {
      "get": {
        "summary": "GetScanWorkflow",
        "description": "Fetches comprehensive information about a scan workflow identified by a\ngiven UUID.",
        "operationId": "ScanWorkflowService_GetScanWorkflow",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScanWorkflow"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ScanWorkflowService"
        ]
      },
      "delete": {
        "summary": "DeleteScanWorkflow",
        "description": "Deletes a scan workflow specified by its UUID.",
        "operationId": "ScanWorkflowService_DeleteScanWorkflow",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ScanWorkflowService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scm-credentials": {
      "get": {
        "summary": "ListSCMCredentials lists all SCM credentials in the given namespace.",
        "operationId": "SCMCredentialService_ListSCMCredentials",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListSCMCredentialsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SCMCredentialService"
        ]
      },
      "post": {
        "summary": "CreateSCMCredential creates an SCM credential in the given namespace.",
        "operationId": "SCMCredentialService_CreateSCMCredential",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SCMCredential"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SCMCredentialServiceCreateSCMCredentialBody"
            }
          }
        ],
        "tags": [
          "SCMCredentialService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scm-credentials/{uuid}": {
      "get": {
        "summary": "GetSCMCredential fetches the SCM credential identified by UUID.",
        "operationId": "SCMCredentialService_GetSCMCredential",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SCMCredential"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "SCMCredentialService"
        ]
      },
      "delete": {
        "summary": "DeleteSCMCredential deletes the SCM credential specified by UUID.",
        "operationId": "SCMCredentialService_DeleteSCMCredential",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SCMCredentialService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scm_app": {
      "get": {
        "summary": "ListSCMApp",
        "description": "Lists all SCM app.",
        "operationId": "SCMAppService_ListSCMApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListSCMAppResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SCMAppService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateSCMApp",
        "description": "Creates an SCM app.",
        "operationId": "SCMAppService_CreateSCMApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SCMApp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SCMAppServiceCreateSCMAppBody"
            }
          }
        ],
        "tags": [
          "SCMAppService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scm_app/{uuid}": {
      "get": {
        "summary": "GetSCMApp",
        "description": "Fetches an SCM app identified by the UUID.",
        "operationId": "SCMAppService_GetSCMApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SCMApp"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "SCMAppService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteSCMApp",
        "description": "Deletes an SCM app specified by the UUID.",
        "operationId": "SCMAppService_DeleteSCMApp",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SCMAppService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scope-policies": {
      "get": {
        "summary": "ListScopePolicies",
        "description": "Lists all scope policies in a namespace.",
        "operationId": "ScopePolicyService_ListScopePolicies",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListScopePoliciesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ScopePolicyService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateScopePolicy",
        "description": "Creates a scope policy.",
        "operationId": "ScopePolicyService_CreateScopePolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScopePolicy"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ScopePolicyServiceCreateScopePolicyBody"
            }
          }
        ],
        "tags": [
          "ScopePolicyService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/scope-policies/{uuid}": {
      "get": {
        "summary": "GetScopePolicy",
        "description": "Fetches the scope policy identified by the UUID.",
        "operationId": "ScopePolicyService_GetScopePolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ScopePolicy"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ScopePolicyService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteScopePolicy",
        "description": "Deletes the scope policy specified by the UUID.",
        "operationId": "ScopePolicyService_DeleteScopePolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ScopePolicyService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/secret-rules": {
      "get": {
        "summary": "ListSecretRules",
        "description": "Lists all secret rules in a namespace.",
        "operationId": "SecretRuleService_ListSecretRules",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListSecretRulesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SecretRuleService"
        ]
      },
      "post": {
        "summary": "CreateSecretRule",
        "description": "Creates a secret rule.",
        "operationId": "SecretRuleService_CreateSecretRule",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SecretRule"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SecretRuleServiceCreateSecretRuleBody"
            }
          }
        ],
        "tags": [
          "SecretRuleService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/secret-rules/{uuid}": {
      "get": {
        "summary": "GetSecretRule",
        "description": "Fetches the secret rule identified by the UUID.",
        "operationId": "SecretRuleService_GetSecretRule",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SecretRule"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "SecretRuleService"
        ]
      },
      "delete": {
        "summary": "DeleteSecretRule",
        "description": "Deletes the secret rule identified by the UUID.",
        "operationId": "SecretRuleService_DeleteSecretRule",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SecretRuleService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/security-review-pull-requests": {
      "get": {
        "summary": "ListSecurityReviewPullRequests",
        "description": "Lists the security review pull requests in a given namespace.",
        "operationId": "SecurityReviewPullRequestService_ListSecurityReviewPullRequests",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListSecurityReviewPullRequestsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SecurityReviewPullRequestService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateRepository",
        "description": "Creates a security review pull request.\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": "SecurityReviewPullRequestService_CreateSecurityReviewPullRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SecurityReviewPullRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SecurityReviewPullRequestServiceCreateSecurityReviewPullRequestBody"
            }
          }
        ],
        "tags": [
          "SecurityReviewPullRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/security-review-pull-requests/{uuid}": {
      "get": {
        "summary": "GetSecurityReviewPullRequest",
        "description": "Fetches a security review pull request identified by a given UUID.",
        "operationId": "SecurityReviewPullRequestService_GetSecurityReviewPullRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SecurityReviewPullRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "SecurityReviewPullRequestService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteSecurityReviewPullRequest",
        "description": "Deletes a security review pull request specified by its UUID.",
        "operationId": "SecurityReviewPullRequestService_DeleteSecurityReviewPullRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SecurityReviewPullRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/segment-index-request": {
      "post": {
        "summary": "CreateSegmentIndexRequest",
        "description": "Creates a segment index request.",
        "operationId": "SegmentIndexRequestService_CreateSegmentIndexRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SegmentIndexRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SegmentIndexRequestServiceCreateSegmentIndexRequestBody"
            }
          }
        ],
        "tags": [
          "SegmentIndexRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/segment-match-validate-request": {
      "post": {
        "summary": "CreateSegmentMatchValidateRequest",
        "description": "Creates a segment match validate request.",
        "operationId": "SegmentMatchValidateRequestService_CreateSegmentMatchValidateRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SegmentMatchValidateRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SegmentMatchValidateRequestServiceCreateSegmentMatchValidateRequestBody"
            }
          }
        ],
        "tags": [
          "SegmentMatchValidateRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/segment-query-request": {
      "post": {
        "summary": "CreateSegmentQueryRequest",
        "description": "Creates a segment query request.",
        "operationId": "SegmentQueryRequestService_CreateSegmentQueryRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SegmentQueryRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SegmentQueryRequestServiceCreateSegmentQueryRequestBody"
            }
          }
        ],
        "tags": [
          "SegmentQueryRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/semgrep-rules": {
      "get": {
        "summary": "ListSemgrepRules",
        "description": "Lists all Semgrep rules in the namespace.",
        "operationId": "SemgrepRuleService_ListSemgrepRules",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListSemgrepRulesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SemgrepRuleService"
        ]
      },
      "post": {
        "summary": "CreateSemgrepRule",
        "description": "Creates a Semgrep rule.",
        "operationId": "SemgrepRuleService_CreateSemgrepRule",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SemgrepRule"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SemgrepRuleServiceCreateSemgrepRuleBody"
            }
          }
        ],
        "tags": [
          "SemgrepRuleService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/semgrep-rules/{uuid}": {
      "get": {
        "summary": "GetSemgrepRule",
        "description": "Fetches a Semgrep rule identified by the UUID.",
        "operationId": "SemgrepRuleService_GetSemgrepRule",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SemgrepRule"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "SemgrepRuleService"
        ]
      },
      "delete": {
        "summary": "DeleteSemgrepRule",
        "description": "Deletes the rule specified by the UUID.",
        "operationId": "SemgrepRuleService_DeleteSemgrepRule",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SemgrepRuleService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/service-requests": {
      "get": {
        "summary": "ListServiceRequests",
        "description": "Lists all service requests in a namespace.",
        "operationId": "ServiceRequestService_ListServiceRequests",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListServiceRequestsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ServiceRequestService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateServiceRequest\nCreates a service request.",
        "operationId": "ServiceRequestService_CreateServiceRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ServiceRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ServiceRequestServiceCreateServiceRequestBody"
            }
          }
        ],
        "tags": [
          "ServiceRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/service-requests/{uuid}": {
      "get": {
        "summary": "GetServiceRequest",
        "description": "Lists a service request specified by its UUID.",
        "operationId": "ServiceRequestService_GetServiceRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ServiceRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ServiceRequestService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteServiceRequest",
        "description": "Deletes a service request specified by its UUID.",
        "operationId": "ServiceRequestService_DeleteServiceRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ServiceRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/service-token": {
      "post": {
        "summary": "CreateServiceToken",
        "description": "Creates a new service token.",
        "operationId": "ServiceTokenService_CreateServiceToken",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ServiceToken"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ServiceTokenServiceCreateServiceTokenBody"
            }
          }
        ],
        "tags": [
          "ServiceTokenService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/support-access-requests": {
      "post": {
        "summary": "CreateSupportAccessRequest",
        "description": "Creates a SupportAccessRequest request.",
        "operationId": "SupportAccessRequestService_CreateSupportAccessRequest",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SupportAccessRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SupportAccessRequestServiceCreateSupportAccessRequestBody"
            }
          }
        ],
        "tags": [
          "SupportAccessRequestService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/supported-toolchain-profiles": {
      "get": {
        "summary": "ListSupportedToolChainProfiles returns a list of toolchain profiles in a specified namespace.",
        "operationId": "SupportedToolChainProfileService_ListSupportedToolChainProfiles",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListSupportedToolChainProfilesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SupportedToolChainProfileService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/supported-toolchain-profiles/{uuid}": {
      "get": {
        "operationId": "SupportedToolChainProfileService_GetSupportedToolChainProfile",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SupportedToolChainProfile"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "SupportedToolChainProfileService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/supported-toolchain-versions": {
      "get": {
        "summary": "ListSupportedToolChainVersions returns a list of toolchain profiles in a specified namespace.",
        "operationId": "SupportedToolChainVersionService_ListSupportedToolChainVersions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListSupportedToolChainVersionsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SupportedToolChainVersionService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateSupportedToolChainVersion creates a toolchain profile.",
        "operationId": "SupportedToolChainVersionService_CreateSupportedToolChainVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SupportedToolChainVersion"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SupportedToolChainVersionServiceCreateSupportedToolChainVersionBody"
            }
          }
        ],
        "tags": [
          "SupportedToolChainVersionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/supported-toolchain-versions/{uuid}": {
      "get": {
        "summary": "GetSupportedToolChainVersion returns a toolchain profile specified by its UUID.",
        "operationId": "SupportedToolChainVersionService_GetSupportedToolChainVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SupportedToolChainVersion"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "SupportedToolChainVersionService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteSupportedToolChainVersion deletes a toolchain profile specified by its UUID.",
        "operationId": "SupportedToolChainVersionService_DeleteSupportedToolChainVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SupportedToolChainVersionService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/system-config": {
      "get": {
        "summary": "ListSystemConfig",
        "description": "Returns the system configuration as a list of length 1.",
        "operationId": "SystemConfigService_ListSystemConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListSystemConfigResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SystemConfigService"
        ]
      },
      "post": {
        "summary": "CreateSystemConfig",
        "description": "Creates a system configuration object.",
        "operationId": "SystemConfigService_CreateSystemConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SystemConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SystemConfigServiceCreateSystemConfigBody"
            }
          }
        ],
        "tags": [
          "SystemConfigService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/system-config/{uuid}": {
      "get": {
        "summary": "GetSystemConfig",
        "description": "Fetches the system configuration specified by the UUID.",
        "operationId": "SystemConfigService_GetSystemConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SystemConfig"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "SystemConfigService"
        ]
      },
      "delete": {
        "summary": "DeleteSystemConfig",
        "description": "Deletes the system configuration specified by the UUID.",
        "operationId": "SystemConfigService_DeleteSystemConfig",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "SystemConfigService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/table-row-groups": {
      "get": {
        "summary": "ListTableRowGroups",
        "description": "Lists all table row groups.",
        "operationId": "TableRowGroupService_ListTableRowGroups",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListTableRowGroupsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "TableRowGroupService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateTableRowGroup",
        "description": "Creates a table row group.",
        "operationId": "TableRowGroupService_CreateTableRowGroup",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1TableRowGroup"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TableRowGroupServiceCreateTableRowGroupBody"
            }
          }
        ],
        "tags": [
          "TableRowGroupService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/table-row-groups/{uuid}": {
      "get": {
        "summary": "GetTableRowGroup",
        "description": "Fetches the table row group identified by the UUID.",
        "operationId": "TableRowGroupService_GetTableRowGroup",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1TableRowGroup"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "TableRowGroupService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteTableRowGroup",
        "description": "Deletes the table row group specified by the UUID.",
        "operationId": "TableRowGroupService_DeleteTableRowGroup",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "TableRowGroupService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/telemetries": {
      "post": {
        "summary": "CreateTelemetry",
        "description": "Creates a telemetry.",
        "operationId": "TelemetryService_CreateTelemetry",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Telemetry"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TelemetryServiceCreateTelemetryBody"
            }
          }
        ],
        "tags": [
          "TelemetryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/tool-patterns": {
      "get": {
        "summary": "ListToolPatterns",
        "description": "Lists tool patterns.",
        "operationId": "ToolPatternService_ListToolPatterns",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListToolPatternsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ToolPatternService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateToolPattern",
        "description": "Creates a tool pattern.",
        "operationId": "ToolPatternService_CreateToolPattern",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ToolPattern"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ToolPatternServiceCreateToolPatternBody"
            }
          }
        ],
        "tags": [
          "ToolPatternService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/tool-patterns/{uuid}": {
      "get": {
        "summary": "GetToolPattern",
        "description": "Fetches a tool pattern identified by the UUID.",
        "operationId": "ToolPatternService_GetToolPattern",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ToolPattern"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ToolPatternService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteToolPattern",
        "description": "Deletes a tool pattern specified by the UUID.",
        "operationId": "ToolPatternService_DeleteToolPattern",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ToolPatternService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/ui-telemetries": {
      "post": {
        "summary": "CreateUITelemetry",
        "description": "Creates a UI telemetry message.",
        "operationId": "UITelemetryService_CreateUITelemetry",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1UITelemetry"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UITelemetryServiceCreateUITelemetryBody"
            }
          }
        ],
        "tags": [
          "UITelemetryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/user-telemetries": {
      "get": {
        "summary": "ListUserTelemetries",
        "description": "Lists all user telemetry objects in a given namespace.",
        "operationId": "UserTelemetryService_ListUserTelemetries",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListUserTelemetriesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "UserTelemetryService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateUserTelemetry",
        "description": "Creates a user telemetry message.",
        "operationId": "UserTelemetryService_CreateUserTelemetry",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1UserTelemetry"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserTelemetryServiceCreateUserTelemetryBody"
            }
          }
        ],
        "tags": [
          "UserTelemetryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/user-telemetries/{uuid}": {
      "get": {
        "summary": "GetUserTelemetry",
        "description": "Fetches the user telemetry identified by the UUID.",
        "operationId": "UserTelemetryService_GetUserTelemetry",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1UserTelemetry"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "UserTelemetryService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteUserTelemetry",
        "description": "Deletes a user telemetry specified by the UUID.",
        "operationId": "UserTelemetryService_DeleteUserTelemetry",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "UserTelemetryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/vector-store-data": {
      "post": {
        "summary": "CreateVectorStoreData",
        "description": "Uploads data to the vector store.",
        "operationId": "VectorStoreDataService_CreateVectorStoreData",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1VectorStoreData"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VectorStoreDataServiceCreateVectorStoreDataBody"
            }
          }
        ],
        "tags": [
          "VectorStoreDataService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/vector-store-data-delete-queries": {
      "post": {
        "summary": "CreateVectorStoreDataDeleteQuery",
        "description": "Deletes documents matching a filter.",
        "operationId": "VectorStoreDataDeleteQueryService_CreateVectorStoreDataDeleteQuery",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1VectorStoreDataDeleteQuery"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VectorStoreDataDeleteQueryServiceCreateVectorStoreDataDeleteQueryBody"
            }
          }
        ],
        "tags": [
          "VectorStoreDataDeleteQueryService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/vector-stores": {
      "get": {
        "summary": "ListVectorStores",
        "description": "Lists all vector stores visible in a namespace.",
        "operationId": "VectorStoreService_ListVectorStores",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListVectorStoresResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "VectorStoreService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreateVectorStore",
        "description": "Creates an VectorStore.",
        "operationId": "VectorStoreService_CreateVectorStore",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1VectorStore"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VectorStoreServiceCreateVectorStoreBody"
            }
          }
        ],
        "tags": [
          "VectorStoreService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/vector-stores/{uuid}": {
      "get": {
        "summary": "GetVectorStore",
        "description": "Fetches an VectorStore specified by its UUID.",
        "operationId": "VectorStoreService_GetVectorStore",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1VectorStore"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "VectorStoreService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeleteVectorStore",
        "description": "Deletes an VectorStore specified by its UUID.",
        "operationId": "VectorStoreService_DeleteVectorStore",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "VectorStoreService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/version-diffs": {
      "get": {
        "summary": "ListVersionDiffs",
        "description": "Lists all version diffs in a namespace.",
        "operationId": "ChangeImpactService_ListVersionDiffs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListVersionDiffsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ChangeImpactService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateVersionDiff",
        "description": "Creates a version diff.\nThe creation of the resource will be an upsert if the\ngiven spec.external_id and spec.platform_resource are already available.",
        "operationId": "ChangeImpactService_CreateVersionDiff",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1VersionDiff"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ChangeImpactServiceCreateVersionDiffBody"
            }
          }
        ],
        "tags": [
          "ChangeImpactService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/version-diffs/{uuid}": {
      "get": {
        "summary": "GetVersionDiff",
        "description": "Fetches a version diff identified by the UUID.",
        "operationId": "ChangeImpactService_GetVersionDiff",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1VersionDiff"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ChangeImpactService"
        ],
        "x-internal": true
      },
      "delete": {
        "summary": "DeleteVersionDiff",
        "description": "Deletes a version diff.",
        "operationId": "ChangeImpactService_DeleteVersionDiff",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "ChangeImpactService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/version-upgrades": {
      "get": {
        "summary": "ListVersionUpgrades",
        "description": "Lists all version upgrades in the namespace.",
        "operationId": "VersionUpgradeService_ListVersionUpgrades",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListVersionUpgradesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "VersionUpgradeService"
        ]
      },
      "post": {
        "summary": "CreateVersionUpgrade",
        "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",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1VersionUpgrade"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VersionUpgradeServiceCreateVersionUpgradeBody"
            }
          }
        ],
        "tags": [
          "VersionUpgradeService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/version-upgrades/{uuid}": {
      "get": {
        "summary": "GetVersionUpgrade",
        "description": "Fetches a version upgrade identified by the UUID.",
        "operationId": "VersionUpgradeService_GetVersionUpgrade",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1VersionUpgrade"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "VersionUpgradeService"
        ]
      },
      "delete": {
        "summary": "DeleteVersionUpgrade",
        "description": "Deletes a version upgrade specified by the UUID.",
        "operationId": "VersionUpgradeService_DeleteVersionUpgrade",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "VersionUpgradeService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/vex-export": {
      "post": {
        "operationId": "VEXExportService_CreateVEXExport",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ExportedVEX"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VEXExportServiceCreateVEXExportBody"
            }
          }
        ],
        "tags": [
          "VEXExportService"
        ]
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/vulnerabilities": {
      "get": {
        "summary": "ListVulnerabilities",
        "description": "List all vulnerabilities in the namespace.",
        "operationId": "VulnerabilityService_ListVulnerabilities",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListVulnerabilitiesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "VulnerabilityService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreateVulnerability",
        "description": "Creates a vulnerability based on the ID.",
        "operationId": "VulnerabilityService_CreateVulnerability",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Vuln"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/VulnerabilityServiceCreateVulnerabilityBody"
            }
          }
        ],
        "tags": [
          "VulnerabilityService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/vulnerabilities/{uuid}": {
      "get": {
        "summary": "GetVulnerability",
        "description": "Fetches a vulnerability identified by the UUID.",
        "operationId": "VulnerabilityService_GetVulnerability",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Vuln"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "get_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "VulnerabilityService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeleteVulnerability",
        "description": "Deletes a vulnerability based on the UUID.",
        "operationId": "VulnerabilityService_DeleteVulnerability",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "delete_parameters.action",
            "description": "Action to be executed with delete request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "delete_parameters.force",
            "description": "Force will force the deletion of the resource if any\nchecks fail.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "VulnerabilityService"
        ],
        "x-internal": true
      }
    },
    "/v1/namespaces/{tenant_meta.namespace}/{parent_kind}/metric-configurations": {
      "get": {
        "summary": "ListMetrics",
        "description": "Lists all metrics associated with a given parent.",
        "operationId": "MetricConfigurationService_ListMetricConfigurations",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListMetricConfigurationsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tenant_meta.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\".",
            "in": "path",
            "required": true,
            "type": "string",
            "x-endor-name": "Namespace"
          },
          {
            "name": "parent_kind",
            "description": "The parent object is optional for the APIs that have such a parent relationship.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "list_parameters.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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_parameters.group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list_parameters.group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "list_parameters.group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_parameters.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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "MetricConfigurationService"
        ],
        "x-internal": true
      }
    },
    "/v1/onboard": {
      "post": {
        "summary": "CreateOnboard",
        "description": "Creates an onboard.\nA root folder will be created along the onboard.\nThe folder will have the same name as the onboard.",
        "operationId": "OnboardService_CreateOnboard",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Onboard"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "Onboard initiates the onboarding of a new tenant in the system.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1Onboard"
            }
          }
        ],
        "tags": [
          "OnboardService"
        ],
        "x-internal": true
      }
    },
    "/v1/plugin-binaries": {
      "get": {
        "summary": "ListPluginBinaries",
        "description": "Lists all the available plugin binaries.",
        "operationId": "PluginBinaryService_ListPluginBinaries",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListPluginBinariesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "PluginBinaryService"
        ],
        "x-internal": false
      },
      "post": {
        "summary": "CreatePluginBinary",
        "description": "Creates an entry for a plugin binary.",
        "operationId": "PluginBinaryService_CreatePluginBinary",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PluginBinary"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1PluginBinary"
            }
          }
        ],
        "tags": [
          "PluginBinaryService"
        ],
        "x-internal": true
      }
    },
    "/v1/plugin-binaries/{uuid}": {
      "get": {
        "summary": "GetPluginBinary",
        "description": "Fetches a plugin binary identified by the UUID.",
        "operationId": "PluginBinaryService_GetPluginBinary",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1PluginBinary"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PluginBinaryService"
        ],
        "x-internal": false
      },
      "delete": {
        "summary": "DeletePluginBinary",
        "description": "Deletes a plugin binary specified by the UUID.",
        "operationId": "PluginBinaryService_DeletePluginBinary",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PluginBinaryService"
        ],
        "x-internal": true
      }
    },
    "/v1/scm-webhook-events": {
      "post": {
        "summary": "CreateSCMWebhookEvent",
        "description": "Creates a SCM webhook event.",
        "operationId": "SCMWebhookEventService_CreateSCMWebhookEvent",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1SCMWebhookEvent"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "SCMWebhookEvent represents SCM webhook events that are processed by the system.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1SCMWebhookEvent"
            }
          }
        ],
        "tags": [
          "SCMWebhookEventService"
        ],
        "x-internal": true
      }
    },
    "/v1/tenants": {
      "get": {
        "summary": "ListTenants",
        "description": "Lists all tenants.",
        "operationId": "TenantService_ListTenants",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListTenantsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "TenantService"
        ]
      },
      "post": {
        "summary": "CreateTenant",
        "description": "Creates a tenant.",
        "operationId": "TenantService_CreateTenant",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Tenant"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "Tenant represents a tenant in the system.\n\nMostly includes tenant configuration parameters.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1Tenant"
            }
          }
        ],
        "tags": [
          "TenantService"
        ]
      },
      "patch": {
        "summary": "UpdateTenant",
        "description": "Updates a specified tenant.",
        "operationId": "TenantService_UpdateTenant",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Tenant"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "Request to update a tenant.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1UpdateTenantRequest"
            }
          }
        ],
        "tags": [
          "TenantService"
        ]
      }
    },
    "/v1/tenants/{uuid}": {
      "get": {
        "summary": "GetTenant",
        "description": "Fetches a tenant specified by its UUID.",
        "operationId": "TenantService_GetTenant",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1Tenant"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "TenantService"
        ]
      },
      "delete": {
        "summary": "DeleteTenant",
        "description": "Deletes a tenant specified by its UUID.",
        "operationId": "TenantService_DeleteTenant",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "object",
              "properties": {}
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "description": "The UUID of the resource to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "TenantService"
        ]
      }
    },
    "/v1/users": {
      "get": {
        "summary": "ListUsers",
        "description": "Lists all users.",
        "operationId": "UserService_ListUsers",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1ListUsersResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "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\")\".",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_token",
            "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "page_size",
            "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "action",
            "description": "Action to be executed with a request. Not supported for all endpoints.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "mask",
            "description": "List of fields to return (all fields are returned by default).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "traverse",
            "description": "Get data from any child namespaces as well.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "sort.path",
            "description": "Field to sort objects by, for example, meta.name.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "sort.order",
            "description": "Sort order. Default: ASC.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "SORT_ENTRY_ORDER_UNSPECIFIED",
              "SORT_ENTRY_ORDER_ASC",
              "SORT_ENTRY_ORDER_DESC"
            ],
            "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
          },
          {
            "name": "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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "group.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group.show_aggregation_uuids",
            "description": "Return the UUID of each object in each group as specified by\naggregation_paths.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "group.unique_count_paths",
            "description": "List of fields for which we want the unique count.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group.unique_value_paths",
            "description": "List of fields for which we want the unique values.\nSupports arrays and maps.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "ci_run_uuid",
            "description": "Only return objects from PR scans that match this context id.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_id",
            "description": "Page ID to retrieve.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group_by_time.aggregation_paths",
            "description": "Group the objects based on this time field,\nfor example, meta.create_time.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group_by_time.show_aggregation_uuids",
            "description": "Return the UUIDs of the objects in each group.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "group_by_time.interval",
            "description": "Interval unit by which the objects should be grouped.",
            "in": "query",
            "required": false,
            "type": "string",
            "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"
            ],
            "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
          },
          {
            "name": "group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "group_by_time.start_time",
            "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "group_by_time.end_time",
            "description": "End of the time period to group objects.\nDefaults to the current time.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "group_by_time.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.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "group_by_time.aggregation_value_field",
            "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",
            "required": false,
            "type": "string"
          },
          {
            "name": "group_by_time.aggregation_operator",
            "description": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "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.",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "UserService"
        ],
        "x-internal": true
      },
      "post": {
        "summary": "CreateUser",
        "description": "Creates a user in a given namespace. Not exposed to public API.",
        "operationId": "UserService_CreateUser",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1User"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "User represents a user in the system.\n\nMostly includes configuration parameters that are user wise.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1User"
            }
          }
        ],
        "tags": [
          "UserService"
        ],
        "x-internal": true
      },
      "patch": {
        "summary": "UpdateUser",
        "description": "Updates a specific user. Not exposed to public API.",
        "operationId": "UserService_UpdateUser",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1User"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "Request to update a user.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1UpdateUserRequest"
            }
          }
        ],
        "tags": [
          "UserService"
        ],
        "x-internal": true
      }
    },
    "/v1/users/{uuid}": {
      "get": {
        "summary": "GetUser",
        "description": "Fetches a user specified by their UUID",
        "operationId": "UserService_GetUser",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v1User"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uuid",
            "description": "The UUID of the requested resource.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "UserService"
        ],
        "x-internal": true
      }
    }
  },
  "definitions": {
    "ADOBoardsConfigAuthConfig": {
      "type": "object",
      "properties": {
        "pat": {
          "$ref": "#/definitions/AuthConfigPAT",
          "description": "pat authenticates using a Personal Access Token."
        }
      },
      "description": "AuthConfig holds the credentials used to authenticate with ADO."
    },
    "ADOBoardsConfigProjectConfig": {
      "type": "object",
      "properties": {
        "project_guid": {
          "type": "string",
          "description": "ADO project GUID. Populated server-side during validation.",
          "readOnly": true
        },
        "project_name": {
          "type": "string",
          "description": "Project name in ADO."
        },
        "work_item_type": {
          "type": "string",
          "description": "Work item type to create, e.g., \"Bug\", \"Task\", \"Epic\"."
        },
        "child_work_item_type": {
          "type": "string",
          "description": "Work item type to create as a child under the parent work item."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The tags to apply to the ADO work item."
        }
      },
      "description": "ProjectConfig specifies a single ADO project and work item associated.",
      "required": [
        "project_name",
        "work_item_type"
      ]
    },
    "ADOBoardsConfigUserConfig": {
      "type": "object",
      "properties": {
        "org_url": {
          "type": "string",
          "description": "The URL of the ADO organization (e.g. https://dev.azure.com/myorg)."
        },
        "auth": {
          "$ref": "#/definitions/ADOBoardsConfigAuthConfig",
          "description": "Authentication configuration for the ADO organization."
        }
      },
      "description": "UserConfig holds org URL and auth provided directly by the user.",
      "required": [
        "org_url",
        "auth"
      ]
    },
    "AIEmbeddingsRequestServiceCreateAIEmbeddingsRequestBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the embedding request.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Embedding requests are measured by tenant.",
          "title": "Embedding requests are measured by tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata for the embedding request."
        },
        "spec": {
          "$ref": "#/definitions/v1AIEmbeddingsRequestSpec",
          "description": "Embedding request specifications."
        }
      },
      "description": "AIEmbeddingsRequest represents an AI embedding request in the system.",
      "required": [
        "meta"
      ]
    },
    "AIQueryPackageData": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "repository": {
          "type": "string"
        },
        "latest_version": {
          "type": "string"
        },
        "qualified_name": {
          "type": "string"
        },
        "package_version_uuid": {
          "type": "string"
        }
      }
    },
    "AIQueryServiceCreateAIQueryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The uuid of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The tenant metadata restricts access to a specific tenant.",
          "title": "The tenant metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AIQuerySpec"
        }
      },
      "description": "Implements queries by interacting with the OpenAI API.",
      "required": [
        "tenant_meta",
        "meta"
      ]
    },
    "AIRequestServiceCreateAIRequestBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The uuid of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The tenant metadata restricts access to a specific tenant.",
          "title": "The tenant metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AIRequestSpec"
        }
      },
      "description": "Implements qi request by interacting with the LLM API.",
      "required": [
        "tenant_meta",
        "meta"
      ],
      "x-internal": true
    },
    "AIResultAILevel": {
      "type": "string",
      "enum": [
        "AI_LEVEL_UNSPECIFIED",
        "AI_LEVEL_CRITICAL",
        "AI_LEVEL_HIGH",
        "AI_LEVEL_MEDIUM",
        "AI_LEVEL_LOW"
      ],
      "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."
    },
    "AIResultSAST": {
      "type": "object",
      "properties": {
        "cwes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The CWEs of the vulnerability."
        },
        "dataflow": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SourceLocation"
          },
          "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."
        },
        "language": {
          "type": "string",
          "description": "Programming language of the file where this result was found."
        },
        "location": {
          "$ref": "#/definitions/v1SourceLocation",
          "description": "The main location of the vulnerability."
        },
        "classification": {
          "$ref": "#/definitions/v1FindingClassification",
          "description": "Classification of the finding type."
        },
        "summary": {
          "type": "string",
          "description": "Short prose summary of the vulnerability (the \"## Summary\" section)."
        },
        "remediation": {
          "type": "string",
          "description": "Recommended remediation, including any unified-diff fix (the \"## Remediation Guidance\" section)."
        },
        "security_controls": {
          "type": "string",
          "description": "Security controls assessment table (the \"## Security Controls\" section)."
        },
        "exploit_reproduction": {
          "type": "string",
          "description": "Step-by-step exploit reproduction for high/critical true positives (the \"## Exploit Reproduction\" section)."
        },
        "attack_vector": {
          "type": "string",
          "description": "Attack vector breakdown table when no exploit reproduction is emitted (the \"## Attack Vector\" section)."
        },
        "validation_outcome": {
          "type": "string",
          "description": "Validation outcome for unknown findings (the \"## Validation Outcome\" section)."
        },
        "verification_scorecard": {
          "type": "string",
          "description": "Verification scorecard with per-criterion verdicts (the \"## Verification Scorecard\" section)."
        },
        "severity_scoring": {
          "type": "string",
          "description": "Severity scoring breakdown (the \"## Severity Scoring\" section)."
        }
      }
    },
    "AISASTScanCacheScanOutcome": {
      "type": "string",
      "enum": [
        "SCAN_OUTCOME_UNSPECIFIED",
        "SCAN_OUTCOME_SUCCESS",
        "SCAN_OUTCOME_SKIPPED",
        "SCAN_OUTCOME_FAILED",
        "SCAN_OUTCOME_OUT_OF_SCOPE",
        "SCAN_OUTCOME_IN_PROGRESS"
      ],
      "default": "SCAN_OUTCOME_UNSPECIFIED",
      "description": "ScanOutcome represents the result of scanning a segment or file.\n\n - SCAN_OUTCOME_UNSPECIFIED: No outcome has been set.\n - SCAN_OUTCOME_SUCCESS: Segment was scanned successfully; results (if any) are in LinterResult.\n - SCAN_OUTCOME_SKIPPED: Segment was skipped as not interesting or trivial.\n - SCAN_OUTCOME_FAILED: LLM call or post-processing failed for this segment.\n - SCAN_OUTCOME_OUT_OF_SCOPE: Segment was excluded by include/exclude path rules.\n - SCAN_OUTCOME_IN_PROGRESS: File is currently owned by an active scan attempt."
    },
    "AISASTScanCacheSegmentEntry": {
      "type": "object",
      "properties": {
        "fqn": {
          "type": "string",
          "description": "Fully qualified name of the function. Empty for file-level segments."
        },
        "line_from": {
          "type": "integer",
          "format": "int32",
          "description": "Starting line number (1-indexed)."
        },
        "column_from": {
          "type": "integer",
          "format": "int32",
          "description": "Starting column number (1-indexed). Disambiguates segments in\nminified/bundled code where multiple functions share a line."
        },
        "line_to": {
          "type": "integer",
          "format": "int32",
          "description": "Ending line number (1-indexed, inclusive)."
        },
        "column_to": {
          "type": "integer",
          "format": "int32",
          "description": "Ending column number (1-indexed, inclusive)."
        },
        "content_hash": {
          "type": "string",
          "description": "SHA-256 hex hash of the segment source content. Uses the same hashing\napproach as repoindexer/indexer.go calculateHash."
        }
      },
      "description": "SegmentEntry is a single segment's scan state within a file-level document."
    },
    "AISASTScanCacheServiceCreateAISASTScanCacheBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the scan cache entry.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Scan cache entries are associated with a tenant.",
          "title": "Scan cache entries are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata for the scan cache entry."
        },
        "spec": {
          "$ref": "#/definitions/v1AISASTScanCacheSpec",
          "description": "Scan cache entry specifications."
        }
      },
      "description": "AISASTScanCache tracks scan outcomes at file-level granularity for AI SAST\nincremental scanning. Each document contains the segments for a single\nfile, enabling efficient bulk reads and writes against MongoDB. When the\noutcome changes (e.g. a previously failed file is retried successfully),\nthe existing cache entry is updated in place.\n\nThis is a cache: LinterResults remain the authoritative finding records.\nIf the cache is lost, the system falls back to a full scan.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "AISASTScanCacheServiceUpdateAISASTScanCacheBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest",
          "description": "Update request parameters."
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the scan cache entry.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Scan cache entries are associated with a tenant.",
              "title": "Scan cache entries are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata for the scan cache entry."
            },
            "spec": {
              "$ref": "#/definitions/v1AISASTScanCacheSpec",
              "description": "Scan cache entry specifications."
            }
          },
          "description": "The scan cache entry to update.",
          "title": "The scan cache entry to update.",
          "x-internal": true
        }
      },
      "description": "Request to update an AI SAST scan cache entry.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "AISASTStatusAISASTScanState": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "AISastAnalysisParametersAISastAnalysisMode": {
      "type": "string",
      "enum": [
        "AI_SAST_ANALYSIS_MODE_UNSPECIFIED",
        "AI_SAST_ANALYSIS_MODE_AGENT",
        "AI_SAST_ANALYSIS_MODE_AGENT_DEEP",
        "AI_SAST_ANALYSIS_MODE_AGENT_FALLBACK"
      ],
      "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."
    },
    "AISastContextSummaryComponentHashes": {
      "type": "object",
      "properties": {
        "tenant_context": {
          "type": "string",
          "description": "Tenant-scope AISastCustomerContext fingerprint; empty when no tenant context exists."
        },
        "namespace_context": {
          "type": "string",
          "description": "Namespace-scope AISastCustomerContext fingerprint; empty when no namespace context exists."
        },
        "repo_signals": {
          "type": "string",
          "description": "Repo-signal fingerprint: rollup over LLM-config files (CLAUDE.md, cursor rules, skills, custom paths)."
        },
        "feedback": {
          "type": "string",
          "description": "Feedback fingerprint: rollup over Feedback objects in scope."
        },
        "project_context": {
          "type": "string",
          "description": "Project-scope AISastCustomerContext fingerprint; empty when no project context exists."
        },
        "memory": {
          "type": "string",
          "description": "Memory-store fingerprint; empty when no memory input exists."
        }
      },
      "description": "Per-input SHA-256 fingerprints for attribution, telemetry, and future selective recompute."
    },
    "AISastContextSummaryPathSpec": {
      "type": "object",
      "properties": {
        "directory": {
          "type": "string",
          "description": "Repository-relative directory; no leading slash, no \"..\"."
        },
        "include_globs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Include globs evaluated relative to directory; empty means include all."
        },
        "exclude_globs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Exclude globs applied after include filtering."
        }
      },
      "description": "Directory subtree a PATH-scoped summary covers.",
      "required": [
        "directory"
      ]
    },
    "AISastContextSummaryProjectSpec": {
      "type": "object",
      "description": "Whole-project summary scope."
    },
    "AISastContextSummaryServiceCreateAISastContextSummaryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant related data for the tenant containing the resource."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "spec": {
          "$ref": "#/definitions/v1AISastContextSummarySpec"
        }
      },
      "description": "Project- or path-scoped summary with three sections (project, finding, FP) and an inputs hash.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "AISastContextSummaryServiceUpdateAISastContextSummaryBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest",
          "description": "Update request parameters."
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant related data for the tenant containing the resource."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta"
            },
            "spec": {
              "$ref": "#/definitions/v1AISastContextSummarySpec"
            }
          },
          "description": "The context summary to update.",
          "title": "The context summary to update.",
          "x-internal": true
        }
      },
      "description": "Update request for an AI SAST context summary.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "AISastCustomerContextServiceCreateAISastCustomerContextBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant related data for the tenant containing the resource."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "spec": {
          "$ref": "#/definitions/v1AISastCustomerContextSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagates system-level context settings to child namespaces when enabled."
        }
      },
      "description": "Customer-provided context scoped to projects using policy-style selectors.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "AISastCustomerContextServiceUpdateAISastCustomerContextBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest",
          "description": "Update request parameters."
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant related data for the tenant containing the resource."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta"
            },
            "spec": {
              "$ref": "#/definitions/v1AISastCustomerContextSpec"
            },
            "propagate": {
              "type": "boolean",
              "description": "Propagates system-level context settings to child namespaces when enabled."
            }
          },
          "description": "The customer context to update.",
          "title": "The customer context to update."
        }
      },
      "description": "Update request for an AI SAST customer context.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "APIKeyServiceCreateAPIKeyBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an API key resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "APIKeys are namespaced objects.",
          "title": "APIKeys are namespaced objects."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1APIKeySpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates whether the API key can be used for the child namespaces."
        }
      },
      "description": "Manages the system API keys.",
      "required": [
        "meta"
      ]
    },
    "AffectedSource": {
      "type": "string",
      "enum": [
        "SOURCE_UNSPECIFIED",
        "SOURCE_OSV",
        "SOURCE_ENDOR",
        "SOURCE_OVAL"
      ],
      "default": "SOURCE_UNSPECIFIED"
    },
    "AgentConfigServiceCreateAgentConfigBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an AgentConfig.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "AgentConfigs are associated with a tenant or are global.",
          "title": "AgentConfigs are associated with a tenant or are global."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AgentConfigSpec",
          "description": "The internal specification of the object."
        },
        "propagate": {
          "type": "boolean",
          "description": "Object can be propagated to child namespaces. Global objects are visible to\nall namespaces."
        }
      },
      "description": "Represents the information captured from an AgentConfig of endorctl.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "AgentConfigServiceUpdateAgentConfigBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of an AgentConfig.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "AgentConfigs are associated with a tenant or are global.",
              "title": "AgentConfigs are associated with a tenant or are global."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1AgentConfigSpec",
              "description": "The internal specification of the object."
            },
            "propagate": {
              "type": "boolean",
              "description": "Object can be propagated to child namespaces. Global objects are visible to\nall namespaces."
            }
          },
          "description": "Represents the information captured from an AgentConfig of endorctl.",
          "x-internal": true
        }
      },
      "description": "Request to update an AgentConfig.",
      "required": [
        "meta"
      ]
    },
    "AgentHookActionMatchType": {
      "type": "string",
      "enum": [
        "MATCH_TYPE_UNSPECIFIED",
        "MATCH_TYPE_BLOCKLIST",
        "MATCH_TYPE_ALLOWLIST"
      ],
      "default": "MATCH_TYPE_UNSPECIFIED",
      "description": "We may want to trigger when the activity matches the patterns in the policy (blocklist)\nor alternatively when the activity does not match the patterns in the policy (allowlist)."
    },
    "AgentHookEventServiceCreateAgentHookEventBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an AgentHookEvent.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "AgentHookEvent are associated with a tenant or are global.",
          "title": "AgentHookEvent are associated with a tenant or are global."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AgentHookEventSpec",
          "description": "The internal specification of the object."
        },
        "processing_result": {
          "$ref": "#/definitions/v1ProcessingResult",
          "description": "Result of downstream processing (inventory, dashboard, etc.).",
          "readOnly": true
        },
        "consumers_failed": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Consumer keys that failed to process this event. Used for retry.",
          "readOnly": true
        }
      },
      "description": "AgentHookEvent represents a single event emitted by the agent runtime.\nEach event has a type, context, and optional type-specific payload.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "AgentHookEventServiceUpdateAgentHookEventBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of an AgentHookEvent.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "AgentHookEvent are associated with a tenant or are global.",
              "title": "AgentHookEvent are associated with a tenant or are global."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1AgentHookEventSpec",
              "description": "The internal specification of the object."
            },
            "processing_result": {
              "$ref": "#/definitions/v1ProcessingResult",
              "description": "Result of downstream processing (inventory, dashboard, etc.).",
              "readOnly": true
            },
            "consumers_failed": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Consumer keys that failed to process this event. Used for retry.",
              "readOnly": true
            }
          },
          "description": "AgentHookEvent represents a single event emitted by the agent runtime.\nEach event has a type, context, and optional type-specific payload.",
          "x-internal": true
        }
      },
      "description": "Request to update an agent hook event.",
      "required": [
        "meta"
      ]
    },
    "AgentHookEventSpecFileOperation": {
      "type": "string",
      "enum": [
        "FILE_OPERATION_UNSPECIFIED",
        "FILE_OPERATION_READ",
        "FILE_OPERATION_WRITE",
        "FILE_OPERATION_DELETE",
        "FILE_OPERATION_EDIT"
      ],
      "default": "FILE_OPERATION_UNSPECIFIED",
      "description": "FileOperation identifies the type of file access."
    },
    "AgentHookPolicyDefinitionServiceCreateAgentHookPolicyDefinitionBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an AgentHookPolicyDefinition.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "AgentHookPolicyDefinitions are associated with a tenant or are global.",
          "title": "AgentHookPolicyDefinitions are associated with a tenant or are global."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AgentHookPolicyDefinitionSpec",
          "description": "The internal specification of the object."
        },
        "propagate": {
          "type": "boolean",
          "description": "Object can be propagated to child namespaces. Global objects are visible to\nall namespaces."
        }
      },
      "description": "AgentHookPolicyDefinition is a top-level CRUD object that stores a single\nAgentHookPolicy alongside standard metadata.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "AgentHookPolicyDefinitionServiceUpdateAgentHookPolicyDefinitionBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of an AgentHookPolicyDefinition.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "AgentHookPolicyDefinitions are associated with a tenant or are global.",
              "title": "AgentHookPolicyDefinitions are associated with a tenant or are global."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1AgentHookPolicyDefinitionSpec",
              "description": "The internal specification of the object."
            },
            "propagate": {
              "type": "boolean",
              "description": "Object can be propagated to child namespaces. Global objects are visible to\nall namespaces."
            }
          },
          "description": "AgentHookPolicyDefinition is a top-level CRUD object that stores a single\nAgentHookPolicy alongside standard metadata.",
          "x-internal": true
        }
      },
      "description": "Request to update an AgentHookPolicyDefinition.",
      "required": [
        "meta"
      ]
    },
    "AgentHookPolicyMatchAgentHookPolicyMatchType": {
      "type": "string",
      "enum": [
        "AGENT_HOOK_POLICY_MATCH_TYPE_UNSPECIFIED",
        "AGENT_HOOK_POLICY_MATCH_TYPE_MCP_TOOL_CALL",
        "AGENT_HOOK_POLICY_MATCH_TYPE_CMD_LINE",
        "AGENT_HOOK_POLICY_MATCH_TYPE_FILE_ACCESS",
        "AGENT_HOOK_POLICY_MATCH_TYPE_SKILL",
        "AGENT_HOOK_POLICY_MATCH_TYPE_MCP_SERVER",
        "AGENT_HOOK_POLICY_MATCH_TYPE_SESSION",
        "AGENT_HOOK_POLICY_MATCH_TYPE_MALWARE",
        "AGENT_HOOK_POLICY_MATCH_TYPE_SECRETS"
      ],
      "default": "AGENT_HOOK_POLICY_MATCH_TYPE_UNSPECIFIED",
      "description": "The type of policy match.\n\n - AGENT_HOOK_POLICY_MATCH_TYPE_MALWARE: A package flagged as malware by the malware check.\n - AGENT_HOOK_POLICY_MATCH_TYPE_SECRETS: A secret detected in file content by the secrets check."
    },
    "AgentSessionCountQueryServiceCreateAgentSessionCountQueryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the query.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Agent session count queries are associated with a tenant.",
          "title": "Agent session count queries are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AgentSessionCountQuerySpec",
          "description": "Agent session count query specification."
        }
      },
      "description": "AgentSessionCountQuery is an internal API returning the total number of\nagent sessions in a namespace. Unlike ListAgentSessions, results are not\nrestricted to sessions owned by or shared with the caller: the response\ncarries only a count, so no session content can be exposed.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "AgentSessionServiceCreateAgentSessionBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The uuid of the resource. This is also the session ID for a user\nthat wants to continue a conversation with the agent.\nIt will accumulate messages over the conversation.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The tenant metadata restricts access to a specific tenant.",
          "title": "The tenant metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AgentSessionSpec"
        }
      },
      "description": "Implements an agent session by interacting with the implemented agents.",
      "required": [
        "tenant_meta",
        "meta"
      ],
      "x-internal": true
    },
    "AgentSessionServiceUpdateAgentSessionBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The uuid of the resource. This is also the session ID for a user\nthat wants to continue a conversation with the agent.\nIt will accumulate messages over the conversation.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "The tenant metadata restricts access to a specific tenant.",
              "title": "The tenant metadata restricts access to a specific tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1AgentSessionSpec"
            }
          },
          "description": "Implements an agent session by interacting with the implemented agents.",
          "x-internal": true
        }
      },
      "description": "Request to update an AgentSession.",
      "required": [
        "tenant_meta",
        "meta"
      ]
    },
    "AgentToolServiceCreateAgentToolBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The uuid of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The tenant metadata restricts access to a specific tenant.",
          "title": "The tenant metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AgentToolSpec"
        }
      },
      "description": "Lists the available Agent Tools that can be attached to agents.",
      "required": [
        "tenant_meta",
        "meta"
      ],
      "x-internal": true
    },
    "AgentWorkflowChainStep": {
      "type": "object",
      "properties": {
        "agent_config_uuid": {
          "type": "string",
          "description": "Reference to an existing AgentConfig by UUID.\nThis allows reusing AgentConfigs across multiple workflows."
        },
        "agent_config": {
          "$ref": "#/definitions/v1AgentConfig",
          "description": "Inline agent configuration.\nThis provides self-contained workflow definitions."
        }
      },
      "description": "ChainStep represents a single step in a chain workflow."
    },
    "AgentWorkflowChainWorkflow": {
      "type": "object",
      "properties": {
        "steps": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/AgentWorkflowChainStep"
          },
          "description": "The steps to execute in sequence."
        }
      },
      "description": "ChainWorkflow defines a sequential execution of agents where each agent's\noutput becomes the input for the next agent.\n\nNote: There is a limitation on the number of results an agent can produce\nreliably. If an agent's output array contains too many elements (for example,\nmore than 10), the next agent in the workflow may not process all results.\nThis should be taken into account when designing workflows and configuring agents."
    },
    "AgentWorkflowServiceCreateAgentWorkflowBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an AgentWorkflow.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "AgentWorkflows are associated with a tenant or are global.",
          "title": "AgentWorkflows are associated with a tenant or are global."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AgentWorkflowSpec",
          "description": "The internal specification of the object."
        },
        "propagate": {
          "type": "boolean",
          "description": "Object can be propagated to child namespaces. Global objects are visible to\nall namespaces."
        }
      },
      "description": "Represents an agent workflow that orchestrates multiple agents.\nWorkflows can be of different types, such as chain, planner, or swarm.\nThe initial implementation supports chain workflows where agents execute\nsequentially, passing outputs to the next agent in the chain.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "AgentWorkflowServiceUpdateAgentWorkflowBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of an AgentWorkflow.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "AgentWorkflows are associated with a tenant or are global.",
              "title": "AgentWorkflows are associated with a tenant or are global."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1AgentWorkflowSpec",
              "description": "The internal specification of the object."
            },
            "propagate": {
              "type": "boolean",
              "description": "Object can be propagated to child namespaces. Global objects are visible to\nall namespaces."
            }
          },
          "description": "Represents an agent workflow that orchestrates multiple agents.\nWorkflows can be of different types, such as chain, planner, or swarm.\nThe initial implementation supports chain workflows where agents execute\nsequentially, passing outputs to the next agent in the chain.",
          "x-internal": true
        }
      },
      "description": "Request to update an AgentWorkflow.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "AgenticInventoryAgentMeta": {
      "type": "object",
      "properties": {
        "agent_version": {
          "type": "string",
          "description": "Agent version if available."
        },
        "models_used": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Models that have been used with this agent."
        },
        "mcp_servers_used": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "MCP servers used by this agent."
        }
      },
      "description": "AgentMeta holds agent-specific inventory fields."
    },
    "AgenticInventoryAiToolMeta": {
      "type": "object",
      "properties": {
        "vendor": {
          "type": "string",
          "description": "Vendor of the tool (e.g. \"Anthropic\", \"OpenSource\", \"Google\")."
        },
        "category": {
          "$ref": "#/definitions/v1AiToolCategory",
          "description": "Category of the tool."
        },
        "evidence": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AiToolEvidence"
          },
          "description": "Evidence supporting the detection."
        }
      },
      "description": "AiToolMeta holds AI tool-specific inventory fields."
    },
    "AgenticInventoryMcpMeta": {
      "type": "object",
      "properties": {
        "server_type": {
          "$ref": "#/definitions/v1ServerType",
          "description": "Whether the server runs locally or remotely."
        },
        "server_host": {
          "type": "string",
          "description": "Host or URL of the server (e.g. \"localhost\", \"https://api.example.com\")."
        },
        "tools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of tool names available/used from this server."
        },
        "agents_used": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Agents that have used this MCP server."
        },
        "models_used": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Models that have been used with this MCP server."
        },
        "transport": {
          "type": "string",
          "description": "Transport: \"stdio\", \"http\", \"sse\" (from AgentMCPServer.transport)."
        },
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Command + args for stdio transport (e.g. [\"npx\",\"-y\",\"@some/mcp\"])."
        },
        "endpoint": {
          "type": "string",
          "description": "Endpoint URL for http/sse transport."
        },
        "env_keys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of env vars passed to the server. Values are NEVER persisted."
        },
        "score_meta": {
          "$ref": "#/definitions/AgenticInventoryMcpScoreMeta",
          "description": "Outputs of the riskevaluator pipeline. Grouped under a sub-message so the\njobctl scoring update writes a single $set on this sub-doc and cannot\nclobber sibling fields written by the per-tool / SESSION_START paths."
        },
        "admin_classification": {
          "$ref": "#/definitions/v1InventoryAdminClassification",
          "description": "Admin (allow/block) classification assigned by AgentHookPolicy matches.\nSticky upward across events; updated by aiapiserver inventory consumer."
        },
        "threat_classification": {
          "$ref": "#/definitions/v1InventoryThreatClassification",
          "description": "Threat (suspicious/malicious) classification assigned by AgentHookPolicy\nmatches. Sticky upward across events."
        }
      },
      "description": "McpMeta holds MCP server-specific inventory fields."
    },
    "AgenticInventoryMcpRiskLevel": {
      "type": "string",
      "enum": [
        "MCP_RISK_LEVEL_UNSPECIFIED",
        "MCP_RISK_LEVEL_LOW",
        "MCP_RISK_LEVEL_MEDIUM",
        "MCP_RISK_LEVEL_HIGH",
        "MCP_RISK_LEVEL_CRITICAL"
      ],
      "default": "MCP_RISK_LEVEL_UNSPECIFIED",
      "description": "McpRiskLevel is the categorical risk level produced by the aggregator."
    },
    "AgenticInventoryMcpScoreDimension": {
      "type": "object",
      "properties": {
        "score": {
          "type": "number",
          "format": "float",
          "description": "Score 1-10 (higher = safer); unset if no checks ran for this category."
        },
        "evidence": {
          "type": "string",
          "description": "Human-readable evidence of what brought the score down. One line per\ntriggered check, formatted as \"[SEVERITY] CheckName: Detail\". Unset when\nno findings fired in this category."
        }
      },
      "description": "McpScoreDimension is a single category's score block."
    },
    "AgenticInventoryMcpScoreDimensions": {
      "type": "object",
      "properties": {
        "auth": {
          "$ref": "#/definitions/AgenticInventoryMcpScoreDimension",
          "description": "Authentication \u0026 Authorization: missing/weak auth, secrets in env or source."
        },
        "input_validation": {
          "$ref": "#/definitions/AgenticInventoryMcpScoreDimension",
          "description": "Input Validation \u0026 Injection: prompt-injection, command injection in tool args."
        },
        "resource_access": {
          "$ref": "#/definitions/AgenticInventoryMcpScoreDimension",
          "description": "Resource Access \u0026 Data Exposure: filesystem reach, database access, exfil paths."
        },
        "transport": {
          "$ref": "#/definitions/AgenticInventoryMcpScoreDimension",
          "description": "Transport \u0026 Network Security: TLS, bind address, HTTP-only endpoints."
        },
        "supply_chain": {
          "$ref": "#/definitions/AgenticInventoryMcpScoreDimension",
          "description": "Supply Chain \u0026 Provenance: package source verification, CVEs, dependency pinning."
        },
        "llm_interaction": {
          "$ref": "#/definitions/AgenticInventoryMcpScoreDimension",
          "description": "LLM / Sampling Interaction: tool description quality, sampling/elicitation hygiene."
        },
        "operational": {
          "$ref": "#/definitions/AgenticInventoryMcpScoreDimension",
          "description": "Operational Hygiene: spec deviations, repo signals, destructive tools, error noise."
        }
      },
      "description": "McpScoreDimensions holds per-category 1-10 scores from the evaluator."
    },
    "AgenticInventoryMcpScoreMeta": {
      "type": "object",
      "properties": {
        "score": {
          "type": "number",
          "format": "float",
          "description": "Headline score 1-10 (higher = safer). Min across category scores\nwith at least one executable check."
        },
        "risk_level": {
          "$ref": "#/definitions/AgenticInventoryMcpRiskLevel",
          "description": "Categorical risk level from the riskevaluator aggregator."
        },
        "score_dimensions": {
          "$ref": "#/definitions/AgenticInventoryMcpScoreDimensions",
          "description": "Per-category scores from the riskevaluator (1-10 each)."
        },
        "scored_config_hash": {
          "type": "string",
          "description": "SHA-256 of the scored ServerConfig (transport+command+endpoint+env_keys)."
        }
      },
      "description": "McpScoreMeta groups the riskevaluator outputs written by the jobctl\nmcpscoring handler."
    },
    "AgenticInventoryModelMeta": {
      "type": "object",
      "properties": {
        "agents_used": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Agents that have used this model."
        },
        "mcp_servers_used": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "MCP servers used with this model."
        }
      },
      "description": "ModelMeta holds model-specific inventory fields."
    },
    "AgenticInventoryServiceUpdateAgenticInventoryBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the inventory record.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Inventory is associated with a tenant.",
              "title": "Inventory is associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1AgenticInventorySpec",
              "description": "The internal specification of the inventory."
            }
          },
          "description": "AgenticInventory represents aggregated metrics for agents, models, MCP servers, skills, and AI tools.\nOne collection with type discriminator. Upserted on agent hook events.",
          "x-internal": true
        }
      },
      "description": "UpdateAgenticInventoryRequest is the request message for updating an agentic inventory record.",
      "required": [
        "meta"
      ]
    },
    "AgenticInventorySkillMeta": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "description": "Human-readable description from SKILL.md frontmatter."
        },
        "path": {
          "type": "string",
          "description": "Path to the SKILL.md file within the workspace or user home directory."
        },
        "content_hash": {
          "type": "string",
          "description": "SHA-256 hash of the SKILL.md content."
        },
        "file_count": {
          "type": "integer",
          "format": "int32",
          "description": "Number of files in the skill directory (including SKILL.md)."
        },
        "allowed_tools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tools declared in SKILL.md frontmatter (allowed-tools)."
        },
        "agents_used": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Agents that have used this skill."
        },
        "content": {
          "type": "string",
          "description": "Base64-encoded SKILL.md content for backend scoring. Capped at 128 KB."
        },
        "license": {
          "type": "string",
          "description": "License from SKILL.md frontmatter (agentskills.io standard field)."
        },
        "compatibility": {
          "type": "string",
          "description": "Environment requirements from SKILL.md frontmatter (agentskills.io standard field)."
        },
        "risk_score": {
          "type": "number",
          "format": "float",
          "description": "Deprecated: use score (field 14) instead. Was risk-oriented (higher = riskier)."
        },
        "risk_dimensions": {
          "$ref": "#/definitions/AgenticInventorySkillRiskDimensions",
          "description": "Deprecated: use score_dimensions (field 15) instead. Was risk-oriented."
        },
        "scored_content_hash": {
          "type": "string",
          "description": "SHA-256 hash of the content that was last scored. Used to detect drift\nand decide whether re-scoring is needed."
        },
        "score": {
          "type": "number",
          "format": "float",
          "description": "Overall score (1-10, higher = safer). Computed by backend LLM analysis."
        },
        "score_dimensions": {
          "$ref": "#/definitions/AgenticInventorySkillScoreDimensions",
          "description": "Per-dimension scores from LLM analysis."
        },
        "admin_classification": {
          "$ref": "#/definitions/v1InventoryAdminClassification",
          "description": "Admin (allow/block) classification assigned by AgentHookPolicy matches.\nSticky upward across events."
        },
        "threat_classification": {
          "$ref": "#/definitions/v1InventoryThreatClassification",
          "description": "Threat (suspicious/malicious) classification assigned by AgentHookPolicy\nmatches. Sticky upward across events."
        }
      },
      "description": "SkillMeta holds skill-specific inventory fields."
    },
    "AgenticInventorySkillRiskDimension": {
      "type": "object",
      "properties": {
        "score": {
          "type": "number",
          "format": "float"
        },
        "evidence": {
          "type": "string"
        }
      },
      "description": "Deprecated: use SkillScoreDimension instead."
    },
    "AgenticInventorySkillRiskDimensions": {
      "type": "object",
      "properties": {
        "instruction_integrity": {
          "$ref": "#/definitions/AgenticInventorySkillRiskDimension"
        },
        "data_protection": {
          "$ref": "#/definitions/AgenticInventorySkillRiskDimension"
        },
        "permission_boundaries": {
          "$ref": "#/definitions/AgenticInventorySkillRiskDimension"
        },
        "external_dependencies": {
          "$ref": "#/definitions/AgenticInventorySkillRiskDimension"
        }
      },
      "description": "Deprecated: use SkillScoreDimensions instead."
    },
    "AgenticInventorySkillScoreDimension": {
      "type": "object",
      "properties": {
        "score": {
          "type": "number",
          "format": "float",
          "description": "Score for this dimension (1-10, higher = safer)."
        },
        "evidence": {
          "type": "string",
          "description": "Brief evidence or explanation from the LLM justifying the score."
        }
      },
      "description": "SkillScoreDimension holds the score and evidence for a single dimension."
    },
    "AgenticInventorySkillScoreDimensions": {
      "type": "object",
      "properties": {
        "instruction_integrity": {
          "$ref": "#/definitions/AgenticInventorySkillScoreDimension",
          "description": "Instruction integrity: prompt injection, boundary violations, behavioral manipulation."
        },
        "data_protection": {
          "$ref": "#/definitions/AgenticInventorySkillScoreDimension",
          "description": "Data protection: credential access, file enumeration, data exfiltration."
        },
        "permission_boundaries": {
          "$ref": "#/definitions/AgenticInventorySkillScoreDimension",
          "description": "Permission boundaries: privilege claims, tool misuse, code execution."
        },
        "external_dependencies": {
          "$ref": "#/definitions/AgenticInventorySkillScoreDimension",
          "description": "External dependencies: untrusted sources, remote code loading, system modification."
        }
      },
      "description": "SkillScoreDimensions holds per-dimension scores from LLM security analysis.\nEach dimension is scored 1-10 (higher = safer) with evidence."
    },
    "AnalyticsExecutionRecordAnalysisState": {
      "type": "string",
      "enum": [
        "ANALYSIS_STATE_UNSPECIFIED",
        "ANALYSIS_STATE_SUCCESS",
        "ANALYSIS_STATE_FAILED"
      ],
      "default": "ANALYSIS_STATE_UNSPECIFIED",
      "description": "Specifies the status of an analytics run.\n\n - ANALYSIS_STATE_SUCCESS: Analysis is successful.\n - ANALYSIS_STATE_FAILED: Analysis has failed."
    },
    "AnalyticsExecutionRecordServiceCreateAnalyticsExecutionRecordBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a AnalyticsExecutionRecord resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Analytic records are associated with a tenant.",
          "title": "Analytic records are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AnalyticsExecutionRecordSpec",
          "description": "Execution record specification."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "Captures the status, time and stats of an execution of the analytics.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "AnalyticsExecutionRecordServiceUpdateAnalyticsExecutionRecordBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of a AnalyticsExecutionRecord resource.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Analytic records are associated with a tenant.",
              "title": "Analytic records are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1AnalyticsExecutionRecordSpec",
              "description": "Execution record specification."
            },
            "context": {
              "$ref": "#/definitions/v1Context"
            }
          },
          "description": "Captures the status, time and stats of an execution of the analytics."
        }
      },
      "description": "Request to update the analytics execution record.\nThis request is used only by the nigration service.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "ApproveServiceRequestServiceCreateApproveServiceRequestBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an approve service request.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "ApproveServiceRequest are raised on a specific internal tenant.",
          "title": "ApproveServiceRequest are raised on a specific internal tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "spec": {
          "$ref": "#/definitions/v1ApproveServiceRequestSpec"
        }
      },
      "description": "ApproveServiceRequest defines a message for approving or denying service requests.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "ArtifactLogServiceCreateArtifactLogBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the artifact log.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespace of the artifact log.",
          "title": "Namespace of the artifact log."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ArtifactLogSpec",
          "description": "Resource kind specific data."
        }
      },
      "description": "An artifact log contains details of the access of artifacts through https://factory.endorlabs.com.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "ArtifactOperationServiceCreateArtifactOperationBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the artifact operation.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The tenant metadata restrict access to a specific tenant.",
          "title": "The tenant metadata restrict access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Meta identifies the object."
        },
        "spec": {
          "$ref": "#/definitions/v1ArtifactOperationSpec"
        },
        "response": {
          "$ref": "#/definitions/v1ArtifactOperationResponse",
          "description": "Response contains the result of the executed artifacts command.",
          "readOnly": true
        }
      },
      "description": "ArtifactOperation implements the artifacts operations on the server side.",
      "required": [
        "tenant_meta",
        "meta"
      ]
    },
    "ArtifactSignatureServiceCreateArtifactSignatureBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an artifact signature object.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant metadata required for artifact signature requests.",
          "title": "Tenant metadata required for artifact signature requests."
        },
        "spec": {
          "$ref": "#/definitions/v1ArtifactSignatureSpec"
        }
      },
      "description": "Represents an artifact signature object.",
      "required": [
        "meta",
        "tenant_meta",
        "spec"
      ]
    },
    "ArtifactSignatureServiceUpdateArtifactSignatureBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of an artifact signature object.",
              "readOnly": true
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata is generic for any object."
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant metadata required for artifact signature requests.",
              "title": "Tenant metadata required for artifact signature requests."
            },
            "spec": {
              "$ref": "#/definitions/v1ArtifactSignatureSpec"
            }
          },
          "description": "Represents an artifact signature object."
        }
      },
      "description": "Request to update an artifact signature.",
      "required": [
        "meta",
        "tenant_meta",
        "spec"
      ]
    },
    "AssuredPackageVersionServiceCreateAssuredPackageVersionBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the assured package version.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Git repositories are associated with a tenant.",
          "title": "Git repositories are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata are generic for any object."
        },
        "spec": {
          "$ref": "#/definitions/v1AssuredPackageVersionSpec",
          "description": "Specification of the assured package version."
        },
        "processing_status": {
          "$ref": "#/definitions/v1ProcessingStatus"
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "AssuredPackageVersion is a  package version that have been built, tested, and patched by Endor Labs.\nIt includes details on how the version was built, tested, and patched, as well as information on the vulnerabilities that have been addressed through the patches.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "AssuredPackageVersionServiceUpdateAssuredPackageVersionBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the assured package version.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Git repositories are associated with a tenant.",
              "title": "Git repositories are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata are generic for any object."
            },
            "spec": {
              "$ref": "#/definitions/v1AssuredPackageVersionSpec",
              "description": "Specification of the assured package version."
            },
            "processing_status": {
              "$ref": "#/definitions/v1ProcessingStatus"
            },
            "context": {
              "$ref": "#/definitions/v1Context"
            }
          },
          "description": "AssuredPackageVersion is a  package version that have been built, tested, and patched by Endor Labs.\nIt includes details on how the version was built, tested, and patched, as well as information on the vulnerabilities that have been addressed through the patches."
        }
      },
      "description": "Request to update the assured package version.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "AuditLogServiceCreateAuditLogBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the audit log.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespace of the message that is accessed.",
          "title": "Namespace of the message that is accessed."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AuditLogSpec"
        }
      },
      "description": "AuditLog represents a CRUD operation on a message.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "AuthConfigPAT": {
      "type": "object",
      "properties": {
        "token": {
          "type": "string",
          "description": "The Personal Access Token required."
        }
      },
      "description": "PAT authenticates with ADO using a Personal Access Token.",
      "required": [
        "token"
      ]
    },
    "AuthenticationLogServiceCreateAuthenticationLogBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the authentication log.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespace of the message that is accessed.",
          "title": "Namespace of the message that is accessed."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AuthenticationLogSpec"
        }
      },
      "description": "Represents a CRUD operation on a message.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "AuthorizationPolicyServiceCreateAuthorizationPolicyBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the AuthorizationPolicy resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Authorization policies are associated with a tenant.",
          "title": "Authorization policies are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "spec": {
          "$ref": "#/definitions/v1AuthorizationPolicySpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates that the object should be visible in the child namespaces."
        }
      },
      "description": "Represents an authorization policy in the system.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "AuthorizationPolicyServiceUpdateAuthorizationPolicyBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the AuthorizationPolicy resource.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Authorization policies are associated with a tenant.",
              "title": "Authorization policies are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata is generic for any object."
            },
            "spec": {
              "$ref": "#/definitions/v1AuthorizationPolicySpec"
            },
            "propagate": {
              "type": "boolean",
              "description": "Indicates that the object should be visible in the child namespaces."
            }
          },
          "description": "Represents an authorization policy in the system."
        }
      },
      "description": "Request to update an authorization policy.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "AutoDetectResultDetectedToolChainVersion": {
      "type": "object",
      "properties": {
        "file": {
          "type": "string",
          "description": "File where the version was detected."
        },
        "version": {
          "type": "string",
          "description": "Version number found in the file."
        }
      },
      "description": "Message for a detected toolchain version."
    },
    "AutoDetectResultDetectedToolChainVersionList": {
      "type": "object",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/AutoDetectResultDetectedToolChainVersion"
          },
          "description": "Toolchain file versions."
        }
      },
      "description": "Message for detected toolchain versions."
    },
    "AutomatedPRParametersLanguageParameters": {
      "type": "object",
      "properties": {
        "reviewers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of reviewers for the pull request."
        },
        "assignees": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of assignees for the pull request."
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of labels for the pull request."
        }
      }
    },
    "AutomatedScanParametersBazelConfiguration": {
      "type": "object",
      "properties": {
        "bazel_exclude_targets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "targets that should be excluded."
        },
        "bazel_include_targets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "targets that should be included."
        },
        "bazel_show_internal_targets": {
          "type": "boolean",
          "description": "show internal targets as dependencies."
        },
        "bazel_targets_query": {
          "type": "string",
          "description": "query that should be used for bazel scans."
        },
        "bazel_workspace_path": {
          "type": "string",
          "description": "bazel workspace path."
        }
      }
    },
    "BatchDependencyMetadataServiceCreateBatchDependencyMetadataBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "tenant_meta": {
          "type": "object",
          "description": "Information about the tenant to which the root package (importer)\nbelongs.",
          "title": "Information about the tenant to which the root package (importer)\nbelongs."
        },
        "spec": {
          "$ref": "#/definitions/v1BatchDependencyMetadataSpec",
          "description": "Resource kind specific data."
        }
      },
      "description": "Request to create multiple DependencyMetadata objects."
    },
    "BatchFileSegmentsServiceCreateBatchFileSegmentsBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespace of the file segments.",
          "title": "Namespace of the file segments."
        },
        "spec": {
          "$ref": "#/definitions/v1BatchFileSegmentsSpec",
          "description": "Resource kind specific data."
        }
      },
      "description": "Request used to create or delete multiple file segment objects."
    },
    "BatchNotificationServiceCreateBatchNotificationBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "tenant_meta": {
          "type": "object",
          "description": "Information about the tenant.",
          "title": "Information about the tenant."
        },
        "spec": {
          "$ref": "#/definitions/v1BatchNotificationSpec",
          "description": "Resource kind specific data."
        }
      },
      "description": "Request to create multiple Notification objects."
    },
    "BatchPackageLicenseQueryServiceCreateBatchPackageLicenseQueryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The uuid of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespace all queries in the batch belong to.",
          "title": "Namespace all queries in the batch belong to."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1BatchPackageLicenseQuerySpec",
          "description": "Resource kind specific data."
        }
      },
      "description": "BatchPackageLicenseQuery groups multiple PackageLicenseQuery requests into a single call.\nThe server evaluates each item and populates its output fields (licenses, copyrights,\nnotices, applied_overrides) before returning the object."
    },
    "BomDependency": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "x-endor-name": "Dependency name"
        },
        "public": {
          "type": "boolean",
          "description": "A boolean to know if the dependency is public or not.\nThis field might not be set.",
          "x-endor-name": "Public Dependency"
        },
        "source_repository_http_clone_url": {
          "type": "string",
          "description": "The HTTP clone URL of the dependency if found. This field might not be\nset.",
          "x-endor-name": "Dependency Git Clone URL"
        },
        "source_repository_ref": {
          "type": "string",
          "description": "The ref of the source repsotiory. This can be a tag or a commit SHA.\nThis field might not be set."
        },
        "release_date": {
          "type": "string",
          "format": "date-time",
          "description": "The date that the dependency was released, if known.",
          "x-endor-name": "Dependency Release Date"
        },
        "platform_source": {
          "$ref": "#/definitions/v1PlatformSource",
          "description": "The source control platform on which the source was discovered.",
          "x-endor-name": "Dependency Platform Source"
        },
        "maven_dependency_scope": {
          "$ref": "#/definitions/PackageVersionDependencyMavenDependencySpecScope"
        },
        "rust_dependency_kind": {
          "$ref": "#/definitions/CargoDependencySpecDependencyKind"
        },
        "golang_dependency_scope": {
          "$ref": "#/definitions/PackageVersionDependencyGoDependencySpecScope"
        },
        "js_dependency_scope": {
          "$ref": "#/definitions/PackageVersionDependencyNpmDependencySpecScope"
        },
        "pypi_dependency_scope": {
          "$ref": "#/definitions/PackageVersionDependencyPypiDependencySpecScope"
        },
        "gem_dependency_scope": {
          "$ref": "#/definitions/PackageVersionDependencyGemDependencySpecScope"
        },
        "nuget_dependency_scope": {
          "$ref": "#/definitions/v1DependencyScope"
        },
        "packagist_dependency_scope": {
          "$ref": "#/definitions/PackageVersionDependencyPackagistDependencySpecScope"
        },
        "github_action_kind": {
          "$ref": "#/definitions/PackageVersionDependencyGitHubActionDependencySpecScope"
        },
        "cocoapod_dependency_scope": {
          "$ref": "#/definitions/v1DependencyScope"
        },
        "hugging_face_dependency_scope": {
          "$ref": "#/definitions/v1DependencyScope"
        },
        "dependency_scope": {
          "$ref": "#/definitions/v1DependencyScope"
        },
        "swift_dependency_scope": {
          "$ref": "#/definitions/v1DependencyScope"
        },
        "conan_dependency_scope": {
          "$ref": "#/definitions/v1DependencyScope"
        },
        "pinned": {
          "type": "boolean",
          "description": "Whether the dependency version is fixed to a single version or not.",
          "x-endor-name": "Pinned Version"
        },
        "abstract": {
          "type": "boolean",
          "description": "Whether this is an abstract dependency, such as a secondary BOM file.",
          "x-endor-name": "Abstract Dependency"
        },
        "targets": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Target"
          },
          "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."
        },
        "vendored": {
          "type": "boolean",
          "description": "Whether this is dependency comes from vendored code or not.",
          "x-endor-name": "Vendored Dependency"
        },
        "imported_type": {
          "$ref": "#/definitions/DependencyImportedType",
          "description": "Whether this is dependency is imported throughthe analysis of the project\nsource."
        },
        "file_locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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."
        },
        "container_layers": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ContainerDependencyLayer"
          },
          "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."
        },
        "runtime_files": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ContainerRuntimeDependencyFile"
          },
          "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."
        },
        "composition_metadata": {
          "$ref": "#/definitions/v1ContainerCompositionMetadata",
          "description": "Composition metadata for the dependency if applicable."
        },
        "patched": {
          "type": "boolean",
          "description": "patched indicates whether the dependency version was patched or not.",
          "x-endor-name": "Patched Version"
        },
        "purl": {
          "type": "string",
          "description": "purl is the package URL notation of the dependency. Populated only for\ncontainers and OS packages.",
          "x-endor-name": "Package URL"
        },
        "eol_timestamp": {
          "type": "string",
          "format": "date-time",
          "description": "End of life timestamp of the dependency if known.",
          "x-endor-name": "End-of-life timestamp"
        },
        "user_app_dep": {
          "type": "boolean",
          "description": "For container BOMs, set to true if this is a user application (i.e. the user associated it with an SCA scan).",
          "x-endor-name": "User application dependency"
        }
      },
      "required": [
        "name"
      ]
    },
    "BomDependencyFile": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string",
          "description": "Relative path of the dependency file used to compute the BOM."
        }
      }
    },
    "CIRunServiceCreateCIRunBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a CI run.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "CI runs are associated with a tenant.",
          "title": "CI runs are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1CIRunSpec",
          "description": "The internal specification of the object."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "Represents the information captured from a CI run of endorctl.",
      "required": [
        "meta",
        "context"
      ]
    },
    "CIRunServiceUpdateCIRunBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of a CI run.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "CI runs are associated with a tenant.",
              "title": "CI runs are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1CIRunSpec",
              "description": "The internal specification of the object."
            },
            "context": {
              "$ref": "#/definitions/v1Context"
            }
          },
          "description": "Represents the information captured from a CI run of endorctl."
        }
      },
      "description": "Request to update a CI run.",
      "required": [
        "meta",
        "context"
      ]
    },
    "CVSSNodeCpeMatch": {
      "type": "object",
      "properties": {
        "vulnerable": {
          "type": "boolean"
        },
        "criteria": {
          "type": "string"
        },
        "match_criteria_id": {
          "type": "string"
        },
        "version_start_excluding": {
          "type": "string"
        },
        "version_start_including": {
          "type": "string"
        },
        "version_end_excluding": {
          "type": "string"
        },
        "version_end_including": {
          "type": "string"
        }
      },
      "required": [
        "vulnerable",
        "criteria",
        "match_criteria_id"
      ]
    },
    "CVSSV3SeverityLevel": {
      "type": "string",
      "enum": [
        "LEVEL_UNSPECIFIED",
        "LEVEL_NONE",
        "LEVEL_LOW",
        "LEVEL_MEDIUM",
        "LEVEL_HIGH",
        "LEVEL_CRITICAL"
      ],
      "default": "LEVEL_UNSPECIFIED"
    },
    "CVSSV4SeverityV4Level": {
      "type": "string",
      "enum": [
        "V4_LEVEL_UNSPECIFIED",
        "V4_LEVEL_NONE",
        "V4_LEVEL_LOW",
        "V4_LEVEL_MEDIUM",
        "V4_LEVEL_HIGH",
        "V4_LEVEL_CRITICAL"
      ],
      "default": "V4_LEVEL_UNSPECIFIED"
    },
    "CallGraphDataServiceCreateCallGraphDataBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID for a call graph resource.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespaces are associated with a tenant.",
          "title": "Namespaces are associated with a tenant."
        },
        "zstd_bytes": {
          "type": "string",
          "format": "byte",
          "description": "Callgraph proto bytes are encoded in zstd bytes.\nThe caller is responsible to compress/uncompress the bytes."
        },
        "any": {
          "$ref": "#/definitions/googleprotobufAny",
          "description": "Callgraph is encoded in json bytes.\nUse the HTTP header x-callgraph-encoding=any to get the spec in this format."
        },
        "related_object": {
          "type": "string",
          "description": "An internal value that identifies the callgraph storage location.",
          "readOnly": true
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "The context of the call graph that is equal to the context of the associated\npackage."
        },
        "storage_url": {
          "type": "string",
          "description": "The URL of the storage location of the callgraph.",
          "readOnly": true
        }
      },
      "description": "CallGraphData represents a call graph data request in the system.",
      "required": [
        "meta",
        "tenant_meta"
      ]
    },
    "CallGraphDataServiceUpdateCallGraphDataBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID for a call graph resource.",
              "readOnly": true
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata is generic for any object."
            },
            "tenant_meta": {
              "type": "object",
              "description": "Namespaces are associated with a tenant.",
              "title": "Namespaces are associated with a tenant."
            },
            "zstd_bytes": {
              "type": "string",
              "format": "byte",
              "description": "Callgraph proto bytes are encoded in zstd bytes.\nThe caller is responsible to compress/uncompress the bytes."
            },
            "any": {
              "$ref": "#/definitions/googleprotobufAny",
              "description": "Callgraph is encoded in json bytes.\nUse the HTTP header x-callgraph-encoding=any to get the spec in this format."
            },
            "related_object": {
              "type": "string",
              "description": "An internal value that identifies the callgraph storage location.",
              "readOnly": true
            },
            "context": {
              "$ref": "#/definitions/v1Context",
              "description": "The context of the call graph that is equal to the context of the associated\npackage."
            },
            "storage_url": {
              "type": "string",
              "description": "The URL of the storage location of the callgraph.",
              "readOnly": true
            }
          },
          "description": "CallGraphData represents a call graph data request in the system."
        }
      },
      "description": "Request to update call graph data.",
      "required": [
        "meta",
        "tenant_meta"
      ]
    },
    "CargoDependencySpecCargoVersionReq": {
      "type": "object",
      "properties": {
        "op": {
          "$ref": "#/definitions/CargoVersionReqOp"
        },
        "major": {
          "type": "string",
          "format": "uint64"
        },
        "minor": {
          "type": "string",
          "format": "uint64"
        },
        "patch": {
          "type": "string",
          "format": "uint64",
          "description": "/ Patch is only allowed if minor is present."
        },
        "pre": {
          "type": "string"
        }
      },
      "description": "A crate with a matching name and repository can't be bound to a\ndependency if its version does not match this requirement.",
      "required": [
        "op",
        "major"
      ]
    },
    "CargoDependencySpecCfg": {
      "type": "object",
      "properties": {
        "expr": {
          "$ref": "#/definitions/CfgCfgExpr"
        }
      },
      "description": "A cfg expression, like cfg(windows).",
      "required": [
        "expr"
      ]
    },
    "CargoDependencySpecCfgAny": {
      "type": "object",
      "properties": {
        "expr": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/CfgCfgExpr"
          }
        }
      }
    },
    "CargoDependencySpecCfgValue": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "A named cfg value, like unix."
        },
        "pair": {
          "$ref": "#/definitions/CfgKeyPair",
          "description": "A key/value cfg pair, like target_os = \"linux\"."
        }
      }
    },
    "CargoDependencySpecDependencyKind": {
      "type": "string",
      "enum": [
        "DEPENDENCY_KIND_UNSPECIFIED",
        "DEPENDENCY_KIND_NORMAL",
        "DEPENDENCY_KIND_DEVELOPMENT",
        "DEPENDENCY_KIND_BUILD"
      ],
      "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."
    },
    "CargoDependencySpecNamedPlatform": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        }
      },
      "description": "A named platform, like x86_64-apple-darwin.",
      "required": [
        "name"
      ]
    },
    "CargoVersionReqOp": {
      "type": "string",
      "enum": [
        "OP_UNSPECIFIED",
        "OP_EXACT",
        "OP_GREATER",
        "OP_GREATEREQ",
        "OP_LESS",
        "OP_LESSEQ",
        "OP_TILDE",
        "OP_CARET",
        "OP_WILDCARD"
      ],
      "default": "OP_UNSPECIFIED"
    },
    "CertificateRequestServiceCreateCertificateBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a certificate request.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata are generic for any object."
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant metadata required for certificate requests.",
          "title": "Tenant metadata required for certificate requests."
        },
        "spec": {
          "$ref": "#/definitions/v1CertificateRequestSpec"
        }
      },
      "description": "CertificateRequest represents a certificate signing request.",
      "required": [
        "meta",
        "tenant_meta"
      ]
    },
    "CfgAll": {
      "type": "object",
      "properties": {
        "expr": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/CfgCfgExpr"
          }
        }
      }
    },
    "CfgCfgExpr": {
      "type": "object",
      "properties": {
        "not": {
          "$ref": "#/definitions/CfgNot"
        },
        "all": {
          "$ref": "#/definitions/CfgAll"
        },
        "any": {
          "$ref": "#/definitions/CargoDependencySpecCfgAny"
        },
        "value": {
          "$ref": "#/definitions/CargoDependencySpecCfgValue"
        }
      }
    },
    "CfgKeyPair": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "required": [
        "key",
        "value"
      ]
    },
    "CfgNot": {
      "type": "object",
      "properties": {
        "expr": {
          "$ref": "#/definitions/CfgCfgExpr"
        }
      },
      "required": [
        "expr"
      ]
    },
    "ChangeImpactServiceCreateVersionDiffBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the version diff.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant metadata information.",
          "title": "Tenant metadata information."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1VersionDiffSpec",
          "description": "The internal specification of the object."
        }
      },
      "description": "Protobuf definition for VersionDiff.",
      "required": [
        "tenant_meta",
        "meta"
      ]
    },
    "ChecksumHashAlgorithm": {
      "type": "string",
      "enum": [
        "HASH_ALGORITHM_UNSPECIFIED",
        "HASH_ALGORITHM_MD5",
        "HASH_ALGORITHM_SHA1",
        "HASH_ALGORITHM_SHA224",
        "HASH_ALGORITHM_SHA256",
        "HASH_ALGORITHM_SHA384",
        "HASH_ALGORITHM_SHA512"
      ],
      "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."
    },
    "ChoiceFinishReason": {
      "type": "string",
      "enum": [
        "FINISH_REASON_UNSPECIFIED",
        "FINISH_REASON_STOP",
        "FINISH_REASON_TOOLS_CALL"
      ],
      "default": "FINISH_REASON_UNSPECIFIED"
    },
    "CiCdToolEvidence": {
      "type": "object",
      "properties": {
        "file_path": {
          "type": "string",
          "description": "Relative path to file."
        },
        "file_regex": {
          "type": "string",
          "description": "Regex used to identify file name."
        },
        "line_number": {
          "type": "integer",
          "format": "int32",
          "description": "Line number in file."
        },
        "line_content": {
          "type": "string",
          "description": "Line content."
        },
        "line_regex": {
          "type": "string",
          "description": "Regex used to identify line."
        },
        "url": {
          "type": "string",
          "description": "Webhook payload URL."
        },
        "url_regex": {
          "type": "string",
          "description": "Regex used to identify webhook URL."
        },
        "badge": {
          "type": "string",
          "description": "Badge URL."
        },
        "badge_regex": {
          "type": "string",
          "description": "Regex used to identify badge URL."
        },
        "parent_tool_name": {
          "type": "string",
          "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."
        },
        "app_slug": {
          "type": "string",
          "description": "Unique GitHub application slug."
        },
        "app_id": {
          "type": "string",
          "format": "int64",
          "description": "Unigue GitHub application ID."
        },
        "app_repo_url": {
          "type": "string",
          "description": "URL of the repository the GitHub application has access to."
        },
        "app_permissions": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Permissions granted to the GitHub application."
        },
        "app_settings_url": {
          "type": "string",
          "description": "URL of the app installation settings."
        }
      }
    },
    "CisScorecardCisBenchmark": {
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/definitions/v1CisReqId",
          "description": "Internal Endor Labs enum ID for this CIS benchmark requirement.",
          "x-endor-name": "Id"
        },
        "category": {
          "$ref": "#/definitions/v1CisCategory",
          "description": "CIS benchmark requirement category.",
          "x-endor-name": "Category"
        },
        "sub_category": {
          "$ref": "#/definitions/v1CisSubCategory",
          "description": "CIS benchmark requirement sub-category.",
          "x-endor-name": "Subcategory"
        },
        "index": {
          "type": "string",
          "description": "CIS benchmark requirement index. For example, \"2.1.4\".",
          "x-endor-name": "Index"
        },
        "criteria": {
          "type": "string",
          "description": "CIS benchmark requirement title.",
          "x-endor-name": "Criteria"
        },
        "description": {
          "type": "string",
          "description": "CIS benchmark requirement description.",
          "x-endor-name": "Description"
        },
        "rationale": {
          "type": "string",
          "description": "CIS benchmark requirement rationale statement.",
          "x-endor-name": "Rationale"
        },
        "audit": {
          "type": "string",
          "description": "CIS benchmark requirement audit procedure.",
          "x-endor-name": "Audit"
        },
        "remediation": {
          "type": "string",
          "description": "CIS benchmark requirement remediation procedure.",
          "x-endor-name": "Remediation"
        },
        "satisfied": {
          "type": "boolean",
          "description": "True if this CIS benchmark requirement is satisfied.",
          "x-endor-name": "Satisfied"
        },
        "version": {
          "type": "string",
          "description": "CIS benchmark requirement version. For example, \"v1.0.0\".",
          "x-endor-name": "Version"
        }
      },
      "required": [
        "id"
      ]
    },
    "ClientLogServiceCreateClientLogBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the client log.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespace of the message that is accessed.",
          "title": "Namespace of the message that is accessed."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ClientLogSpec"
        }
      },
      "description": "ClientLog represents a CRUD operation on a message.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "CodeOwnersServiceCreateCodeOwnersBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the object.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant data.",
          "title": "Tenant data."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1CodeOwnersSpec",
          "description": "Object specific data."
        }
      },
      "description": "Code owner information for a project.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "CodeOwnersServiceUpdateCodeOwnersBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the object.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant data.",
              "title": "Tenant data."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1CodeOwnersSpec",
              "description": "Object specific data."
            }
          },
          "description": "Code owner information for a project."
        }
      },
      "description": "Request to update a CodeOwners object.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "CommitCommitType": {
      "type": "string",
      "enum": [
        "COMMIT_TYPE_UNSPECIFIED",
        "COMMIT_TYPE_UPSTREAM",
        "COMMIT_TYPE_MANUAL"
      ],
      "default": "COMMIT_TYPE_UNSPECIFIED",
      "description": " - COMMIT_TYPE_UNSPECIFIED: Commit type is undefined.\n - COMMIT_TYPE_UPSTREAM: Signifies that the commit is taken directly from an upstream commit that has not been manually modified by Endor Labs.\n - COMMIT_TYPE_MANUAL: Signifies that manual changes were made by Endor Labs."
    },
    "ConfigCVSSNode": {
      "type": "object",
      "properties": {
        "operator": {
          "$ref": "#/definitions/ConfigOperator"
        },
        "negate": {
          "type": "boolean"
        },
        "cpe_match": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/CVSSNodeCpeMatch"
          }
        }
      },
      "required": [
        "operator",
        "cpe_match"
      ]
    },
    "ConfigOperator": {
      "type": "string",
      "enum": [
        "OPERATOR_UNSPECIFIED",
        "OPERATOR_AND",
        "OPERATOR_OR"
      ],
      "default": "OPERATOR_UNSPECIFIED"
    },
    "ContainerBaseImageUpdateImpactQueryServiceCreateContainerBaseImageUpdateImpactQueryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the query.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The query is scoped to a tenant.",
          "title": "The query is scoped to a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ContainerBaseImageUpdateImpactQuerySpec",
          "description": "Query specification."
        }
      },
      "description": "ContainerBaseImageUpdateImpactQuery computes, on demand, how the vulnerability\nfindings of a scanned container image's base image would change if the base\nwere moved to each of its available update options (refreshed, next, latest).\nIt is a computed query in the style of DashboardSummaryQuery: the response is\nderived live from existing Finding and PackageVersion records and is never\npersisted, so it cannot go stale as findings are recomputed.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "ContainerBaseImageUpdateImpactRecordsQueryReachabilityBucket": {
      "type": "string",
      "enum": [
        "REACHABILITY_BUCKET_UNSPECIFIED",
        "REACHABILITY_BUCKET_REACHABLE",
        "REACHABILITY_BUCKET_POTENTIALLY_REACHABLE",
        "REACHABILITY_BUCKET_UNREACHABLE"
      ],
      "default": "REACHABILITY_BUCKET_UNSPECIFIED",
      "description": "A reachability bucket to page (the reachability view).\n\n - REACHABILITY_BUCKET_UNSPECIFIED: The reachability bucket was not set.\n - REACHABILITY_BUCKET_REACHABLE: Findings on dependencies reachable in the app image.\n - REACHABILITY_BUCKET_POTENTIALLY_REACHABLE: Findings on dependencies that may be reachable in the app image.\n - REACHABILITY_BUCKET_UNREACHABLE: Findings on dependencies not reachable in the app image."
    },
    "ContainerBaseImageUpdateImpactRecordsQueryRecordKind": {
      "type": "string",
      "enum": [
        "RECORD_KIND_UNSPECIFIED",
        "RECORD_KIND_FIXED",
        "RECORD_KIND_INTRODUCED"
      ],
      "default": "RECORD_KIND_UNSPECIFIED",
      "description": "Which side of the diff to page: fixed and introduced are separate lists.\n\n - RECORD_KIND_UNSPECIFIED: The kind was not set.\n - RECORD_KIND_FIXED: Findings present on the current base but gone on the candidate (fixed).\n - RECORD_KIND_INTRODUCED: Findings absent on the current base but present on the candidate."
    },
    "ContainerBaseImageUpdateImpactRecordsQueryServiceCreateContainerBaseImageUpdateImpactRecordsQueryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the query.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The query is scoped to a tenant.",
          "title": "The query is scoped to a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ContainerBaseImageUpdateImpactRecordsQuerySpec",
          "description": "Query specification."
        }
      },
      "description": "ContainerBaseImageUpdateImpactRecordsQuery pages through the full fixed or\nintroduced finding list for a single update option and a single bucket (one\nseverity or one reachability bucket), using the standard ListParameters\npagination contract. It backs each per-bucket \"View more\" in the impact UI.\nThe impact query above returns only the top-N inline records per bucket; this\nquery is the drill-down for the complete per-bucket, per-kind set.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "ContainerBaseImageUpdateImpactRecordsQueryUpdateOptionKind": {
      "type": "string",
      "enum": [
        "UPDATE_OPTION_KIND_UNSPECIFIED",
        "UPDATE_OPTION_KIND_REFRESHED",
        "UPDATE_OPTION_KIND_NEXT",
        "UPDATE_OPTION_KIND_LATEST"
      ],
      "default": "UPDATE_OPTION_KIND_UNSPECIFIED",
      "description": "Which update option's diff to page through.\n\n - UPDATE_OPTION_KIND_UNSPECIFIED: The update option was not set.\n - UPDATE_OPTION_KIND_REFRESHED: The refreshed base (update_options.refreshed).\n - UPDATE_OPTION_KIND_NEXT: The next base (update_options.next_version).\n - UPDATE_OPTION_KIND_LATEST: The latest base (update_options.latest_version)."
    },
    "ContainerProfileDetailsApplicationType": {
      "type": "string",
      "enum": [
        "APPLICATION_TYPE_UNSPECIFIED",
        "APPLICATION_TYPE_CLI",
        "APPLICATION_TYPE_SERVER"
      ],
      "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."
    },
    "ContainerProfileDetailsProfileType": {
      "type": "string",
      "enum": [
        "PROFILE_TYPE_UNSPECIFIED",
        "PROFILE_TYPE_BASIC",
        "PROFILE_TYPE_INSTRUMENTED"
      ],
      "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."
    },
    "ContainerProfileErrorContainerProfileStatus": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "ContextContextType": {
      "type": "string",
      "enum": [
        "CONTEXT_TYPE_UNSPECIFIED",
        "CONTEXT_TYPE_MAIN",
        "CONTEXT_TYPE_EXTERNAL",
        "CONTEXT_TYPE_CI_RUN",
        "CONTEXT_TYPE_SBOM",
        "CONTEXT_TYPE_REF"
      ],
      "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."
    },
    "ContributorHistoryServiceCreateContributorHistoryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the contributor history record.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Contributor history is stored per tenant.",
          "title": "Contributor history is stored per tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects.\nmeta.create_time represents when this snapshot was generated.\nmeta.update_time represents when this snapshot was last updated."
        },
        "spec": {
          "$ref": "#/definitions/v1ContributorHistorySpec",
          "description": "Contributor history specification."
        }
      },
      "description": "ContributorHistory represents a bi-weekly snapshot of aggregated contributor data\nfor trend visualization. Each snapshot captures the state of active contributors\nin the last 90 days at the time of the snapshot.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "ContributorHistoryServiceUpdateContributorHistoryBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the contributor history record.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Contributor history is stored per tenant.",
              "title": "Contributor history is stored per tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects.\nmeta.create_time represents when this snapshot was generated.\nmeta.update_time represents when this snapshot was last updated."
            },
            "spec": {
              "$ref": "#/definitions/v1ContributorHistorySpec",
              "description": "Contributor history specification."
            }
          },
          "description": "ContributorHistory represents a bi-weekly snapshot of aggregated contributor data\nfor trend visualization. Each snapshot captures the state of active contributors\nin the last 90 days at the time of the snapshot.",
          "x-internal": true
        }
      },
      "description": "Request to update a contributor history record.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "ContributorIdentityMappingServiceCreateContributorIdentityMappingBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the contributor identity mapping record.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Mappings are stored per tenant namespace.",
          "title": "Mappings are stored per tenant namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ContributorIdentityMappingSpec",
          "description": "Mapping specification."
        }
      },
      "description": "ContributorIdentityMapping links a SCM login to one or more normalized commit emails for a tenant.\nData is populated from SCM APIs (e.g. App based scans or PAT-backed reports) and used to deduplicate contributors across emails.\n\nDeterministic canonical_email (persisted in spec.canonical_email, applied on create/update only):\n 1. Normalize every associated email: trim ASCII whitespace and lowercase (same rules as contributor aggregation).\n 2. Deduplicate, then sort lexicographically before persisting associated_emails.\n 3. If any email is a GitHub noreply address for this login (see github.com docs: USERNAME@users.noreply.github.com\n    or ID+USERNAME@users.noreply.github.com), pick the lexicographically smallest matching noreply address.\n 4. Otherwise use the lexicographically smallest normalized email.\n\nAggregation and other readers must use spec.canonical_email as stored;\nthey must not re-derive a different \"first\" email from scan order.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "ContributorIdentityMappingServiceUpdateContributorIdentityMappingBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the contributor identity mapping record.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Mappings are stored per tenant namespace.",
              "title": "Mappings are stored per tenant namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1ContributorIdentityMappingSpec",
              "description": "Mapping specification."
            }
          },
          "description": "ContributorIdentityMapping links a SCM login to one or more normalized commit emails for a tenant.\nData is populated from SCM APIs (e.g. App based scans or PAT-backed reports) and used to deduplicate contributors across emails.\n\nDeterministic canonical_email (persisted in spec.canonical_email, applied on create/update only):\n 1. Normalize every associated email: trim ASCII whitespace and lowercase (same rules as contributor aggregation).\n 2. Deduplicate, then sort lexicographically before persisting associated_emails.\n 3. If any email is a GitHub noreply address for this login (see github.com docs: USERNAME@users.noreply.github.com\n    or ID+USERNAME@users.noreply.github.com), pick the lexicographically smallest matching noreply address.\n 4. Otherwise use the lexicographically smallest normalized email.\n\nAggregation and other readers must use spec.canonical_email as stored;\nthey must not re-derive a different \"first\" email from scan order.",
          "x-internal": true
        }
      },
      "description": "Request to update a contributor identity mapping record.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "ContributorServiceCreateContributorBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the contributor record.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Contributors are associated with a tenant.",
          "title": "Contributors are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects.\nmeta.create_time represents when this contributor was first discovered.\nmeta.update_time represents when this contributor was last seen."
        },
        "spec": {
          "$ref": "#/definitions/v1ContributorSpec",
          "description": "Contributor specification."
        }
      },
      "description": "Contributor represents a contributor discovered from git repository scans.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "CriticalIdentity": {
      "type": "object",
      "properties": {
        "docker_reference": {
          "type": "string",
          "description": "The reference used to refer to or download the image."
        }
      }
    },
    "CriticalImage": {
      "type": "object",
      "properties": {
        "docker_manifest_image": {
          "type": "string"
        },
        "docker_manifest_digest": {
          "type": "string",
          "description": "The manifest digest of the signed container image."
        }
      }
    },
    "CvssDataV2AccessComplexity": {
      "type": "string",
      "enum": [
        "ACCESS_COMPLEXITY_UNSPECIFIED",
        "ACCESS_COMPLEXITY_HIGH",
        "ACCESS_COMPLEXITY_MEDIUM",
        "ACCESS_COMPLEXITY_LOW"
      ],
      "default": "ACCESS_COMPLEXITY_UNSPECIFIED"
    },
    "CvssDataV2Auth": {
      "type": "string",
      "enum": [
        "AUTH_UNSPECIFIED",
        "AUTH_MULTIPLE",
        "AUTH_SINGLE",
        "AUTH_NONE"
      ],
      "default": "AUTH_UNSPECIFIED"
    },
    "CvssDataV2CollateralDamagePotential": {
      "type": "string",
      "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"
      ],
      "default": "COLLATERAL_DAMAGE_POTENTIAL_UNSPECIFIED"
    },
    "CvssDataV2Exploitability": {
      "type": "string",
      "enum": [
        "EXPLOITABILITY_UNSPECIFIED",
        "EXPLOITABILITY_UNPROVEN",
        "EXPLOITABILITY_PROOF_OF_CONCEPT",
        "EXPLOITABILITY_FUNCTIONAL",
        "EXPLOITABILITY_HIGH",
        "EXPLOITABILITY_NOT_DEFINED"
      ],
      "default": "EXPLOITABILITY_UNSPECIFIED"
    },
    "CvssDataV2ReportConfidence": {
      "type": "string",
      "enum": [
        "REPORT_CONFIDENCE_UNSPECIFIED",
        "REPORT_CONFIDENCE_UNCONFIRMED",
        "REPORT_CONFIDENCE_UNCORROBORATED",
        "REPORT_CONFIDENCE_CONFIRMED",
        "REPORT_CONFIDENCE_NOT_DEFINED"
      ],
      "default": "REPORT_CONFIDENCE_UNSPECIFIED"
    },
    "CvssDataV2TargetDistribution": {
      "type": "string",
      "enum": [
        "TARGET_DISTRIBUTION_UNSPECIFIED",
        "TARGET_DISTRIBUTION_NONE",
        "TARGET_DISTRIBUTION_LOW",
        "TARGET_DISTRIBUTION_MEDIUM",
        "TARGET_DISTRIBUTION_HIGH",
        "TARGET_DISTRIBUTION_NOT_DEFINED"
      ],
      "default": "TARGET_DISTRIBUTION_UNSPECIFIED"
    },
    "CvssDataV2V2Impact": {
      "type": "string",
      "enum": [
        "V2_IMPACT_IMPACT_UNSPECIFIED",
        "V2_IMPACT_IMPACT_NONE",
        "V2_IMPACT_IMPACT_PARTIAL",
        "V2_IMPACT_IMPACT_COMPLETE"
      ],
      "default": "V2_IMPACT_IMPACT_UNSPECIFIED"
    },
    "DashboardConfigDevEstimateConfig": {
      "type": "object",
      "properties": {
        "baseline_findings_filter": {
          "type": "string",
          "description": "Baseline for the findings count in the dev estimate."
        },
        "dev_hours": {
          "type": "number",
          "format": "double",
          "description": "The projected value for dev hours per vulnerability."
        },
        "hourly_cost": {
          "type": "number",
          "format": "double",
          "description": "The projected value for hourly cost per dev hour."
        },
        "currency_code": {
          "type": "string",
          "description": "The currency code to use in estimate displays."
        }
      }
    },
    "DashboardConfigReviewTimeConfig": {
      "type": "object",
      "properties": {
        "small_pr_minutes": {
          "type": "integer",
          "format": "int32",
          "description": "Time in minutes to review a small PR (less than 100 lines)."
        },
        "medium_pr_minutes": {
          "type": "integer",
          "format": "int32",
          "description": "Time in minutes to review a medium PR (100-500 lines)."
        },
        "large_pr_minutes": {
          "type": "integer",
          "format": "int32",
          "description": "Time in minutes to review a large PR (more than 500 lines)."
        }
      },
      "description": "Configuration for calculating review time saved."
    },
    "DashboardConfigSLAConfig": {
      "type": "object",
      "properties": {
        "critical": {
          "type": "integer",
          "format": "int32",
          "description": "SLA days for critical findings."
        },
        "high": {
          "type": "integer",
          "format": "int32",
          "description": "SLA days for critical findings."
        },
        "medium": {
          "type": "integer",
          "format": "int32",
          "description": "SLA days for critical findings."
        },
        "low": {
          "type": "integer",
          "format": "int32",
          "description": "SLA days for critical findings."
        }
      }
    },
    "DashboardConfigServiceCreateDashboardConfigBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the dashboard configuration object.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "DashboardConfig is associated with a tenant and namespace.",
          "title": "DashboardConfig is associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1DashboardConfigSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagate indicates that the object should be visible in child namespaces."
        }
      },
      "description": "DashboardConfig represents the dashboard configuration for a namespace.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "DashboardConfigServiceUpdateDashboardConfigBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the dashboard configuration object.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "DashboardConfig is associated with a tenant and namespace.",
              "title": "DashboardConfig is associated with a tenant and namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1DashboardConfigSpec"
            },
            "propagate": {
              "type": "boolean",
              "description": "Propagate indicates that the object should be visible in child namespaces."
            }
          },
          "description": "DashboardConfig represents the dashboard configuration for a namespace."
        }
      },
      "description": "Request to update a dashboard configuration object.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "DashboardConfigVulnPrioritizationConfig": {
      "type": "object",
      "properties": {
        "epss_probability_score_threshold": {
          "type": "number",
          "format": "double",
          "description": "Threshhold for EPSS probability score in the vuln prioritization."
        },
        "finding_reachability_tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1FindingTags"
          },
          "description": "Finding tags to use with reachability filter."
        }
      }
    },
    "DashboardSummaryQueryServiceCreateDashboardSummaryQueryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the dashboard summary.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Dashboard Summary are associated with a tenant.",
          "title": "Dashboard Summary are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1DashboardSummaryQuerySpec",
          "description": "Dashboard Summary specification."
        }
      },
      "description": "DashboardSummaryQuery is an internal API to accelerate the UI operations.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "DemoServiceCreateDemoBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "UUID is a universally unique identifier for a namespace resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Demos are per tenant.",
          "title": "Demos are per tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1DemoSpec"
        }
      },
      "description": "Demo provides a mechanism for isolating groups of resources.\nDemos may be defined in a parent child hierarchy.",
      "required": [
        "meta"
      ]
    },
    "DemoServiceUpdateDemoBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "UUID is a universally unique identifier for a namespace resource.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Demos are per tenant.",
              "title": "Demos are per tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1DemoSpec"
            }
          },
          "description": "Demo provides a mechanism for isolating groups of resources.\nDemos may be defined in a parent child hierarchy."
        }
      },
      "description": "Request to update the demo.",
      "required": [
        "meta"
      ]
    },
    "DependencyImportedType": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "DependencyMetadataDependencyData": {
      "type": "object",
      "properties": {
        "project_uuid": {
          "type": "string",
          "description": "The UUID of the project to which the dependency belongs.",
          "x-endor-name": "Dependency Project UUID"
        },
        "package_name": {
          "type": "string",
          "description": "Qualified dependency package name. Does not include the version.\nFor example, for go://package@v1.2.3 this is set to \"go://package\".",
          "x-endor-name": "Qualified Dependency Package Name"
        },
        "package_version_uuid": {
          "type": "string",
          "description": "the UUID of the dependency package version object.",
          "x-endor-name": "Dependency Package Version UUID"
        },
        "unresolved_version": {
          "type": "string",
          "description": "Unresolved dependency package version string. For example, \"v2.0.0\".",
          "x-endor-name": "Unresolved Dependency Version"
        },
        "resolved_version": {
          "type": "string",
          "description": "Resolved dependency package version. For example, \"v2.0.0\".",
          "x-endor-name": "Resolved Dependency Version"
        },
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "Dependency ecosystem.",
          "x-endor-name": "Ecosystem"
        },
        "direct": {
          "type": "boolean",
          "description": "True if this is a direct dependency.",
          "x-endor-name": "This is a Direct Dependency"
        },
        "pinned": {
          "type": "boolean",
          "description": "True if the dependency is pinned.",
          "x-endor-name": "Dependency Version is Pinned"
        },
        "reachable": {
          "$ref": "#/definitions/DependencyMetadataReachabilityType",
          "description": "True if the dependency is reachable.",
          "x-endor-name": "Dependency is Reachable"
        },
        "utilization": {
          "type": "number",
          "format": "float",
          "description": "Percent of the dependency used based on the call graph. Implementation\npending.",
          "x-endor-name": "Dependency Utilization Ratio"
        },
        "namespace": {
          "type": "string",
          "description": "Namespace to which the dependency package version object belongs.",
          "x-endor-name": "Dependency Namespace"
        },
        "parent_version_name": {
          "type": "string",
          "description": "Fully qualified name of the direct parent of the dependency. For example,\ngo://package@v1.2.3.",
          "x-endor-name": "Direct Parent Package Version Name"
        },
        "repo_name": {
          "type": "string",
          "description": "Name of the repository to which the dependency belongs.",
          "x-endor-name": "Repository Name"
        },
        "scope": {
          "$ref": "#/definitions/v1DependencyScope",
          "description": "Dependency scope.",
          "x-endor-name": "Dependency Scope"
        },
        "internal": {
          "type": "boolean",
          "description": "True if the dependency is in the same namespace or, if the\nnamespace is oss, in the same project as the importer.",
          "x-endor-name": "Dependency is Internal"
        },
        "parent_count": {
          "type": "integer",
          "format": "int64",
          "description": "Total number of direct parents in dependency graph.",
          "x-endor-name": "Parent Count"
        },
        "callgraph_available": {
          "type": "boolean",
          "description": "True if the call graph is available.",
          "x-endor-name": "Dependency Callgraph is Available"
        },
        "last_commit": {
          "type": "string",
          "format": "date-time",
          "description": "Date that the dependency was last modified.",
          "x-endor-name": "Date of Last Commit in Dependency Version"
        },
        "abstract": {
          "type": "boolean",
          "description": "True if the dependency is an abstract dependency, such as a secondary Pom\nfile.",
          "x-endor-name": "Abstract Dependency"
        },
        "orphan": {
          "type": "boolean",
          "description": "Deprecated."
        },
        "missing": {
          "type": "boolean",
          "description": "True if the package version is missing for this dependency.",
          "x-endor-name": "Missing Package Version"
        },
        "approximation": {
          "type": "boolean",
          "description": "True if this is an approximate dependency based on unresolved package\ndependencies.",
          "x-endor-name": "Approximation"
        },
        "public": {
          "type": "boolean",
          "description": "True if the dependency is public.",
          "x-endor-name": "Dependency is Public"
        },
        "project_paths": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1DependencyMetadataPath"
          },
          "description": "List of all project paths to this dependency from the root package\nversion (importer).",
          "x-endor-name": "All Project Paths to Dependency"
        },
        "vendored": {
          "type": "boolean",
          "description": "True if the dependency is a vendored dependency.",
          "x-endor-name": "Vendored Dependency"
        },
        "discovery_type": {
          "$ref": "#/definitions/DependencyMetadataDiscoveryType",
          "description": "Indicates how the dependency was discovered.",
          "x-endor-name": "Dependency discovery source"
        },
        "patched": {
          "type": "boolean",
          "description": "Indicates whether the dependency version was patched or not.",
          "x-endor-name": "Patched Version"
        },
        "container_data": {
          "$ref": "#/definitions/v1ContainerDependencyMetadata",
          "description": "Container image metadata for the dependency if applicable."
        },
        "purl": {
          "type": "string",
          "description": "The purl for the dependency package version.",
          "x-endor-name": "Purl"
        },
        "eol_timestamp": {
          "type": "string",
          "format": "date-time",
          "description": "End of life timestamp for the dependency package version.",
          "x-endor-name": "End-of-life timestamp"
        },
        "eol": {
          "type": "boolean",
          "description": "Indicates whether the dependency is end of life.",
          "x-endor-name": "End-of-life"
        },
        "declared_licenses": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LicenseDependencyMetadata"
          },
          "description": "Declared license information for the dependency."
        },
        "discovered_licenses": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LicenseDependencyMetadata"
          },
          "description": "Discovered license information for the dependency."
        }
      },
      "description": "Information about the dependency.",
      "required": [
        "direct"
      ]
    },
    "DependencyMetadataDiscoveryType": {
      "type": "string",
      "enum": [
        "DISCOVERY_TYPE_UNSPECIFIED",
        "DISCOVERY_TYPE_MANIFEST",
        "DISCOVERY_TYPE_PHANTOM",
        "DISCOVERY_TYPE_SEGMENT_MATCH"
      ],
      "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."
    },
    "DependencyMetadataImporterData": {
      "type": "object",
      "properties": {
        "project_uuid": {
          "type": "string",
          "description": "The UUID of the project to which the root package belongs.",
          "x-endor-name": "Importing Project UUID"
        },
        "package_name": {
          "type": "string",
          "description": "Qualified package name of the root package version.\nFor example, for go://package@v1.2.3 this is set to \"go://package\".",
          "x-endor-name": "Qualified Importing Package Name"
        },
        "package_version_uuid": {
          "type": "string",
          "description": "The UUID of the importer package version object.\nThis is the same as the parent UUID of this object (meta.parent_uuid).",
          "x-endor-name": "Importing Package Version UUID"
        },
        "package_version_name": {
          "type": "string",
          "description": "Fully qualified name of the root package version. For example,\ngo://package@v1.2.3.",
          "x-endor-name": "Importing Package Version Name"
        },
        "package_version_sha": {
          "type": "string",
          "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.",
          "x-endor-name": "Importing Package Version SHA"
        },
        "package_version_ref": {
          "type": "string",
          "description": "Resolved ref of the source control version for the root package version.\nCan be a tag, a branch or a SHA.",
          "x-endor-name": "Importing Package Version Ref"
        },
        "callgraph_available": {
          "type": "boolean",
          "description": "True if the call graph is available for the root package version.",
          "x-endor-name": "Importer Callgraph is Available"
        },
        "version_name": {
          "type": "string",
          "description": "Version number of the root package version.\n\nFor example, for go://package@v1.2.3 this is set to \"v1.2.3\".",
          "x-endor-name": "Importing Version Name"
        },
        "container_base_image": {
          "$ref": "#/definitions/v1ContainerBaseImage",
          "description": "Container image metadata for the importer if applicable.\nOnly populated if the base image is set in the container image metadata\nwith a label org.opencontainers.image.base.name."
        }
      },
      "description": "Information about the root package version (importer),\nthat imports the dependency in one or more versions,\neither directly or indirectly.",
      "required": [
        "project_uuid",
        "package_name",
        "package_version_uuid",
        "package_version_name",
        "package_version_ref",
        "callgraph_available"
      ]
    },
    "DependencyMetadataReachabilityType": {
      "type": "string",
      "enum": [
        "REACHABILITY_TYPE_UNSPECIFIED",
        "REACHABILITY_TYPE_REACHABLE",
        "REACHABILITY_TYPE_UNREACHABLE",
        "REACHABILITY_TYPE_UNKNOWN"
      ],
      "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."
    },
    "DependencyMetadataServiceCreateDependencyMetadataBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the object.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Information about the tenant to which the root package (importer) belongs.",
          "title": "Information about the tenant to which the root package (importer) belongs."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1DependencyMetadataSpec",
          "description": "Resource kind specific data."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Contexts keep objects from different scans separated."
        }
      },
      "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.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "DependencyMetadataServiceUpdateDependencyMetadataBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the object.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Information about the tenant to which the root package (importer) belongs.",
              "title": "Information about the tenant to which the root package (importer) belongs."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1DependencyMetadataSpec",
              "description": "Resource kind specific data."
            },
            "context": {
              "$ref": "#/definitions/v1Context",
              "description": "Contexts keep objects from different scans separated."
            }
          },
          "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."
        }
      },
      "description": "Request to update a DependencyMetadata object.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "DepsDevPackageServiceCreateDepsDevPackageBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The tenant metadata restricts access to a specific tenant.",
          "title": "The tenant metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata identifies the object."
        },
        "spec": {
          "$ref": "#/definitions/v1DepsDevPackageSpec",
          "description": "Resource kind specific data."
        }
      },
      "description": "DepsDevPackage stores package metadata from deps.dev snapshots.\nThis data includes package popularity (dependents count) and age information\nused for typosquatting detection and package analysis.\n\nMongoDB Atlas Search Index Configuration:\nTo enable fuzzy typosquatting detection, create an Atlas Search index on this collection with:\n  - Field: meta.name\n    Type: string\n    Analyzer: lucene.keyword (treats full package identifier as single token)\n  - Field: spec.ecosystem\n    Type: token\n    Normalizer: lowercase\n  - Field: tenant_meta.namespace\n    Type: token\n    Normalizer: lowercase",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "DetectLicenseQueryServiceCreateDetectLicenseQueryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The uuid of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "title": "tenant metadata"
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "title": "metadata"
        },
        "spec": {
          "$ref": "#/definitions/v1DetectLicenseQuerySpec"
        }
      },
      "title": "DetectLicenseQuery"
    },
    "EndorIgnoreEntryServiceCreateEndorIgnoreEntryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the object.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant data.",
          "title": "Tenant data."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1EndorIgnoreEntrySpec",
          "description": "Object specific data."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Context of the ignore entry."
        }
      },
      "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.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "EndorIgnoreEntryServiceUpdateEndorIgnoreEntryBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the object.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant data.",
              "title": "Tenant data."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1EndorIgnoreEntrySpec",
              "description": "Object specific data."
            },
            "context": {
              "$ref": "#/definitions/v1Context",
              "description": "Context of the ignore entry."
            }
          },
          "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."
        }
      },
      "description": "Request to update an EndorIgnoreEntry object.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "EndorLicenseServiceCreateEndorLicenseBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an Endor Labs license.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "EndorLicenses are associated with a tenant.",
          "title": "EndorLicenses are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "spec": {
          "$ref": "#/definitions/v1EndorLicenseSpec",
          "description": "The specification of the Endor Labs license."
        }
      },
      "description": "EndorLicense represents a specific Endor license assigned to a tenant.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "EndorLicenseServiceUpdateEndorLicenseBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of an Endor Labs license.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "EndorLicenses are associated with a tenant.",
              "title": "EndorLicenses are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata is generic for any object."
            },
            "spec": {
              "$ref": "#/definitions/v1EndorLicenseSpec",
              "description": "The specification of the Endor Labs license."
            }
          },
          "description": "EndorLicense represents a specific Endor license assigned to a tenant.",
          "x-internal": true
        }
      },
      "description": "Request to update an Endor Labs license.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "EnvironmentTool": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      },
      "required": [
        "name",
        "version"
      ]
    },
    "ErrorParsingRuleServiceCreateErrorParsingRuleBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the for the error parsing rule.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "ErrorParsingRule are associated with a  tenant.",
          "title": "ErrorParsingRule are associated with a  tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ErrorParsingRuleSpec",
          "description": "ErrorParsingRule specification."
        },
        "propagate": {
          "type": "boolean",
          "description": "Object can be propagated to child namespaces. Global objects are visible to\nall namespaces."
        }
      },
      "description": "ErrorParsingRule is an internal API to manage error parsing rules\nand regular expressions.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "ErrorParsingRuleServiceUpdateErrorParsingRuleBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the for the error parsing rule.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "ErrorParsingRule are associated with a  tenant.",
              "title": "ErrorParsingRule are associated with a  tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1ErrorParsingRuleSpec",
              "description": "ErrorParsingRule specification."
            },
            "propagate": {
              "type": "boolean",
              "description": "Object can be propagated to child namespaces. Global objects are visible to\nall namespaces."
            }
          },
          "description": "ErrorParsingRule is an internal API to manage error parsing rules\nand regular expressions.",
          "x-internal": true
        }
      },
      "description": "Request to update an error parsing rule.",
      "required": [
        "meta"
      ]
    },
    "EvaluationMethodServiceCreateEvaluationMethodBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the evaluation method.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "EvaluationMethods are associated with a tenant and namespace.",
          "title": "EvaluationMethods are associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1EvaluationMethodSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates that the object should be visible in child namespaces."
        }
      },
      "description": "EvaluationMethod represents an evaluation method.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "EvaluationMethodServiceUpdateEvaluationMethodBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the evaluation method.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "EvaluationMethods are associated with a tenant and namespace.",
              "title": "EvaluationMethods are associated with a tenant and namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1EvaluationMethodSpec"
            },
            "propagate": {
              "type": "boolean",
              "description": "Indicates that the object should be visible in child namespaces."
            }
          },
          "description": "EvaluationMethod represents an evaluation method."
        }
      },
      "description": "Request to update an evaluation method.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "EvaluationParameterServiceCreateEvaluationParameterBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the evaluation parameter.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Evaluation parameters are associated with a tenant and namespace.",
          "title": "Evaluation parameters are associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1EvaluationParameterSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates that the object should be visible in child namespaces."
        }
      },
      "description": "EvaluationParameter represents an evaluation parameter.\nThe parameters are applied to the method before execution.\nThe parameters correspond to the method identified by the parent UUID.\n\nOrder of evaluation:\n\nFor system methods, parameters at the system namespace\nare used first. If a tenant namespace has parameters for the\nsame method, they overwrite the system level parameters.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "EvaluationParameterServiceUpdateEvaluationParameterBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the evaluation parameter.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Evaluation parameters are associated with a tenant and namespace.",
              "title": "Evaluation parameters are associated with a tenant and namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1EvaluationParameterSpec"
            },
            "propagate": {
              "type": "boolean",
              "description": "Indicates that the object should be visible in child namespaces."
            }
          },
          "description": "EvaluationParameter represents an evaluation parameter.\nThe parameters are applied to the method before execution.\nThe parameters correspond to the method identified by the parent UUID.\n\nOrder of evaluation:\n\nFor system methods, parameters at the system namespace\nare used first. If a tenant namespace has parameters for the\nsame method, they overwrite the system level parameters."
        }
      },
      "description": "Request to update an evaluation parameter.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "ExporterMessageTypeConfig": {
      "type": "object",
      "properties": {
        "message_type": {
          "$ref": "#/definitions/MessageTypeConfigMessageType"
        },
        "message_export_format": {
          "$ref": "#/definitions/MessageTypeConfigMessageExportFormat"
        }
      },
      "required": [
        "message_type",
        "message_export_format"
      ]
    },
    "ExporterS3Config": {
      "type": "object",
      "properties": {
        "bucket_name": {
          "type": "string",
          "description": "bucket_name is the name of the S3 bucket to export the data to."
        },
        "region": {
          "type": "string",
          "description": "region is the region to use for the S3 bucket."
        },
        "assume_role_arn": {
          "type": "string",
          "description": "assume_role_arn is the IAM role ARN that will be assumed to access S3."
        },
        "allowed_audience": {
          "type": "string",
          "description": "allowed_audiences is the audience that will be allowed to assume the role."
        },
        "object_expiry_days": {
          "type": "integer",
          "format": "int32",
          "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."
        }
      },
      "required": [
        "bucket_name",
        "region",
        "assume_role_arn",
        "allowed_audience"
      ]
    },
    "ExporterServiceCreateExporterBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the exporter.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Exporters are associated with a tenant.",
          "title": "Exporters are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ExporterSpec",
          "description": "The project specification."
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates whether the object should be visible in the child namespaces or\nnot."
        }
      },
      "description": "Defines a data exporter.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "ExporterServiceUpdateExporterBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the exporter.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Exporters are associated with a tenant.",
              "title": "Exporters are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1ExporterSpec",
              "description": "The project specification."
            },
            "propagate": {
              "type": "boolean",
              "description": "Indicates whether the object should be visible in the child namespaces or\nnot."
            }
          },
          "description": "Defines a data exporter."
        }
      },
      "description": "Request to update the exporter.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "ExporterWizConfig": {
      "type": "object",
      "properties": {
        "api_endpoint_url": {
          "type": "string",
          "description": "api_endpoint_url is the Wiz API endpoint URL."
        },
        "oauth_client_credentials": {
          "$ref": "#/definitions/v1OAuthClientCredentialsAuthConfig",
          "description": "OAuth 2.0 client credentials flow."
        }
      }
    },
    "ExternalProviderModelServiceCreateExternalProviderModelBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID for the ingested external provider model.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Models scanned per namespace.",
          "title": "Models scanned per namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ExternalProviderModelSpec",
          "description": "The specification of the model."
        }
      },
      "description": "ExternalProviderModel represents a model from an external provider.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "FeedbackFeedbackType": {
      "type": "string",
      "enum": [
        "FEEDBACK_TYPE_UNSPECIFIED",
        "FEEDBACK_TYPE_POSITIVE",
        "FEEDBACK_TYPE_NEGATIVE"
      ],
      "default": "FEEDBACK_TYPE_UNSPECIFIED"
    },
    "FeedbackServiceCreateFeedbackBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the feedback.",
          "readOnly": true,
          "x-endor-name": "Feedback UUID"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Security review pull requests are associated with a tenant.",
          "title": "Security review pull requests are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata for the feedback."
        },
        "spec": {
          "$ref": "#/definitions/v1FeedbackSpec",
          "description": "Security review pull request specifications."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "Feedback represents a feedback in the system.",
      "required": [
        "meta",
        "context"
      ],
      "x-internal": true
    },
    "FeedbackServiceUpdateFeedbackBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the feedback.",
              "readOnly": true,
              "x-endor-name": "Feedback UUID"
            },
            "tenant_meta": {
              "type": "object",
              "description": "Security review pull requests are associated with a tenant.",
              "title": "Security review pull requests are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata for the feedback."
            },
            "spec": {
              "$ref": "#/definitions/v1FeedbackSpec",
              "description": "Security review pull request specifications."
            },
            "context": {
              "$ref": "#/definitions/v1Context"
            }
          },
          "description": "Feedback represents a feedback in the system.",
          "x-internal": true
        }
      },
      "description": "Request to update the ai feedback.",
      "required": [
        "meta",
        "context"
      ]
    },
    "FileHashQueryRequestFileHashQuery": {
      "type": "object",
      "properties": {
        "file_hashes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All file hashes to query for."
        },
        "results": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/FileHashQueryRequestFileHashQueryResult"
          },
          "description": "File version matches indexed by file hash.",
          "readOnly": true
        }
      }
    },
    "FileHashQueryRequestFileHashQueryResult": {
      "type": "object",
      "properties": {
        "file": {
          "type": "string"
        },
        "library": {
          "type": "string"
        },
        "version": {
          "type": "string"
        },
        "version_unique": {
          "type": "string"
        },
        "release_date": {
          "type": "string",
          "format": "date-time"
        }
      },
      "description": "Result for a file hash query."
    },
    "FileHashQueryRequestServiceCreateFileHashQueryRequestBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the filehash query request.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespace of the filehash query request.",
          "title": "Namespace of the filehash query request."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1FileHashQueryRequestSpec",
          "description": "Resource kind specific data."
        }
      },
      "description": "A file hash query request allows the caller to send a set of file hashes\nand use the segment index to match those hashes to file versions\nin one or more repositories.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "FileSegmentsServiceCreateFileSegmentsBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "UUID of the file segments.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespace of the file segments.",
          "title": "Namespace of the file segments."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects.\nName corresponds to the relative file path."
        },
        "spec": {
          "$ref": "#/definitions/v1FileSegmentsSpec",
          "description": "Resource kind specific data."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Contexts keep objects from different scans separated."
        }
      },
      "description": "File segment metadata for a given customer source file.\nStored in mongo and used to refresh dependencies.\nNOTE: Not used for OSS-projects.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "FileSegmentsServiceUpdateFileSegmentsBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "UUID of the file segments.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Namespace of the file segments.",
              "title": "Namespace of the file segments."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects.\nName corresponds to the relative file path."
            },
            "spec": {
              "$ref": "#/definitions/v1FileSegmentsSpec",
              "description": "Resource kind specific data."
            },
            "context": {
              "$ref": "#/definitions/v1Context",
              "description": "Contexts keep objects from different scans separated."
            }
          },
          "description": "File segment metadata for a given customer source file.\nStored in mongo and used to refresh dependencies.\nNOTE: Not used for OSS-projects."
        }
      },
      "description": "Request used to update file segments.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "FindingFixingUpgradesUpgradeInfo": {
      "type": "object",
      "properties": {
        "package_name": {
          "type": "string",
          "description": "Fully qualified name of the root package."
        },
        "direct_dependency_name": {
          "type": "string",
          "description": "Fully qualified name of the direct dependency to be upgraded."
        },
        "from_version": {
          "type": "string",
          "description": "Current version of the direct dependency."
        },
        "to_version": {
          "type": "string",
          "description": "Version that the direct dependency should be upgraded to."
        },
        "upgrade_risk": {
          "type": "string",
          "description": "The risk of the upgrade."
        }
      },
      "description": "Information about one upgrade."
    },
    "FindingLogServiceCreateFindingLogBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the finding log.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespace of the finding log.",
          "title": "Namespace of the finding log."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1FindingLogSpec",
          "description": "Resource kind specific data."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Contexts keep objects from different scans separated."
        }
      },
      "description": "A finding log contains details of the state of a finding at the time it was\ncreated, updated or deleted.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "FindingPolicyInfoPolicyResult": {
      "type": "object",
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of all key-value fields in the result."
        }
      },
      "description": "Policy output."
    },
    "FindingRefreshTrigger": {
      "type": "string",
      "enum": [
        "TRIGGER_UNSPECIFIED",
        "TRIGGER_VULN",
        "TRIGGER_MALWARE"
      ],
      "default": "TRIGGER_UNSPECIFIED",
      "description": "Trigger identifies which ingestion type caused this finding-refresh.\n\n - TRIGGER_UNSPECIFIED: No trigger has been set.\n - TRIGGER_VULN: A vulnerability ingestion triggered this finding-refresh.\n - TRIGGER_MALWARE: A malware ingestion triggered this finding-refresh."
    },
    "FindingServiceCreateFindingBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the object.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Information about the tenant and namespace that the finding belongs to.",
          "title": "Information about the tenant and namespace that the finding belongs to."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1FindingSpec",
          "description": "Resource kind specific data."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Contexts keep objects from different scans separated."
        }
      },
      "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.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "FindingServiceUpdateFindingBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the object.",
              "readOnly": true,
              "x-endor-name": "UUID"
            },
            "tenant_meta": {
              "type": "object",
              "description": "Information about the tenant and namespace that the finding belongs to.",
              "title": "Information about the tenant and namespace that the finding belongs to."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1FindingSpec",
              "description": "Resource kind specific data."
            },
            "context": {
              "$ref": "#/definitions/v1Context",
              "description": "Contexts keep objects from different scans separated."
            }
          },
          "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."
        }
      },
      "description": "Request used to update a finding.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "FindingSpecPath": {
      "type": "object",
      "properties": {
        "nodes": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/PathNode"
          },
          "description": "List of structured, annotated function nodes."
        }
      },
      "description": "Information about one path."
    },
    "FunctionGraphDataServiceCreateFunctionGraphDataBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the function graph.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespaces are associated with a tenant.",
          "title": "Namespaces are associated with a tenant."
        },
        "zstd_bytes": {
          "type": "string",
          "format": "byte",
          "description": "Function graph proto bytes are encoded in zstd bytes.\nIt is the responsibility of the caller to compress/uncompress the bytes."
        },
        "any": {
          "$ref": "#/definitions/googleprotobufAny",
          "description": "Function graph is encoded in json bytes.\nUse the http header x-callgraph-encoding=any to get the specification in this  format."
        },
        "related_object": {
          "type": "string",
          "description": "The internal value that identifies the function graph storage location.",
          "readOnly": true
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "The context of the associated package."
        },
        "storage_url": {
          "type": "string",
          "description": "The URL to the storage location of the callgraph.",
          "readOnly": true
        }
      },
      "description": "FunctionGraphData represents a function graph data request in the system.",
      "required": [
        "meta",
        "tenant_meta"
      ]
    },
    "FunctionGraphDataServiceUpdateFunctionGraphDataBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the function graph.",
              "readOnly": true
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata is generic for any object."
            },
            "tenant_meta": {
              "type": "object",
              "description": "Namespaces are associated with a tenant.",
              "title": "Namespaces are associated with a tenant."
            },
            "zstd_bytes": {
              "type": "string",
              "format": "byte",
              "description": "Function graph proto bytes are encoded in zstd bytes.\nIt is the responsibility of the caller to compress/uncompress the bytes."
            },
            "any": {
              "$ref": "#/definitions/googleprotobufAny",
              "description": "Function graph is encoded in json bytes.\nUse the http header x-callgraph-encoding=any to get the specification in this  format."
            },
            "related_object": {
              "type": "string",
              "description": "The internal value that identifies the function graph storage location.",
              "readOnly": true
            },
            "context": {
              "$ref": "#/definitions/v1Context",
              "description": "The context of the associated package."
            },
            "storage_url": {
              "type": "string",
              "description": "The URL to the storage location of the callgraph.",
              "readOnly": true
            }
          },
          "description": "FunctionGraphData represents a function graph data request in the system."
        }
      },
      "description": "Request to update function graph data.",
      "required": [
        "meta",
        "tenant_meta"
      ]
    },
    "GHEAppRegistrationServiceCreateGHEAppRegistrationBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The tenant metadata restrict access to a specific tenant.",
          "title": "The tenant metadata restrict access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1GHEAppRegistrationSpec"
        },
        "response": {
          "$ref": "#/definitions/v1GHEAppRegistrationResponse",
          "description": "The return value of the GHE app registration.",
          "readOnly": true
        }
      },
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "GitHubActionDependencySpecGHActionType": {
      "type": "string",
      "enum": [
        "GH_ACTION_TYPE_UNSPECIFIED",
        "GH_ACTION_TYPE_GITHUB_REPO",
        "GH_ACTION_TYPE_DOCKER",
        "GH_ACTION_TYPE_INTERNAL"
      ],
      "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."
    },
    "GitHubWorkflowsWorkflow": {
      "type": "object",
      "properties": {
        "file_name": {
          "type": "string",
          "description": "Name of the workflow file."
        },
        "file_path": {
          "type": "string",
          "description": "Path of the workflow file."
        },
        "jobs": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/GitHubWorkflowsWorkflowJob"
          },
          "description": "All jobs defined in the workflow file."
        },
        "permissions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/WorkflowGHTokenPermission"
          },
          "description": "Permissions of the GITHUB_TOKEN defined at the workflow file level."
        },
        "all_secrets_exposed": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/WorkflowAllSecretsExposed"
          },
          "description": "Information about the exposure of 'secrets' object."
        }
      },
      "description": "Workflow represents one workflow file."
    },
    "GitHubWorkflowsWorkflowJob": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The Job ID."
        },
        "name": {
          "type": "string",
          "description": "Name of the job."
        },
        "permissions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/WorkflowGHTokenPermission"
          },
          "description": "Permissions of the GITHUB_TOKEN defined at the job level."
        },
        "actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of all actions used in the job."
        },
        "unpinned_runner_version": {
          "$ref": "#/definitions/JobUnpinnedRunner",
          "description": "Unpinned runner version used to run the job."
        },
        "script_injection_detected": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/JobScriptInjectionDetected"
          },
          "description": "Detected script injection in the job's shell script code."
        },
        "unpinned_commit_sha_actions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/JobUnpinnedCommitShaAction"
          },
          "description": "Unpinned commit SHA action versions used."
        },
        "unverified_gh_actions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/JobUnverifiedGHAction"
          },
          "description": "Unverified GitHub actions used."
        },
        "cloud_resource_accessed_without_oidc": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/JobCloudResourceAccessedWithoutOIDC"
          },
          "description": "Lists all cloud resources accessed without the workflow identity federation."
        },
        "untrusted_code_execution": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/JobUntrustedCodeExecution"
          },
          "description": "Untrusted code execution identified for the job."
        },
        "imposter_commit": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/JobImposterCommit"
          },
          "description": "Imposter commit SHA detected for the job."
        }
      },
      "description": "A single job defined in the workflow file."
    },
    "GroupByTimeGroupByTimeInterval": {
      "type": "string",
      "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"
      ],
      "default": "GROUP_BY_TIME_INTERVAL_UNSPECIFIED"
    },
    "GroupResponseGroupData": {
      "type": "object",
      "properties": {
        "aggregation_count": {
          "$ref": "#/definitions/v1CountResponse",
          "description": "Number of objects in group.\nThis field is always set."
        },
        "aggregation_uuids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of UUIDs of the objects in the group.\nOnly populated if show_aggregation_uuids is set."
        },
        "unique_counts": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1CountResponse"
          },
          "description": "Map of counts for the given unique_count_paths fields.\nOnly populated if unique_count_paths is set."
        },
        "unique_values": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "description": "Map of values for the given unique_value_paths fields.\nOnly populated if unique_value_paths is set."
        },
        "aggregation_value": {
          "$ref": "#/definitions/v1GroupAggregationValueResponse",
          "description": "Value of the aggregation operation as calculated by the query."
        }
      },
      "description": "Information about objects matching the given key."
    },
    "HttpParamsProfileAllowedTemplateParam": {
      "type": "object",
      "properties": {
        "name": {
          "$ref": "#/definitions/v1TemplateParamName"
        },
        "regex": {
          "type": "string"
        }
      },
      "description": "AllowedTemplateParam defines an allowed template parameter name and regex for validating its value."
    },
    "HttpParamsProfileTemplateParams": {
      "type": "object",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/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\"}]"
        }
      },
      "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."
    },
    "HuggingFaceModelServiceCreateHuggingFaceModelBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID for the ingested HuggingFace model.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Models scanned per namespace.",
          "title": "Models scanned per namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1HuggingFaceModelSpec",
          "description": "The specification of the model."
        }
      },
      "description": "HuggingFaceModel represents the JSON object from ingesting from the HuggingFace API.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "HuggingFaceOrganizationServiceCreateHuggingFaceOrganizationBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID for the HuggingFace organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Organizations scanned per namespace.",
          "title": "Organizations scanned per namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1HuggingFaceOrganizationSpec",
          "description": "The specification of the organization."
        }
      },
      "description": "HuggingFaceOrganization represents a HuggingFace organization and its associated metadata.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "IPAddressPolicyServiceCreateIPAddressPolicyBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the ip address policy.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespace of the ip address policy.",
          "title": "Namespace of the ip address policy."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1IPAddressPolicySpec",
          "description": "Resource kind specific data."
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagate indicates that the object should be visible in child namespaces.\nIt should be set to true for most use cases."
        }
      },
      "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.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "IPAddressPolicyServiceUpdateIPAddressPolicyBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the ip address policy.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Namespace of the ip address policy.",
              "title": "Namespace of the ip address policy."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1IPAddressPolicySpec",
              "description": "Resource kind specific data."
            },
            "propagate": {
              "type": "boolean",
              "description": "Propagate indicates that the object should be visible in child namespaces.\nIt should be set to true for most use cases."
            }
          },
          "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."
        }
      },
      "description": "Request to update the IP Address Policy.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "IdentityProviderOIDCProvider": {
      "type": "object",
      "properties": {
        "discover_url": {
          "type": "string",
          "description": "The well-known URL of the OIDC provider."
        },
        "key": {
          "type": "string",
          "description": "The key to authenticate with the provider for callbacks."
        },
        "secret": {
          "type": "string",
          "description": "The secret to authenticate with the provider for callbacks."
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "claim_names": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "discover_url",
        "key",
        "secret"
      ]
    },
    "IdentityProviderServiceCreateIdentityProviderBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an identify provider.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "IdentityProviders are associated with a tenant and namespace.",
          "title": "IdentityProviders are associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1IdentityProviderSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagate indicates that the object should be visible in child namespaces."
        }
      },
      "description": "Represents an identity provider.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "IdentityProviderServiceUpdateIdentityProviderBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of an identify provider.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "IdentityProviders are associated with a tenant and namespace.",
              "title": "IdentityProviders are associated with a tenant and namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1IdentityProviderSpec"
            },
            "propagate": {
              "type": "boolean",
              "description": "Propagate indicates that the object should be visible in child namespaces."
            }
          },
          "description": "Represents an identity provider."
        }
      },
      "description": "Request to update an identity provider.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "ImportedRuleSetResultImportedRuleSetResultStatus": {
      "type": "string",
      "enum": [
        "IMPORTED_RULE_SET_RESULT_STATUS_UNSPECIFIED",
        "IMPORTED_RULE_SET_RESULT_STATUS_SUCCESS",
        "IMPORTED_RULE_SET_RESULT_STATUS_FAIL"
      ],
      "default": "IMPORTED_RULE_SET_RESULT_STATUS_UNSPECIFIED"
    },
    "IngestedObjectIngestedObjectStatus": {
      "type": "string",
      "enum": [
        "INGESTED_OBJECT_STATUS_UNSPECIFIED",
        "INGESTED_OBJECT_STATUS_FOUND",
        "INGESTED_OBJECT_STATUS_NOT_FOUND",
        "INGESTED_OBJECT_STATUS_LIGHT"
      ],
      "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."
    },
    "IngestionStateServiceCreateIngestionStateBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the ingestion state.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "IngestionState is associated with a tenant and namespace.",
          "title": "IngestionState is associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1IngestionStateSpec"
        }
      },
      "description": "IngestionState represents the state of data ingestion for cross-cluster communication.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "IngestionStateServiceUpdateIngestionStateBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the ingestion state.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "IngestionState is associated with a tenant and namespace.",
              "title": "IngestionState is associated with a tenant and namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1IngestionStateSpec"
            }
          },
          "description": "IngestionState represents the state of data ingestion for cross-cluster communication.",
          "x-internal": true
        }
      },
      "description": "Request to update an ingestion state.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "InputResponseFormat": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the response format."
        },
        "description": {
          "type": "string",
          "description": "The description of the response format."
        },
        "json_schema": {
          "type": "object",
          "description": "The JSON schema of the response format."
        },
        "strict": {
          "type": "boolean",
          "description": "Whether the response format is strict."
        }
      },
      "description": "The response format of the message."
    },
    "InstallationServiceCreateInstallationBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the installation.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespaces are associated with a tenant.",
          "title": "Namespaces are associated with a tenant."
        },
        "spec": {
          "$ref": "#/definitions/v1InstallationSpec"
        },
        "processing_status": {
          "$ref": "#/definitions/v1ProcessingStatus"
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagate indicates that the object should be visible in child namespaces."
        }
      },
      "description": "Installation represents an installation request in the system.",
      "required": [
        "meta",
        "tenant_meta"
      ]
    },
    "InstallationServiceUpdateInstallationBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the installation.",
              "readOnly": true
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata is generic for any object."
            },
            "tenant_meta": {
              "type": "object",
              "description": "Namespaces are associated with a tenant.",
              "title": "Namespaces are associated with a tenant."
            },
            "spec": {
              "$ref": "#/definitions/v1InstallationSpec"
            },
            "processing_status": {
              "$ref": "#/definitions/v1ProcessingStatus"
            },
            "propagate": {
              "type": "boolean",
              "description": "Propagate indicates that the object should be visible in child namespaces."
            }
          },
          "description": "Installation represents an installation request in the system."
        }
      },
      "description": "Request to update an installation.",
      "required": [
        "meta",
        "tenant_meta"
      ]
    },
    "InventoryAdminClassificationAdminLevel": {
      "type": "string",
      "enum": [
        "ADMIN_LEVEL_UNSPECIFIED",
        "ADMIN_LEVEL_ALLOWED",
        "ADMIN_LEVEL_BLOCKED"
      ],
      "default": "ADMIN_LEVEL_UNSPECIFIED",
      "description": "AdminLevel is the admin classification level on the allow/block axis.\n\n - ADMIN_LEVEL_UNSPECIFIED: No admin classification has been assigned.\n - ADMIN_LEVEL_ALLOWED: Explicitly allowed by an AgentHookPolicy match.\n - ADMIN_LEVEL_BLOCKED: Explicitly blocked by an AgentHookPolicy match."
    },
    "InventoryThreatClassificationThreatLevel": {
      "type": "string",
      "enum": [
        "THREAT_LEVEL_UNSPECIFIED",
        "THREAT_LEVEL_SUSPICIOUS",
        "THREAT_LEVEL_MALICIOUS"
      ],
      "default": "THREAT_LEVEL_UNSPECIFIED",
      "description": "ThreatLevel is the threat classification level on the suspicious/malicious axis.\n\n - THREAT_LEVEL_UNSPECIFIED: No threat classification has been assigned.\n - THREAT_LEVEL_SUSPICIOUS: Flagged as suspicious by an AgentHookPolicy match.\n - THREAT_LEVEL_MALICIOUS: Flagged as malicious by an AgentHookPolicy match."
    },
    "InvitationServiceCreateInvitationBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the invitation.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Invitations can be issued per namespace.",
          "title": "Invitations can be issued per namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1InvitationSpec"
        }
      },
      "description": "Invitation represents an invitation for a new user in the system.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "InvitationServiceUpdateInvitationBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the invitation.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Invitations can be issued per namespace.",
              "title": "Invitations can be issued per namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1InvitationSpec"
            }
          },
          "description": "Invitation represents an invitation for a new user in the system."
        }
      },
      "description": "Request to update an invitation.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "JIRAConfigCustomField": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "required": [
        "key",
        "value"
      ]
    },
    "JIRAConfigJiraIssueType": {
      "type": "string",
      "enum": [
        "JIRA_ISSUE_TYPE_UNSPECIFIED",
        "JIRA_ISSUE_TYPE_TASK",
        "JIRA_ISSUE_TYPE_BUG"
      ],
      "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."
    },
    "JVMClassMetadataServiceCreateJVMClassMetadataBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the jvm class metadata.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "JVMClassMetadata are associated with a tenant.",
          "title": "JVMClassMetadata are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects.\nmeta.name is the class file sha , either original sha or remapped sha.\nParent kind is empty for JVMClassMetadata."
        },
        "spec": {
          "$ref": "#/definitions/v1JVMClassMetadataSpec"
        }
      },
      "description": "JVMClassMetadata contains metadata such as file sha, name, gav of oss library for a jvm class file.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "JVMClassMetadataServiceUpdateJVMClassMetadataBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the jvm class metadata.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "JVMClassMetadata are associated with a tenant.",
              "title": "JVMClassMetadata are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects.\nmeta.name is the class file sha , either original sha or remapped sha.\nParent kind is empty for JVMClassMetadata."
            },
            "spec": {
              "$ref": "#/definitions/v1JVMClassMetadataSpec"
            }
          },
          "description": "JVMClassMetadata contains metadata such as file sha, name, gav of oss library for a jvm class file."
        }
      },
      "description": "The request to update jvm class metadata.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "JobCloudName": {
      "type": "string",
      "enum": [
        "CLOUD_NAME_UNSPECIFIED",
        "CLOUD_NAME_AWS",
        "CLOUD_NAME_AZURE",
        "CLOUD_NAME_GCP",
        "CLOUD_NAME_HASHICORP"
      ],
      "default": "CLOUD_NAME_UNSPECIFIED"
    },
    "JobCloudResourceAccessedWithoutOIDC": {
      "type": "object",
      "properties": {
        "cloud_name": {
          "$ref": "#/definitions/JobCloudName",
          "description": "Name of the cloud accessed."
        },
        "action_name": {
          "type": "string",
          "description": "Name of the action used to access cloud resources."
        },
        "invoking_script": {
          "type": "string",
          "description": "Script content if the cloud resource is accessed using a script."
        },
        "input_parameters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of input parameters used to access the cloud resource."
        },
        "step_name": {
          "type": "string",
          "description": "Step name for the non-OIDC cloud resource access."
        },
        "location_uri": {
          "type": "string",
          "description": "Workflow file path with line number for non-OIDC cloud resource access."
        },
        "evidence_message": {
          "type": "string",
          "description": "Contains evidence message for the non-OIDC cloud resource violation."
        }
      }
    },
    "JobImposterCommit": {
      "type": "object",
      "properties": {
        "step_name": {
          "type": "string",
          "description": "Step name where the imposter action is used."
        },
        "action": {
          "type": "string",
          "description": "Full action reference (e.g. \"actions/checkout@abc123...\")."
        },
        "action_sha": {
          "type": "string",
          "description": "The pinned commit SHA."
        },
        "action_repo_clone_url": {
          "type": "string",
          "description": "Constructed clone URL used for the lookup."
        },
        "location_uri": {
          "type": "string",
          "description": "Workflow file path with line number for the imposter action step."
        }
      }
    },
    "JobScriptInjectionDetected": {
      "type": "object",
      "properties": {
        "script_content": {
          "type": "string",
          "description": "Shell script content where the injection was detected."
        },
        "gh_context_variables": {
          "type": "array",
          "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"
        },
        "step_name": {
          "type": "string",
          "description": "Step name where script injection was detected."
        },
        "location_uris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Full path of each injection variable detected with line number."
        }
      }
    },
    "JobServiceCreateJobBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a Job.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Jobs are associated with a tenant.",
          "title": "Jobs are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1JobSpec"
        }
      },
      "description": "The Job represents a background task that is executed by the Job Service.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "JobServiceUpdateJobBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of a Job.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Jobs are associated with a tenant.",
              "title": "Jobs are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1JobSpec"
            }
          },
          "description": "The Job represents a background task that is executed by the Job Service.",
          "x-internal": true
        }
      },
      "description": "Request to update the job.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "JobSpecJobResponse": {
      "type": "object",
      "properties": {
        "payload": {
          "$ref": "#/definitions/googleprotobufAny",
          "description": "Response data returned by the job."
        },
        "error": {
          "$ref": "#/definitions/googleprotobufAny",
          "description": "Error returned by the job."
        }
      },
      "description": "Response data returned by the job."
    },
    "JobUnpinnedCommitShaAction": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the action."
        },
        "version": {
          "type": "string",
          "description": "Version of the action used."
        },
        "line_number": {
          "type": "integer",
          "format": "int32",
          "description": "Line number of the workflow file containing the action."
        }
      }
    },
    "JobUnpinnedRunner": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the targeted runner type."
        },
        "version": {
          "type": "string",
          "description": "Version of the runner used."
        },
        "line_number": {
          "type": "integer",
          "format": "int32",
          "description": "Line number of the workflow file containing the runner version."
        }
      }
    },
    "JobUntrustedCodeExecution": {
      "type": "object",
      "properties": {
        "build_cmd_step": {
          "type": "string",
          "description": "Step name where the untrusted code is being executed."
        },
        "build_cmd": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Build cmd used to execute the untrusted code."
        },
        "build_cmd_script_content": {
          "type": "string",
          "description": "Shell script content where the untrusted code is being executed."
        },
        "checkout_step": {
          "type": "string",
          "description": "Step name where the untrusted code is being checked out."
        },
        "checkout_cmd": {
          "type": "string",
          "description": "Checkout command used to checkout the code."
        },
        "checkout_script_content": {
          "type": "string",
          "description": "Shell script content where the untrusted code is being checked out."
        },
        "location_uri": {
          "type": "string",
          "description": "Workflow file path with the line number for untrusted code execution script."
        }
      }
    },
    "JobUnverifiedGHAction": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the action."
        },
        "line_number": {
          "type": "integer",
          "format": "int32",
          "description": "Line number of the workflow file containing the action."
        }
      }
    },
    "LLMContextStructuredContent": {
      "type": "object",
      "properties": {
        "data": {
          "type": "string",
          "description": "The actual content data."
        },
        "schema": {
          "type": "object",
          "description": "The schema defining the structure and validation rules for the content."
        }
      }
    },
    "LicenseDependencyServiceCreateLicenseDependencyBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the license dependency.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The tenant metadata of the license dependency.",
          "title": "The tenant metadata of the license dependency."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "The metadata of the license dependency."
        },
        "spec": {
          "$ref": "#/definitions/v1LicenseDependencySpec",
          "description": "The specification of the license dependency."
        }
      },
      "required": [
        "meta",
        "spec"
      ]
    },
    "LicenseDependencyServiceUpdateLicenseDependencyBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the license dependency.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "The tenant metadata of the license dependency.",
              "title": "The tenant metadata of the license dependency."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "The metadata of the license dependency."
            },
            "spec": {
              "$ref": "#/definitions/v1LicenseDependencySpec",
              "description": "The specification of the license dependency."
            }
          }
        }
      },
      "description": "Request to update a license dependency.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "LicenseNoticesReportServiceCreateLicenseNoticesReportBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the license notices report.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant metadata.",
          "title": "Tenant metadata."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1LicenseNoticesReportSpec",
          "description": "The specification of the license notices report."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "The context of the license notices report."
        }
      },
      "required": [
        "tenant_meta",
        "meta",
        "spec",
        "context"
      ]
    },
    "LicenseNoticesReportSpecGrouping": {
      "type": "string",
      "enum": [
        "GROUPING_UNSPECIFIED",
        "GROUPING_LICENSE",
        "GROUPING_DEPENDENCY"
      ],
      "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."
    },
    "LicenseNoticesReportSpecReportType": {
      "type": "string",
      "enum": [
        "REPORT_TYPE_UNSPECIFIED",
        "REPORT_TYPE_PDF",
        "REPORT_TYPE_HTML",
        "REPORT_TYPE_TXT"
      ],
      "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."
    },
    "LicenseServiceCreateLicenseBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a license.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Licenses live in the system namespace.",
          "title": "Licenses live in the system namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1LicenseSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates that the object should be visible in child namespaces."
        }
      },
      "description": "Represents a license in the system.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "LicenseServiceUpdateLicenseBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of a license.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Licenses live in the system namespace.",
              "title": "Licenses live in the system namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1LicenseSpec"
            },
            "propagate": {
              "type": "boolean",
              "description": "Indicates that the object should be visible in child namespaces."
            }
          },
          "description": "Represents a license in the system."
        }
      },
      "description": "Request to update a license.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "LicenseSummaryServiceCreateLicenseSummaryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the license summary.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The tenant metadata of the license summary.",
          "title": "The tenant metadata of the license summary."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "The metadata of the license summary."
        },
        "spec": {
          "$ref": "#/definitions/v1LicenseSummarySpec",
          "description": "The specification of the license summary."
        }
      },
      "required": [
        "meta",
        "spec"
      ]
    },
    "LicenseSummaryServiceUpdateLicenseSummaryBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the license summary.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "The tenant metadata of the license summary.",
              "title": "The tenant metadata of the license summary."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "The metadata of the license summary."
            },
            "spec": {
              "$ref": "#/definitions/v1LicenseSummarySpec",
              "description": "The specification of the license summary."
            }
          }
        }
      },
      "description": "Request to update a license summary.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "LinterCorrectnessAnalysisCodeFix": {
      "type": "object",
      "properties": {
        "patch": {
          "type": "string",
          "description": "The code fix to be applied."
        },
        "file_path": {
          "type": "string",
          "description": "The file path of the code fix."
        },
        "line_start": {
          "type": "integer",
          "format": "int32",
          "description": "The start line number of the code fix."
        },
        "line_end": {
          "type": "integer",
          "format": "int32",
          "description": "The end line number of the code fix."
        }
      },
      "description": "CodeFix represents a potential fix to a determined true positive linter result.",
      "required": [
        "patch",
        "file_path",
        "line_start",
        "line_end"
      ]
    },
    "LinterCorrectnessAnalysisDataFlowNode": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "description": "Type of node in the data flow (source, step, or sink)."
        },
        "code_snippet": {
          "type": "string",
          "description": "Variable or expression at this point in the flow."
        },
        "code_line_num": {
          "type": "integer",
          "format": "int32",
          "description": "Line number in the source file."
        }
      },
      "description": "DataFlowNode represents a node in the data flow trace from source to sink."
    },
    "LinterResultServiceCreateLinterResultBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a linter result.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Linter results are associated with a tenant and namespace.",
          "title": "Linter results are associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Meta identifies the object."
        },
        "spec": {
          "$ref": "#/definitions/v1LinterResultSpec"
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Context for the repository version will be automatically updated\nto that of the version, unless it is a CI run."
        }
      },
      "description": "The meta parent_kind can take one of two values - PackageVersion or RepositoryVersion.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "LinterResultServiceUpdateLinterResultBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of a linter result.",
              "readOnly": true,
              "x-endor-name": "UUID"
            },
            "tenant_meta": {
              "type": "object",
              "description": "Linter results are associated with a tenant and namespace.",
              "title": "Linter results are associated with a tenant and namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Meta identifies the object."
            },
            "spec": {
              "$ref": "#/definitions/v1LinterResultSpec"
            },
            "context": {
              "$ref": "#/definitions/v1Context",
              "description": "Context for the repository version will be automatically updated\nto that of the version, unless it is a CI run."
            }
          },
          "description": "The meta parent_kind can take one of two values - PackageVersion or RepositoryVersion."
        }
      },
      "description": "Request to update a linter result.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "ListParametersGroup": {
      "type": "object",
      "properties": {
        "aggregation_paths": {
          "type": "string",
          "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."
        },
        "show_aggregation_uuids": {
          "type": "boolean",
          "description": "Return the UUID of each object in each group as specified by\naggregation_paths."
        },
        "unique_count_paths": {
          "type": "string",
          "description": "List of fields for which we want the unique count.\nSupports arrays and maps."
        },
        "unique_value_paths": {
          "type": "string",
          "description": "List of fields for which we want the unique values.\nSupports arrays and maps."
        }
      },
      "description": "Contains the group parameters."
    },
    "ListParametersGroupByTime": {
      "type": "object",
      "properties": {
        "aggregation_paths": {
          "type": "string",
          "description": "Group the objects based on this time field,\nfor example, meta.create_time."
        },
        "show_aggregation_uuids": {
          "type": "boolean",
          "description": "Return the UUIDs of the objects in each group."
        },
        "interval": {
          "$ref": "#/definitions/GroupByTimeGroupByTimeInterval",
          "description": "Interval unit by which the objects should be grouped."
        },
        "group_size": {
          "type": "integer",
          "format": "int32",
          "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."
        },
        "start_time": {
          "type": "string",
          "format": "date-time",
          "description": "Beginning of the time period to group objects.\nDefaults to the beginning of time."
        },
        "end_time": {
          "type": "string",
          "format": "date-time",
          "description": "End of the time period to group objects.\nDefaults to the current time."
        },
        "mode": {
          "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."
        },
        "aggregation_value_field": {
          "type": "string",
          "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)"
        },
        "aggregation_operator": {
          "type": "string",
          "title": "The aggreation_operator is the operator that we should use for the\naggregation. Allowed values are: min, max, sum, avg"
        }
      },
      "description": "Contains the group_by_time parameters."
    },
    "ListParametersSortEntry": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string",
          "description": "Field to sort objects by, for example, meta.name."
        },
        "order": {
          "$ref": "#/definitions/SortEntrySortEntryOrder",
          "description": "Sort order. Default: ASC."
        }
      },
      "description": "Contains the sort parameters."
    },
    "MCPServerLogServiceCreateMCPServerLogBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an MCPServerLog.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "MCPServerLogs are associated with a tenant or are global.",
          "title": "MCPServerLogs are associated with a tenant or are global."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1MCPServerLogSpec",
          "description": "The internal specification of the object."
        }
      },
      "description": "Represents the information captured from an MCPServerLog of endorctl.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "MalwareDetectionAnalysisTaskServiceCreateMalwareDetectionAnalysisTaskBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the analysis task record.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant metadata for namespace.",
          "title": "Tenant metadata for namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Common metadata for all Endor Labs resources."
        },
        "spec": {
          "$ref": "#/definitions/v1MalwareDetectionAnalysisTaskSpec",
          "description": "Domain-specific fields."
        }
      },
      "description": "MalwareDetectionAnalysisTask represents a pending or completed analysis task.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "MalwareDetectionAnalysisTaskServiceUpdateMalwareDetectionAnalysisTaskBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the analysis task record.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant metadata for namespace.",
              "title": "Tenant metadata for namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Common metadata for all Endor Labs resources."
            },
            "spec": {
              "$ref": "#/definitions/v1MalwareDetectionAnalysisTaskSpec",
              "description": "Domain-specific fields."
            }
          },
          "description": "MalwareDetectionAnalysisTask represents a pending or completed analysis task.",
          "x-internal": true
        }
      },
      "description": "Request to update a malware detection analysis task.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "MalwareDetectionArtifactDownloadStatusServiceCreateMalwareDetectionArtifactDownloadStatusBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the artifact download status record.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant metadata for namespace.",
          "title": "Tenant metadata for namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Common metadata for all Endor Labs resources."
        },
        "spec": {
          "$ref": "#/definitions/v1MalwareDetectionArtifactDownloadStatusSpec",
          "description": "Domain-specific fields."
        }
      },
      "description": "MalwareDetectionArtifactDownloadStatus tracks the download status of package artifacts.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "MalwareDetectionArtifactDownloadStatusServiceUpdateMalwareDetectionArtifactDownloadStatusBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the artifact download status record.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant metadata for namespace.",
              "title": "Tenant metadata for namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Common metadata for all Endor Labs resources."
            },
            "spec": {
              "$ref": "#/definitions/v1MalwareDetectionArtifactDownloadStatusSpec",
              "description": "Domain-specific fields."
            }
          },
          "description": "MalwareDetectionArtifactDownloadStatus tracks the download status of package artifacts.",
          "x-internal": true
        }
      },
      "description": "Request to update a malware detection artifact download status.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "MalwareDetectionAssessmentServiceCreateMalwareDetectionAssessmentBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the assessment record.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant metadata for namespace.",
          "title": "Tenant metadata for namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Common metadata for all Endor Labs resources."
        },
        "spec": {
          "$ref": "#/definitions/v1MalwareDetectionAssessmentSpec",
          "description": "Domain-specific fields."
        }
      },
      "description": "MalwareDetectionAssessment represents a malware assessment record.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "MalwareDetectionAssessmentServiceUpdateMalwareDetectionAssessmentBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the assessment record.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant metadata for namespace.",
              "title": "Tenant metadata for namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Common metadata for all Endor Labs resources."
            },
            "spec": {
              "$ref": "#/definitions/v1MalwareDetectionAssessmentSpec",
              "description": "Domain-specific fields."
            }
          },
          "description": "MalwareDetectionAssessment represents a malware assessment record.",
          "x-internal": true
        }
      },
      "description": "Request to update a malware detection assessment.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "MalwareDetectionIoCServiceCreateMalwareDetectionIoCBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the IoC record.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant metadata for namespace.",
          "title": "Tenant metadata for namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Common metadata for all Endor Labs resources."
        },
        "spec": {
          "$ref": "#/definitions/v1MalwareDetectionIoCSpec",
          "description": "Domain-specific fields."
        }
      },
      "description": "MalwareDetectionIoC represents an Indicator of Compromise.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "MalwareDetectionIoCServiceUpdateMalwareDetectionIoCBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the IoC record.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant metadata for namespace.",
              "title": "Tenant metadata for namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Common metadata for all Endor Labs resources."
            },
            "spec": {
              "$ref": "#/definitions/v1MalwareDetectionIoCSpec",
              "description": "Domain-specific fields."
            }
          },
          "description": "MalwareDetectionIoC represents an Indicator of Compromise.",
          "x-internal": true
        }
      },
      "description": "Request to update a malware detection IoC.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "MalwareDetectionPackageIoCServiceCreateMalwareDetectionPackageIoCBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the package-IoC relationship record.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant metadata for namespace.",
          "title": "Tenant metadata for namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Common metadata for all Endor Labs resources."
        },
        "spec": {
          "$ref": "#/definitions/v1MalwareDetectionPackageIoCSpec",
          "description": "Domain-specific fields."
        }
      },
      "description": "MalwareDetectionPackageIoC represents a relationship between a package and an IoC.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "MalwareDetectionPackageIoCServiceUpdateMalwareDetectionPackageIoCBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the package-IoC relationship record.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant metadata for namespace.",
              "title": "Tenant metadata for namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Common metadata for all Endor Labs resources."
            },
            "spec": {
              "$ref": "#/definitions/v1MalwareDetectionPackageIoCSpec",
              "description": "Domain-specific fields."
            }
          },
          "description": "MalwareDetectionPackageIoC represents a relationship between a package and an IoC.",
          "x-internal": true
        }
      },
      "description": "Request to update a malware detection package-IoC relationship.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "MalwareDetectionPackageServiceCreateMalwareDetectionPackageBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the package record.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant metadata for namespace.",
          "title": "Tenant metadata for namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Common metadata for all Endor Labs resources."
        },
        "spec": {
          "$ref": "#/definitions/v1MalwareDetectionPackageSpec",
          "description": "Domain-specific fields."
        }
      },
      "description": "MalwareDetectionPackage represents a package in the malware detection system.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "MalwareDetectionPackageServiceUpdateMalwareDetectionPackageBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the package record.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant metadata for namespace.",
              "title": "Tenant metadata for namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Common metadata for all Endor Labs resources."
            },
            "spec": {
              "$ref": "#/definitions/v1MalwareDetectionPackageSpec",
              "description": "Domain-specific fields."
            }
          },
          "description": "MalwareDetectionPackage represents a package in the malware detection system.",
          "x-internal": true
        }
      },
      "description": "Request to update a malware detection package.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "MalwareDetectionWorkflowServiceCreateMalwareDetectionWorkflowBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the workflow record.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant metadata for namespace.",
          "title": "Tenant metadata for namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Common metadata for all Endor Labs resources."
        },
        "spec": {
          "$ref": "#/definitions/v1MalwareDetectionWorkflowSpec",
          "description": "Domain-specific fields."
        }
      },
      "description": "MalwareDetectionWorkflow stores a named scan workflow configuration used by the malware detection pipeline.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "MalwareDetectionWorkflowServiceUpdateMalwareDetectionWorkflowBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest",
          "description": "Update request parameters."
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the workflow record.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant metadata for namespace.",
              "title": "Tenant metadata for namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Common metadata for all Endor Labs resources."
            },
            "spec": {
              "$ref": "#/definitions/v1MalwareDetectionWorkflowSpec",
              "description": "Domain-specific fields."
            }
          },
          "description": "The workflow to update.",
          "title": "The workflow to update.",
          "x-internal": true
        }
      },
      "description": "Request to update a malware detection workflow.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "MalwareExposureServiceCreateMalwareExposureBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "UUID of the MalwareExposure object.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant data.",
          "title": "Tenant data."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1MalwareExposureSpec",
          "description": "Object specific data."
        }
      },
      "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\".",
      "required": [
        "meta",
        "spec"
      ]
    },
    "MalwareExposureServiceUpdateMalwareExposureBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest",
          "description": "Update request."
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "UUID of the MalwareExposure object.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant data.",
              "title": "Tenant data."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1MalwareExposureSpec",
              "description": "Object specific data."
            }
          },
          "description": "MalwareExposure object to update.",
          "title": "MalwareExposure object to update."
        }
      },
      "description": "Request to update a MalwareExposure object.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "MalwareRangeMalwareRangeType": {
      "type": "string",
      "enum": [
        "MALWARE_RANGE_TYPE_UNSPECIFIED",
        "MALWARE_RANGE_TYPE_GIT",
        "MALWARE_RANGE_TYPE_SEMVER",
        "MALWARE_RANGE_TYPE_ECOSYSTEM"
      ],
      "default": "MALWARE_RANGE_TYPE_UNSPECIFIED",
      "description": "Type of the version information."
    },
    "MalwareServiceCreateMalwareBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a malware record.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant related data for the tenant containing the resource."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1MalwareSpec"
        }
      },
      "required": [
        "meta",
        "spec"
      ]
    },
    "MalwareServiceUpdateMalwareBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of a malware record.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant related data for the tenant containing the resource."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1MalwareSpec"
            }
          }
        }
      },
      "description": "Request to update a malware record.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "MessageRole": {
      "type": "string",
      "enum": [
        "ROLE_UNSPECIFIED",
        "ROLE_SYSTEM",
        "ROLE_USER",
        "ROLE_ASSISTANT",
        "ROLE_TOOLS"
      ],
      "default": "ROLE_UNSPECIFIED"
    },
    "MessageTypeConfigMessageExportFormat": {
      "type": "string",
      "enum": [
        "MESSAGE_EXPORT_FORMAT_UNSPECIFIED",
        "MESSAGE_EXPORT_FORMAT_JSON",
        "MESSAGE_EXPORT_FORMAT_SARIF"
      ],
      "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."
    },
    "MessageTypeConfigMessageType": {
      "type": "string",
      "enum": [
        "MESSAGE_TYPE_UNSPECIFIED",
        "MESSAGE_TYPE_FINDING",
        "MESSAGE_TYPE_PACKAGE_VERSION",
        "MESSAGE_TYPE_PROJECT",
        "MESSAGE_TYPE_SCAN_RESULT",
        "MESSAGE_TYPE_ADMISSION_POLICY_FINDING"
      ],
      "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)."
    },
    "MetricServiceCreateMetricBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the the metric resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Metrics are associated with a tenant and tenant information must be provided.",
          "title": "Metrics are associated with a tenant and tenant information must be provided."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata identifies the object."
        },
        "spec": {
          "$ref": "#/definitions/v1MetricSpec",
          "description": "The internal specification of a metric."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "This contains the definition all metrics.",
      "required": [
        "tenant_meta",
        "meta",
        "spec",
        "context"
      ]
    },
    "MetricServiceUpdateMetricBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the the metric resource.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Metrics are associated with a tenant and tenant information must be provided.",
              "title": "Metrics are associated with a tenant and tenant information must be provided."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata identifies the object."
            },
            "spec": {
              "$ref": "#/definitions/v1MetricSpec",
              "description": "The internal specification of a metric."
            },
            "context": {
              "$ref": "#/definitions/v1Context"
            }
          },
          "description": "This contains the definition all metrics."
        }
      },
      "description": "Request to update a metric.",
      "required": [
        "tenant_meta",
        "meta",
        "spec",
        "context"
      ]
    },
    "NVDVulnerabilityCvssMetricV2": {
      "type": "object",
      "properties": {
        "source": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/v1NVDMetricType"
        },
        "cvss_data": {
          "$ref": "#/definitions/v1CvssDataV2"
        },
        "base_severity": {
          "type": "string"
        },
        "exploitability_score": {
          "type": "number",
          "format": "float"
        },
        "impact_score": {
          "type": "number",
          "format": "float"
        },
        "ac_insuf_info": {
          "type": "boolean"
        },
        "obtain_all_privilege": {
          "type": "boolean"
        },
        "obtain_user_privilege": {
          "type": "boolean"
        },
        "obtain_other_privilege": {
          "type": "boolean"
        },
        "user_interaction_required": {
          "type": "boolean"
        }
      },
      "description": "Based on schema definition provided by NVD here. https://csrc.nist.gov/schema/nvd/api/2.0/external/cvss-v2.0.json.",
      "required": [
        "source",
        "type",
        "cvss_data"
      ]
    },
    "NVDVulnerabilityCvssMetricV30": {
      "type": "object",
      "properties": {
        "source": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/v1NVDMetricType"
        },
        "cvss_data": {
          "$ref": "#/definitions/v1CvssDataV30"
        },
        "exploitability_score": {
          "type": "number",
          "format": "float"
        },
        "impact_score": {
          "type": "number",
          "format": "float"
        }
      },
      "description": "Based on schema definition provided by NVD here. https://csrc.nist.gov/schema/nvd/api/3.0/external/cvss-v2.0.json.",
      "required": [
        "source",
        "type",
        "cvss_data"
      ]
    },
    "NVDVulnerabilityCvssMetricV31": {
      "type": "object",
      "properties": {
        "source": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/v1NVDMetricType"
        },
        "cvss_data": {
          "$ref": "#/definitions/v1CvssDataV31"
        },
        "exploitability_score": {
          "type": "number",
          "format": "float"
        },
        "impact_score": {
          "type": "number",
          "format": "float"
        }
      },
      "description": "Based on schema definition provided by NVD here. https://csrc.nist.gov/schema/nvd/api/2.0/external/cvss-v3.1.json.",
      "required": [
        "source",
        "type",
        "cvss_data"
      ]
    },
    "NVDVulnerabilityCvssMetricV40": {
      "type": "object",
      "properties": {
        "source": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/v1NVDMetricType"
        },
        "cvss_data": {
          "$ref": "#/definitions/v1CvssDataV40"
        },
        "exploitability_score": {
          "type": "number",
          "format": "float"
        },
        "impact_score": {
          "type": "number",
          "format": "float"
        }
      },
      "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.",
      "required": [
        "source",
        "type",
        "cvss_data"
      ]
    },
    "NVDVulnerabilityRootCve": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "source_identifier": {
          "type": "string"
        },
        "vuln_status": {
          "type": "string"
        },
        "vuln_typed_status": {
          "$ref": "#/definitions/v1NVDStatus"
        },
        "published": {
          "type": "string",
          "format": "date-time"
        },
        "last_modified": {
          "type": "string",
          "format": "date-time"
        },
        "evaluator_comment": {
          "type": "string"
        },
        "evaluator_solution": {
          "type": "string"
        },
        "evaluator_impact": {
          "type": "string"
        },
        "cisa_exploit_add": {
          "type": "string"
        },
        "cisa_action_due": {
          "type": "string"
        },
        "cisa_required_action": {
          "type": "string"
        },
        "cisa_vulnerability_name": {
          "type": "string"
        },
        "descriptions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/RootCveLangString"
          }
        },
        "references": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/NVDVulnerabilityRootCveReference"
          }
        },
        "metrics": {
          "$ref": "#/definitions/RootCveCVSSMetric"
        },
        "weaknesses": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/RootCveWeakness"
          }
        },
        "configurations": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/RootCveConfig"
          }
        },
        "vendor_comments": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/RootCveVendorComment"
          }
        }
      },
      "required": [
        "id",
        "published",
        "last_modified",
        "descriptions",
        "references"
      ]
    },
    "NVDVulnerabilityRootCveReference": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "url"
      ]
    },
    "NamespaceServiceCreateNamespaceBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a namespace.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespaces are associated with a tenant.",
          "title": "Namespaces are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1NamespaceSpec"
        }
      },
      "description": "Namespace provides a mechanism for isolating groups of resources.\nNamespaces may be defined in a parent child hierarchy.",
      "required": [
        "meta"
      ]
    },
    "NamespaceServiceUpdateNamespaceBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "tenant_meta": {
              "type": "object",
              "description": "Namespaces are associated with a tenant.",
              "title": "Namespaces are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1NamespaceSpec"
            }
          },
          "description": "Namespace provides a mechanism for isolating groups of resources.\nNamespaces may be defined in a parent child hierarchy."
        }
      },
      "description": "Request to update a namespace.",
      "required": [
        "meta"
      ]
    },
    "NodeFunctionRef": {
      "type": "object",
      "properties": {
        "language": {
          "type": "string"
        },
        "registry": {
          "type": "string"
        },
        "product": {
          "type": "string"
        },
        "version": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        },
        "language_specific": {
          "type": "string"
        },
        "classname": {
          "type": "string"
        },
        "function_or_attribute_name": {
          "type": "string"
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "return_type": {
          "type": "string"
        },
        "declared_type": {
          "type": "string"
        },
        "signature": {
          "type": "string"
        }
      }
    },
    "NotificationActionAggregationType": {
      "type": "string",
      "enum": [
        "AGGREGATION_TYPE_UNSPECIFIED",
        "AGGREGATION_TYPE_PROJECT",
        "AGGREGATION_TYPE_DEPENDENCY",
        "AGGREGATION_TYPE_DEPENDENCY_ACROSS_PKG_VERSIONS",
        "AGGREGATION_TYPE_NONE",
        "AGGREGATION_TYPE_MANUAL"
      ],
      "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."
    },
    "NotificationActionServiceCreateNotificationActionBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The tenant metadata restrict access to a specific tenant.",
          "title": "The tenant metadata restrict access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1NotificationActionSpec"
        },
        "response": {
          "$ref": "#/definitions/v1NotificationActionResponse",
          "description": "The return value of the executed notification action.",
          "readOnly": true
        }
      },
      "description": "Implements the notification action.",
      "required": [
        "tenant_meta",
        "meta"
      ]
    },
    "NotificationDismissNotificationDismissCategory": {
      "type": "string",
      "enum": [
        "NOTIFICATION_DISMISS_CATEGORY_UNSPECIFIED",
        "NOTIFICATION_DISMISS_CATEGORY_FALSE_POSITIVE",
        "NOTIFICATION_DISMISS_CATEGORY_MITIGATED",
        "NOTIFICATION_DISMISS_CATEGORY_LOW_PRIORITY"
      ],
      "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."
    },
    "NotificationServiceCreateNotificationBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a notification.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Notifications are associated with a tenant.",
          "title": "Notifications are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1NotificationSpec"
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Notification context originates from the results of an endorctl scan.\nIt may include details such as CI run ID or project reference."
        }
      },
      "description": "The record created when there is a policy violation.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "NotificationServiceUpdateNotificationBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of a notification.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Notifications are associated with a tenant.",
              "title": "Notifications are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1NotificationSpec"
            },
            "context": {
              "$ref": "#/definitions/v1Context",
              "description": "Notification context originates from the results of an endorctl scan.\nIt may include details such as CI run ID or project reference."
            }
          },
          "description": "The record created when there is a policy violation."
        }
      },
      "description": "Request to update the notification.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "NotificationTargetActionActionType": {
      "type": "string",
      "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"
      ],
      "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.\n - ACTION_TYPE_ADO_BOARDS: ACTION_TYPE_ADO_BOARDS indicates an ADO board action."
    },
    "NotificationTargetNotificationTargetAction": {
      "type": "object",
      "properties": {
        "action_type": {
          "$ref": "#/definitions/NotificationTargetActionActionType",
          "description": "Indicates an action that needs to be taken in response to a policy violation.\nFor example, JIRA, Webhook, or an email notification."
        },
        "public": {
          "type": "boolean",
          "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."
        },
        "exclude_endor_url": {
          "type": "boolean",
          "description": "Excludes the URL to access the Endor Labs app which provides the notification details."
        },
        "jira_config": {
          "$ref": "#/definitions/v1JIRAConfig"
        },
        "webhook_config": {
          "$ref": "#/definitions/v1WebhookConfig"
        },
        "email_config": {
          "$ref": "#/definitions/v1EMailConfig"
        },
        "vanta_config": {
          "$ref": "#/definitions/v1VantaConfig"
        },
        "slack_config": {
          "$ref": "#/definitions/v1SlackConfig"
        },
        "github_pr_config": {
          "$ref": "#/definitions/v1GitHubPRConfig"
        },
        "ado_boards_config": {
          "$ref": "#/definitions/v1ADOBoardsConfig"
        }
      },
      "required": [
        "action_type"
      ]
    },
    "NotificationTargetServiceCreateNotificationTargetBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the notification target.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Notification Targets are associated with a tenant.",
          "title": "Notification Targets are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1NotificationTargetSpec",
          "description": "The project specification."
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates whether the object should be visible in the child namespaces or not."
        }
      },
      "description": "Indicates actions taken when a corresponding notification is raised.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "NotificationTargetServiceUpdateNotificationTargetBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the notification target.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Notification Targets are associated with a tenant.",
              "title": "Notification Targets are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1NotificationTargetSpec",
              "description": "The project specification."
            },
            "propagate": {
              "type": "boolean",
              "description": "Indicates whether the object should be visible in the child namespaces or not."
            }
          },
          "description": "Indicates actions taken when a corresponding notification is raised."
        }
      },
      "description": "Request to update the notification target.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "OSSDependencyRequestServiceCreateOSSDependencyRequestBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the SBOM.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "tenant_meta": {
          "type": "object",
          "description": "SBOM are associated with a tenant and the tenant information must be provided.",
          "title": "SBOM are associated with a tenant and the tenant information must be provided."
        },
        "spec": {
          "$ref": "#/definitions/v1OSSDependencyRequestSpec",
          "description": "The specification of the project."
        }
      },
      "description": "Represents a request to create OSS dependencies in the system.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "OnPremSchedulerServiceCreateOnPremSchedulerBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the onprem scheduler.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Contains the namespace.",
          "title": "Contains the namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OnPremSchedulerSpec",
          "description": "Spec is the internal specification of the object."
        }
      },
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "OnPremSchedulerServiceUpdateOnPremSchedulerBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the onprem scheduler.",
              "readOnly": true,
              "x-endor-name": "UUID"
            },
            "tenant_meta": {
              "type": "object",
              "description": "Contains the namespace.",
              "title": "Contains the namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1OnPremSchedulerSpec",
              "description": "Spec is the internal specification of the object."
            }
          }
        }
      },
      "description": "Request to update an onprem scheduler.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "OptimizedQueryOptimizedQuerySpec": {
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "description": "The kind of object requested."
        },
        "list_parameters": {
          "$ref": "#/definitions/v1ListParameters"
        },
        "inconsistent_order": {
          "type": "boolean",
          "description": "If consistent order of the returned values is not required,\nthen the results can be returned faster. This is set to false by default."
        },
        "use_range": {
          "type": "boolean",
          "description": "If true, the sort will use the range to query for int and float fields."
        },
        "number_range": {
          "$ref": "#/definitions/OptimizedQueryOptimizedQuerySpecRange"
        }
      },
      "required": [
        "kind"
      ]
    },
    "OptimizedQueryOptimizedQuerySpecRange": {
      "type": "object",
      "properties": {
        "start_range": {
          "type": "number",
          "format": "double",
          "description": "The start of the range to query."
        },
        "end_range": {
          "type": "number",
          "format": "double",
          "description": "The end of the range to query."
        },
        "increment": {
          "type": "number",
          "format": "double",
          "description": "Increment of the range to query."
        }
      }
    },
    "OptimizedQueryServiceCreateOptimizedQueryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The Tenant Metadata restricts access to a specific tenant.",
          "title": "The Tenant Metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata identifies the object."
        },
        "spec": {
          "$ref": "#/definitions/v1OptimizedQuerySpec"
        }
      },
      "description": "OptimizedQuery attempts to break queries into smaller queries\nbased on child namespaces so as to not hit mongodb limits.",
      "required": [
        "tenant_meta",
        "meta"
      ],
      "x-internal": true
    },
    "OrganizationAllowedWorkflowsServiceCreateOrganizationAllowedWorkflowsBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an organization allowed workflows object.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "OrganizationAllowedWorkflows are associated to a tenant.",
          "title": "OrganizationAllowedWorkflows are associated to a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationAllowedWorkflowsSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw object ingested for the allowed workflows."
        }
      },
      "description": "Represents the information of allowed workflows of an organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationAllowedWorkflowsServiceUpdateOrganizationAllowedWorkflowsBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of an organization allowed workflows object.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "OrganizationAllowedWorkflows are associated to a tenant.",
              "title": "OrganizationAllowedWorkflows are associated to a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1OrganizationAllowedWorkflowsSpec",
              "description": "The internal specification of the object."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw object ingested for the allowed workflows."
            }
          },
          "description": "Represents the information of allowed workflows of an organization."
        }
      },
      "description": "Request to update organization allowed workflows object.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationBlockListServiceCreateOrganizationBlockListBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an organization's block list.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Organization's block list is associated to a tenant.",
          "title": "Organization's block list is associated to a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationBlockListSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "Represents the information about the blocked user list of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationBlockListServiceUpdateOrganizationBlockListBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of an organization's block list.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Organization's block list is associated to a tenant.",
              "title": "Organization's block list is associated to a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1OrganizationBlockListSpec",
              "description": "The internal specification of the object."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "Represents the information about the blocked user list of a platform organization."
        }
      },
      "description": "Request to update the block list of an organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationCICDPermissionsServiceCreateOrganizationCICDPermissionsBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the CI/CD permissions object in a platform organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "OrganizationCICDPermissions is associated with a tenant.",
          "title": "OrganizationCICDPermissions is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationCICDPermissionsSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "Capture the permissions policy configuration for repositories.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationCICDPermissionsServiceUpdateOrganizationCICDPermissionsBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the CI/CD permissions object in a platform organization.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "OrganizationCICDPermissions is associated with a tenant.",
              "title": "OrganizationCICDPermissions is associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1OrganizationCICDPermissionsSpec",
              "description": "The internal specification of the object."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "Capture the permissions policy configuration for repositories."
        }
      },
      "description": "Request to update the CI/CD permissions object of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationCustomPermissionListServiceCreateOrganizationCustomPermissionListBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the organization custom permission list.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Organization custom permission list is associated with a tenant.",
          "title": "Organization custom permission list is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationCustomPermissionListSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "Represents the ingested information about the custom fine grained permissions of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationCustomPermissionListServiceUpdateOrganizationCustomPermissionListBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the organization custom permission list.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Organization custom permission list is associated with a tenant.",
              "title": "Organization custom permission list is associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1OrganizationCustomPermissionListSpec",
              "description": "The internal specification of the object."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "Represents the ingested information about the custom fine grained permissions of a platform organization."
        }
      },
      "description": "Request to update the custom fine grained permissions of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationCustomRoleListServiceCreateOrganizationCustomRoleListBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a custom role list in an organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "OrganizationCustomRoleList is associated with a tenant.",
          "title": "OrganizationCustomRoleList is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationCustomRoleListSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "OrganizationCustomRoleList represents the information about a platform organization's custom roles.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationCustomRoleListServiceUpdateOrganizationCustomRoleListBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of a custom role list in an organization.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "OrganizationCustomRoleList is associated with a tenant.",
              "title": "OrganizationCustomRoleList is associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1OrganizationCustomRoleListSpec",
              "description": "The internal specification of the object."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "OrganizationCustomRoleList represents the information about a platform organization's custom roles."
        }
      },
      "description": "Request to update the custom role list in an organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationHookServiceCreateOrganizationHookBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an organizatio hook.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Organization hooks are associated with a tenant.",
          "title": "Organization hooks are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationHookSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw object ingested from the webhook."
        }
      },
      "description": "OrganizationHook represents the information of hooks created for an organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationHookServiceUpdateOrganizationHookBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of an organizatio hook.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Organization hooks are associated with a tenant.",
              "title": "Organization hooks are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1OrganizationHookSpec",
              "description": "The internal specification of the object."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw object ingested from the webhook."
            }
          },
          "description": "OrganizationHook represents the information of hooks created for an organization."
        }
      },
      "description": "Request used to update an organization hook.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationInstallationListServiceCreateOrganizationInstallationListBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the installation informatoin of a platform organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "OrganizationInstallationList is associated with a tenant.",
          "title": "OrganizationInstallationList is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationInstallationListSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "OrganizationInstallationList represents the ingested information about the installation information of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationInstallationListServiceUpdateOrganizationInstallationListBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the installation informatoin of a platform organization.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "OrganizationInstallationList is associated with a tenant.",
              "title": "OrganizationInstallationList is associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1OrganizationInstallationListSpec",
              "description": "The internal specification of the object."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "OrganizationInstallationList represents the ingested information about the installation information of a platform organization."
        }
      },
      "description": "Request to update the installation information of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationInvitationListServiceCreateOrganizationInvitationListBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an invitation list of a platform organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "OrganizationInvitationList is associated with a tenant.",
          "title": "OrganizationInvitationList is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationInvitationListSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "OrganizationInvitationList represents the ingested information about invitations of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationInvitationListServiceUpdateOrganizationInvitationListBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of an invitation list of a platform organization.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "OrganizationInvitationList is associated with a tenant.",
              "title": "OrganizationInvitationList is associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1OrganizationInvitationListSpec",
              "description": "The internal specification of the object."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "OrganizationInvitationList represents the ingested information about invitations of a platform organization."
        }
      },
      "description": "Request to update invitations of a a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationMemberListServiceCreateOrganizationMemberListBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the member list of an organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "OrganizationMemberList is associated with a tenant.",
          "title": "OrganizationMemberList is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationMemberListSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "OrganizationMemberList represents the ingested information about members of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationMemberListServiceUpdateOrganizationMemberListBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the member list of an organization.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "OrganizationMemberList is associated with a tenant.",
              "title": "OrganizationMemberList is associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1OrganizationMemberListSpec",
              "description": "The internal specification of the object."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "OrganizationMemberList represents the ingested information about members of a platform organization."
        }
      },
      "description": "Request to update members of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationOutsideCollaboratorListServiceCreateOrganizationOutsideCollaboratorListBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the outside collaborators list of a platform organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "OrganizationOutsideCollaboratorList is associated with a tenant.",
          "title": "OrganizationOutsideCollaboratorList is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationOutsideCollaboratorListSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "OrganizationOutsideCollaboratorList represents the ingested information about outside collaborators of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationOutsideCollaboratorListServiceUpdateOrganizationOutsideCollaboratorListBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the outside collaborators list of a platform organization.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "OrganizationOutsideCollaboratorList is associated with a tenant.",
              "title": "OrganizationOutsideCollaboratorList is associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1OrganizationOutsideCollaboratorListSpec",
              "description": "The internal specification of the object."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "OrganizationOutsideCollaboratorList represents the ingested information about outside collaborators of a platform organization."
        }
      },
      "description": "Request to update outside collaborators of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationRunnerGroupConfigServiceCreateOrganizationRunnerGroupConfigBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the runner group configuration of a platform organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "OrganizationRunnerGroupConfig is associated with a tenant.",
          "title": "OrganizationRunnerGroupConfig is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Meta required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationRunnerGroupConfigSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "OrganizationRunnerGroupConfig represents the ingested information about a self-hosted runner group configuration of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationRunnerGroupConfigServiceUpdateOrganizationRunnerGroupConfigBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the runner group configuration of a platform organization.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "OrganizationRunnerGroupConfig is associated with a tenant.",
              "title": "OrganizationRunnerGroupConfig is associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Meta required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1OrganizationRunnerGroupConfigSpec",
              "description": "The internal specification of the object."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "OrganizationRunnerGroupConfig represents the ingested information about a self-hosted runner group configuration of a platform organization."
        }
      },
      "description": "Request to update runner group configuration of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationSecurityManagerListServiceCreateOrganizationSecurityManagerListBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the security managers list of a platform organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "OrganizationSecurityManagerList is associated with a tenant.",
          "title": "OrganizationSecurityManagerList is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationSecurityManagerListSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "OrganizationSecurityManagerList represents the ingested information about security managers of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationSecurityManagerListServiceUpdateOrganizationSecurityManagerListBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the security managers list of a platform organization.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "OrganizationSecurityManagerList is associated with a tenant.",
              "title": "OrganizationSecurityManagerList is associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1OrganizationSecurityManagerListSpec",
              "description": "The internal specification of the object."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "OrganizationSecurityManagerList represents the ingested information about security managers of a platform organization."
        }
      },
      "description": "Request to update security managers of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationWorkflowPermissionsServiceCreateOrganizationWorkflowPermissionsBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the workflow permissions of an organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "OrganizationWorkflowPermissions are associated wtih a tenant.",
          "title": "OrganizationWorkflowPermissions are associated wtih a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationWorkflowPermissionsSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw object ingested for the workflow permissions."
        }
      },
      "description": "OrganizationWorkflowPermissions represents the information of workflow permissions for an organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OrganizationWorkflowPermissionsServiceUpdateOrganizationWorkflowPermissionsBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the workflow permissions of an organization.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "OrganizationWorkflowPermissions are associated wtih a tenant.",
              "title": "OrganizationWorkflowPermissions are associated wtih a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1OrganizationWorkflowPermissionsSpec",
              "description": "The internal specification of the object."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw object ingested for the workflow permissions."
            }
          },
          "description": "OrganizationWorkflowPermissions represents the information of workflow permissions for an organization."
        }
      },
      "description": "Request to update workflow permissions of an organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "OutputChoice": {
      "type": "object",
      "properties": {
        "index": {
          "type": "integer",
          "format": "int32",
          "description": "The index of the choice."
        },
        "message": {
          "$ref": "#/definitions/SpecMessage",
          "description": "The message of the choice."
        },
        "finish_reason": {
          "$ref": "#/definitions/ChoiceFinishReason",
          "description": "The finish reason of the choice."
        }
      }
    },
    "OutputCompletionUsage": {
      "type": "object",
      "properties": {
        "prompt_tokens": {
          "type": "integer",
          "format": "int32",
          "description": "The number ofprompt tokens of the AI request."
        },
        "completion_tokens": {
          "type": "integer",
          "format": "int32",
          "description": "The number of completion tokens of the AI request."
        },
        "total_tokens": {
          "type": "integer",
          "format": "int32",
          "description": "The total number of tokens of the AI request."
        },
        "reasoning_tokens": {
          "type": "integer",
          "format": "int32",
          "description": "The number of reasoning tokens of the AI request."
        },
        "caching_tokens": {
          "type": "integer",
          "format": "int32",
          "description": "The number of caching tokens of the AI request."
        }
      },
      "description": "Completion usage of the AI request."
    },
    "PRCommentConfigServiceCreatePRCommentConfigBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a PR comment configuration.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "PR comment configurations are associated with a tenant.",
          "title": "PR comment configurations are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "spec": {
          "$ref": "#/definitions/v1PRCommentConfigSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Whether the object should be visible in child namespaces or not."
        }
      },
      "required": [
        "meta",
        "spec"
      ]
    },
    "PRCommentConfigServiceUpdatePRCommentConfigBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of a PR comment configuration.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "PR comment configurations are associated with a tenant.",
              "title": "PR comment configurations are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata is generic for any object."
            },
            "spec": {
              "$ref": "#/definitions/v1PRCommentConfigSpec"
            },
            "propagate": {
              "type": "boolean",
              "description": "Whether the object should be visible in child namespaces or not."
            }
          }
        }
      },
      "description": "Request to update a PR comment configuration.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "PackageFirewallConfigException": {
      "type": "object",
      "properties": {
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "Ecosystem of the excepted package (e.g. npm, pypi)."
        },
        "package_name": {
          "type": "string",
          "description": "Name of the excepted package (e.g. \"lodash\" for npm, \"requests\" for pypi).\nDoes not include version or ecosystem prefix."
        },
        "version_ranges": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/PackageFirewallConfigVersionRange"
          },
          "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."
        },
        "exact_versions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional list of exact version strings to except."
        }
      },
      "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.",
      "required": [
        "ecosystem",
        "package_name"
      ]
    },
    "PackageFirewallConfigFirewallNotificationRule": {
      "type": "object",
      "properties": {
        "reasons": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1PackageFirewallReason"
          },
          "description": "Firewall reasons that trigger this rule. Empty matches all reasons."
        },
        "on_actions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1PackageFirewallAction"
          },
          "description": "Firewall actions that trigger this rule. Empty matches all actions."
        },
        "notification_target_uuids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "UUIDs of the NotificationTarget(s) to send to."
        },
        "name": {
          "type": "string",
          "description": "Optional name for the notification rule."
        }
      },
      "description": "FirewallNotificationRule maps firewall block/warn events to NotificationTarget(s)."
    },
    "PackageFirewallConfigVersionRange": {
      "type": "object",
      "properties": {
        "start": {
          "type": "string",
          "description": "Inclusive lower bound (e.g. \"1.0.0\"). Omit to match from the beginning."
        },
        "end": {
          "type": "string",
          "description": "Exclusive upper bound (e.g. \"2.0.0\"). Omit to match to the end."
        }
      },
      "description": "VersionRange defines an inclusive lower bound and an exclusive upper bound for a version range.\nEither boundary may be omitted."
    },
    "PackageFirewallLogFilteredVersion": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string",
          "description": "Version string that was suppressed from the metadata response."
        },
        "reason": {
          "$ref": "#/definitions/v1PackageFirewallReason",
          "description": "Reason this version was suppressed."
        },
        "malware_uuid": {
          "type": "string",
          "description": "UUID of detected malware (populated when reason = MALWARE_DETECTED)."
        },
        "package_age_hours": {
          "type": "integer",
          "format": "int32",
          "description": "Age of package in hours at suppression time (populated when reason = MIN_AGE_NOT_MET)."
        }
      },
      "description": "FilteredVersion records a single package version suppressed from a metadata response\nduring a package curation event."
    },
    "PackageFirewallLogServiceCreatePackageFirewallLogBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the package firewall log.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespace of the package firewall log.",
          "title": "Namespace of the package firewall log."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageFirewallLogSpec",
          "description": "Resource kind specific data."
        }
      },
      "description": "PackageFirewallLog represents a package firewall audit event recording the\naction taken and the reason that triggered it.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "PackageLicenseInfoLicenseInfoMapping": {
      "type": "object",
      "properties": {
        "source": {
          "type": "string",
          "description": "Source of the license mapping information."
        },
        "confidence": {
          "type": "number",
          "format": "float",
          "description": "Confidence level of the mapping."
        },
        "notes": {
          "type": "string",
          "description": "Additional notes about the mapping."
        },
        "mapping_info": {
          "$ref": "#/definitions/v1LicenseMappingInfo",
          "description": "Other info."
        }
      },
      "description": "Additional context about the raw license description."
    },
    "PackageLicenseOverrideCopyrightOverride": {
      "type": "object",
      "properties": {
        "copyright_text": {
          "type": "string",
          "description": "The copyright text override (as edited by the user).\nThis is the full copyright text that will be used instead of the original."
        },
        "file_locations": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LicenseFileLocation"
          },
          "description": "The file locations where the copyright was found in the source code."
        }
      },
      "description": "CopyrightOverride represents an override for a single copyright.\nThis is used when the user edits the copyright text or adds a new copyright.",
      "required": [
        "copyright_text"
      ]
    },
    "PackageLicenseOverrideLicenseOverride": {
      "type": "object",
      "properties": {
        "license_text": {
          "type": "string",
          "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."
        },
        "file_locations": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LicenseFileLocation"
          },
          "description": "The file locations where the license was found in the source code.\nThis helps identify where the original license was located."
        },
        "spdx_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The SPDX IDs of the license (e.g., [\"MIT\", \"Apache-2.0\"])."
        },
        "spdx_expr": {
          "type": "string",
          "description": "The SPDX expression of the license (e.g., \"MIT OR Apache-2.0\")."
        },
        "url": {
          "type": "string",
          "description": "The URL link to the license details (if available)."
        },
        "copyrights": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The copyrights within the license text."
        },
        "type": {
          "type": "string",
          "description": "License classification (based on licenseclassifier by Google).\nExamples: \"notice\", \"reciprocal\", \"permissive\", \"restricted\", etc."
        },
        "source": {
          "type": "string",
          "description": "Source of the original license (e.g., \"code\", \"package_manager\", \"declared\").\nThis helps identify which original license this override corresponds to."
        },
        "original_hash": {
          "type": "string",
          "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)."
        }
      },
      "description": "LicenseOverride represents an override for a single license.\nThis is used when the user edits the license text or adds a new license.",
      "required": [
        "license_text"
      ]
    },
    "PackageLicenseOverrideNoticeOverride": {
      "type": "object",
      "properties": {
        "notices_text": {
          "type": "string",
          "description": "The notices text override (as edited by the user).\nThis is the full notice text that will be used instead of the original."
        },
        "file_locations": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LicenseFileLocation"
          },
          "description": "The file locations where the notice was found in the source code."
        }
      },
      "description": "NoticeOverride represents an override for a single notice.\nThis is used when the user edits the notice text or adds a new notice.",
      "required": [
        "notices_text"
      ]
    },
    "PackageLicenseOverrideServiceCreatePackageLicenseOverrideBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the package license override.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant metadata.",
          "title": "Tenant metadata."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageLicenseOverrideSpec",
          "description": "The specification of the package license override."
        },
        "propagate": {
          "type": "boolean",
          "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)."
        }
      },
      "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.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "PackageLicenseOverrideServiceUpdatePackageLicenseOverrideBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the package license override.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant metadata.",
              "title": "Tenant metadata."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1PackageLicenseOverrideSpec",
              "description": "The specification of the package license override."
            },
            "propagate": {
              "type": "boolean",
              "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)."
            }
          },
          "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."
        }
      },
      "description": "Request to update a package license override.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "PackageLicenseQueryAppliedOverride": {
      "type": "object",
      "properties": {
        "namespace": {
          "type": "string",
          "description": "Namespace where the contributing override resides."
        },
        "override_uuid": {
          "type": "string",
          "description": "UUID of the contributing PackageLicenseOverride in that namespace."
        }
      },
      "description": "All overrides that contributed to the final result, ordered root -\u003e target."
    },
    "PackageLicenseQueryMergedCopyrightEntry": {
      "type": "object",
      "properties": {
        "identifier": {
          "type": "string",
          "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
        },
        "selected": {
          "type": "boolean",
          "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
        },
        "is_edited": {
          "type": "boolean",
          "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
        },
        "copyright_text": {
          "type": "string",
          "description": "The copyright text (from override if edited, otherwise from original).\nThis is the actual copyright text that will be used.",
          "readOnly": true
        },
        "file_locations": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LicenseFileLocation"
          },
          "description": "File locations where the copyright was found (from override if edited, otherwise from original).",
          "readOnly": true
        },
        "resolved_namespace": {
          "type": "string",
          "description": "Origin of the effective value for this entry.",
          "readOnly": true
        },
        "resolved_override_uuid": {
          "type": "string",
          "readOnly": true
        }
      },
      "description": "MergedCopyrightEntry represents a single copyright with override and selection state."
    },
    "PackageLicenseQueryMergedLicenseEntry": {
      "type": "object",
      "properties": {
        "identifier": {
          "type": "string",
          "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
        },
        "selected": {
          "type": "boolean",
          "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
        },
        "is_edited": {
          "type": "boolean",
          "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
        },
        "source": {
          "type": "string",
          "description": "Source of the original license (e.g., \"code\", \"package_manager\", \"declared\").\nHelps identify which category the license belongs to.",
          "readOnly": true
        },
        "license_text": {
          "type": "string",
          "description": "Effective license text resolved after applying propagation across the namespace chain.",
          "readOnly": true
        },
        "resolved_namespace": {
          "type": "string",
          "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
        },
        "resolved_override_uuid": {
          "type": "string",
          "readOnly": true
        },
        "spdx_expr": {
          "type": "string",
          "description": "SPDX expression for the license.",
          "readOnly": true
        },
        "file_locations": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LicenseFileLocation"
          },
          "description": "File locations where the license was found (from override if edited, otherwise from original).",
          "readOnly": true
        }
      },
      "description": "MergedLicenseEntry represents a single license with override and selection state."
    },
    "PackageLicenseQueryMergedNoticeEntry": {
      "type": "object",
      "properties": {
        "identifier": {
          "type": "string",
          "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
        },
        "selected": {
          "type": "boolean",
          "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
        },
        "is_edited": {
          "type": "boolean",
          "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
        },
        "notices_text": {
          "type": "string",
          "description": "The notice text (from override if edited, otherwise from original).\nThis is the actual notice text that will be used.",
          "readOnly": true
        },
        "file_locations": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LicenseFileLocation"
          },
          "description": "File locations where the notice was found (from override if edited, otherwise from original).",
          "readOnly": true
        },
        "resolved_namespace": {
          "type": "string",
          "description": "Origin of the effective value for this entry.",
          "readOnly": true
        },
        "resolved_override_uuid": {
          "type": "string",
          "readOnly": true
        }
      },
      "description": "MergedNoticeEntry represents a single notice with override and selection state."
    },
    "PackageLicenseQueryServiceCreatePackageLicenseQueryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The uuid of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "title": "tenant metadata"
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "title": "metadata"
        },
        "spec": {
          "$ref": "#/definitions/v1PackageLicenseQuerySpec"
        }
      },
      "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."
    },
    "PackageLicenseServiceCreatePackageLicenseBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the package license.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The tenant metadata of the package license.",
          "title": "The tenant metadata of the package license."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "The metadata of the package license."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageLicenseSpec",
          "description": "The specification of the package license."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Contexts keep objects from different scans separated."
        }
      },
      "required": [
        "tenant_meta",
        "meta",
        "spec",
        "context"
      ]
    },
    "PackageLicenseServiceUpdatePackageLicenseBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the package license.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "The tenant metadata of the package license.",
              "title": "The tenant metadata of the package license."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "The metadata of the package license."
            },
            "spec": {
              "$ref": "#/definitions/v1PackageLicenseSpec",
              "description": "The specification of the package license."
            },
            "context": {
              "$ref": "#/definitions/v1Context",
              "description": "Contexts keep objects from different scans separated."
            }
          }
        }
      },
      "description": "Request to update a package license.",
      "required": [
        "tenant_meta",
        "meta",
        "spec",
        "context"
      ]
    },
    "PackageManagerAWSAuthProvider": {
      "type": "object",
      "properties": {
        "domain": {
          "type": "string",
          "description": "domain name of the AWS Code Artifact repository."
        },
        "domain_owner": {
          "type": "string",
          "description": "domain_owner of the AWS Code Artifact repository."
        },
        "repository": {
          "type": "string",
          "description": "repositiry of the AWS Code Artifact repository."
        },
        "target_role_arn": {
          "type": "string",
          "description": "target_role_arn is the role that we need to assume in AWS."
        },
        "allowed_audience": {
          "type": "string",
          "description": "allowed_audience is the allowed audience value to retrieve the role."
        },
        "region": {
          "type": "string",
          "description": "region is the region of the AWS Code Artifact repository."
        }
      },
      "description": "AWSAuthProvider represents a configuration for the authentication with the\nAWS Code Artifact repository.",
      "required": [
        "domain",
        "domain_owner",
        "repository",
        "target_role_arn",
        "allowed_audience",
        "region"
      ]
    },
    "PackageManagerAuthProvider": {
      "type": "object",
      "properties": {
        "package_manager_type": {
          "$ref": "#/definitions/PackageManagerAuthProviderPackageManagerType"
        },
        "aws": {
          "$ref": "#/definitions/PackageManagerAWSAuthProvider"
        },
        "gar": {
          "$ref": "#/definitions/PackageManagerGARAuthProvider"
        }
      },
      "required": [
        "package_manager_type"
      ]
    },
    "PackageManagerAuthProviderPackageManagerType": {
      "type": "string",
      "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"
      ],
      "default": "PACKAGE_MANAGER_TYPE_UNSPECIFIED"
    },
    "PackageManagerGARAuthProvider": {
      "type": "object",
      "properties": {
        "project_id": {
          "type": "string",
          "description": "project_id is the GCP project ID that hosts the Artifact Registry repository."
        },
        "location": {
          "type": "string",
          "description": "location is the GCP region or multi-region where the repository is hosted\n(e.g., \"us-central1\", \"europe-west1\", \"us\")."
        },
        "repository": {
          "type": "string",
          "description": "repository is the name of the Artifact Registry repository."
        },
        "service_account_key": {
          "type": "string",
          "description": "service_account_key is the JSON key for a GCP service account with\nartifactregistry.reader permissions. Encrypted at rest."
        }
      },
      "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.",
      "required": [
        "project_id",
        "location",
        "repository",
        "service_account_key"
      ]
    },
    "PackageManagerServiceCreatePackageManagerBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the package manager.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Git repositories are associated tenant.",
          "title": "Git repositories are associated tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageManagerSpec",
          "description": "Specification of the package manager."
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagate indicates that the object should be visible in child namespaces."
        }
      },
      "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.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "PackageManagerServiceUpdatePackageManagerBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the package manager.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Git repositories are associated tenant.",
              "title": "Git repositories are associated tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata is generic for any object."
            },
            "spec": {
              "$ref": "#/definitions/v1PackageManagerSpec",
              "description": "Specification of the package manager."
            },
            "propagate": {
              "type": "boolean",
              "description": "Propagate indicates that the object should be visible in child namespaces."
            }
          },
          "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."
        }
      },
      "description": "Request to update the package manager.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "PackageServiceCreatePackageBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "UUID is a universally unique identifier for a package.",
          "readOnly": true,
          "x-endor-name": "Package UUID"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Packages are associated with a tenant.",
          "title": "Packages are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageSpec"
        }
      },
      "description": "Package represents a package of a project.\n\nFor Golang:\nEvery golang package of a repository will be an package. For instance\ngithub.com/yarpc/yarpc-go/pkg/encoding is a package of the project github.com/yarpc/yarpc-go.\n\nFor Java:\nEvery artifact of a Java repository will be a package. For instance\ngithub.com/apache/logging-log4j2/log4j-api is a package of the project github.com/apache/logging-log4j2.\n\nThe uuid of the parent project.",
      "required": [
        "meta"
      ]
    },
    "PackageServiceUpdatePackageBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "UUID is a universally unique identifier for a package.",
              "readOnly": true,
              "x-endor-name": "Package UUID"
            },
            "tenant_meta": {
              "type": "object",
              "description": "Packages are associated with a tenant.",
              "title": "Packages are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1PackageSpec"
            }
          },
          "description": "Package represents a package of a project.\n\nFor Golang:\nEvery golang package of a repository will be an package. For instance\ngithub.com/yarpc/yarpc-go/pkg/encoding is a package of the project github.com/yarpc/yarpc-go.\n\nFor Java:\nEvery artifact of a Java repository will be a package. For instance\ngithub.com/apache/logging-log4j2/log4j-api is a package of the project github.com/apache/logging-log4j2.\n\nThe uuid of the parent project."
        }
      },
      "description": "Request to update a package.",
      "required": [
        "meta"
      ]
    },
    "PackageVersionDependencyCargoDependencySpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of dependency."
        },
        "source": {
          "type": "string",
          "description": "The source repository query string to use, if any."
        },
        "req": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/CargoDependencySpecCargoVersionReq"
          },
          "description": "The required version, specified as a list of version requirements.\nthat all have to be satisfied."
        },
        "kind": {
          "$ref": "#/definitions/CargoDependencySpecDependencyKind",
          "description": "The kind of dependency."
        },
        "optional": {
          "type": "boolean",
          "description": "Whether this dependency is required or optional."
        },
        "uses_default_features": {
          "type": "boolean",
          "description": "Whether the default features in this dependency are used or not."
        },
        "features": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of features enabled for this dependency."
        },
        "named": {
          "$ref": "#/definitions/CargoDependencySpecNamedPlatform"
        },
        "cfg": {
          "$ref": "#/definitions/CargoDependencySpecCfg"
        },
        "rename": {
          "type": "string",
          "description": "If the dependency is renamed, this is the new name for the dependency."
        },
        "registry": {
          "type": "string",
          "description": "/ The URL of the index of the registry where this dependency is from.\n/ If not specified, the dependency is from crates.io."
        },
        "path": {
          "type": "string",
          "description": "/ The file system path for a local path dependency."
        },
        "targets": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Target"
          },
          "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."
        },
        "version_constraints": {
          "type": "string",
          "description": "Package version number rules.",
          "x-endor-name": "Cargo required version constraints"
        }
      },
      "description": "CargoDependencySpec specifies a dependency for\ntype defined in the Rust cargo_metadata crate.",
      "required": [
        "name",
        "kind",
        "optional",
        "uses_default_features",
        "version_constraints"
      ]
    },
    "PackageVersionDependencyCocoapodDependencySpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "title": "The name of the package.\nExample: Alamofire",
          "x-endor-name": "cocoapod package name"
        },
        "version_constraints": {
          "type": "string",
          "title": "The Cocoapod version that is defined in the\nPodfile. Example: (~\u003e 1.2)",
          "x-endor-name": "cocoapod Package version constraint"
        },
        "scope": {
          "$ref": "#/definitions/v1DependencyScope",
          "description": "The scope of the nuget dependency.",
          "x-endor-name": "cocoapod package Scope"
        },
        "targets": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Target"
          },
          "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."
        }
      },
      "description": "CocoapodDependencySpec specifies storing a dependency for\ncocoapod packages.",
      "required": [
        "name"
      ]
    },
    "PackageVersionDependencyConanDependencySpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package name, for example, zlib.",
          "x-endor-name": "Conan package name"
        },
        "version_constraints": {
          "type": "string",
          "description": "Conan version constraints, for example, \u003e=1.2 \u003c2.0.",
          "x-endor-name": "Conan package version constraint"
        },
        "scope": {
          "$ref": "#/definitions/v1DependencyScope",
          "description": "Dependency scope.",
          "x-endor-name": "Conan package scope"
        },
        "targets": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Target"
          },
          "description": "Targets that this dependency applies to.\nIf there is no target then this dependency applies to all targets."
        }
      },
      "description": "ConanDependencySpec specifies storing an unresolved dependency for Conan packages.",
      "required": [
        "name"
      ]
    },
    "PackageVersionDependencyGemDependencySpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "title": "The name of the Ruby dependency (name of a gem).\nExample: nokogiri",
          "x-endor-name": "Rubygem Package URL"
        },
        "version_constraints": {
          "type": "string",
          "title": "Package version number rules.\nExample-1: ~= 1.2\nExample-2: \u003e= 4.0.0, \u003c 6.0.0\nExample-3: == 5.4.7",
          "x-endor-name": "Rubygem required version constraints"
        },
        "scope_type": {
          "$ref": "#/definitions/PackageVersionDependencyGemDependencySpecScope",
          "x-endor-name": "Rubygem Dependency Scope"
        },
        "targets": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Target"
          },
          "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."
        }
      },
      "description": "GemDependencySpec specifies storing a dependency for Ruby based\nrepositories or packages.",
      "required": [
        "name",
        "version_constraints"
      ]
    },
    "PackageVersionDependencyGemDependencySpecScope": {
      "type": "string",
      "enum": [
        "SCOPE_UNSPECIFIED",
        "SCOPE_NORMAL",
        "SCOPE_DEVELOPMENT"
      ],
      "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."
    },
    "PackageVersionDependencyGitHubActionDependencySpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "title": "The name of the GitHub action\nExample: actions/checkout",
          "x-endor-name": "GitHub action Package name"
        },
        "version": {
          "type": "string",
          "title": "The version of the GitHub action\nExample: v1, v2, main",
          "x-endor-name": "GitHub Action Package Version"
        },
        "scope": {
          "$ref": "#/definitions/PackageVersionDependencyGitHubActionDependencySpecScope",
          "description": "The scope of the GitHub action dependency.",
          "x-endor-name": "GitHub Action Package Scope"
        },
        "action_type": {
          "$ref": "#/definitions/GitHubActionDependencySpecGHActionType"
        }
      },
      "description": "GitHubActionDependencySpec specifies storing a dependency for\nGitHub action packages.",
      "required": [
        "name"
      ]
    },
    "PackageVersionDependencyGitHubActionDependencySpecScope": {
      "type": "string",
      "enum": [
        "SCOPE_UNSPECIFIED",
        "SCOPE_NORMAL",
        "SCOPE_TEST"
      ],
      "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."
    },
    "PackageVersionDependencyGoDependencySpec": {
      "type": "object",
      "properties": {
        "package": {
          "type": "string",
          "title": "The package url of the go dependency.\nExample: go://github.com/hashicorp/golang-lru/simplelru@v0.5.4",
          "x-endor-name": "Go Package URL"
        },
        "ref": {
          "type": "string",
          "description": "The ref of the dependency package version.",
          "x-endor-name": "Go Package Ref"
        },
        "scope_type": {
          "$ref": "#/definitions/PackageVersionDependencyGoDependencySpecScope",
          "description": "The Golang dependency scope.",
          "x-endor-name": "Golang Dependency Scope Type"
        },
        "targets": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Target"
          },
          "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."
        }
      },
      "description": "GoDependencySpec specifies a dependency for\nGo packages or repositories.",
      "required": [
        "package",
        "ref"
      ]
    },
    "PackageVersionDependencyGoDependencySpecScope": {
      "type": "string",
      "enum": [
        "SCOPE_UNSPECIFIED",
        "SCOPE_NORMAL",
        "SCOPE_TEST"
      ],
      "default": "SCOPE_UNSPECIFIED"
    },
    "PackageVersionDependencyHuggingFaceDependencySpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "title": "The name of the model or package.\nExample: meta-llama/Meta-Llama-3-8B-Instruct",
          "x-endor-name": "HuggingFace package name"
        },
        "version": {
          "type": "string",
          "title": "The version of the model or package.\nExample: main",
          "x-endor-name": "HuggingFace Package Version"
        }
      },
      "description": "HuggingFaceDependencySpec specifies storing a dependency\nfor hugging face models.",
      "required": [
        "name"
      ]
    },
    "PackageVersionDependencyMavenDependencySpec": {
      "type": "object",
      "properties": {
        "group_id": {
          "type": "string",
          "description": "A unique identifier for an organization or project in Maven.",
          "x-endor-name": "Maven GroupID"
        },
        "artifact_id": {
          "type": "string",
          "description": "The name of a Maven project.",
          "x-endor-name": "Maven ArtifactId"
        },
        "version_constraints": {
          "type": "string",
          "description": "Maven version number rules.",
          "x-endor-name": "Maven Dependency Constraints"
        },
        "exclusions": {
          "type": "string",
          "description": "Maven dependencies of a package version explicitly excluded.",
          "x-endor-name": "Maven Dependency Exclusions"
        },
        "scope": {
          "type": "string",
          "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.",
          "x-endor-name": "Maven Dependency Scope"
        },
        "scope_type": {
          "$ref": "#/definitions/PackageVersionDependencyMavenDependencySpecScope",
          "description": "The Maven dependency scope which can help to limit the\ntransitivity of the dependencies and determine build tasks and lifecycle\na dependency applies to.",
          "x-endor-name": "Maven Dependency Scope Type"
        },
        "optional": {
          "type": "boolean",
          "description": "Whether a Maven dependency is needed or not for a project to work\ncorrectly.",
          "x-endor-name": "Maven Dependency Optional"
        },
        "type": {
          "type": "string",
          "description": "The Maven dependency type. Some examples are \"jar\", \"ear\", and\n\"test-jar\".",
          "x-endor-name": "Maven Dependency Type"
        },
        "classifier": {
          "type": "string",
          "description": "Differentiates Maven artifacts that were built from the same\nPOM for different contexts. Some examples are \"tests\", \"client\", and\n\"sources\".",
          "x-endor-name": "Maven Dependency Classifier"
        },
        "targets": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Target"
          },
          "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."
        }
      },
      "description": "MavenDependencySpec specifies a dependency for\nMaven repositories or packages.",
      "required": [
        "group_id",
        "artifact_id",
        "version_constraints"
      ]
    },
    "PackageVersionDependencyMavenDependencySpecScope": {
      "type": "string",
      "enum": [
        "SCOPE_UNSPECIFIED",
        "SCOPE_COMPILE",
        "SCOPE_PROVIDED",
        "SCOPE_RUNTIME",
        "SCOPE_TEST",
        "SCOPE_SYSTEM",
        "SCOPE_CUSTOM",
        "SCOPE_VENDORED_CODE",
        "SCOPE_IMPORT"
      ],
      "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."
    },
    "PackageVersionDependencyNpmDependencySpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "title": "name specifies the package name of the npm package.\nExample: react",
          "x-endor-name": "Npm Package name"
        },
        "version": {
          "type": "string",
          "title": "version specifies the version of the npm dependency if concrete version\nis defined in package.json. Example: 1.0.0",
          "x-endor-name": "Npm Package Version"
        },
        "version_constraint": {
          "type": "string",
          "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",
          "x-endor-name": "npm Package version constraint"
        },
        "scope": {
          "$ref": "#/definitions/PackageVersionDependencyNpmDependencySpecScope",
          "description": "The scope of the npm dependency.",
          "x-endor-name": "Npm Package Scope"
        },
        "targets": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Target"
          },
          "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."
        }
      },
      "description": "NpmDependencySpec specifies storing a dependency for npm\nbased repositories or packages.",
      "required": [
        "name"
      ]
    },
    "PackageVersionDependencyNpmDependencySpecScope": {
      "type": "string",
      "enum": [
        "SCOPE_UNSPECIFIED",
        "SCOPE_DEPENDENCY",
        "SCOPE_DEV_DEPENDENCY",
        "SCOPE_OPTIONAL_DEPENDENCY",
        "SCOPE_PEER_DEPENDENCY"
      ],
      "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."
    },
    "PackageVersionDependencyNugetDependencySpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "title": "The package URL of the NuGet package.\nExample: nuget://System.Text.JSON@1.0.0",
          "x-endor-name": "nuget Package URL"
        },
        "version_constraints": {
          "type": "string",
          "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]",
          "x-endor-name": "nuget Package version constraint"
        },
        "scope": {
          "$ref": "#/definitions/v1DependencyScope",
          "description": "The scope of the NuGet dependency.",
          "x-endor-name": "nuget Package Scope"
        },
        "targets": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Target"
          },
          "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."
        }
      },
      "description": "NugetDependencySpec specifies storing a dependency for\nNuGet based repositories or packages.",
      "required": [
        "name"
      ]
    },
    "PackageVersionDependencyPackagistDependencySpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "title": "The name of the PHP package dependency.\nExample: monolog/monolog",
          "x-endor-name": "PHP Package name"
        },
        "version_constraints": {
          "type": "string",
          "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",
          "x-endor-name": "PHP package required version constraints"
        },
        "scope_type": {
          "$ref": "#/definitions/PackageVersionDependencyPackagistDependencySpecScope",
          "x-endor-name": "PHP Dependency Scope"
        },
        "targets": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Target"
          },
          "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."
        }
      },
      "description": "PackagistDependencySpec specifies storing a dependency for php\nbased repositories or packages.",
      "required": [
        "name",
        "version_constraints"
      ]
    },
    "PackageVersionDependencyPackagistDependencySpecScope": {
      "type": "string",
      "enum": [
        "SCOPE_UNSPECIFIED",
        "SCOPE_NORMAL",
        "SCOPE_DEVELOPMENT"
      ],
      "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."
    },
    "PackageVersionDependencyPypiDependencySpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "title": "The package name of the python dependency.\nExample: multidict",
          "x-endor-name": "Python Package URL"
        },
        "version_constraints": {
          "type": "string",
          "title": "Package version number rules.\nExample-1: ~= 3.2\nExample-2: \u003e= 2.0.0, \u003c 3.0.0\nExample-3: == 4.7.0",
          "x-endor-name": "Python required version constraints"
        },
        "scope_type": {
          "$ref": "#/definitions/PackageVersionDependencyPypiDependencySpecScope",
          "x-endor-name": "Python Dependency Scope"
        },
        "package_manager_type": {
          "$ref": "#/definitions/PackageVersionDependencyPypiDependencySpecPackageManagerType",
          "description": "The type of the package manager that can understand version_constraints.",
          "x-endor-name": "Python package manager type"
        },
        "targets": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Target"
          },
          "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."
        }
      },
      "description": "PypiDependencySpec specifies a dependency for\nPython based repositories or packages.",
      "required": [
        "name",
        "version_constraints"
      ]
    },
    "PackageVersionDependencyPypiDependencySpecPackageManagerType": {
      "type": "string",
      "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"
      ],
      "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"
    },
    "PackageVersionDependencyPypiDependencySpecScope": {
      "type": "string",
      "enum": [
        "SCOPE_UNSPECIFIED",
        "SCOPE_NORMAL",
        "SCOPE_OPTIONAL"
      ],
      "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."
    },
    "PackageVersionDependencySwiftDependencySpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "title": "The name of the Swift package.\nExample: github.com/Alamofire/Alamofire",
          "minLength": 1,
          "x-endor-name": "Swift package name"
        },
        "exact": {
          "type": "string",
          "minLength": 1,
          "x-endor-name": "Swift package exact version"
        },
        "revision": {
          "type": "string",
          "minLength": 1,
          "x-endor-name": "Swift package revision"
        },
        "branch": {
          "type": "string",
          "minLength": 1,
          "x-endor-name": "Swift package branch"
        },
        "range": {
          "$ref": "#/definitions/PackageVersionDependencySwiftDependencySpecRange",
          "x-endor-name": "Swift package version range"
        },
        "scope": {
          "$ref": "#/definitions/v1DependencyScope",
          "description": "The scope of the Swift dependency.",
          "x-endor-name": "Swift dependency scope"
        },
        "targets": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Target"
          },
          "description": "The targets to which this dependency applies."
        }
      },
      "description": "SwiftDependencySpec specifies storing a dependency for Swift packages.",
      "required": [
        "name",
        "exact",
        "revision",
        "branch",
        "range"
      ]
    },
    "PackageVersionDependencySwiftDependencySpecRange": {
      "type": "object",
      "properties": {
        "lower_bound": {
          "type": "string",
          "minLength": 1,
          "x-endor-name": "Swift package version range lower bound"
        },
        "upper_bound": {
          "type": "string",
          "minLength": 1,
          "x-endor-name": "Swift package version range upper bound"
        }
      },
      "description": "Range represents a version range.",
      "required": [
        "lower_bound",
        "upper_bound"
      ]
    },
    "PackageVersionDependencyUnresolvedDependencySpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package name, for example, Alamofire.",
          "x-endor-name": "Package name"
        },
        "version_constraints": {
          "type": "string",
          "description": "Version constraints, for example, ~\u003e 1.2.",
          "x-endor-name": "Package version constraint"
        },
        "scope": {
          "$ref": "#/definitions/v1DependencyScope",
          "description": "Dependency scope.",
          "x-endor-name": "Package scope"
        },
        "targets": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Target"
          },
          "description": "Targets that this dependency applies to.\nIf there is no target then this dependency applies to all targets."
        }
      },
      "description": "Unresolved dependency data.",
      "required": [
        "name"
      ]
    },
    "PackageVersionLicenseQueryServiceCreatePackageVersionLicenseQueryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the query and makes the object compatible with the system.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Package version license is associated with a tenant.",
          "title": "Package version license is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageVersionLicenseQuerySpec"
        }
      },
      "required": [
        "meta",
        "spec"
      ]
    },
    "PackageVersionMetadataQueryServiceCreatePackageVersionMetadataQueryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the query and makes the object compatible with the system.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Queries are supported only in the open source ecosystem.",
          "title": "Queries are supported only in the open source ecosystem."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageVersionMetadataQuerySpec"
        }
      },
      "description": "PackageVersionMetadataQuery identifies the origin and metadata\nof a package or package version from the OSS ecosystems.\nThe query accepts as input the name of the package with an optional\nversion and identifies whether the package can be found in the open\nsource ecosystem, the associated versions and release dates and\nsource code references.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "PackageVersionResolutionErrors": {
      "type": "object",
      "properties": {
        "unresolved": {
          "$ref": "#/definitions/v1ResolutionStatus",
          "description": "unresolved is for unresolved dependencies."
        },
        "resolved": {
          "$ref": "#/definitions/v1ResolutionStatus",
          "description": "resolved is for resolved dependencies."
        },
        "call_graph": {
          "$ref": "#/definitions/v1ResolutionStatus",
          "description": "call_graph is for call graphs."
        }
      },
      "description": "ResolutionErrors captures the error results."
    },
    "PackageVersionServiceCreatePackageVersionBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the package version resource.",
          "readOnly": true,
          "x-endor-name": "Package Version UUID"
        },
        "tenant_meta": {
          "type": "object",
          "description": "PackageVersions are associated with a tenant.",
          "title": "PackageVersions are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageVersionSpec"
        },
        "processing_status": {
          "$ref": "#/definitions/v1ProcessingStatus"
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "PackageVersion represents a version of a package.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "PackageVersionServiceUpdatePackageVersionBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the package version resource.",
              "readOnly": true,
              "x-endor-name": "Package Version UUID"
            },
            "tenant_meta": {
              "type": "object",
              "description": "PackageVersions are associated with a tenant.",
              "title": "PackageVersions are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1PackageVersionSpec"
            },
            "processing_status": {
              "$ref": "#/definitions/v1ProcessingStatus"
            },
            "context": {
              "$ref": "#/definitions/v1Context"
            }
          },
          "description": "PackageVersion represents a version of a package."
        }
      },
      "description": "The request to update a package version.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "PackageVersionSourceCodeReference": {
      "type": "object",
      "properties": {
        "version": {
          "$ref": "#/definitions/v1Version",
          "description": "The ref of the source code repository from which this package version\nwas created."
        },
        "http_clone_url": {
          "type": "string",
          "description": "The URL of the source code repository."
        },
        "platform_source": {
          "$ref": "#/definitions/v1PlatformSource",
          "description": "The source control platform on which the source was discovered."
        }
      }
    },
    "PackageVersionSourceMetadataServiceCreatePackageVersionSourceMetadataBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the package version source metadata.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "PackageVersionSourceMetadata are associated with a tenant.",
          "title": "PackageVersionSourceMetadata are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects.\nmeta.name is the package version name.\nFor example, for the Java ecosystem, it is mvn://com.google.guava:guava@30.1-jre.\nParent kind is empty for PackageVersionSourceMetadata."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageVersionSourceMetadataSpec"
        }
      },
      "description": "PackageVersionSourceMetadata contains source code information for a PackageVersion.\nFor example, for the Java ecosystem this contains details such as checksum values of the artifact,\nlist of class files, and their corresponding checksums and import statements found.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "PackageVersionSourceMetadataServiceUpdatePackageVersionSourceMetadataBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the package version source metadata.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "PackageVersionSourceMetadata are associated with a tenant.",
              "title": "PackageVersionSourceMetadata are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects.\nmeta.name is the package version name.\nFor example, for the Java ecosystem, it is mvn://com.google.guava:guava@30.1-jre.\nParent kind is empty for PackageVersionSourceMetadata."
            },
            "spec": {
              "$ref": "#/definitions/v1PackageVersionSourceMetadataSpec"
            }
          },
          "description": "PackageVersionSourceMetadata contains source code information for a PackageVersion.\nFor example, for the Java ecosystem this contains details such as checksum values of the artifact,\nlist of class files, and their corresponding checksums and import statements found."
        }
      },
      "description": "The request to update package version source metadata.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "PackageVersionsMetadataServiceCreatePackageVersionsMetadataBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the package version metadata.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "PackageVersions are associated with a tenant.",
          "title": "PackageVersions are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageVersionMetadataSpec"
        }
      },
      "description": "PackageVersionMetadata represents a metadata for a package version.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "PackagistSpecAuthKind": {
      "type": "string",
      "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"
      ],
      "default": "AUTH_KIND_UNSPECIFIED",
      "description": "Auth methods for Packagist - reference\nhttps://getcomposer.org/doc/articles/authentication-for-private-packages.md."
    },
    "PatchFixType": {
      "type": "string",
      "enum": [
        "FIX_TYPE_UNSPECIFIED",
        "FIX_TYPE_BUILD",
        "FIX_TYPE_TEST",
        "FIX_TYPE_VULN"
      ],
      "default": "FIX_TYPE_UNSPECIFIED",
      "description": " - FIX_TYPE_UNSPECIFIED: Fix type is undefined.\n - FIX_TYPE_BUILD: Signifies that this patch was used to fix the build.\n - FIX_TYPE_TEST: Signifies that this patch was used to fix a test.\n - FIX_TYPE_VULN: Signifies that this patch was used to fix vulnerabilities."
    },
    "PathNode": {
      "type": "object",
      "properties": {
        "function_ref": {
          "$ref": "#/definitions/NodeFunctionRef"
        },
        "package_version": {
          "type": "string"
        },
        "internal": {
          "type": "boolean"
        }
      },
      "description": "Information about one function node."
    },
    "PermissionsMethods": {
      "type": "object",
      "properties": {
        "methods": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1Method"
          }
        }
      },
      "description": "An array of allowed methods."
    },
    "PlatformAccountServiceCreatePlatformAccountBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a platform account.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Platform accounts are associated with a tenant.\nPublic accounts will be under a public tenant.",
          "title": "Platform accounts are associated with a tenant.\nPublic accounts will be under a public tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PlatformAccountSpec",
          "description": "The details of the platform account."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "PlatformAccount represents an account of a user to third-party site like GitHub/Gitlab or some package platform.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "PlatformAccountServiceUpdatePlatformAccountBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of a platform account.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Platform accounts are associated with a tenant.\nPublic accounts will be under a public tenant.",
              "title": "Platform accounts are associated with a tenant.\nPublic accounts will be under a public tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1PlatformAccountSpec",
              "description": "The details of the platform account."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "PlatformAccount represents an account of a user to third-party site like GitHub/Gitlab or some package platform."
        }
      },
      "description": "Request to update a platform account.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "PlatformOrganizationServiceCreatePlatformOrganizationBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the platform organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Platform organizations are associated with a tenant.",
          "title": "Platform organizations are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PlatformOrganizationSpec",
          "description": "The specification of the platform organization."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "PlatformOrganization represents an organization on a third party site like Github/Gitlab or some package platform.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "PlatformOrganizationServiceUpdatePlatformOrganizationBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the platform organization.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Platform organizations are associated with a tenant.",
              "title": "Platform organizations are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1PlatformOrganizationSpec",
              "description": "The specification of the platform organization."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "PlatformOrganization represents an organization on a third party site like Github/Gitlab or some package platform."
        }
      },
      "description": "Request to update a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "PolicyAdmissionAction": {
      "type": "object",
      "properties": {
        "disable_enforcement": {
          "type": "boolean",
          "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."
        },
        "bypass_exceptions": {
          "type": "boolean",
          "description": "Set to true if exception policies should be ignored for findings\nmatching this policy."
        }
      }
    },
    "PolicyExceptionAction": {
      "type": "object",
      "properties": {
        "reason": {
          "$ref": "#/definitions/v1ExceptionReason",
          "description": "Reason for the exception policy."
        },
        "expiration_time": {
          "type": "string",
          "format": "date-time",
          "description": "Expiration time of the exception policy."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Optional] List of tags to add to spec.exception.tags in matching\nfindings."
        }
      },
      "required": [
        "reason"
      ]
    },
    "PolicyFindingAction": {
      "type": "object",
      "properties": {
        "level": {
          "$ref": "#/definitions/SpecFindingLevel",
          "description": "Severity level of the finding that is created.\nFor policy templates, this is used as the default value but\nit can be changed."
        },
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1FindingTags"
          },
          "description": "Additional tags for the finding that is created.\nFor policy templates, this is used as the default value but\nit can be changed."
        },
        "categories": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1FindingCategory"
          },
          "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."
        },
        "summary": {
          "type": "string",
          "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."
        },
        "explanation": {
          "type": "string",
          "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."
        },
        "remediation": {
          "type": "string",
          "description": "Remediation instructions.\nFor policy templates this is used as the default value but\nit can be changed to any free form string."
        },
        "external_name": {
          "type": "string",
          "description": "External finding name.\nFor policy templates this is used as the default value but\nit can be changed to any free form string."
        },
        "meta_tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional meta tags for the finding that is created."
        },
        "target_kind": {
          "type": "string",
          "description": "Repository, RepositoryVersion, or PackageVersion.\nThis is usually the same as the finding parent kind."
        }
      },
      "required": [
        "level",
        "summary",
        "explanation",
        "remediation"
      ]
    },
    "PolicyPolicyType": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "PolicyServiceCreatePolicyBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the policy.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Policies can be issued per namespace.",
          "title": "Policies can be issued per namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PolicySpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Whether the object should be visible in child namespaces or not."
        }
      },
      "description": "Policy represents a policy in the system.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "PolicyServiceUpdatePolicyBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the policy.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Policies can be issued per namespace.",
              "title": "Policies can be issued per namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1PolicySpec"
            },
            "propagate": {
              "type": "boolean",
              "description": "Whether the object should be visible in child namespaces or not."
            }
          },
          "description": "Policy represents a policy in the system."
        }
      },
      "description": "Request to update a policy.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "PolicyTemplateParameter": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "description": "The actual template parameter name and\nthe key in the policy template_values map."
        },
        "description": {
          "type": "string",
          "description": "The description of the field."
        },
        "possible_values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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."
        },
        "name": {
          "type": "string",
          "description": "The parameter name displayed to the user."
        },
        "multiple_ok": {
          "type": "boolean",
          "description": "Is true if multiple possible values are allowed to be set as a list."
        },
        "possible_values_from_db": {
          "$ref": "#/definitions/TemplateParameterQueryApiData",
          "description": "Get list of possible values from the database.\nUsed by the UI to list possible input values."
        },
        "default_values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of default values, if applicable.\nUsed by the UI to pre-populate input values."
        },
        "required": {
          "type": "boolean",
          "description": "Set to true if the parameter must have an input value."
        }
      },
      "required": [
        "value",
        "description",
        "name"
      ]
    },
    "PolicyTemplateParameterValues": {
      "type": "object",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "List of template parameter values"
        }
      }
    },
    "PolicyTemplateServiceCreatePolicyTemplateBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the policy template.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "PolicyTemplates can be issued per namespace.",
          "title": "PolicyTemplates can be issued per namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PolicyTemplateSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Whether the object should be visible in child namespaces or not."
        }
      },
      "description": "PolicyTemplate represents a policy system in the system. Policy\ntemplates can be used to create policies from these templates.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "PolicyTemplateServiceUpdatePolicyTemplateBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the policy template.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "PolicyTemplates can be issued per namespace.",
              "title": "PolicyTemplates can be issued per namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1PolicyTemplateSpec"
            },
            "propagate": {
              "type": "boolean",
              "description": "Whether the object should be visible in child namespaces or not."
            }
          },
          "description": "PolicyTemplate represents a policy system in the system. Policy\ntemplates can be used to create policies from these templates."
        }
      },
      "description": "Request to update a policy template.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "PolicyValidationResult": {
      "type": "object",
      "properties": {
        "policy_rule": {
          "type": "string",
          "description": "Policy rule from the request."
        },
        "query_statements": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of policy query statements from the request."
        },
        "valid_policy": {
          "type": "boolean",
          "description": "Validation result.\nTrue if policy is valid.\nFalse if policy is not valid."
        },
        "validation_error": {
          "type": "string",
          "description": "Validation error if applicable.\nEmpty if policy is valid."
        },
        "allow": {
          "type": "boolean",
          "description": "True if input data is accepted by policy.\nFalse if input data is rejected by policy.\nNull if validation failed."
        },
        "policy_output": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1PolicyOutput"
          },
          "description": "Parsed policy output indexed by the project UUID."
        },
        "resource_kinds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of resource kinds that the validated policy requires."
        },
        "evaluation_time": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "format": "int64"
          },
          "description": "Time it took to evaluate the policy, in milliseconds, indexed by the project UUID."
        }
      },
      "description": "PolicyValidationResult represents a policy validation result.",
      "required": [
        "policy_rule",
        "query_statements",
        "valid_policy"
      ]
    },
    "PolicyValidationServiceCreatePolicyValidationBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The tenant metadata restrict access to a specific tenant.",
          "title": "The tenant metadata restrict access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for the object."
        },
        "spec": {
          "$ref": "#/definitions/v1PolicyValidationSpec"
        }
      },
      "description": "PolicyValidation represents a policy validation request and response.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "ProjectServiceCreateProjectBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The unique identifier of the project.",
          "readOnly": true,
          "x-endor-name": "Project UUID"
        },
        "tenant_meta": {
          "type": "object",
          "description": "The tenant to which the project belongs.",
          "title": "The tenant to which the project belongs."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ProjectSpec",
          "description": "Project specifications."
        },
        "processing_status": {
          "$ref": "#/definitions/v1ProcessingStatus"
        }
      },
      "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.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "ProjectServiceUpdateProjectBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The unique identifier of the project.",
              "readOnly": true,
              "x-endor-name": "Project UUID"
            },
            "tenant_meta": {
              "type": "object",
              "description": "The tenant to which the project belongs.",
              "title": "The tenant to which the project belongs."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1ProjectSpec",
              "description": "Project specifications."
            },
            "processing_status": {
              "$ref": "#/definitions/v1ProcessingStatus"
            }
          },
          "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."
        }
      },
      "description": "Request used to update a project.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "ProjectSummaryServiceCreateProjectSummaryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the for the project summary.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Project Summary are associated with a  tenant.",
          "title": "Project Summary are associated with a  tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ProjectSummarySpec",
          "description": "Project Summary specification."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "ProjectSummary is an internal API to accelerate the UI operations.",
      "required": [
        "meta",
        "context"
      ],
      "x-internal": true
    },
    "ProjectSummaryServiceUpdateProjectSummaryBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the for the project summary.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Project Summary are associated with a  tenant.",
              "title": "Project Summary are associated with a  tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1ProjectSummarySpec",
              "description": "Project Summary specification."
            },
            "context": {
              "$ref": "#/definitions/v1Context"
            }
          },
          "description": "ProjectSummary is an internal API to accelerate the UI operations.",
          "x-internal": true
        }
      },
      "description": "Request to update a project summary.",
      "required": [
        "meta",
        "context"
      ]
    },
    "ProjectSummarySpecDependencyCounts": {
      "type": "object",
      "properties": {
        "total": {
          "type": "integer",
          "format": "int32",
          "description": "Total number of dependencies."
        },
        "direct": {
          "type": "integer",
          "format": "int32",
          "description": "Direct dependencies declared in the project."
        },
        "transitive": {
          "type": "integer",
          "format": "int32",
          "description": "Transitive dependencies pulled in by direct dependencies."
        },
        "outdated": {
          "type": "integer",
          "format": "int32",
          "description": "Dependencies that have newer versions available."
        },
        "unmaintained": {
          "type": "integer",
          "format": "int32",
          "description": "Dependencies that are no longer maintained."
        }
      },
      "description": "DependencyCounts tracks different types of dependencies in the project.",
      "required": [
        "total",
        "direct",
        "transitive",
        "outdated",
        "unmaintained"
      ]
    },
    "ProjectSummarySpecFindingCounts": {
      "type": "object",
      "properties": {
        "total": {
          "type": "integer",
          "format": "int32"
        },
        "critical": {
          "type": "integer",
          "format": "int32"
        },
        "high": {
          "type": "integer",
          "format": "int32"
        },
        "medium": {
          "type": "integer",
          "format": "int32"
        },
        "low": {
          "type": "integer",
          "format": "int32"
        },
        "dismissed": {
          "type": "integer",
          "format": "int32"
        }
      },
      "description": "Finding statistics.",
      "required": [
        "total",
        "critical",
        "high",
        "medium",
        "low",
        "dismissed"
      ]
    },
    "ProjectSummarySpecTopDependencies": {
      "type": "object",
      "properties": {
        "by_findings": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopDependenciesDependencyInfo"
          },
          "description": "Top dependencies by total findings."
        },
        "by_critical_findings": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopDependenciesDependencyInfo"
          },
          "description": "Top dependencies by critical findings."
        },
        "by_high_findings": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopDependenciesDependencyInfo"
          },
          "description": "Top dependencies by high severity findings."
        },
        "by_medium_findings": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopDependenciesDependencyInfo"
          },
          "description": "Top dependencies by medium severity findings."
        },
        "by_low_findings": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopDependenciesDependencyInfo"
          },
          "description": "Top dependencies by low severity findings."
        },
        "by_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopDependenciesDependencyInfo"
          },
          "description": "Top dependencies by total vulnerabilities."
        },
        "by_critical_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopDependenciesDependencyInfo"
          },
          "description": "Top dependencies by critical vulnerabilities."
        },
        "by_high_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopDependenciesDependencyInfo"
          },
          "description": "Top dependencies by high severity vulnerabilities."
        },
        "by_medium_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopDependenciesDependencyInfo"
          },
          "description": "Top dependencies by medium severity vulnerabilities."
        },
        "by_low_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopDependenciesDependencyInfo"
          },
          "description": "Top dependencies by low severity vulnerabilities."
        },
        "by_reachable_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopDependenciesDependencyInfo"
          },
          "description": "Top dependencies by reachable vulnerabilities."
        },
        "by_critical_reachable_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopDependenciesDependencyInfo"
          },
          "description": "Top dependencies by critical reachable vulnerabilities."
        },
        "by_high_reachable_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopDependenciesDependencyInfo"
          },
          "description": "Top dependencies by high severity reachable vulnerabilities."
        },
        "by_medium_reachable_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopDependenciesDependencyInfo"
          },
          "description": "Top dependencies by medium severity reachable vulnerabilities."
        },
        "by_low_reachable_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopDependenciesDependencyInfo"
          },
          "description": "Top dependencies by low severity reachable vulnerabilities."
        }
      },
      "description": "TopDependencies tracks the most significant dependencies in various categories."
    },
    "ProjectSummarySpecTopDependenciesDependencyInfo": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "Unique identifier for the dependency."
        },
        "name": {
          "type": "string",
          "description": "Name of the dependency."
        },
        "finding_counts": {
          "$ref": "#/definitions/ProjectSummarySpecFindingCounts",
          "description": "Finding counts for this dependency."
        },
        "vulnerability_counts": {
          "$ref": "#/definitions/ProjectSummarySpecVulnerabilityCounts",
          "description": "Vulnerability counts for this dependency."
        }
      },
      "description": "DependencyInfo contains detailed information about a dependency.",
      "required": [
        "uuid",
        "name"
      ]
    },
    "ProjectSummarySpecTopPackages": {
      "type": "object",
      "properties": {
        "by_findings": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopPackagesPackageInfo"
          },
          "description": "Top packages by total findings."
        },
        "by_critical_findings": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopPackagesPackageInfo"
          },
          "description": "Top packages by critical findings."
        },
        "by_high_findings": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopPackagesPackageInfo"
          },
          "description": "Top packages by high severity findings."
        },
        "by_medium_findings": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopPackagesPackageInfo"
          },
          "description": "Top packages by medium severity findings."
        },
        "by_low_findings": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopPackagesPackageInfo"
          },
          "description": "Top packages by low severity findings."
        },
        "by_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopPackagesPackageInfo"
          },
          "description": "Top packages by total vulnerabilities."
        },
        "by_critical_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopPackagesPackageInfo"
          },
          "description": "Top packages by critical vulnerabilities."
        },
        "by_high_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopPackagesPackageInfo"
          },
          "description": "Top packages by high severity vulnerabilities."
        },
        "by_medium_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopPackagesPackageInfo"
          },
          "description": "Top packages by medium severity vulnerabilities."
        },
        "by_low_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopPackagesPackageInfo"
          },
          "description": "Top packages by low severity vulnerabilities."
        },
        "by_reachable_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopPackagesPackageInfo"
          },
          "description": "Top packages by reachable vulnerabilities."
        },
        "by_critical_reachable_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopPackagesPackageInfo"
          },
          "description": "Top packages by critical reachable vulnerabilities."
        },
        "by_high_reachable_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopPackagesPackageInfo"
          },
          "description": "Top packages by high severity reachable vulnerabilities."
        },
        "by_medium_reachable_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopPackagesPackageInfo"
          },
          "description": "Top packages by medium severity reachable vulnerabilities."
        },
        "by_low_reachable_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopPackagesPackageInfo"
          },
          "description": "Top packages by low severity reachable vulnerabilities."
        },
        "by_outdated_dependencies": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopPackagesPackageInfo"
          },
          "description": "Top packages by outdated dependencies."
        },
        "by_unmaintained_dependencies": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ProjectSummarySpecTopPackagesPackageInfo"
          },
          "description": "Top packages by unmaintained dependencies."
        }
      },
      "description": "TopPackages tracks the most significant packages in various categories."
    },
    "ProjectSummarySpecTopPackagesPackageInfo": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "Unique identifier for the package."
        },
        "name": {
          "type": "string",
          "description": "Name of the package."
        },
        "finding_counts": {
          "$ref": "#/definitions/ProjectSummarySpecFindingCounts",
          "description": "Finding counts for this package."
        },
        "vulnerability_counts": {
          "$ref": "#/definitions/ProjectSummarySpecVulnerabilityCounts",
          "description": "Vulnerability counts for this package."
        },
        "dependency_counts": {
          "$ref": "#/definitions/ProjectSummarySpecDependencyCounts",
          "description": "Dependency counts for this package."
        }
      },
      "description": "PackageInfo contains detailed information about a package.",
      "required": [
        "uuid",
        "name"
      ]
    },
    "ProjectSummarySpecVulnerabilityCounts": {
      "type": "object",
      "properties": {
        "total": {
          "$ref": "#/definitions/ProjectSummarySpecFindingCounts",
          "description": "Total number of vulnerabilities across all categories."
        },
        "normal": {
          "$ref": "#/definitions/ProjectSummarySpecFindingCounts",
          "description": "Normal vulnerabilities without any special attributes."
        },
        "normal_fixable": {
          "$ref": "#/definitions/ProjectSummarySpecFindingCounts",
          "description": "Normal vulnerabilities that can be fixed."
        },
        "reachable": {
          "$ref": "#/definitions/ProjectSummarySpecFindingCounts",
          "description": "Vulnerabilities that are reachable in the code."
        },
        "normal_fixable_reachable": {
          "$ref": "#/definitions/ProjectSummarySpecFindingCounts",
          "description": "Normal fixable vulnerabilities that are reachable."
        },
        "potentially_reachable": {
          "$ref": "#/definitions/ProjectSummarySpecFindingCounts",
          "description": "Vulnerabilities that may be reachable."
        },
        "normal_fixable_potentially_reachable": {
          "$ref": "#/definitions/ProjectSummarySpecFindingCounts",
          "description": "Normal fixable vulnerabilities that may be reachable."
        },
        "unreachable": {
          "$ref": "#/definitions/ProjectSummarySpecFindingCounts",
          "description": "Vulnerabilities that are not reachable."
        },
        "normal_fixable_unreachable": {
          "$ref": "#/definitions/ProjectSummarySpecFindingCounts",
          "description": "Normal fixable vulnerabilities that are not reachable."
        },
        "exploitable_likelihood": {
          "$ref": "#/definitions/ProjectSummarySpecFindingCounts",
          "description": "Vulnerabilities with exploitable likelihood greater than 1%."
        },
        "exploitable_likelihood_reachable": {
          "$ref": "#/definitions/ProjectSummarySpecFindingCounts",
          "description": "Vulnerabilities with exploitable likelihood greater than 1% and are reachable."
        },
        "exploitable_likelihood_potentially_reachable": {
          "$ref": "#/definitions/ProjectSummarySpecFindingCounts",
          "description": "Vulnerabilities with exploitable likelihood greater than 1% and are potentially reachable."
        },
        "low_upgrade_risk": {
          "$ref": "#/definitions/ProjectSummarySpecFindingCounts",
          "description": "Vulnerabilities with low upgrade risk."
        },
        "low_upgrade_risk_reachable": {
          "$ref": "#/definitions/ProjectSummarySpecFindingCounts",
          "description": "Vulnerabilities with low upgrade risk and are reachable."
        },
        "low_upgrade_risk_potentially_reachable": {
          "$ref": "#/definitions/ProjectSummarySpecFindingCounts",
          "description": "Vulnerabilities with low upgrade risk and are potentially reachable."
        }
      },
      "description": "VulnerabilityCounts tracks different categories of vulnerabilities in the project.",
      "required": [
        "total",
        "normal",
        "normal_fixable",
        "reachable",
        "normal_fixable_reachable",
        "potentially_reachable",
        "normal_fixable_potentially_reachable",
        "unreachable",
        "normal_fixable_unreachable",
        "exploitable_likelihood"
      ]
    },
    "ProvisioningResultServiceCreateProvisioningResultBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "UUID is a universally unique identifier for the provisioning result.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Information about the tenant and namespace of the provisioning result.",
          "title": "Information about the tenant and namespace of the provisioning result."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Meta identifies the tool chain object."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Context provides the branch information of the repository on which the scan is run."
        },
        "spec": {
          "$ref": "#/definitions/v1ProvisioningResultSpec",
          "description": "Resource kind specific data."
        }
      },
      "description": "ProvisioningResult represents the versions that are maintained\nby Endor Labs.",
      "required": [
        "tenant_meta",
        "meta",
        "context",
        "spec"
      ]
    },
    "ProvisioningResultServiceUpdateProvisioningResultBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "UUID is a universally unique identifier for the provisioning result.",
              "readOnly": true,
              "x-endor-name": "UUID"
            },
            "tenant_meta": {
              "type": "object",
              "description": "Information about the tenant and namespace of the provisioning result.",
              "title": "Information about the tenant and namespace of the provisioning result."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Meta identifies the tool chain object."
            },
            "context": {
              "$ref": "#/definitions/v1Context",
              "description": "Context provides the branch information of the repository on which the scan is run."
            },
            "spec": {
              "$ref": "#/definitions/v1ProvisioningResultSpec",
              "description": "Resource kind specific data."
            }
          },
          "description": "ProvisioningResult represents the versions that are maintained\nby Endor Labs."
        }
      },
      "description": "Request to update a provisioning result.",
      "required": [
        "tenant_meta",
        "meta",
        "context",
        "spec"
      ]
    },
    "PullRequestSecurityReviewResultInfoChangeDescription": {
      "type": "object",
      "properties": {
        "change_kind": {
          "$ref": "#/definitions/PullRequestSecurityReviewResultInfoChangeKind",
          "title": "Type of change (new, modified, removed)"
        },
        "description": {
          "type": "string",
          "title": "Human-readable description of the change"
        },
        "line": {
          "type": "integer",
          "format": "int32",
          "title": "Starting line number of the change"
        },
        "line_end": {
          "type": "integer",
          "format": "int32",
          "title": "Ending line number of the change"
        }
      },
      "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."
    },
    "PullRequestSecurityReviewResultInfoChangeKind": {
      "type": "string",
      "enum": [
        "CHANGE_KIND_UNSPECIFIED",
        "CHANGE_KIND_NEW",
        "CHANGE_KIND_MODIFIED",
        "CHANGE_KIND_REMOVED"
      ],
      "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"
    },
    "PullRequestSecurityReviewResultInfoCodeSnippet": {
      "type": "object",
      "properties": {
        "file": {
          "type": "string",
          "title": "File path where the snippet is located"
        },
        "line": {
          "type": "integer",
          "format": "int32",
          "title": "Starting line number of the snippet"
        },
        "line_end": {
          "type": "integer",
          "format": "int32",
          "title": "Ending line number of the snippet"
        },
        "snippet": {
          "type": "string",
          "title": "The actual code content of the snippet"
        },
        "description": {
          "type": "string",
          "title": "Description of what the code snippet does"
        },
        "impact": {
          "type": "string",
          "title": "Security impact or implications of this code"
        },
        "change_kind": {
          "$ref": "#/definitions/PullRequestSecurityReviewResultInfoChangeKind",
          "title": "Whether this snippet is new, modified, or removed"
        },
        "language": {
          "type": "string",
          "title": "Code language of the snippet"
        }
      },
      "description": "CodeSnippet represents a specific portion of code that has security implications.\nThis could be sensitive operations, security controls, or potential vulnerabilities.",
      "required": [
        "file",
        "line"
      ]
    },
    "PullRequestSecurityReviewResultInfoFileChanges": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string",
          "title": "Path to the modified file"
        },
        "change_kind": {
          "$ref": "#/definitions/PullRequestSecurityReviewResultInfoChangeKind",
          "title": "Overall state of the file (new, modified, removed)"
        },
        "changed_functions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/PullRequestSecurityReviewResultInfoSecurityRelevantFunction"
          },
          "title": "List of security-relevant functions affected"
        },
        "purpose": {
          "type": "string",
          "title": "Overall purpose or role of the file"
        },
        "code_change_description": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/PullRequestSecurityReviewResultInfoChangeDescription"
          },
          "title": "Detailed descriptions of individual changes"
        },
        "added_lines": {
          "type": "integer",
          "format": "int32",
          "title": "Number of lines added to the file"
        },
        "removed_lines": {
          "type": "integer",
          "format": "int32",
          "title": "Number of lines removed from the file"
        }
      },
      "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."
    },
    "PullRequestSecurityReviewResultInfoSecurityAspectMetric": {
      "type": "object",
      "properties": {
        "category": {
          "$ref": "#/definitions/PullRequestSecurityReviewResultInfoSecurityReviewCategory",
          "title": "Security category of the metric"
        },
        "title": {
          "type": "string",
          "title": "Short title describing the security aspect"
        },
        "description": {
          "type": "string",
          "title": "Detailed description of the security concern"
        },
        "snippets": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/PullRequestSecurityReviewResultInfoCodeSnippet"
          },
          "title": "Code snippets related to this security aspect"
        },
        "severity_level": {
          "$ref": "#/definitions/PullRequestSecurityReviewResultInfoSecuritySeverityLevel",
          "title": "Severity level of the security aspect"
        },
        "justification": {
          "type": "string",
          "title": "Reasoning behind the security assessment"
        },
        "confidence_level": {
          "$ref": "#/definitions/PullRequestSecurityReviewResultInfoSecurityReviewConfidenceLevel",
          "title": "Confidence level in the assessment (1-100)"
        },
        "confidence_justification": {
          "type": "string",
          "title": "Explanation of the confidence score"
        },
        "security_impact": {
          "$ref": "#/definitions/SecurityAspectMetricSecurityImpactType",
          "description": "The security impact of the code change."
        }
      },
      "description": "SecurityAspectMetric represents a specific security concern or aspect identified during review.\nUsed to quantify and qualify various security characteristics of the changes.",
      "required": [
        "category",
        "title",
        "severity_level",
        "confidence_level"
      ]
    },
    "PullRequestSecurityReviewResultInfoSecurityRelevantFunction": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "title": "Name of the function"
        },
        "description": {
          "type": "string",
          "title": "Description of the function's purpose"
        },
        "change_kind": {
          "$ref": "#/definitions/PullRequestSecurityReviewResultInfoChangeKind",
          "title": "Whether this function is new, modified, or removed"
        },
        "security_labels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Security classification or sensitivity level of the function"
        }
      },
      "description": "SecurityRelevantFunction represents a function or method that performs security-sensitive operations.\nor requires special security consideration during review."
    },
    "PullRequestSecurityReviewResultInfoSecurityReviewCategory": {
      "type": "string",
      "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"
      ],
      "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"
    },
    "PullRequestSecurityReviewResultInfoSecurityReviewConfidenceLevel": {
      "type": "string",
      "enum": [
        "SECURITY_REVIEW_CONFIDENCE_LEVEL_UNSPECIFIED",
        "SECURITY_REVIEW_CONFIDENCE_LEVEL_LOW",
        "SECURITY_REVIEW_CONFIDENCE_LEVEL_MEDIUM",
        "SECURITY_REVIEW_CONFIDENCE_LEVEL_HIGH"
      ],
      "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"
    },
    "PullRequestSecurityReviewResultInfoSecuritySeverityLevel": {
      "type": "string",
      "enum": [
        "SECURITY_SEVERITY_LEVEL_UNSPECIFIED",
        "SECURITY_SEVERITY_LEVEL_LOW",
        "SECURITY_SEVERITY_LEVEL_MEDIUM",
        "SECURITY_SEVERITY_LEVEL_HIGH",
        "SECURITY_SEVERITY_LEVEL_CRITICAL"
      ],
      "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"
    },
    "QueryJoinFilters": {
      "type": "object",
      "properties": {
        "kind": {
          "type": "string"
        },
        "filter": {
          "type": "string"
        }
      },
      "required": [
        "kind"
      ]
    },
    "QueryMalwareServiceCreateQueryMalwareBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant related data for the tenant containing the resource."
        },
        "spec": {
          "$ref": "#/definitions/v1QueryMalwareSpec"
        },
        "responses": {
          "$ref": "#/definitions/v1QueryMalwareResponseMap"
        },
        "response": {
          "$ref": "#/definitions/v1ListMalwareResponse"
        }
      },
      "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."
    },
    "QueryQuerySpec": {
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "description": "The parent object kind of the metric."
        },
        "list_parameters": {
          "$ref": "#/definitions/v1ListParameters"
        },
        "with": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/QueryJoinFilters"
          },
          "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."
        },
        "references": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1QueryReference"
          }
        },
        "return_as": {
          "type": "string",
          "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."
        }
      },
      "required": [
        "kind"
      ]
    },
    "QueryServiceCreateQueryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The Tenant Metadata restricts access to a specific tenant.",
          "title": "The Tenant Metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata identifies the object."
        },
        "spec": {
          "$ref": "#/definitions/v1QuerySpec",
          "description": "{\n    \"meta\": {\n        \"name\": \"my first query\"\n    },\n    \"spec\": {\n        \"query_spec\": {\n            \"kind\": \"Project\",\n            \"list_parameters\": {\n                \"page_size\": 1,\n                \"mask\": \"uuid,meta.name,processing_status\"\n            },\n            \"references\": [\n                {\n                    \"connect_from\": \"uuid\",\n                    \"connect_to\": \"meta.parent_uuid\",\n                    \"query_spec\": {\n                        \"kind\": \"RepositoryVersion\",\n                        \"list_parameters\": {\n                            \"filter\": \"context.type==CONTEXT_TYPE_MAIN\",\n                            \"mask\": \"uuid,meta.name,spec\"\n                        },\n                        \"references\": [\n                           {\n                            \"connect_to\": \"meta.parent_uuid\",\n                            \"connect_from\": \"uuid\",\n                            \"query_spec\": {\n                                \"kind\": \"Metric\",\n                                \"list_parameters\": {\n                                    \"filter\": \"meta.name==repo_scorecard\",\n                                    \"mask\": \"meta,spec\"\n                                }\n                            }\n                        }]\n                    }\n                },\n                {\n                    \"connect_from\": \"uuid\",\n                    \"connect_to\": \"spec.project_uuid\",\n                    \"query_spec\": {\n                        \"kind\": \"PackageVersion\",\n                        \"list_parameters\": {\n                            \"filter\": \"context.type==CONTEXT_TYPE_MAIN\",\n                            \"page_size\": 1,\n                            \"mask\": \"uuid,meta,spec\"\n                        }\n                    }\n                }\n            ]\n        }\n    }\n}",
          "title": "A query spec allows an aggregation against various objects\nin the database. Assume for example:\nList all projects and their processing status.\nFor each project list all repository versions that correspond to the default branch\nFor each repository version derive some metrics\nFor each project, also list all the package versions that this project implements\nThe query in json format looks like below:"
        }
      },
      "description": "Query implements the metric query requests.",
      "required": [
        "tenant_meta",
        "meta"
      ]
    },
    "QuerySimilarPackagesQueryResponse": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "dependents_count": {
          "type": "string",
          "format": "int64"
        },
        "age": {
          "type": "string",
          "format": "int64"
        },
        "jaccard_distance": {
          "type": "number",
          "format": "float"
        },
        "edit_distance": {
          "type": "string",
          "format": "int64"
        }
      }
    },
    "QuerySimilarPackagesServiceCreateQuerySimilarPackagesBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The tenant metadata restricts access to a specific tenant.",
          "title": "The tenant metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata identifies the object."
        },
        "spec": {
          "$ref": "#/definitions/v1QuerySimilarPackagesSpec"
        },
        "query_response": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/QuerySimilarPackagesQueryResponse"
          },
          "description": "Aggregates the results of the query.",
          "readOnly": true
        }
      },
      "description": "QuerySimilarPackages implements the similar packages query requests.",
      "required": [
        "tenant_meta",
        "meta"
      ]
    },
    "QueryVulnerabilityServiceCreateQueryVulnerabilityBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant related data for the tenant containing the resource."
        },
        "spec": {
          "$ref": "#/definitions/v1QueryVulnerabilitySpec"
        },
        "responses": {
          "$ref": "#/definitions/v1QueryVulnerabilityResponseMap"
        },
        "response": {
          "$ref": "#/definitions/v1ListVulnerabilitiesResponse"
        }
      },
      "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."
    },
    "QueryVulnerabilityVulnerabilityNameQuery": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        }
      }
    },
    "RangeRangeType": {
      "type": "string",
      "enum": [
        "RANGE_TYPE_UNSPECIFIED",
        "RANGE_TYPE_GIT",
        "RANGE_TYPE_SEMVER",
        "RANGE_TYPE_ECOSYSTEM"
      ],
      "default": "RANGE_TYPE_UNSPECIFIED",
      "description": "Type of the version information."
    },
    "ReferenceReferenceType": {
      "type": "string",
      "enum": [
        "REFERENCE_TYPE_UNSPECIFIED",
        "REFERENCE_TYPE_WEB",
        "REFERENCE_TYPE_ADVISORY",
        "REFERENCE_TYPE_REPORT",
        "REFERENCE_TYPE_FIX",
        "REFERENCE_TYPE_PACKAGE",
        "REFERENCE_TYPE_ARTICLE"
      ],
      "default": "REFERENCE_TYPE_UNSPECIFIED"
    },
    "RegistryIngestionCheckpointServiceCreateRegistryIngestionCheckpointBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the registry ingestion checkpoint.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "RegistryIngestionCheckpoint is associated with a tenant and namespace.",
          "title": "RegistryIngestionCheckpoint is associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RegistryIngestionCheckpointSpec",
          "description": "Ingestion state per ecosystem/registry."
        }
      },
      "description": "RegistryIngestionCheckpoint represents ingestion progress checkpoints per ecosystem/registry.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "RegistryIngestionCheckpointServiceUpdateRegistryIngestionCheckpointBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the registry ingestion checkpoint.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "RegistryIngestionCheckpoint is associated with a tenant and namespace.",
              "title": "RegistryIngestionCheckpoint is associated with a tenant and namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1RegistryIngestionCheckpointSpec",
              "description": "Ingestion state per ecosystem/registry."
            }
          },
          "description": "RegistryIngestionCheckpoint represents ingestion progress checkpoints per ecosystem/registry."
        }
      },
      "description": "Request to update a registry ingestion checkpoint.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "RemediationParametersAutomatedPRParameters": {
      "type": "object",
      "properties": {
        "max_open_prs": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum number of open pull requests allowed."
        },
        "language_parameters": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/AutomatedPRParametersLanguageParameters"
          },
          "description": "Language-specific parameters for the pull request."
        }
      },
      "description": "AutomatedPRParameters holds the settings for automated PRs."
    },
    "RepositoryBranchProtectionServiceCreateRepositoryBranchProtectionBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the repository branch protection.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Repository branch protections are associated with a tenant.",
          "title": "Repository branch protections are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryBranchProtectionSpec",
          "description": "Repository branch protection specification."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested repository branch protection object."
        }
      },
      "description": "Branch protection information of a single branch.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryBranchProtectionServiceUpdateRepositoryBranchProtectionBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the repository branch protection.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Repository branch protections are associated with a tenant.",
              "title": "Repository branch protections are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1RepositoryBranchProtectionSpec",
              "description": "Repository branch protection specification."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested repository branch protection object."
            }
          },
          "description": "Branch protection information of a single branch."
        }
      },
      "description": "Request used to update repository branch protection.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryCheckRunServiceCreateRepositoryCheckRunBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the repository check run.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Repository check runs are associated with a tenant.\nPublic repository check runs are formed under a public tenant.",
          "title": "Repository check runs are associated with a tenant.\nPublic repository check runs are formed under a public tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryCheckRunSpec",
          "description": "Repository check run specifications."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "RepositoryCheckRun represents the information about a repository check run.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryCheckRunServiceUpdateRepositoryCheckRunBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the repository check run.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Repository check runs are associated with a tenant.\nPublic repository check runs are formed under a public tenant.",
              "title": "Repository check runs are associated with a tenant.\nPublic repository check runs are formed under a public tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1RepositoryCheckRunSpec",
              "description": "Repository check run specifications."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "RepositoryCheckRun represents the information about a repository check run."
        }
      },
      "description": "Request to update a repository check run.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryCodeownersFileServiceCreateRepositoryCodeownersFileBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the repository's codeowners file information.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Metadata required for the tenant.",
          "title": "Metadata required for the tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryCodeownersFileSpec",
          "description": "Repository's codeowners file information specifications."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "The information about a repository's codeowners file.\nIt does not contain the actual file contents.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryCodeownersFileServiceUpdateRepositoryCodeownersFileBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the repository's codeowners file information.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Metadata required for the tenant.",
              "title": "Metadata required for the tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1RepositoryCodeownersFileSpec",
              "description": "Repository's codeowners file information specifications."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "The information about a repository's codeowners file.\nIt does not contain the actual file contents."
        }
      },
      "description": "Request to update repository's code owners file information.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryCollaboratorsServiceCreateRepositoryCollaboratorsBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID fir repository's collaborators information.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant related data for the tenant containing the resource."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryCollaboratorsSpec",
          "description": "The repository's collaborators information specification."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "The ingested information about a repository's collaborators.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryCollaboratorsServiceUpdateRepositoryCollaboratorsBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID fir repository's collaborators information.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant related data for the tenant containing the resource."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1RepositoryCollaboratorsSpec",
              "description": "The repository's collaborators information specification."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "The ingested information about a repository's collaborators."
        }
      },
      "description": "Request to update repository's collaborators information.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryCommitServiceCreateRepositoryCommitBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the repository commit.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Repository commits are associated with a tenant.\nPublic repository commits are formed under a public tenant.",
          "title": "Repository commits are associated with a tenant.\nPublic repository commits are formed under a public tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryCommitSpec",
          "description": "Repository commit specifications."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "Represents the ingested information about a repository commit.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryCommitServiceUpdateRepositoryCommitBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the repository commit.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Repository commits are associated with a tenant.\nPublic repository commits are formed under a public tenant.",
              "title": "Repository commits are associated with a tenant.\nPublic repository commits are formed under a public tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1RepositoryCommitSpec",
              "description": "Repository commit specifications."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "Represents the ingested information about a repository commit."
        }
      },
      "description": "Request to update a repository commit.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryDeploymentEnvConfigServiceCreateRepositoryDeploymentEnvConfigBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the repository's deployment environment configuration.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Repository's deployment environment configurations are associated with a tenant.",
          "title": "Repository's deployment environment configurations are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryDeploymentEnvConfigSpec",
          "description": "Repository's deployment environment configuration specification."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "The ingested information about a repository's deployment environment configurations.\nhttps://docs.github.com/en/rest/deployments/environments?apiVersion=2022-11-28#list-environments.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryDeploymentEnvConfigServiceUpdateRepositoryDeploymentEnvConfigBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the repository's deployment environment configuration.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Repository's deployment environment configurations are associated with a tenant.",
              "title": "Repository's deployment environment configurations are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1RepositoryDeploymentEnvConfigSpec",
              "description": "Repository's deployment environment configuration specification."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "The ingested information about a repository's deployment environment configurations.\nhttps://docs.github.com/en/rest/deployments/environments?apiVersion=2022-11-28#list-environments."
        }
      },
      "description": "Request to update the the repository's deployment environment configuration.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryHookServiceCreateRepositoryHookBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the for the repository hook.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Repository hooks are associated with a  tenant.\nPublic repository hooks are formed under a public tenant.",
          "title": "Repository hooks are associated with a  tenant.\nPublic repository hooks are formed under a public tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryHookSpec",
          "description": "Repository hook specification."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw object ingested from the webhook."
        }
      },
      "description": "The information about hooks created for a repository.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryHookServiceUpdateRepositoryHookBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the for the repository hook.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Repository hooks are associated with a  tenant.\nPublic repository hooks are formed under a public tenant.",
              "title": "Repository hooks are associated with a  tenant.\nPublic repository hooks are formed under a public tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1RepositoryHookSpec",
              "description": "Repository hook specification."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw object ingested from the webhook."
            }
          },
          "description": "The information about hooks created for a repository."
        }
      },
      "description": "Request to update a repository hook.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryIssueServiceCreateRepositoryIssueBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a repository issue.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Repository issues are associated with a tenant.\nPublic repository issues are formed under a public tenant.",
          "title": "Repository issues are associated with a tenant.\nPublic repository issues are formed under a public tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryIssueSpec",
          "description": "Repository issue specification."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "The ingested information about a repository issue.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryIssueServiceUpdateRepositoryIssueBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of a repository issue.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Repository issues are associated with a tenant.\nPublic repository issues are formed under a public tenant.",
              "title": "Repository issues are associated with a tenant.\nPublic repository issues are formed under a public tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1RepositoryIssueSpec",
              "description": "Repository issue specification."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "The ingested information about a repository issue."
        }
      },
      "description": "Request to update a repository issue.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryPullRequestServiceCreateRepositoryPullRequestBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a repository pull request.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Repository pull request are associated with a tenant.\nPublic repository pull requests are formed under a public tenant.",
          "title": "Repository pull request are associated with a tenant.\nPublic repository pull requests are formed under a public tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryPullRequestSpec",
          "description": "Repository pull request specification."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "The ingested information about a repository pull request.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryPullRequestServiceUpdateRepositoryPullRequestBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of a repository pull request.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Repository pull request are associated with a tenant.\nPublic repository pull requests are formed under a public tenant.",
              "title": "Repository pull request are associated with a tenant.\nPublic repository pull requests are formed under a public tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1RepositoryPullRequestSpec",
              "description": "Repository pull request specification."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "The ingested information about a repository pull request."
        }
      },
      "description": "Request to update a repository pull request.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryReleaseServiceCreateRepositoryReleaseBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a repository release.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Repository releases are associated with a tenant.\nPublic repository releases are formed under a public tenant.",
          "title": "Repository releases are associated with a tenant.\nPublic repository releases are formed under a public tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryReleaseSpec",
          "description": "Repository release specification."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "The ingested information about a repository release.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryReleaseServiceUpdateRepositoryReleaseBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of a repository release.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Repository releases are associated with a tenant.\nPublic repository releases are formed under a public tenant.",
              "title": "Repository releases are associated with a tenant.\nPublic repository releases are formed under a public tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1RepositoryReleaseSpec",
              "description": "Repository release specification."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "The ingested information about a repository release."
        }
      },
      "description": "Request to update a repository release.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryScanMetadataServiceCreateRepositoryScanMetadataBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the repository scan metadata.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Metrics are associated with a tenant and the tenant information must be provided.",
          "title": "Metrics are associated with a tenant and the tenant information must be provided."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryScanMetadataSpec",
          "description": "Project scan metadata specification."
        }
      },
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "RepositoryScanMetadataServiceUpdateRepositoryScanMetadataBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the repository scan metadata.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Metrics are associated with a tenant and the tenant information must be provided.",
              "title": "Metrics are associated with a tenant and the tenant information must be provided."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1RepositoryScanMetadataSpec",
              "description": "Project scan metadata specification."
            }
          }
        }
      },
      "description": "Request to update a scan metadata.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "RepositoryScanMetadataSpecVersionMetadata": {
      "type": "object",
      "properties": {
        "hashes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "total_commits": {
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "RepositoryServiceCreateRepositoryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the source control repository.",
          "readOnly": true,
          "x-endor-name": "Repository UUID"
        },
        "tenant_meta": {
          "type": "object",
          "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."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositorySpec",
          "description": "Repository specifications."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested 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.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryServiceUpdateRepositoryBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the source control repository.",
              "readOnly": true,
              "x-endor-name": "Repository UUID"
            },
            "tenant_meta": {
              "type": "object",
              "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."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1RepositorySpec",
              "description": "Repository specifications."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested 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."
        }
      },
      "description": "Request to update the repository.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryStatusServiceCreateRepositoryStatusBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a repository status.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Repository status are associated with a tenant.\nPublic repository statuses are formed under a public tenant.",
          "title": "Repository status are associated with a tenant.\nPublic repository statuses are formed under a public tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryStatusSpec",
          "description": "Repository status specification."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "The ingested information about a repository status.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryStatusServiceUpdateRepositoryStatusBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of a repository status.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Repository status are associated with a tenant.\nPublic repository statuses are formed under a public tenant.",
              "title": "Repository status are associated with a tenant.\nPublic repository statuses are formed under a public tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1RepositoryStatusSpec",
              "description": "Repository status specification."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "The ingested information about a repository status."
        }
      },
      "description": "Request to update the repository status.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryTagProtectionServiceCreateRepositoryTagProtectionBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the repository's tag protection.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Repository's tag protections are associated with a tenant.",
          "title": "Repository's tag protections are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryTagProtectionSpec",
          "description": "Repository's tag protection specification."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "The repository's tag protections.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryTagProtectionServiceUpdateRepositoryTagProtectionBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the repository's tag protection.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Repository's tag protections are associated with a tenant.",
              "title": "Repository's tag protections are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1RepositoryTagProtectionSpec",
              "description": "Repository's tag protection specification."
            },
            "ingested_object": {
              "$ref": "#/definitions/v1IngestedObject",
              "description": "Raw ingested object."
            }
          },
          "description": "The repository's tag protections."
        }
      },
      "description": "Request to update a repository's tag protection.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "RepositoryVersionScanObject": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/RepositoryVersionScanObjectStatus",
          "description": "Indicates whether the current repository version has been scanned."
        },
        "scan_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time at which this repository version was scanned."
        },
        "aisast_status": {
          "$ref": "#/definitions/ScanObjectAISASTStatus",
          "description": "AISAST status information for the repository version.",
          "x-internal": true
        },
        "endor_ignore_file_hash_map": {
          "type": "object",
          "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.",
          "x-internal": true
        }
      },
      "required": [
        "status"
      ]
    },
    "RepositoryVersionScanObjectStatus": {
      "type": "string",
      "enum": [
        "STATUS_UNSPECIFIED",
        "STATUS_SCANNED",
        "STATUS_NOT_SCANNED"
      ],
      "default": "STATUS_UNSPECIFIED",
      "description": "Indicates the status of an Endor Labs scan."
    },
    "RepositoryVersionServiceCreateRepositoryVersionBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the repository version.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Repository versions are associated with a tenant.",
          "title": "Repository versions are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryVersionSpec",
          "description": "Repository version specifications."
        },
        "scan_object": {
          "$ref": "#/definitions/RepositoryVersionScanObject"
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Context for the repository version will be automatically updated\nto that of the version, unless if it is a CI run."
        }
      },
      "description": "The ingested information about a repository version.",
      "required": [
        "meta",
        "context"
      ]
    },
    "RepositoryVersionServiceUpdateRepositoryVersionBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the repository version.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Repository versions are associated with a tenant.",
              "title": "Repository versions are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1RepositoryVersionSpec",
              "description": "Repository version specifications."
            },
            "scan_object": {
              "$ref": "#/definitions/RepositoryVersionScanObject"
            },
            "context": {
              "$ref": "#/definitions/v1Context",
              "description": "Context for the repository version will be automatically updated\nto that of the version, unless if it is a CI run."
            }
          },
          "description": "The ingested information about a repository version."
        }
      },
      "description": "Request to update the repository version.",
      "required": [
        "meta",
        "context"
      ]
    },
    "RequestAssuredPackageVersionServiceCreateRequestAssuredPackageVersionBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the requested assured package version.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Git repositories are associated with a tenant.",
          "title": "Git repositories are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata are generic for any object."
        },
        "spec": {
          "$ref": "#/definitions/v1RequestAssuredPackageVersionSpec",
          "description": "Specification of the request assured package version."
        }
      },
      "description": "RequestAssuredPackageVersion is a request to have an assured package version patchd..",
      "required": [
        "meta",
        "spec"
      ]
    },
    "RequestAssuredPackageVersionServiceUpdateRequestAssuredPackageVersionBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the requested assured package version.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Git repositories are associated with a tenant.",
              "title": "Git repositories are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata are generic for any object."
            },
            "spec": {
              "$ref": "#/definitions/v1RequestAssuredPackageVersionSpec",
              "description": "Specification of the request assured package version."
            }
          },
          "description": "RequestAssuredPackageVersion is a request to have an assured package version patchd.."
        }
      },
      "description": "Request to update the request assured package version.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "RequestAssuredPackageVersionSpecState": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/SpecStateStatus",
          "description": "Status of the request."
        },
        "comments": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/StateComment"
          }
        }
      },
      "required": [
        "status"
      ]
    },
    "RequestFindingSeverity": {
      "type": "string",
      "enum": [
        "FINDING_SEVERITY_UNSPECIFIED",
        "FINDING_SEVERITY_CRITICAL",
        "FINDING_SEVERITY_HIGH",
        "FINDING_SEVERITY_MEDIUM",
        "FINDING_SEVERITY_LOW"
      ],
      "default": "FINDING_SEVERITY_UNSPECIFIED",
      "description": " - FINDING_SEVERITY_UNSPECIFIED: Default unspecified severity.\n - FINDING_SEVERITY_CRITICAL: Critical finding.\n - FINDING_SEVERITY_HIGH: Very important findings.\n - FINDING_SEVERITY_MEDIUM: Important findings.\n - FINDING_SEVERITY_LOW: Low priority finding."
    },
    "ResolutionStatusErrorAnalysis": {
      "type": "object",
      "properties": {
        "explanation": {
          "type": "string",
          "description": "Explanation of the error based on the error parsing rules."
        },
        "error_category": {
          "$ref": "#/definitions/SpecErrorCategory",
          "description": "The type of the error that was matched."
        },
        "matching_snippet": {
          "type": "string",
          "description": "matching_snippet is the snippet of the error that matched the rule."
        },
        "matching_rule": {
          "type": "string",
          "description": "matching_rule is the rule that matched the error."
        },
        "fixable": {
          "type": "boolean",
          "description": "Fixable indicates if the error is fixable through configuration."
        },
        "fixable_notes": {
          "type": "string",
          "description": "notes about the fixable status."
        }
      },
      "description": "ErrorAnalysis is the analysis of the error based on the error parsing\nrules."
    },
    "ResolutionStatusStatusError": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "ResponseEntryMatchResult": {
      "type": "object",
      "properties": {
        "data_hash": {
          "type": "string",
          "description": "data_hash is the SHA256 hash of the document content.\nUsed to identify the representation being checked."
        },
        "filter": {
          "type": "object",
          "description": "filter echoes back the uniqueness fields for correlation."
        },
        "entry_match_state": {
          "$ref": "#/definitions/SpecEntryMatchState",
          "description": "entry_match_state indicates whether the vector store contains an entry\nthat corresponds to the provided document representation."
        }
      },
      "description": "EntryMatchResult contains the match outcome for a single document.",
      "required": [
        "data_hash"
      ]
    },
    "ResponseReachabilityCounts": {
      "type": "object",
      "properties": {
        "reachable": {
          "$ref": "#/definitions/ResponseSeverityCounts",
          "description": "Findings on dependencies reachable in the app image.",
          "readOnly": true
        },
        "potentially_reachable": {
          "$ref": "#/definitions/ResponseSeverityCounts",
          "description": "Findings on dependencies that may be reachable in the app image.",
          "readOnly": true
        },
        "unreachable": {
          "$ref": "#/definitions/ResponseSeverityCounts",
          "description": "Findings on dependencies not reachable in the app image.",
          "readOnly": true
        }
      },
      "description": "Finding counts bucketed by reachability. Each bucket is a severity\nbreakdown. Reachability is projected from the app image scan (see §3).\nThe overall total lives on the sibling SeverityCounts field, so there is\nno total bucket here."
    },
    "ResponseSeverityCounts": {
      "type": "object",
      "properties": {
        "total": {
          "type": "integer",
          "format": "int32",
          "description": "Total number of findings across all severities.",
          "readOnly": true
        },
        "critical": {
          "type": "integer",
          "format": "int32",
          "description": "Number of critical severity findings.",
          "readOnly": true
        },
        "high": {
          "type": "integer",
          "format": "int32",
          "description": "Number of high severity findings.",
          "readOnly": true
        },
        "medium": {
          "type": "integer",
          "format": "int32",
          "description": "Number of medium severity findings.",
          "readOnly": true
        },
        "low": {
          "type": "integer",
          "format": "int32",
          "description": "Number of low severity findings.",
          "readOnly": true
        }
      },
      "description": "Aggregate finding counts broken out by severity. Named distinctly from\nDashboardSummaryQuery.Spec.Response.FindingCounts to avoid a generated\nclient type-name collision (that message keeps the shorter alias)."
    },
    "ResponseTopProjects": {
      "type": "object",
      "properties": {
        "by_findings": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/TopProjectsProjectInfo"
          },
          "description": "Projects sorted by finding counts.",
          "readOnly": true
        },
        "by_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/TopProjectsProjectInfo"
          },
          "description": "Projects sorted by vulnerability counts.",
          "readOnly": true
        },
        "by_reachable_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/TopProjectsProjectInfo"
          },
          "description": "Projects sorted by reachable vulnerability counts.",
          "readOnly": true
        },
        "by_outdated_dependencies": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/TopProjectsProjectInfo"
          },
          "description": "Projects sorted by outdated dependency counts.",
          "readOnly": true
        },
        "by_unmaintained_dependencies": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/TopProjectsProjectInfo"
          },
          "description": "Projects sorted by unmaintained dependency counts.",
          "readOnly": true
        }
      }
    },
    "ResponseUpdateOption": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/ResponseUpdateOptionStatus",
          "description": "Whether the impact for this update option could be computed.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "The candidate base image tag this option points to.",
          "readOnly": true
        },
        "package_version_uuid": {
          "type": "string",
          "description": "The candidate base image PackageVersion UUID.",
          "readOnly": true
        },
        "digest": {
          "type": "string",
          "description": "The candidate base image manifest digest.",
          "readOnly": true
        },
        "all_reachability_counts": {
          "$ref": "#/definitions/ResponseReachabilityCounts",
          "description": "Reachability breakdown of ALL candidate-base findings (every finding\ntype). Populated only when Response.reachability_available is true.",
          "readOnly": true
        },
        "vuln_reachability_counts": {
          "$ref": "#/definitions/ResponseReachabilityCounts",
          "description": "Reachability breakdown of candidate-base VULNERABILITY findings only.\nPopulated only when Response.reachability_available is true.",
          "readOnly": true
        },
        "all_counts": {
          "$ref": "#/definitions/ResponseSeverityCounts",
          "description": "Severity counts of ALL candidate-base findings (every finding type).",
          "readOnly": true
        },
        "vuln_counts": {
          "$ref": "#/definitions/ResponseSeverityCounts",
          "description": "Severity counts of candidate-base VULNERABILITY findings only.",
          "readOnly": true
        },
        "all_reachability_changes": {
          "$ref": "#/definitions/ResponseReachabilityCounts",
          "description": "all_reachability_counts minus Response.all_reachability_counts.\nNegative values indicate fewer findings after the update (an\nimprovement). Populated only when Response.reachability_available is\ntrue and this option is STATUS_READY.",
          "readOnly": true
        },
        "vuln_reachability_changes": {
          "$ref": "#/definitions/ResponseReachabilityCounts",
          "description": "vuln_reachability_counts minus Response.vuln_reachability_counts.\nPopulated only when Response.reachability_available is true and this\noption is STATUS_READY.",
          "readOnly": true
        },
        "all_changes": {
          "$ref": "#/definitions/ResponseSeverityCounts",
          "description": "all_counts minus Response.all_counts. Negative values indicate fewer\nfindings after the update. Unset when the candidate has not been\nscanned yet (this option is STATUS_PENDING).",
          "readOnly": true
        },
        "vuln_changes": {
          "$ref": "#/definitions/ResponseSeverityCounts",
          "description": "vuln_counts minus Response.vuln_counts. Unset when the candidate has\nnot been scanned yet (this option is STATUS_PENDING).",
          "readOnly": true
        },
        "severity_records": {
          "$ref": "#/definitions/UpdateOptionSeverityRecords",
          "description": "Top changed findings (of request.record_scope) grouped by severity (the\nseverity view). Each bucket holds separate fixed and introduced lists,\neach ranked within the bucket and capped at\nrequest.max_top_records_per_bucket (default 10), plus per-list totals.\nThose totals reconcile with vuln_counts/vuln_changes when record_scope\nis VULNERABILITY and with all_counts/all_changes when it is ALL. The\nfull per-bucket list is served by\nContainerBaseImageUpdateImpactRecordsQueryService.",
          "readOnly": true
        },
        "reachability_records": {
          "$ref": "#/definitions/UpdateOptionReachabilityRecords",
          "description": "Top changed findings (of request.record_scope) grouped by reachability\n(the reachability view). Same per-bucket fixed/introduced split,\ncapping, and totals as severity_records. Populated only when\nResponse.reachability_available is true.",
          "readOnly": true
        }
      },
      "description": "Impact of one base image update option."
    },
    "ResponseUpdateOptionStatus": {
      "type": "string",
      "enum": [
        "STATUS_UNSPECIFIED",
        "STATUS_READY",
        "STATUS_PENDING"
      ],
      "default": "STATUS_UNSPECIFIED",
      "description": "Availability of the impact for this update option.\n\n - STATUS_UNSPECIFIED: The status was not set.\n - STATUS_READY: The candidate base was resolved and its impact was computed.\n - STATUS_PENDING: The update option exists but its candidate PackageVersion has not\nbeen scanned yet, so its counts and records are not yet available."
    },
    "RootCveCVSSMetric": {
      "type": "object",
      "properties": {
        "cvss_metric_v2": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/NVDVulnerabilityCvssMetricV2"
          }
        },
        "cvss_metric_v30": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/NVDVulnerabilityCvssMetricV30"
          }
        },
        "cvss_metric_v31": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/NVDVulnerabilityCvssMetricV31"
          }
        },
        "cvss_metric_v40": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/NVDVulnerabilityCvssMetricV40"
          }
        }
      }
    },
    "RootCveConfig": {
      "type": "object",
      "properties": {
        "operator": {
          "$ref": "#/definitions/ConfigOperator"
        },
        "negate": {
          "type": "boolean"
        },
        "nodes": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ConfigCVSSNode"
          }
        }
      }
    },
    "RootCveLangString": {
      "type": "object",
      "properties": {
        "lang": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "required": [
        "lang",
        "value"
      ]
    },
    "RootCveVendorComment": {
      "type": "object",
      "properties": {
        "organization": {
          "type": "string"
        },
        "comment": {
          "type": "string"
        },
        "last_modified": {
          "type": "string",
          "format": "date-time"
        }
      },
      "required": [
        "organization",
        "comment",
        "last_modified"
      ]
    },
    "RootCveWeakness": {
      "type": "object",
      "properties": {
        "source": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "description": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/RootCveLangString"
          }
        }
      },
      "required": [
        "source",
        "type",
        "description"
      ]
    },
    "RuleSetImportServiceCreateRuleSetImportBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the object.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for the object."
        },
        "tenant_meta": {
          "type": "object",
          "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."
        },
        "spec": {
          "$ref": "#/definitions/v1ImportedRuleSetSpec"
        }
      },
      "description": "ImportedRuleSet represents a request to import a set of rules.",
      "required": [
        "meta"
      ]
    },
    "RuleSetImportServiceUpdateRuleSetImportBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the object.",
              "readOnly": true
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for the object."
            },
            "tenant_meta": {
              "type": "object",
              "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."
            },
            "spec": {
              "$ref": "#/definitions/v1ImportedRuleSetSpec"
            }
          },
          "description": "ImportedRuleSet represents a request to import a set of rules."
        }
      },
      "description": "Request to update an object.",
      "required": [
        "meta"
      ]
    },
    "SBOMExportServiceCreateSBOMExportBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the SBOM.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "tenant_meta": {
          "type": "object",
          "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."
        },
        "spec": {
          "$ref": "#/definitions/v1ExportedSBOMSpec"
        }
      },
      "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.",
      "required": [
        "meta"
      ]
    },
    "SBOMImportServiceCreateSBOMImportBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "title": "The UUID of the SBOM",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for the object."
        },
        "tenant_meta": {
          "type": "object",
          "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."
        },
        "spec": {
          "$ref": "#/definitions/v1ImportedSBOMSpec"
        },
        "processing_status": {
          "$ref": "#/definitions/v1ProcessingStatus"
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "ImportedSBOM represents an SBOM that has been imported.",
      "required": [
        "meta",
        "context"
      ]
    },
    "SBOMImportServiceUpdateSBOMImportBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "title": "The UUID of the SBOM",
              "readOnly": true
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for the object."
            },
            "tenant_meta": {
              "type": "object",
              "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."
            },
            "spec": {
              "$ref": "#/definitions/v1ImportedSBOMSpec"
            },
            "processing_status": {
              "$ref": "#/definitions/v1ProcessingStatus"
            },
            "context": {
              "$ref": "#/definitions/v1Context"
            }
          },
          "description": "ImportedSBOM represents an SBOM that has been imported."
        }
      },
      "description": "Request to update an SBOM.",
      "required": [
        "meta",
        "context"
      ]
    },
    "SBOMOrganizationalContactServiceCreateSBOMOrganizationalContactBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an SBOM organizational contact.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for the object."
        },
        "tenant_meta": {
          "type": "object",
          "description": "SBOM organizational contacts are associated with a tenant and tenant information must be provided.",
          "title": "SBOM organizational contacts are associated with a tenant and tenant information must be provided."
        },
        "spec": {
          "$ref": "#/definitions/v1SBOMOrganizationalContactSpec"
        }
      },
      "required": [
        "spec"
      ]
    },
    "SBOMOrganizationalContactServiceUpdateSBOMOrganizationalContactBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of an SBOM organizational contact.",
              "readOnly": true
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for the object."
            },
            "tenant_meta": {
              "type": "object",
              "description": "SBOM organizational contacts are associated with a tenant and tenant information must be provided.",
              "title": "SBOM organizational contacts are associated with a tenant and tenant information must be provided."
            },
            "spec": {
              "$ref": "#/definitions/v1SBOMOrganizationalContactSpec"
            }
          }
        }
      },
      "description": "Request to update an SBOM organizational contact.",
      "required": [
        "spec"
      ]
    },
    "SCMAppServiceCreateSCMAppBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the SCM app.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespaces are associated with a tenant.",
          "title": "Namespaces are associated with a tenant."
        },
        "spec": {
          "$ref": "#/definitions/v1SCMAppSpec",
          "description": "The spec of the SCM app."
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates whether the object should be visible in the child namespaces or not."
        }
      },
      "required": [
        "meta",
        "tenant_meta",
        "spec"
      ]
    },
    "SCMAppServiceUpdateSCMAppBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the SCM app.",
              "readOnly": true
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata is generic for any object."
            },
            "tenant_meta": {
              "type": "object",
              "description": "Namespaces are associated with a tenant.",
              "title": "Namespaces are associated with a tenant."
            },
            "spec": {
              "$ref": "#/definitions/v1SCMAppSpec",
              "description": "The spec of the SCM app."
            },
            "propagate": {
              "type": "boolean",
              "description": "Indicates whether the object should be visible in the child namespaces or not."
            }
          }
        }
      },
      "description": "Request to update an SCM app.",
      "required": [
        "meta",
        "tenant_meta",
        "spec"
      ]
    },
    "SCMCredentialServiceCreateSCMCredentialBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the SCM credential.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespaces are associated with a tenant.",
          "title": "Namespaces are associated with a tenant."
        },
        "spec": {
          "$ref": "#/definitions/v1SCMCredentialSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagate indicates that the object should be visible in child namespaces."
        }
      },
      "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.",
      "required": [
        "meta",
        "tenant_meta",
        "spec"
      ]
    },
    "SCMCredentialServiceUpdateSCMCredentialBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the SCM credential.",
              "readOnly": true
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata is generic for any object."
            },
            "tenant_meta": {
              "type": "object",
              "description": "Namespaces are associated with a tenant.",
              "title": "Namespaces are associated with a tenant."
            },
            "spec": {
              "$ref": "#/definitions/v1SCMCredentialSpec"
            },
            "propagate": {
              "type": "boolean",
              "description": "Propagate indicates that the object should be visible in child namespaces."
            }
          },
          "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."
        }
      },
      "description": "Request to update an SCM credential.",
      "required": [
        "meta",
        "tenant_meta",
        "spec"
      ]
    },
    "SRResponseCategoryInfo": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Category name.",
          "readOnly": true
        },
        "finding_counts": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Finding counts for this category.",
          "readOnly": true
        }
      }
    },
    "SRResponseLanguageInfo": {
      "type": "object",
      "properties": {
        "language": {
          "type": "string",
          "description": "Programming language.",
          "readOnly": true
        },
        "finding_counts": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Finding counts for this language.",
          "readOnly": true
        }
      }
    },
    "SandboxConfigCustomScriptConfig": {
      "type": "object",
      "properties": {
        "tool_chains": {
          "$ref": "#/definitions/v1ToolChains",
          "description": "Custom script toolchains."
        },
        "exit_code": {
          "type": "integer",
          "format": "int32",
          "description": "Custom script exit code."
        },
        "stdout": {
          "type": "string",
          "description": "Custom script stdout."
        },
        "stderr": {
          "type": "string",
          "description": "Custom script stderr."
        }
      },
      "description": "Message for custom script configuration."
    },
    "SandboxConfigSandboxStrategyType": {
      "type": "string",
      "enum": [
        "SANDBOX_STRATEGY_TYPE_UNSPECIFIED",
        "SANDBOX_STRATEGY_TYPE_PROCESSWRAPPER",
        "SANDBOX_STRATEGY_TYPE_LINUX",
        "SANDBOX_STRATEGY_TYPE_DARWIN"
      ],
      "default": "SANDBOX_STRATEGY_TYPE_UNSPECIFIED",
      "description": "Sandbox strategy types."
    },
    "SarifLocationPhysicalLocation": {
      "type": "object",
      "properties": {
        "artifact_location": {
          "$ref": "#/definitions/v1SarifArtifactLocation",
          "title": "Location of the artifact (file)"
        },
        "region": {
          "$ref": "#/definitions/v1SarifRegion",
          "title": "Specific region within the artifact"
        },
        "properties": {
          "type": "object",
          "description": "Key-value pairs that provide additional information."
        }
      }
    },
    "SarifSuppressionKind": {
      "type": "string",
      "enum": [
        "KIND_UNSPECIFIED",
        "KIND_IN_SOURCE",
        "KIND_EXTERNAL"
      ],
      "default": "KIND_UNSPECIFIED",
      "description": " - KIND_IN_SOURCE: Suppression is in the source code.\n - KIND_EXTERNAL: Suppression is external to the source code."
    },
    "SarifThreadFlowLocationImportance": {
      "type": "string",
      "enum": [
        "IMPORTANCE_UNSPECIFIED",
        "IMPORTANCE_IMPORTANT",
        "IMPORTANCE_ESSENTIAL",
        "IMPORTANCE_UNIMPORTANT"
      ],
      "default": "IMPORTANCE_UNSPECIFIED",
      "description": "Specifies the importance of this location in understanding the code flow."
    },
    "SavedQueryServiceCreateSavedQueryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a saved query.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The Tenant Metadata restricts access to a specific tenant.",
          "title": "The Tenant Metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1SavedQuerySpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates that the object should be visible in child namespaces."
        }
      },
      "description": "SavedQuery implements the metric query requests.",
      "required": [
        "tenant_meta",
        "meta"
      ]
    },
    "SavedQueryServiceUpdateSavedQueryBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of a saved query.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "The Tenant Metadata restricts access to a specific tenant.",
              "title": "The Tenant Metadata restricts access to a specific tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1SavedQuerySpec"
            },
            "propagate": {
              "type": "boolean",
              "description": "Indicates that the object should be visible in child namespaces."
            }
          },
          "description": "SavedQuery implements the metric query requests."
        }
      },
      "description": "Request to update a saved query.",
      "required": [
        "tenant_meta",
        "meta"
      ]
    },
    "SavedQuerySpecQueryType": {
      "type": "string",
      "enum": [
        "QUERY_TYPE_UNSPECIFIED",
        "QUERY_TYPE_DASHBOARD",
        "QUERY_TYPE_USER"
      ],
      "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."
    },
    "ScanCreditUsageScanCreditBreakdown": {
      "type": "object",
      "properties": {
        "sca_ci_run_credits": {
          "type": "string",
          "format": "int64",
          "description": "SCA scan credits from PR scans (Context.type = CONTEXT_TYPE_CI_RUN)."
        },
        "code_ci_run_credits": {
          "type": "string",
          "format": "int64",
          "description": "Code scan credits (SAST + AI_SAST + SECRETS collapsed) from PR scans."
        },
        "sca_ref_credits": {
          "type": "string",
          "format": "int64",
          "description": "SCA scan credits from non-default ref scans (Context.type = CONTEXT_TYPE_REF)."
        },
        "code_ref_credits": {
          "type": "string",
          "format": "int64",
          "description": "Code scan credits from non-default ref scans."
        },
        "sca_main_overflow_credits": {
          "type": "string",
          "format": "int64",
          "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."
        },
        "code_main_overflow_credits": {
          "type": "string",
          "format": "int64",
          "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."
        }
      },
      "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."
    },
    "ScanCreditUsageServiceCreateScanCreditUsageBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the scan credit usage record.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "ScanCreditUsage is associated with a root tenant.",
          "title": "ScanCreditUsage is associated with a root tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata for the scan credit usage record."
        },
        "spec": {
          "$ref": "#/definitions/v1ScanCreditUsageSpec",
          "description": "Specification of the scan credit usage record."
        }
      },
      "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.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "ScanLogRequestServiceCreateScanLogRequestBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of scan log request.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespace of the message that is accessed.",
          "title": "Namespace of the message that is accessed."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ScanLogRequestSpec"
        }
      },
      "description": "ScanLogRequest represents a CRUD operation on a message.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "ScanObjectAISASTStatus": {
      "type": "object",
      "properties": {
        "last_full_index_time": {
          "type": "string",
          "format": "date-time",
          "description": "Format: 2017-01-15T01:30:15.01Z\nRFC 3339: https://www.ietf.org/rfc/rfc3339.txt.",
          "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",
          "x-internal": true
        },
        "last_partial_index_time": {
          "type": "string",
          "format": "date-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.",
          "x-internal": true
        },
        "last_full_index_sha": {
          "type": "string",
          "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",
          "x-internal": true
        },
        "last_partial_index_sha": {
          "type": "string",
          "description": "Deprecated: use last_full_index_sha instead. The indexer now uses a single\nIndex method; the full/partial distinction no longer exists.",
          "x-internal": true
        },
        "force_full_indexing": {
          "type": "boolean",
          "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",
          "x-internal": true
        },
        "full_index_started_time": {
          "type": "string",
          "format": "date-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.",
          "x-internal": true
        },
        "last_scan_state": {
          "$ref": "#/definitions/AISASTStatusAISASTScanState",
          "description": "The state of the last AI SAST scan pipeline run.\nSet to *_STARTED before each phase and a terminal state after completion.\nIf the process is killed, the state stays at *_STARTED so the next scan\nknows the previous one didn't finish.",
          "x-internal": true
        }
      },
      "description": "AISAST status information for the repository version."
    },
    "ScanProfileServiceCreateScanProfileBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "UUID is a universally unique identifier for the tool chain profile.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant related data for the tenant containing the resource."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Meta identifies the tool chain object."
        },
        "spec": {
          "$ref": "#/definitions/v1ScanProfileSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates that the object should be visible in the child namespaces."
        }
      },
      "description": "ScanProfile represents the scan configuration to use across different\nprojects.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "ScanProfileServiceUpdateScanProfileBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "UUID is a universally unique identifier for the tool chain profile.",
              "readOnly": true,
              "x-endor-name": "UUID"
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant related data for the tenant containing the resource."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Meta identifies the tool chain object."
            },
            "spec": {
              "$ref": "#/definitions/v1ScanProfileSpec"
            },
            "propagate": {
              "type": "boolean",
              "description": "Indicates that the object should be visible in the child namespaces."
            }
          },
          "description": "ScanProfile represents the scan configuration to use across different\nprojects."
        }
      },
      "description": "UpdateScanProfileRequest is used by UpdateScanProfile.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "ScanRequestResultScanRequestResultStatus": {
      "type": "string",
      "enum": [
        "SCAN_REQUEST_RESULT_STATUS_UNSPECIFIED",
        "SCAN_REQUEST_RESULT_STATUS_SUCCESS",
        "SCAN_REQUEST_RESULT_STATUS_FAIL",
        "SCAN_REQUEST_RESULT_STATUS_NEUTRAL",
        "SCAN_REQUEST_RESULT_STATUS_ACTION_REQUIRED"
      ],
      "default": "SCAN_REQUEST_RESULT_STATUS_UNSPECIFIED"
    },
    "ScanRequestServiceCreateScanRequestBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the source control scan request.",
          "readOnly": true,
          "x-endor-name": "ScanRequest UUID"
        },
        "tenant_meta": {
          "type": "object",
          "description": "ScanRequests are associated with a tenant.",
          "title": "ScanRequests are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ScanRequestSpec",
          "description": "ScanRequest specifications."
        }
      },
      "description": "ScanRequest represents a request to scan a particular PR and is only\nused by the system.",
      "required": [
        "meta"
      ]
    },
    "ScanRequestServiceUpdateScanRequestBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the source control scan request.",
              "readOnly": true,
              "x-endor-name": "ScanRequest UUID"
            },
            "tenant_meta": {
              "type": "object",
              "description": "ScanRequests are associated with a tenant.",
              "title": "ScanRequests are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1ScanRequestSpec",
              "description": "ScanRequest specifications."
            }
          },
          "description": "ScanRequest represents a request to scan a particular PR and is only\nused by the system."
        }
      },
      "description": "Request to update the scan request.",
      "required": [
        "meta"
      ]
    },
    "ScanResultServiceCreateScanResultBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the object.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Information about the tenant and namespace that the scan ran in.",
          "title": "Information about the tenant and namespace that the scan ran in."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ScanResultSpec",
          "description": "Resource kind specific data."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Contexts keep objects from different scans separated."
        }
      },
      "description": "Contains the results of an endorctl scan.",
      "required": [
        "meta",
        "context"
      ]
    },
    "ScanResultServiceUpdateScanResultBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the object.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Information about the tenant and namespace that the scan ran in.",
              "title": "Information about the tenant and namespace that the scan ran in."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1ScanResultSpec",
              "description": "Resource kind specific data."
            },
            "context": {
              "$ref": "#/definitions/v1Context",
              "description": "Contexts keep objects from different scans separated."
            }
          },
          "description": "Contains the results of an endorctl scan."
        }
      },
      "description": "Request to update a scan result.",
      "required": [
        "meta",
        "context"
      ]
    },
    "ScanResultSpecStatus": {
      "type": "string",
      "enum": [
        "STATUS_UNSPECIFIED",
        "STATUS_SUCCESS",
        "STATUS_PARTIAL_SUCCESS",
        "STATUS_FAILURE",
        "STATUS_RUNNING"
      ],
      "default": "STATUS_UNSPECIFIED",
      "description": "Success state."
    },
    "ScanResultSpecType": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "ScanWorkflowResultServiceCreateScanWorkflowResultBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The unique identifier of the scan workflow result.",
          "readOnly": true,
          "x-endor-name": "Scan Workflow Result UUID"
        },
        "tenant_meta": {
          "type": "object",
          "description": "The tenant to which the scan workflow result belongs.",
          "title": "The tenant to which the scan workflow result belongs."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ScanWorkflowResultSpec",
          "description": "Scan Workflow Result specifications."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Contexts keep objects from different scans separated."
        }
      },
      "description": "ScanWorkflowResult corresponds to a workflow scan result.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "ScanWorkflowResultServiceUpdateScanWorkflowResultBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The unique identifier of the scan workflow result.",
              "readOnly": true,
              "x-endor-name": "Scan Workflow Result UUID"
            },
            "tenant_meta": {
              "type": "object",
              "description": "The tenant to which the scan workflow result belongs.",
              "title": "The tenant to which the scan workflow result belongs."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1ScanWorkflowResultSpec",
              "description": "Scan Workflow Result specifications."
            },
            "context": {
              "$ref": "#/definitions/v1Context",
              "description": "Contexts keep objects from different scans separated."
            }
          },
          "description": "ScanWorkflowResult corresponds to a workflow scan result."
        }
      },
      "description": "Request used to update a scan workflow result.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "ScanWorkflowServiceCreateScanWorkflowBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The unique identifier of the scan workflow.",
          "readOnly": true,
          "x-endor-name": "Scan Workflow UUID"
        },
        "tenant_meta": {
          "type": "object",
          "description": "The tenant to which the scan workflow belongs.",
          "title": "The tenant to which the scan workflow belongs."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ScanWorkflowSpec",
          "description": "Scan Workflow specifications."
        }
      },
      "description": "ScanWorkflow corresponds to a workflow of scan steps.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "ScanWorkflowServiceUpdateScanWorkflowBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The unique identifier of the scan workflow.",
              "readOnly": true,
              "x-endor-name": "Scan Workflow UUID"
            },
            "tenant_meta": {
              "type": "object",
              "description": "The tenant to which the scan workflow belongs.",
              "title": "The tenant to which the scan workflow belongs."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1ScanWorkflowSpec",
              "description": "Scan Workflow specifications."
            }
          },
          "description": "ScanWorkflow corresponds to a workflow of scan steps."
        }
      },
      "description": "Request used to update a scan workflow.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "ScopePolicyServiceCreateScopePolicyBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a scope policy.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Scope policies are issued per namespace.",
          "title": "Scope policies are issued per namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ScopePolicySpec"
        }
      },
      "description": "ScopePolicy represents a scope policy in the system. Scope policies allow users\nto select for a set of projects (or namespaces) as defined by the project selectors.\nIt is the set of policies that are applied to these projects as defined by a policy selector.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "ScopePolicyServiceUpdateScopePolicyBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of a scope policy.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Scope policies are issued per namespace.",
              "title": "Scope policies are issued per namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1ScopePolicySpec"
            }
          },
          "description": "ScopePolicy represents a scope policy in the system. Scope policies allow users\nto select for a set of projects (or namespaces) as defined by the project selectors.\nIt is the set of policies that are applied to these projects as defined by a policy selector."
        }
      },
      "description": "Request to update a scope policy.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "ScpmDataRunner": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "format": "uint64"
        },
        "name": {
          "type": "string"
        },
        "visibility": {
          "type": "string"
        },
        "allows_public_repos": {
          "type": "boolean"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "ScpmDataWebhook": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "config_url": {
          "type": "string"
        },
        "deliveries_url": {
          "type": "string"
        },
        "ping_url": {
          "type": "string"
        },
        "test_url": {
          "type": "string"
        },
        "insecure_ssl": {
          "type": "boolean"
        },
        "active": {
          "type": "boolean"
        },
        "events": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "id": {
          "type": "string",
          "format": "uint64"
        },
        "secret": {
          "type": "string"
        }
      }
    },
    "SecretRuleServiceCreateSecretRuleBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the secret rule.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Rules are associated with a tenant and namespace.",
          "title": "Rules are associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata that identifies the object."
        },
        "spec": {
          "$ref": "#/definitions/v1SecretRuleSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagate indicates that the object should be visible in\nchildren namespaces."
        }
      },
      "required": [
        "meta",
        "spec"
      ]
    },
    "SecretRuleServiceUpdateSecretRuleBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the secret rule.",
              "readOnly": true,
              "x-endor-name": "UUID"
            },
            "tenant_meta": {
              "type": "object",
              "description": "Rules are associated with a tenant and namespace.",
              "title": "Rules are associated with a tenant and namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata that identifies the object."
            },
            "spec": {
              "$ref": "#/definitions/v1SecretRuleSpec"
            },
            "propagate": {
              "type": "boolean",
              "description": "Propagate indicates that the object should be visible in\nchildren namespaces."
            }
          }
        }
      },
      "description": "Request to update a secret rule.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "SecurityAspectMetricSecurityImpactType": {
      "type": "string",
      "enum": [
        "SECURITY_IMPACT_TYPE_UNSPECIFIED",
        "SECURITY_IMPACT_TYPE_IMPROVEMENT",
        "SECURITY_IMPACT_TYPE_REGRESSION",
        "SECURITY_IMPACT_TYPE_NEUTRAL"
      ],
      "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."
    },
    "SecurityAttestationPatch": {
      "type": "object",
      "properties": {
        "included_commits": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SecurityAttestationPatchCommit"
          },
          "description": "Stores all the included commit information."
        },
        "fix_type": {
          "$ref": "#/definitions/PatchFixType",
          "description": "The fix type of this patch."
        },
        "fixed_vulns": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SecurityAttestationPatchVulnerability"
          },
          "description": "The list of fixed vulnerabilities, such as GHSAs, in the assured package version."
        },
        "patch_files": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Stores the content of the patch's files."
        },
        "description": {
          "type": "string",
          "description": "The patches description."
        }
      }
    },
    "SecurityAttestationPatchCommit": {
      "type": "object",
      "properties": {
        "commit_type": {
          "$ref": "#/definitions/CommitCommitType",
          "description": "The commit type of this patch."
        },
        "author": {
          "type": "string",
          "description": "The author of the commit."
        },
        "message": {
          "type": "string",
          "description": "The commit message."
        },
        "commit_date": {
          "type": "string",
          "format": "date-time",
          "description": "The date on which the commit was made."
        },
        "sha": {
          "type": "string"
        },
        "commit_url": {
          "type": "string",
          "description": "The URL to the original commit, such as a GitHub link."
        }
      },
      "required": [
        "commit_type"
      ]
    },
    "SecurityAttestationPatchVulnerability": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the vulnerability, such as GHSA-qmqc-x3r4-6v39."
        },
        "aliases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of aliases of the vulnerability."
        },
        "uuid": {
          "type": "string",
          "description": "The UUID of the corresponding Vuln message in the database that contains the vulnerability details."
        }
      }
    },
    "SecurityAttestationValidation": {
      "type": "object",
      "properties": {
        "vulnerability_name": {
          "type": "string",
          "description": "The name of the vuln fixed."
        },
        "logs_url": {
          "type": "string",
          "description": "The URL to download the validation logs.\nThis is a signed URL valid only for four hours.",
          "readOnly": true
        },
        "logs_upload_content": {
          "type": "string",
          "format": "byte"
        },
        "validated_with_unittest": {
          "type": "boolean",
          "description": "validated_with_unittest is set to true if the exploit was tested through an unittest."
        }
      }
    },
    "SecurityReviewPullRequestServiceCreateSecurityReviewPullRequestBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the security review pull request.",
          "readOnly": true,
          "x-endor-name": "Repository UUID"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Security review pull requests are associated with a tenant.",
          "title": "Security review pull requests are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata for the security review pull request."
        },
        "spec": {
          "$ref": "#/definitions/v1SecurityReviewPullRequestSpec",
          "description": "Security review pull request specifications."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "SecurityReviewPullRequest represents a security review pull request.",
      "required": [
        "meta",
        "context"
      ],
      "x-internal": true
    },
    "SecurityReviewPullRequestServiceUpdateSecurityReviewPullRequestBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the security review pull request.",
              "readOnly": true,
              "x-endor-name": "Repository UUID"
            },
            "tenant_meta": {
              "type": "object",
              "description": "Security review pull requests are associated with a tenant.",
              "title": "Security review pull requests are associated with a tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata for the security review pull request."
            },
            "spec": {
              "$ref": "#/definitions/v1SecurityReviewPullRequestSpec",
              "description": "Security review pull request specifications."
            },
            "context": {
              "$ref": "#/definitions/v1Context"
            }
          },
          "description": "SecurityReviewPullRequest represents a security review pull request.",
          "x-internal": true
        }
      },
      "description": "Request to update the security review pull request.",
      "required": [
        "meta",
        "context"
      ]
    },
    "SecurityReviewPullRequestSpecAnalysisIssue": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/SpecIssueType",
          "description": "Type of special case that occurred."
        },
        "skipped_files": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Files that were skipped due to this issue."
        },
        "errors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Error messages related to this issue."
        },
        "summarized_files": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Files that were grouped together and summarized due to this issue."
        }
      }
    },
    "SecurityReviewQueryServiceCreateSecurityReviewQueryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the security review dashboard summary.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Security Review Dashboard Summary are associated with a tenant.",
          "title": "Security Review Dashboard Summary are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1SecurityReviewQuerySpec",
          "description": "Security Review Dashboard Summary specification."
        }
      },
      "description": "SecurityReviewQuery is an internal API to accelerate the Security Review dashboard operations.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "SegmentIndexRequestServiceCreateSegmentIndexRequestBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the segment index request.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespace of the segment index request.",
          "title": "Namespace of the segment index request."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1SegmentIndexRequestSpec",
          "description": "Resource kind specific data."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "A segment index request allows the caller to provide a set of code\nsegments with their associated metadata that should be indexed as part the\nembeddings store. Embeddings are only created. They are only read through the\nSegmentQueryRequest. The request can include multiple segments to allow\nparallel execution.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "SegmentMatchValidateRequestServiceCreateSegmentMatchValidateRequestBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the segment match validate request.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespace of the segment match validate request.",
          "title": "Namespace of the segment match validate request."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1SegmentMatchValidateRequestSpec",
          "description": "Resource kind specific data."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "title": "A segment match validate request",
      "required": [
        "meta",
        "spec"
      ]
    },
    "SegmentQueryRequestSegmentQuery": {
      "type": "object",
      "properties": {
        "signatures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All signatures for a given file.\nThe order of segments here is the same as 'vectors' and 'code_sizes'."
        },
        "vectors": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1EmbeddingVector"
          },
          "description": "All vectors for a given file.\nThe order of segments here is the same as 'signatures' and 'code_sizes'."
        },
        "file_path": {
          "type": "string",
          "description": "Relative file path."
        },
        "scope": {
          "$ref": "#/definitions/v1DependencyScope",
          "description": "File dependency scope."
        },
        "file_hash": {
          "type": "string",
          "description": "File hash."
        },
        "segmenter_version": {
          "type": "integer",
          "format": "int32",
          "title": "Segmenter version"
        },
        "language": {
          "$ref": "#/definitions/v1Language",
          "description": "Language of the code in the file."
        },
        "code_sizes": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "int64"
          },
          "description": "Code size of each segment.\nThe order of segments here is the same as 'signatures' and 'vectors'."
        },
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SegmentQueryRequestSegmentQueryResult"
          },
          "description": "File version matches. The embeddings api server does all the\ncalculations and can return multiple matches. The matches are sorted\naccording to how close they are to the original request.",
          "readOnly": true
        }
      }
    },
    "SegmentQueryRequestSegmentQueryResult": {
      "type": "object",
      "properties": {
        "file": {
          "type": "string"
        },
        "library": {
          "type": "string"
        },
        "version": {
          "type": "string"
        },
        "version_unique": {
          "type": "string"
        },
        "score": {
          "type": "number",
          "format": "float"
        },
        "aggregated_score": {
          "type": "number",
          "format": "double"
        },
        "rank": {
          "type": "integer",
          "format": "int32"
        },
        "release_date": {
          "type": "string",
          "format": "date-time"
        },
        "match_types": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "description": "Result for a file version query."
    },
    "SegmentQueryRequestServiceCreateSegmentQueryRequestBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the segment query request.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespace of the segment query request.",
          "title": "Namespace of the segment query request."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1SegmentQueryRequestSpec",
          "description": "Resource kind specific data."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "A segment query request allows the caller to send a set of segments and find\nsimilarities based on the embeddings. Callers can send multiple segments in\none call. Caller provides the content and embeddings server responds with the\nbest file version matches.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "SemgrepRuleServiceCreateSemgrepRuleBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the Semgrep rule.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Rules are associated with a tenant and namespace.",
          "title": "Rules are associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata that identifies the object."
        },
        "spec": {
          "$ref": "#/definitions/v1SemgrepRuleSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagate indicates that the object should be visible in child namespaces."
        },
        "disabled": {
          "type": "boolean"
        }
      },
      "required": [
        "meta",
        "spec"
      ]
    },
    "SemgrepRuleServiceUpdateSemgrepRuleBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the Semgrep rule.",
              "readOnly": true,
              "x-endor-name": "UUID"
            },
            "tenant_meta": {
              "type": "object",
              "description": "Rules are associated with a tenant and namespace.",
              "title": "Rules are associated with a tenant and namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata that identifies the object."
            },
            "spec": {
              "$ref": "#/definitions/v1SemgrepRuleSpec"
            },
            "propagate": {
              "type": "boolean",
              "description": "Propagate indicates that the object should be visible in child namespaces."
            },
            "disabled": {
              "type": "boolean"
            }
          }
        }
      },
      "description": "Request to update Semgrep rule.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "ServiceRequestServiceCreateServiceRequestBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a service request.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "ServiceRequests are raised for a specific internal tenant.",
          "title": "ServiceRequests are raised for a specific internal tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "spec": {
          "$ref": "#/definitions/v1ServiceRequestSpec"
        }
      },
      "description": "ServiceRequest defines a message for raising requests to perform resource updates\nneeded by the Endor Labs Sales/CS team.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "ServiceRequestServiceUpdateServiceRequestBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of a service request.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "ServiceRequests are raised for a specific internal tenant.",
              "title": "ServiceRequests are raised for a specific internal tenant."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata is generic for any object."
            },
            "spec": {
              "$ref": "#/definitions/v1ServiceRequestSpec"
            }
          },
          "description": "ServiceRequest defines a message for raising requests to perform resource updates\nneeded by the Endor Labs Sales/CS team.",
          "x-internal": true
        }
      },
      "description": "Request to update a service request.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "ServiceTokenServiceCreateServiceTokenBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the request.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata are generic for any object."
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant metadata required for service tokens.",
          "title": "Tenant metadata required for service tokens."
        },
        "spec": {
          "$ref": "#/definitions/v1ServiceTokenSpec"
        }
      },
      "description": "ServiceToken represents a request for a service token.",
      "required": [
        "meta",
        "tenant_meta"
      ]
    },
    "SortEntrySortEntryOrder": {
      "type": "string",
      "enum": [
        "SORT_ENTRY_ORDER_UNSPECIFIED",
        "SORT_ENTRY_ORDER_ASC",
        "SORT_ENTRY_ORDER_DESC"
      ],
      "default": "SORT_ENTRY_ORDER_UNSPECIFIED"
    },
    "SpecAILimit": {
      "type": "object",
      "properties": {
        "max_credit": {
          "type": "string",
          "format": "int64",
          "description": "The maximum number of credits ( eg. could be tokens or price,etc) allowed."
        },
        "days": {
          "type": "integer",
          "format": "int32",
          "description": "The number of days over which the quota is calculated."
        }
      },
      "description": "AILimit represents quota/threshold setup for AI-related features.",
      "required": [
        "max_credit",
        "days"
      ]
    },
    "SpecAffectedPackage": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem"
        },
        "purl": {
          "type": "string"
        },
        "cpe": {
          "type": "string"
        },
        "cpes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of CPEs associated with the affected package."
        }
      },
      "description": "Package information and version.",
      "required": [
        "name",
        "ecosystem"
      ]
    },
    "SpecAffectedRange": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/RangeRangeType"
        },
        "introduced": {
          "type": "string",
          "description": "The earliest version or commit in which this vulnerability was\nintroduced."
        },
        "fixed": {
          "type": "string",
          "description": "The version or commit in which this vulnerability was fixed."
        },
        "repo": {
          "type": "string",
          "description": "The repository URL."
        },
        "last_affected": {
          "type": "string",
          "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."
        }
      },
      "description": "Affected ranges."
    },
    "SpecAgent": {
      "type": "string",
      "enum": [
        "AGENT_UNSPECIFIED",
        "AGENT_CURSOR",
        "AGENT_CLAUDE",
        "AGENT_CODEX",
        "AGENT_COPILOT"
      ],
      "default": "AGENT_UNSPECIFIED"
    },
    "SpecAgentContext": {
      "type": "object",
      "properties": {
        "resource": {
          "$ref": "#/definitions/SpecContextResource"
        }
      },
      "description": "AgentContext is an instance of context that the agent will use to make\ndecisions."
    },
    "SpecAggregationDetails": {
      "type": "object",
      "properties": {
        "aggregation_type": {
          "$ref": "#/definitions/NotificationActionAggregationType",
          "description": "The type of the aggregation and is selected by the user while creating the policy."
        },
        "aggregation_target_name": {
          "type": "string",
          "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"
        },
        "pkg_version_uuid": {
          "type": "string",
          "description": "The UUID of the package version."
        },
        "pkg_version_name": {
          "type": "string",
          "title": "The name of the package version"
        }
      },
      "description": "The findings are aggregated and notifications are sent based on the aggregation details."
    },
    "SpecAppPatterns": {
      "type": "object",
      "properties": {
        "app_slug": {
          "type": "string",
          "description": "Unique GitHub application slug."
        }
      }
    },
    "SpecAppType": {
      "type": "string",
      "enum": [
        "APP_TYPE_UNSPECIFIED",
        "APP_TYPE_GITHUB_CLOUD",
        "APP_TYPE_GITHUB_ENTERPRISE"
      ],
      "default": "APP_TYPE_UNSPECIFIED"
    },
    "SpecArchType": {
      "type": "string",
      "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"
      ],
      "default": "ARCH_TYPE_UNSPECIFIED",
      "description": "The architecture suitable for the binary."
    },
    "SpecArchitecture": {
      "type": "object",
      "properties": {
        "arch": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/SpecToolChain"
          }
        }
      }
    },
    "SpecAvailableLLM": {
      "type": "string",
      "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",
        "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"
      ],
      "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: Generally available Gemini 3.5 Flash model on Vertex AI."
    },
    "SpecBinaryType": {
      "type": "string",
      "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"
      ],
      "default": "BINARY_TYPE_UNSPECIFIED",
      "description": "The type of the binary."
    },
    "SpecBuildAttestation": {
      "type": "object",
      "properties": {
        "logs_url": {
          "type": "string",
          "description": "The URL to download the build logs.\nThis is a signed URL valid only for four hours.",
          "readOnly": true
        },
        "commands": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Commands used to build the package version."
        },
        "logs_upload_content": {
          "type": "string",
          "format": "byte"
        }
      }
    },
    "SpecCVSSSeverityLevel": {
      "type": "string",
      "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"
      ],
      "default": "CVSS_SEVERITY_LEVEL_UNSPECIFIED",
      "description": "Common severity level enum used across different CVSS versions."
    },
    "SpecCVSSV3Severity": {
      "type": "object",
      "properties": {
        "score": {
          "type": "number",
          "format": "float",
          "description": "The Common Vulnerability Scoring System (CVSS score) provides a\nnumerical (0-10) representation of the severity of an information\nsecurity vulnerability."
        },
        "vector": {
          "type": "string",
          "description": "A specially formatted vector indicating the attack surface and severity\nof the vulnerability. Format is here:\nhttps://www.first.org/cvss/specification-document."
        },
        "level": {
          "$ref": "#/definitions/CVSSV3SeverityLevel",
          "description": "Level of the base severity. This is computed based on the score."
        },
        "temporal_score": {
          "type": "number",
          "format": "float",
          "description": "The Common Vulnerability Scoring System (CVSS score) provides a\nnumerical (0-10) representation of the severity of an information\nsecurity vulnerability."
        },
        "temporal_vector": {
          "type": "string",
          "description": "A specially formatted vector indicating the attack surface and severity\nof the vulnerability. Format is here:\nhttps://www.first.org/cvss/specification-document."
        },
        "temporal_level": {
          "$ref": "#/definitions/CVSSV3SeverityLevel",
          "description": "Level of the severity. This is computed based on the score."
        }
      }
    },
    "SpecCVSSV4Severity": {
      "type": "object",
      "properties": {
        "base_score": {
          "type": "number",
          "format": "float",
          "description": "The Common Vulnerability Scoring System v4.0 base score provides a\nnumerical (0-10) representation of the severity of an information\nsecurity vulnerability."
        },
        "vector": {
          "type": "string",
          "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."
        },
        "base_level": {
          "$ref": "#/definitions/CVSSV4SeverityV4Level",
          "description": "Level of the base severity. This is computed based on the base score."
        },
        "threat_score": {
          "type": "number",
          "format": "float",
          "description": "The CVSS v4.0 threat score provides additional context about the\nexploitability of the vulnerability."
        },
        "threat_level": {
          "$ref": "#/definitions/CVSSV4SeverityV4Level",
          "description": "Level of the threat severity. This is computed based on the threat score."
        },
        "environmental_score": {
          "type": "number",
          "format": "float",
          "description": "The CVSS v4.0 environmental score provides context-specific scoring\nbased on the deployment environment."
        },
        "environmental_level": {
          "$ref": "#/definitions/CVSSV4SeverityV4Level",
          "description": "Level of the environmental severity. This is computed based on the environmental score."
        }
      }
    },
    "SpecCVSSVersion": {
      "type": "string",
      "enum": [
        "CVSS_VERSION_UNSPECIFIED",
        "CVSS_VERSION_V2",
        "CVSS_VERSION_V3",
        "CVSS_VERSION_V4"
      ],
      "default": "CVSS_VERSION_UNSPECIFIED",
      "description": "The CVSS version."
    },
    "SpecCmdPatterns": {
      "type": "object",
      "properties": {
        "line_patterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of patterns to match inside files for other tools."
        },
        "examples": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of examples of tool usage \"in the wild\"."
        }
      }
    },
    "SpecCodeChanges": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "description": "The description of the code changes."
        },
        "file_changes": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/PullRequestSecurityReviewResultInfoFileChanges"
          },
          "description": "The file changes in the security review pull request.\nThe key is the file path and the value is the file changes."
        },
        "added_lines": {
          "type": "integer",
          "format": "int32",
          "description": "The number of added lines in the security review pull request."
        },
        "removed_lines": {
          "type": "integer",
          "format": "int32",
          "description": "The number of removed lines in the security review pull request."
        }
      }
    },
    "SpecConnectionState": {
      "type": "string",
      "enum": [
        "CONNECTION_STATE_UNSPECIFIED",
        "CONNECTION_STATE_CONNECTED",
        "CONNECTION_STATE_DISCONNECTED"
      ],
      "default": "CONNECTION_STATE_UNSPECIFIED"
    },
    "SpecConnectionStatus": {
      "type": "object",
      "properties": {
        "connection_state": {
          "$ref": "#/definitions/SpecConnectionState"
        },
        "last_updated": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "SpecContextResource": {
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "description": "Kind of the object."
        },
        "uuid": {
          "type": "string",
          "description": "Uuid of the object."
        },
        "namespace": {
          "type": "string",
          "description": "Namespace of the object."
        }
      },
      "description": "ContextResource is a target resource of a context. It can be a finding,\nproject, package, namespace, etc."
    },
    "SpecDeployAttestation": {
      "type": "object",
      "properties": {
        "logs_url": {
          "type": "string",
          "description": "The URL to download the deploy logs.\nThis is a signed URL valid only for four hours.",
          "readOnly": true
        },
        "commands": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Commands used to deploy the package version."
        },
        "logs_upload_content": {
          "type": "string",
          "format": "byte"
        }
      }
    },
    "SpecDeviceScreenInfo": {
      "type": "object",
      "properties": {
        "width": {
          "type": "integer",
          "format": "int32"
        },
        "height": {
          "type": "integer",
          "format": "int32"
        },
        "available_width": {
          "type": "integer",
          "format": "int32"
        },
        "available_height": {
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "SpecDeviceUserAgent": {
      "type": "object",
      "properties": {
        "browser_name": {
          "type": "string"
        },
        "browser_version": {
          "type": "string"
        },
        "os_name": {
          "type": "string"
        },
        "os_version": {
          "type": "string"
        }
      }
    },
    "SpecDocumentConsistency": {
      "type": "object",
      "properties": {
        "data_hash": {
          "type": "string",
          "description": "data_hash is the SHA256 hash of the document content.\nUsed to identify the representation being checked."
        },
        "filter": {
          "type": "object",
          "description": "filter contains the uniqueness fields for document identification.\nMust include all fields specified in the vector store's uniqueness_fields."
        }
      },
      "description": "DocumentConsistency represents a lightweight document consistency request.\nContains only the fields needed for deduplication, not full content.",
      "required": [
        "data_hash",
        "filter"
      ]
    },
    "SpecEPSSRecord": {
      "type": "object",
      "properties": {
        "cve_id": {
          "type": "string"
        },
        "probability": {
          "type": "number",
          "format": "double"
        },
        "percentile": {
          "type": "number",
          "format": "double"
        },
        "ingestion_time": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "SpecEPSSScore": {
      "type": "object",
      "properties": {
        "probability_score": {
          "type": "number",
          "format": "double"
        },
        "percentile_score": {
          "type": "number",
          "format": "double"
        }
      }
    },
    "SpecEnabledFeatureType": {
      "type": "string",
      "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"
      ],
      "default": "ENABLED_FEATURE_TYPE_UNSPECIFIED"
    },
    "SpecEndorFingerprint": {
      "type": "object",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The fingerprint values."
        }
      },
      "description": "An engine independent and rule agnostic fingerprint computed based on\nsource location information."
    },
    "SpecEndorLicenseBundleInfo": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/SpecEndorLicenseBundleType",
          "description": "The type of license bundle."
        },
        "expiration_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time when the license bundle expires."
        },
        "limit": {
          "type": "integer",
          "format": "int32",
          "description": "A value of 0 or -1 corresponds to an unlimited license."
        },
        "free_tier": {
          "type": "boolean",
          "description": "Whether this bundle is granted as a free tier."
        }
      },
      "description": "EndorLicenseBundleInfo provides information about a specific license\nbundle."
    },
    "SpecEndorLicenseBundleType": {
      "type": "string",
      "enum": [
        "ENDOR_LICENSE_BUNDLE_TYPE_UNSPECIFIED",
        "ENDOR_LICENSE_BUNDLE_TYPE_OSS_CORE",
        "ENDOR_LICENSE_BUNDLE_TYPE_OSS_PRO",
        "ENDOR_LICENSE_BUNDLE_TYPE_CICD",
        "ENDOR_LICENSE_BUNDLE_TYPE_SECRETS",
        "ENDOR_LICENSE_BUNDLE_TYPE_SBOM_HUB",
        "ENDOR_LICENSE_BUNDLE_TYPE_SUPPLY_CHAIN",
        "ENDOR_LICENSE_BUNDLE_TYPE_ENDOR_PATCHING",
        "ENDOR_LICENSE_BUNDLE_TYPE_CODE",
        "ENDOR_LICENSE_BUNDLE_TYPE_ENDOR_OUTPOST",
        "ENDOR_LICENSE_BUNDLE_TYPE_SECURITY_REVIEW",
        "ENDOR_LICENSE_BUNDLE_TYPE_CODE_PRO",
        "ENDOR_LICENSE_BUNDLE_TYPE_OSS_FIREWALL",
        "ENDOR_LICENSE_BUNDLE_TYPE_AI_GOVERNANCE"
      ],
      "default": "ENDOR_LICENSE_BUNDLE_TYPE_UNSPECIFIED",
      "description": "Enum representing different types of Endor Labs license bundles.\n\n - ENDOR_LICENSE_BUNDLE_TYPE_UNSPECIFIED: Default value. Should not be used.\n - ENDOR_LICENSE_BUNDLE_TYPE_OSS_CORE: Open Source Software (OSS) Core license bundle.\n - ENDOR_LICENSE_BUNDLE_TYPE_OSS_PRO: Open Source Software (OSS) Pro license bundle.\n - ENDOR_LICENSE_BUNDLE_TYPE_CICD: Continuous Integration/Continuous Deployment (CI/CD) license bundle.\n - ENDOR_LICENSE_BUNDLE_TYPE_SECRETS: Secrets Management license bundle.\n - ENDOR_LICENSE_BUNDLE_TYPE_SBOM_HUB: Software Bill of Materials (SBOM) Hub license bundle.\n - ENDOR_LICENSE_BUNDLE_TYPE_SUPPLY_CHAIN: Supply Chain Security license bundle.\n - ENDOR_LICENSE_BUNDLE_TYPE_ENDOR_PATCHING: Endor Patching license bundle.\n - ENDOR_LICENSE_BUNDLE_TYPE_CODE: Discover risks in 1st party code.\n - ENDOR_LICENSE_BUNDLE_TYPE_ENDOR_OUTPOST: Endor Outpost license bundle.\n - ENDOR_LICENSE_BUNDLE_TYPE_SECURITY_REVIEW: Security Review license bundle.\n - ENDOR_LICENSE_BUNDLE_TYPE_CODE_PRO: Discover risks in 1st party code using AI.\n - ENDOR_LICENSE_BUNDLE_TYPE_OSS_FIREWALL: Endor OSS Firewall license bundle.\n - ENDOR_LICENSE_BUNDLE_TYPE_AI_GOVERNANCE: AI Governance license bundle. Grants access to AI agent hook event\ncollection and review (Cursor, Claude Code, etc.)."
    },
    "SpecEndorLicenseFeatureType": {
      "type": "string",
      "enum": [
        "ENDOR_LICENSE_FEATURE_TYPE_UNSPECIFIED",
        "ENDOR_LICENSE_FEATURE_TYPE_SCM_POSTURE_MANAGEMENT",
        "ENDOR_LICENSE_FEATURE_TYPE_SCA",
        "ENDOR_LICENSE_FEATURE_TYPE_SECRETS",
        "ENDOR_LICENSE_FEATURE_TYPE_SBOM_INGESTION",
        "ENDOR_LICENSE_FEATURE_TYPE_CONTAINER_SCAN",
        "ENDOR_LICENSE_FEATURE_TYPE_RECOMMENDATION",
        "ENDOR_LICENSE_FEATURE_TYPE_CICD_DISCOVERY",
        "ENDOR_LICENSE_FEATURE_TYPE_ARTIFACT_SIGN",
        "ENDOR_LICENSE_FEATURE_TYPE_ENDOR_PATCHING",
        "ENDOR_LICENSE_FEATURE_TYPE_SAST",
        "ENDOR_LICENSE_FEATURE_TYPE_AI_MODELS",
        "ENDOR_LICENSE_FEATURE_TYPE_ENDOR_OUTPOST",
        "ENDOR_LICENSE_FEATURE_TYPE_AI_INFERENCE",
        "ENDOR_LICENSE_FEATURE_TYPE_SECURITY_REVIEW",
        "ENDOR_LICENSE_FEATURE_TYPE_GITHUB_ACTIONS",
        "ENDOR_LICENSE_FEATURE_TYPE_AI_SAST",
        "ENDOR_LICENSE_FEATURE_TYPE_PACKAGE_FIREWALL",
        "ENDOR_LICENSE_FEATURE_TYPE_ENDOR_ENRICHMENT",
        "ENDOR_LICENSE_FEATURE_TYPE_AI_GOVERNANCE"
      ],
      "default": "ENDOR_LICENSE_FEATURE_TYPE_UNSPECIFIED",
      "description": " - ENDOR_LICENSE_FEATURE_TYPE_UNSPECIFIED: Type is undefined.\n - ENDOR_LICENSE_FEATURE_TYPE_SCM_POSTURE_MANAGEMENT: SCM Posture Management corresponds to endorctl's Github Scanner and\nensure your respository's configuration is correct.\n - ENDOR_LICENSE_FEATURE_TYPE_SCA: SCA corresponds to endorctl's Git Scanner and runs the Software\nComposition Analysis.\n - ENDOR_LICENSE_FEATURE_TYPE_SECRETS: Secrets corresponds to endorctl's Secrets Scanner.\n - ENDOR_LICENSE_FEATURE_TYPE_SBOM_INGESTION: SBOM (Software Bill of Materials) Ingestion feature for ingesting SBOM\ndata.\n - ENDOR_LICENSE_FEATURE_TYPE_CONTAINER_SCAN: Container Scan feature for scanning container images.\n - ENDOR_LICENSE_FEATURE_TYPE_RECOMMENDATION: Recommendation feature provides recommendations based on change impact\nanalysis results.\n - ENDOR_LICENSE_FEATURE_TYPE_CICD_DISCOVERY: CI/CD Discovery feature discovers CI/CD pipelines tools and\nconfigurations.\n - ENDOR_LICENSE_FEATURE_TYPE_ARTIFACT_SIGN: Artifact Signing feature allows signing artifacts.\n - ENDOR_LICENSE_FEATURE_TYPE_ENDOR_PATCHING: Endor Patching feature allows accessing Endor Labs factory.\n - ENDOR_LICENSE_FEATURE_TYPE_SAST: SAST feature allows scanning source code for security vulnerabilities.\n - ENDOR_LICENSE_FEATURE_TYPE_AI_MODELS: AI Models feature allows scanning source code for AI model usage.\n - ENDOR_LICENSE_FEATURE_TYPE_ENDOR_OUTPOST: Endor Outpost feature allows automated scanning on-premises.\n - ENDOR_LICENSE_FEATURE_TYPE_AI_INFERENCE: AI Inference feature allows querying AI models.\n - ENDOR_LICENSE_FEATURE_TYPE_SECURITY_REVIEW: Security Review feature allows reviewing security code.\n - ENDOR_LICENSE_FEATURE_TYPE_GITHUB_ACTIONS: Github Actions feature allows scanning Github Actions workflows.\n - ENDOR_LICENSE_FEATURE_TYPE_AI_SAST: AI SAST feature allows triage/detection of false positives of SAST findings using AI.\n - ENDOR_LICENSE_FEATURE_TYPE_PACKAGE_FIREWALL: Package Firewall feature allows evaluating packages for security.\n - ENDOR_LICENSE_FEATURE_TYPE_ENDOR_ENRICHMENT: Endor Enrichment feature allows access to Endor-proprietary data.\n - ENDOR_LICENSE_FEATURE_TYPE_AI_GOVERNANCE: AI Governance feature allows recording and reviewing AI agent hook\nevents (e.g. Cursor, Claude Code) for governance and audit."
    },
    "SpecEndorLicenseInfo": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/SpecEndorLicenseFeatureType",
          "description": "The type of license."
        },
        "limit": {
          "type": "integer",
          "format": "int32",
          "description": "A value of 0 or -1 corresponds to an unlimited license."
        },
        "expiration_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time when the license expires."
        },
        "free_tier": {
          "type": "boolean",
          "description": "Whether this is a free-tier (limited) grant."
        }
      },
      "description": "EndorLicenseInfo provides information about a specific feature type and\nits limit."
    },
    "SpecEndorLicenseType": {
      "type": "string",
      "enum": [
        "ENDOR_LICENSE_TYPE_UNSPECIFIED",
        "ENDOR_LICENSE_TYPE_FREE_TRIAL",
        "ENDOR_LICENSE_TYPE_FREE_TIER",
        "ENDOR_LICENSE_TYPE_PREMIUM",
        "ENDOR_LICENSE_TYPE_POV"
      ],
      "default": "ENDOR_LICENSE_TYPE_UNSPECIFIED",
      "description": "EndorLicenseType represents the type of Endor Labs license.\n\n - ENDOR_LICENSE_TYPE_UNSPECIFIED: Type is undefined.\n - ENDOR_LICENSE_TYPE_FREE_TRIAL: FREE TRIAL license is used for self-service signup workflow.\n - ENDOR_LICENSE_TYPE_FREE_TIER: FREE TIER license for free restricted access to Endor Labs products.\n - ENDOR_LICENSE_TYPE_PREMIUM: PREMIUM license for paid customers.\n - ENDOR_LICENSE_TYPE_POV: Sales-led POC Customer."
    },
    "SpecEndorctlConfig": {
      "type": "object",
      "properties": {
        "image": {
          "type": "string"
        },
        "tag": {
          "type": "string",
          "description": "Default will be set to 'latest'."
        },
        "max_duration": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum duration of an endorctl job in minutes."
        }
      }
    },
    "SpecEntryMatchState": {
      "type": "string",
      "enum": [
        "ENTRY_MATCH_STATE_UNSPECIFIED",
        "ENTRY_MATCH_STATE_MATCH",
        "ENTRY_MATCH_STATE_MISMATCH",
        "ENTRY_MATCH_STATE_NOT_FOUND"
      ],
      "default": "ENTRY_MATCH_STATE_UNSPECIFIED",
      "description": " - ENTRY_MATCH_STATE_UNSPECIFIED: Unspecified state.\n - ENTRY_MATCH_STATE_MATCH: The store has an entry that corresponds to the provided document representation.\n - ENTRY_MATCH_STATE_MISMATCH: The store has an entry for this document identity, but it does not correspond\nto the provided representation.\n - ENTRY_MATCH_STATE_NOT_FOUND: The store has no entry for this document identity."
    },
    "SpecEnvironment": {
      "type": "object",
      "properties": {
        "tools": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/EnvironmentTool"
          }
        },
        "arch": {
          "type": "string"
        },
        "endorctl_version": {
          "type": "string"
        },
        "config": {
          "type": "object",
          "description": "Configuration used by endorctl.\nContains everything except credential values."
        },
        "os": {
          "type": "string"
        },
        "memory": {
          "type": "number",
          "format": "double"
        },
        "num_cpus": {
          "type": "integer",
          "format": "int32"
        }
      },
      "required": [
        "arch",
        "endorctl_version",
        "config",
        "os",
        "memory",
        "num_cpus"
      ]
    },
    "SpecErrorCategory": {
      "type": "string",
      "enum": [
        "ERROR_CATEGORY_UNSPECIFIED",
        "ERROR_CATEGORY_PRIVATE_REGISTRY",
        "ERROR_CATEGORY_TOOLCHAIN",
        "ERROR_CATEGORY_REPOSITORY",
        "ERROR_CATEGORY_OTHER"
      ],
      "default": "ERROR_CATEGORY_UNSPECIFIED",
      "description": "The type of error that the rule is for."
    },
    "SpecEvaluationMethodType": {
      "type": "string",
      "enum": [
        "EVALUATION_METHOD_TYPE_UNSPECIFIED",
        "EVALUATION_METHOD_TYPE_SYSTEM",
        "EVALUATION_METHOD_TYPE_USER"
      ],
      "default": "EVALUATION_METHOD_TYPE_UNSPECIFIED",
      "description": "The type of evaluation method.\n\n - EVALUATION_METHOD_TYPE_SYSTEM: SYSTEM indicates an evaluation method that is system wide.\n - EVALUATION_METHOD_TYPE_USER: USER indicates an evaluation method defined by a user."
    },
    "SpecExporterParameters": {
      "type": "object",
      "properties": {
        "exporter_uuids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "exporter_uuids is the list of exporter objects that will be used for\nexports at the end of the scan."
        }
      }
    },
    "SpecExporterType": {
      "type": "string",
      "enum": [
        "EXPORTER_TYPE_UNSPECIFIED",
        "EXPORTER_TYPE_GHAS",
        "EXPORTER_TYPE_S3",
        "EXPORTER_TYPE_WIZ"
      ],
      "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."
    },
    "SpecFilePatterns": {
      "type": "object",
      "properties": {
        "filename_patterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of file name patterns."
        },
        "line_patterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of patterns to match inside a file with a name that matches the file name pattern."
        },
        "examples": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of examples of tool usage \"in the wild\"."
        }
      }
    },
    "SpecFindingData": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "Finding UUID."
        },
        "name": {
          "type": "string",
          "description": "Finding name."
        },
        "description": {
          "type": "string",
          "description": "Finding description."
        },
        "level": {
          "$ref": "#/definitions/SpecFindingLevel",
          "description": "Finding level."
        },
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1FindingTags"
          },
          "description": "Finding tags."
        },
        "categories": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1FindingCategory"
          },
          "description": "Finding categories."
        },
        "approximation": {
          "type": "boolean",
          "description": "True if this finding is for an approximate dependency\nbased on the unresolved package dependencies."
        },
        "create_time": {
          "type": "string",
          "format": "date-time",
          "description": "Time the finding was created.\n\nFormat: 2017-01-15T01:30:15.01Z\nRFC 3339: https://www.ietf.org/rfc/rfc3339.txt."
        },
        "target_dependency_package_name": {
          "type": "string",
          "description": "Fully qualified name of the dependency. For example, eco://package@version."
        }
      },
      "description": "Basic finding metadata that can be used to \"plot trends\"."
    },
    "SpecFindingDetails": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "explanation": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        },
        "dependency": {
          "type": "string"
        },
        "package_version": {
          "type": "string"
        },
        "severity": {
          "type": "string"
        },
        "remediation": {
          "type": "string"
        }
      }
    },
    "SpecFindingLevel": {
      "type": "string",
      "enum": [
        "FINDING_LEVEL_UNSPECIFIED",
        "FINDING_LEVEL_CRITICAL",
        "FINDING_LEVEL_HIGH",
        "FINDING_LEVEL_MEDIUM",
        "FINDING_LEVEL_LOW"
      ],
      "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."
    },
    "SpecFindingRefresh": {
      "type": "object",
      "properties": {
        "ingestion_time": {
          "type": "string",
          "format": "date-time",
          "description": "ingestion_time is the OSS IngestionState watermark (last_vuln_ingestion_time\nor last_malware_ingestion_time) that triggered this finding-refresh. It\ncorrelates the scan back to its ingestion event and drives end-to-end latency\ntracking."
        },
        "trigger": {
          "$ref": "#/definitions/FindingRefreshTrigger",
          "description": "trigger records which ingestion type triggered this finding-refresh."
        }
      },
      "description": "FindingRefresh carries metadata specific to SCAN_REQUEST_TYPE_FINDING_REFRESH\nrequests. Unset for all other scan-request types."
    },
    "SpecFindingsInfo": {
      "type": "object",
      "properties": {
        "critical_findings_count": {
          "type": "integer",
          "format": "int32",
          "description": "Number of critical severity findings."
        },
        "high_findings_count": {
          "type": "integer",
          "format": "int32",
          "description": "Number of high severity findings."
        },
        "medium_findings_count": {
          "type": "integer",
          "format": "int32",
          "description": "Number of medium severity findings."
        },
        "low_findings_count": {
          "type": "integer",
          "format": "int32",
          "description": "Number of low severity findings."
        }
      }
    },
    "SpecHookEventCategory": {
      "type": "string",
      "enum": [
        "HOOK_EVENT_CATEGORY_UNSPECIFIED",
        "HOOK_EVENT_CATEGORY_TOOL",
        "HOOK_EVENT_CATEGORY_SESSION",
        "HOOK_EVENT_CATEGORY_CMD",
        "HOOK_EVENT_CATEGORY_FILE",
        "HOOK_EVENT_CATEGORY_USER_PROMPT"
      ],
      "default": "HOOK_EVENT_CATEGORY_UNSPECIFIED"
    },
    "SpecHookEventName": {
      "type": "string",
      "enum": [
        "HOOK_EVENT_NAME_UNSPECIFIED",
        "HOOK_EVENT_NAME_SESSION_START",
        "HOOK_EVENT_NAME_SESSION_STOP",
        "HOOK_EVENT_NAME_USER_PROMPT_SUBMIT",
        "HOOK_EVENT_NAME_PRE_TOOL_USE",
        "HOOK_EVENT_NAME_POST_TOOL_USE",
        "HOOK_EVENT_NAME_PRE_CMD",
        "HOOK_EVENT_NAME_POST_CMD",
        "HOOK_EVENT_NAME_PRE_FILE_OPERATION",
        "HOOK_EVENT_NAME_POST_FILE_OPERATION"
      ],
      "default": "HOOK_EVENT_NAME_UNSPECIFIED",
      "description": "HookEventName identifies the kind of agent lifecycle or tool event.\nDifferent agents use different names, so here we will have a normalized list."
    },
    "SpecImportedRuleSetResult": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/ImportedRuleSetResultImportedRuleSetResultStatus",
          "description": "The result of the operation."
        },
        "processing_time": {
          "type": "number",
          "format": "float",
          "description": "The total time in seconds that it took to process the request."
        },
        "errors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Any errors encountered during the operation."
        }
      }
    },
    "SpecInput": {
      "type": "object",
      "properties": {
        "temperature": {
          "type": "number",
          "format": "float",
          "description": "temperature of the AI request."
        },
        "top_p": {
          "type": "number",
          "format": "float",
          "description": "topN of the AI request."
        },
        "model": {
          "type": "string",
          "description": "The model which will be used to generate the response of the AI request."
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecMessage"
          },
          "description": "The messages of the AI request."
        },
        "tools": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecTools"
          },
          "description": "The tools of the AI request."
        },
        "response_format": {
          "$ref": "#/definitions/InputResponseFormat",
          "description": "The response format of the message.\nThis is the response format that the LLM needs to return."
        },
        "thinking_level": {
          "$ref": "#/definitions/SpecInputThinkingLevel",
          "description": "ThinkingLevel is the thinking level that the agent will use."
        },
        "max_output_tokens": {
          "type": "integer",
          "format": "int32",
          "description": "MaxOutputTokens is the maximum number of tokens that the agent will\noutput."
        }
      },
      "description": "Input message for the AI request.",
      "required": [
        "model"
      ]
    },
    "SpecInputThinkingLevel": {
      "type": "string",
      "enum": [
        "THINKING_LEVEL_UNSPECIFIED",
        "THINKING_LEVEL_AUTO",
        "THINKING_LEVEL_LOW",
        "THINKING_LEVEL_MEDIUM",
        "THINKING_LEVEL_HIGH"
      ],
      "default": "THINKING_LEVEL_UNSPECIFIED",
      "description": "ThinkingLevel is the thinking level that the agent will use.\n\n - THINKING_LEVEL_AUTO: Some models have a thinking budget."
    },
    "SpecInstall": {
      "type": "object",
      "properties": {
        "host": {
          "type": "string",
          "enum": [
            "claude-code",
            "claude-managed"
          ],
          "description": "Target host: \"claude-code\" or \"claude-managed\"."
        },
        "command": {
          "type": "string",
          "description": "Install command for the host."
        }
      },
      "description": "Install is one host's install recipe.",
      "required": [
        "host",
        "command"
      ]
    },
    "SpecInvitationState": {
      "type": "string",
      "enum": [
        "INVITATION_STATE_UNSPECIFIED",
        "INVITATION_STATE_PENDING",
        "INVITATION_STATE_ACCEPTED",
        "INVITATION_STATE_EMAIL_FAILURE"
      ],
      "default": "INVITATION_STATE_UNSPECIFIED"
    },
    "SpecIssueType": {
      "type": "string",
      "enum": [
        "ISSUE_TYPE_UNSPECIFIED",
        "ISSUE_TYPE_DIFF_TOO_LARGE",
        "ISSUE_TYPE_AI_ERROR",
        "ISSUE_TYPE_QUOTA_EXCEEDED",
        "ISSUE_TYPE_HIGH_DEMAND"
      ],
      "default": "ISSUE_TYPE_UNSPECIFIED",
      "description": " - ISSUE_TYPE_DIFF_TOO_LARGE: Files were skipped due to diff size limits.\n - ISSUE_TYPE_AI_ERROR: AI agent encountered errors but analysis continued.\n - ISSUE_TYPE_QUOTA_EXCEEDED: Quota for the namespace was exceeded.\n - ISSUE_TYPE_HIGH_DEMAND: High demand on our AI agents."
    },
    "SpecJobCategory": {
      "type": "string",
      "enum": [
        "JOB_CATEGORY_UNSPECIFIED",
        "JOB_CATEGORY_SYSTEM",
        "JOB_CATEGORY_USER"
      ],
      "default": "JOB_CATEGORY_UNSPECIFIED",
      "description": " - JOB_CATEGORY_SYSTEM: These are jobs that are initiated by the services\nas a background task. For example, the API Server\ninitiates a cascading deletion job to delete the\nchildren of the parent object.\n - JOB_CATEGORY_USER: User initiated jobs. For example, a job to generate\na report."
    },
    "SpecJobPriority": {
      "type": "string",
      "enum": [
        "JOB_PRIORITY_UNSPECIFIED",
        "JOB_PRIORITY_LOW",
        "JOB_PRIORITY_MEDIUM",
        "JOB_PRIORITY_HIGH"
      ],
      "default": "JOB_PRIORITY_UNSPECIFIED",
      "description": "Priority definitions for the job.\n\n - JOB_PRIORITY_LOW: The job is low priority.\n - JOB_PRIORITY_MEDIUM: The job is medium priority.\n - JOB_PRIORITY_HIGH: The job is high priority."
    },
    "SpecJobState": {
      "type": "string",
      "enum": [
        "JOB_STATE_UNSPECIFIED",
        "JOB_STATE_NEW",
        "JOB_STATE_RUNNING",
        "JOB_STATE_SUCCESS",
        "JOB_STATE_FAILED",
        "JOB_STATE_CANCELLED",
        "JOB_STATE_RETRY"
      ],
      "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."
    },
    "SpecJobType": {
      "type": "string",
      "enum": [
        "JOB_TYPE_UNSPECIFIED",
        "JOB_TYPE_SAMPLE",
        "JOB_TYPE_ANALYTICS_REPORT",
        "JOB_TYPE_LICENSE_REPORT",
        "JOB_TYPE_FINDINGS_REPORT",
        "JOB_TYPE_DEPENDENCIES_REPORT",
        "JOB_TYPE_SKILL_SCORING",
        "JOB_TYPE_CONTRIBUTOR_EXTRACTION",
        "JOB_TYPE_MCP_SCORING",
        "JOB_TYPE_SBOM_EXPORT",
        "JOB_TYPE_OBJECT_CLEANER",
        "JOB_TYPE_VEX_EXPORT"
      ],
      "default": "JOB_TYPE_UNSPECIFIED",
      "description": "JobType is used to match the job to its handler.\nA new job type should be added when a new handler is added.\n\n - JOB_TYPE_SAMPLE: Sample job type.\n - JOB_TYPE_ANALYTICS_REPORT: Analytics report job type.\n - JOB_TYPE_LICENSE_REPORT: License report job type.\n - JOB_TYPE_FINDINGS_REPORT: Findings report job type.\n - JOB_TYPE_DEPENDENCIES_REPORT: Dependencies report job type.\n - JOB_TYPE_SKILL_SCORING: Skill scoring job type.\n - JOB_TYPE_CONTRIBUTOR_EXTRACTION: Contributor extraction job type. The handler iterates all projects\nunder the org/workspace/group identified by the job request and\nextracts contributor information per project.\n - JOB_TYPE_MCP_SCORING: MCP server scoring job type. Runs the riskevaluator pipeline\nagainst an MCP server inventory record and writes the evaluation\nto McpMeta.\n - JOB_TYPE_SBOM_EXPORT: SBOM export job type. Generates a CycloneDx or SPDX SBOM for a\nproject or set of package versions.\n - JOB_TYPE_OBJECT_CLEANER: Object cleaner job type.\n - JOB_TYPE_VEX_EXPORT: VEX export job type. Generates a CycloneDx VEX (Vulnerability\nExploitability eXchange) document for a project or set of package\nversions."
    },
    "SpecKEVRecord": {
      "type": "object",
      "properties": {
        "cve_id": {
          "type": "string"
        },
        "vendor_project": {
          "type": "string"
        },
        "product": {
          "type": "string"
        },
        "vulnerability_name": {
          "type": "string"
        },
        "date_added": {
          "type": "string",
          "format": "date-time"
        },
        "short_description": {
          "type": "string"
        },
        "required_action": {
          "type": "string"
        },
        "due_date": {
          "type": "string",
          "format": "date-time"
        },
        "known_ransomware_campaign_use": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        }
      }
    },
    "SpecLicenseConfiguration": {
      "type": "object",
      "properties": {
        "security_review_configuration": {
          "$ref": "#/definitions/SpecSecurityReviewConfiguration",
          "description": "The configuration for the security review."
        }
      },
      "description": "LicenseConfiguration is the configuration for the Endor Labs license."
    },
    "SpecLinterResultLevel": {
      "type": "string",
      "enum": [
        "LINTER_RESULT_LEVEL_UNSPECIFIED",
        "LINTER_RESULT_LEVEL_ERROR",
        "LINTER_RESULT_LEVEL_WARNING",
        "LINTER_RESULT_LEVEL_INFO",
        "LINTER_RESULT_LEVEL_DEBUG"
      ],
      "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)."
    },
    "SpecLinterResultOrigin": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "SpecMCPServer": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name is the name of the MCP server."
        },
        "stdio": {
          "$ref": "#/definitions/SpecMCPServerStdio"
        },
        "sse": {
          "$ref": "#/definitions/SpecMCPServerSSE"
        }
      },
      "required": [
        "name"
      ]
    },
    "SpecMCPServerSSE": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "description": "URL is the URL of the SSE MCP server."
        }
      },
      "description": "MCPServerSSE is the configuration of an SSE MCP server.",
      "required": [
        "url"
      ]
    },
    "SpecMCPServerStdio": {
      "type": "object",
      "properties": {
        "cmd": {
          "type": "string",
          "description": "Cmd is the command to access the server."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Args is the arguments to pass to the server."
        },
        "env_variables": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Env variables that must be used."
        }
      },
      "description": "MCPServerStdio is the configuration for an MCP server that is accessed\nvia a command line interface.",
      "required": [
        "cmd"
      ]
    },
    "SpecMalwareRange": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/MalwareRangeMalwareRangeType"
        },
        "introduced": {
          "type": "string",
          "description": "The earliest version or commit in which malicious behaviour was\nintroduced."
        },
        "fixed": {
          "type": "string",
          "description": "The version or commit in which malicious behaviour was fixed."
        },
        "repo": {
          "type": "string",
          "description": "The repository URL."
        },
        "osv_id": {
          "type": "string",
          "description": "The OSV ID for the malware record."
        }
      },
      "description": "Affected ranges."
    },
    "SpecMalwareRanges": {
      "type": "object",
      "properties": {
        "ranges": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecMalwareRange"
          }
        }
      }
    },
    "SpecMalwareSource": {
      "type": "string",
      "enum": [
        "MALWARE_SOURCE_UNSPECIFIED",
        "MALWARE_SOURCE_ENDOR",
        "MALWARE_SOURCE_OSV",
        "MALWARE_SOURCE_AMF",
        "MALWARE_SOURCE_INTERNAL"
      ],
      "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."
    },
    "SpecMalwareVersion": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string",
          "description": "The version of the malware record."
        },
        "osv_id": {
          "type": "string",
          "description": "The status of the malware record."
        }
      }
    },
    "SpecMessage": {
      "type": "object",
      "properties": {
        "role": {
          "$ref": "#/definitions/MessageRole"
        },
        "text": {
          "type": "string"
        },
        "tool_calls": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecToolCall"
          },
          "description": "The tool calls of the message.\nThis is only present if the role is ROLE_TOOLS.\nThis is the list of tools that the LLM needs to call."
        }
      },
      "required": [
        "role"
      ]
    },
    "SpecNotificationDismiss": {
      "type": "object",
      "properties": {
        "time": {
          "type": "string",
          "format": "date-time",
          "description": "The time is when the notification was last dismissed."
        },
        "category": {
          "$ref": "#/definitions/NotificationDismissNotificationDismissCategory"
        },
        "comment": {
          "type": "string"
        }
      }
    },
    "SpecNotificationState": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "SpecNpm": {
      "type": "object",
      "properties": {
        "last_seen_sequence_number": {
          "type": "string"
        }
      }
    },
    "SpecOptions": {
      "type": "object",
      "properties": {
        "chat_mode": {
          "type": "boolean",
          "description": "ChatMode is the chat mode that the agent will use."
        },
        "max_iterations": {
          "type": "integer",
          "format": "int32",
          "description": "MaxIterations is the maximum number of iterations that the agent will\nuse."
        },
        "temperature": {
          "type": "number",
          "format": "float",
          "description": "Temperature controls the randomness of the LLM output.\nHigher values (e.g., 1.0) make output more random, while lower values\n(e.g., 0.2) make it more focused and deterministic.\nTypical range is 0.0 to 2.0."
        },
        "seed": {
          "type": "string",
          "format": "int64",
          "description": "Seed is used for reproducible LLM outputs. When set to the same value\nwith identical inputs, the LLM will attempt to produce the same output."
        },
        "top_p": {
          "type": "number",
          "format": "float",
          "description": "TopP (nucleus sampling) controls diversity by limiting token selection\nto a cumulative probability. For example, 0.1 means only tokens\ncomprising the top 10% probability mass are considered.\nTypical range is 0.0 to 1.0."
        },
        "thinking_level": {
          "$ref": "#/definitions/SpecInputThinkingLevel",
          "description": "ThinkingLevel is the thinking level that the agent will use."
        }
      }
    },
    "SpecOutput": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The id of the AI request."
        },
        "choices": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/OutputChoice"
          }
        },
        "completion_usage": {
          "$ref": "#/definitions/OutputCompletionUsage",
          "description": "The usage of the AI request.",
          "readOnly": true
        }
      },
      "description": "Output message for the AI request."
    },
    "SpecPackageCoverage": {
      "type": "object",
      "properties": {
        "total": {
          "type": "integer",
          "format": "int32"
        },
        "scan_failures": {
          "type": "integer",
          "format": "int32"
        },
        "success_rate": {
          "type": "number",
          "format": "float"
        },
        "call_graph_errors": {
          "type": "integer",
          "format": "int32"
        },
        "call_graph_available": {
          "type": "integer",
          "format": "int32"
        },
        "call_graph_success_rate": {
          "type": "number",
          "format": "float"
        },
        "ecosystems": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1Ecosystem"
          }
        },
        "ecosystem_counts": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "description": "Package coverage and success rates.",
      "required": [
        "total",
        "scan_failures",
        "success_rate",
        "call_graph_errors",
        "call_graph_available",
        "call_graph_success_rate",
        "ecosystems",
        "ecosystem_counts"
      ]
    },
    "SpecPackageManagerStatus": {
      "type": "object",
      "properties": {
        "state": {
          "$ref": "#/definitions/SpecPackageManagerStatusState",
          "description": "The state of the package manager.",
          "readOnly": true
        },
        "error_message": {
          "type": "string",
          "description": "error_message if any was found.",
          "readOnly": true
        },
        "last_tested_at": {
          "type": "string",
          "format": "date-time",
          "description": "last_tested_at is the time when the package manager was last tested."
        }
      }
    },
    "SpecPackageManagerStatusState": {
      "type": "string",
      "enum": [
        "STATE_UNSPECIFIED",
        "STATE_SUCCESS",
        "STATE_FAIL"
      ],
      "default": "STATE_UNSPECIFIED",
      "description": "The status of the package manager."
    },
    "SpecPackageVersionData": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Package version name."
        },
        "dependency_count": {
          "type": "integer",
          "format": "int32",
          "description": "Dependency count."
        },
        "finding_count": {
          "type": "integer",
          "format": "int32",
          "description": "Finding count."
        }
      },
      "description": "Data about a deleted package version that helps justify the\nnumber of dependencies and findings deleted by the scan."
    },
    "SpecParameter": {
      "type": "object",
      "properties": {
        "string_value": {
          "type": "string"
        },
        "int_value": {
          "type": "string",
          "format": "int64"
        },
        "bool_value": {
          "type": "boolean"
        },
        "float_value": {
          "type": "number",
          "format": "float"
        }
      },
      "description": "Parameter can be a string, an integer, or a boolean."
    },
    "SpecPatchType": {
      "type": "string",
      "enum": [
        "PATCH_TYPE_UNSPECIFIED",
        "PATCH_TYPE_NEW",
        "PATCH_TYPE_REFACTOR",
        "PATCH_TYPE_NEWER_VULN"
      ],
      "default": "PATCH_TYPE_UNSPECIFIED",
      "description": "Specifies if patch request is for a new package version or updates to existing patches."
    },
    "SpecPlatformSourceType": {
      "type": "string",
      "enum": [
        "PLATFORM_SOURCE_TYPE_UNSPECIFIED",
        "PLATFORM_SOURCE_TYPE_AZURE",
        "PLATFORM_SOURCE_TYPE_BITBUCKET",
        "PLATFORM_SOURCE_TYPE_GITHUB",
        "PLATFORM_SOURCE_TYPE_GITLAB"
      ],
      "default": "PLATFORM_SOURCE_TYPE_UNSPECIFIED",
      "description": "Deprecated: Use platform_type instead."
    },
    "SpecProvisioningConfig": {
      "type": "object",
      "properties": {
        "endorctl_version": {
          "type": "string",
          "description": "Endorctl version."
        },
        "install_build_tools": {
          "type": "boolean",
          "description": "Whether build tools where installed."
        },
        "sandbox_debug": {
          "type": "boolean",
          "description": "Whether sandbox debugging was enabled."
        },
        "insecure_sandbox": {
          "type": "boolean",
          "description": "Whether an insecure scanbox was specified."
        },
        "bazel_remote_cache": {
          "type": "string",
          "description": "GRPC address of the bazel remote cache. If enabled, tool chain downloads are cached locally in the cluster."
        },
        "install_build_tools_dependencies": {
          "type": "boolean",
          "description": "Whether install build tools dependencies was enabled."
        },
        "enable_build_tools_version_detection": {
          "type": "boolean",
          "description": "Whether build tool detection was enabled."
        },
        "use_automated_scan_parameters": {
          "type": "boolean",
          "description": "Whether use automated scan parameters was enabled."
        }
      },
      "description": "Message for provisioning configuration."
    },
    "SpecProvisioningResultData": {
      "type": "object",
      "properties": {
        "provisioning_result_uuid": {
          "type": "string",
          "description": "UUID of the provisioning result."
        },
        "exit_code": {
          "type": "integer",
          "format": "int32",
          "description": "Provisioning exit code."
        },
        "error": {
          "type": "string",
          "description": "Provisioning error message."
        },
        "automated_scan_parameters_config": {
          "$ref": "#/definitions/v1AutomatedScanParametersConfig",
          "description": "Automated scan parameter configuration."
        },
        "auto_detect_result": {
          "$ref": "#/definitions/v1AutoDetectResult",
          "description": "Auto detect results."
        },
        "tool_chains_source": {
          "$ref": "#/definitions/v1ToolChainsSource",
          "description": "Toolchain source."
        },
        "tool_chains": {
          "$ref": "#/definitions/v1ToolChains",
          "description": "Toolchains installed."
        },
        "scan_profile": {
          "$ref": "#/definitions/v1ScanProfile",
          "description": "Scan profile used for provisioning."
        }
      },
      "required": [
        "provisioning_result_uuid"
      ]
    },
    "SpecPypi": {
      "type": "object",
      "properties": {
        "last_processed_package_name": {
          "type": "string"
        },
        "last_processed_time": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "SpecQuota": {
      "type": "object",
      "properties": {
        "max_daily_cloud_scans": {
          "type": "integer",
          "format": "int32",
          "description": "The maximum number of cloud scans per day."
        },
        "max_daily_pr_scans": {
          "type": "integer",
          "format": "int32",
          "description": "The maximum number of cloud pr_scans per day."
        },
        "ai_limit": {
          "$ref": "#/definitions/SpecAILimit",
          "description": "The token level limits set for AI features."
        }
      },
      "description": "Quota for the Endor Labs license."
    },
    "SpecRaw": {
      "type": "object",
      "properties": {
        "osv_vulnerability": {
          "$ref": "#/definitions/osvVulnerability"
        },
        "endor_vulnerability": {
          "$ref": "#/definitions/endorv1Vulnerability"
        },
        "epss_record": {
          "$ref": "#/definitions/SpecEPSSRecord"
        },
        "nvd_vulnerability": {
          "$ref": "#/definitions/v1NVDVulnerability"
        },
        "kev_record": {
          "$ref": "#/definitions/SpecKEVRecord"
        }
      }
    },
    "SpecRequestTimeRange": {
      "type": "object",
      "properties": {
        "start": {
          "type": "string",
          "format": "date-time",
          "description": "Start time for filtering (inclusive)."
        },
        "end": {
          "type": "string",
          "format": "date-time",
          "description": "End time for filtering (inclusive)."
        }
      },
      "description": "Time range filtering."
    },
    "SpecRequestType": {
      "type": "string",
      "enum": [
        "REQUEST_TYPE_UNSPECIFIED",
        "REQUEST_TYPE_CODE_SIGN"
      ],
      "default": "REQUEST_TYPE_UNSPECIFIED",
      "description": " - REQUEST_TYPE_CODE_SIGN: Code Sign."
    },
    "SpecResponseDependencyCounts": {
      "type": "object",
      "properties": {
        "total": {
          "type": "integer",
          "format": "int32",
          "description": "Total number of dependencies.",
          "readOnly": true
        },
        "direct": {
          "type": "integer",
          "format": "int32",
          "description": "Number of direct dependencies.",
          "readOnly": true
        },
        "transitive": {
          "type": "integer",
          "format": "int32",
          "description": "Number of transitive dependencies.",
          "readOnly": true
        },
        "outdated": {
          "type": "integer",
          "format": "int32",
          "description": "Number of outdated dependencies.",
          "readOnly": true
        },
        "unmaintained": {
          "type": "integer",
          "format": "int32",
          "description": "Number of unmaintained dependencies.",
          "readOnly": true
        }
      }
    },
    "SpecResponseFindingCounts": {
      "type": "object",
      "properties": {
        "total": {
          "type": "integer",
          "format": "int32",
          "description": "Total number of findings.",
          "readOnly": true
        },
        "critical": {
          "type": "integer",
          "format": "int32",
          "description": "Number of critical findings.",
          "readOnly": true
        },
        "high": {
          "type": "integer",
          "format": "int32",
          "description": "Number of high severity findings.",
          "readOnly": true
        },
        "medium": {
          "type": "integer",
          "format": "int32",
          "description": "Number of medium severity findings.",
          "readOnly": true
        },
        "low": {
          "type": "integer",
          "format": "int32",
          "description": "Number of low severity findings.",
          "readOnly": true
        },
        "dismissed": {
          "type": "integer",
          "format": "int32",
          "description": "Number of dismissed findings.",
          "readOnly": true
        }
      }
    },
    "SpecResponseTopDependencies": {
      "type": "object",
      "properties": {
        "by_findings": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecResponseTopDependenciesDependencyInfo"
          },
          "description": "Dependencies sorted by finding counts.",
          "readOnly": true
        },
        "by_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecResponseTopDependenciesDependencyInfo"
          },
          "description": "Dependencies sorted by vulnerability counts.",
          "readOnly": true
        },
        "by_reachable_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecResponseTopDependenciesDependencyInfo"
          },
          "description": "Dependencies sorted by reachable vulnerability counts.",
          "readOnly": true
        }
      }
    },
    "SpecResponseTopDependenciesDependencyInfo": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "Dependency UUID.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Dependency name.",
          "readOnly": true
        },
        "finding_counts": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Finding counts for this dependency.",
          "readOnly": true
        },
        "vulnerability_counts": {
          "$ref": "#/definitions/SpecResponseVulnerabilityCounts",
          "description": "Vulnerability counts for this dependency.",
          "readOnly": true
        }
      }
    },
    "SpecResponseTopPackages": {
      "type": "object",
      "properties": {
        "by_findings": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecResponseTopPackagesPackageInfo"
          },
          "description": "Packages sorted by finding counts.",
          "readOnly": true
        },
        "by_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecResponseTopPackagesPackageInfo"
          },
          "description": "Packages sorted by vulnerability counts.",
          "readOnly": true
        },
        "by_reachable_vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecResponseTopPackagesPackageInfo"
          },
          "description": "Packages sorted by reachable vulnerability counts.",
          "readOnly": true
        },
        "by_outdated_dependencies": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecResponseTopPackagesPackageInfo"
          },
          "description": "Packages sorted by outdated dependency counts.",
          "readOnly": true
        },
        "by_unmaintained_dependencies": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecResponseTopPackagesPackageInfo"
          },
          "description": "Packages sorted by unmaintained dependency counts.",
          "readOnly": true
        }
      }
    },
    "SpecResponseTopPackagesPackageInfo": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "Package UUID.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Package name.",
          "readOnly": true
        },
        "finding_counts": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Finding counts for this package.",
          "readOnly": true
        },
        "vulnerability_counts": {
          "$ref": "#/definitions/SpecResponseVulnerabilityCounts",
          "description": "Vulnerability counts for this package.",
          "readOnly": true
        },
        "dependency_counts": {
          "$ref": "#/definitions/SpecResponseDependencyCounts",
          "description": "Dependency counts for this package.",
          "readOnly": true
        }
      }
    },
    "SpecResponseVulnerabilityCounts": {
      "type": "object",
      "properties": {
        "total": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Total vulnerability counts.",
          "readOnly": true
        },
        "normal": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Normal vulnerability counts.",
          "readOnly": true
        },
        "normal_fixable": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Normal fixable vulnerability counts.",
          "readOnly": true
        },
        "reachable": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Reachable vulnerability counts.",
          "readOnly": true
        },
        "normal_fixable_reachable": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Normal fixable reachable vulnerability counts.",
          "readOnly": true
        },
        "potentially_reachable": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Potentially reachable vulnerability counts.",
          "readOnly": true
        },
        "normal_fixable_potentially_reachable": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Normal fixable potentially reachable vulnerability counts.",
          "readOnly": true
        },
        "unreachable": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Unreachable vulnerability counts.",
          "readOnly": true
        },
        "normal_fixable_unreachable": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Normal fixable unreachable vulnerability counts.",
          "readOnly": true
        },
        "exploitable_likelihood": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Exploitable likelihood vulnerability counts.",
          "readOnly": true
        },
        "exploitable_likelihood_reachable": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Vulnerabilities with exploitable likelihood greater than 1% and are reachable.",
          "readOnly": true
        },
        "exploitable_likelihood_potentially_reachable": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Vulnerabilities with exploitable likelihood greater than 1% and are potentially reachable.",
          "readOnly": true
        },
        "low_upgrade_risk": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Vulnerabilities with low upgrade risk.",
          "readOnly": true
        },
        "low_upgrade_risk_reachable": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Vulnerabilities with low upgrade risk and are reachable.",
          "readOnly": true
        },
        "low_upgrade_risk_potentially_reachable": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Vulnerabilities with low upgrade risk and are potentially reachable.",
          "readOnly": true
        }
      }
    },
    "SpecSCMCredentialStatus": {
      "type": "object",
      "properties": {
        "state": {
          "$ref": "#/definitions/SpecSCMCredentialStatusState",
          "description": "The state of the SCM credential.",
          "readOnly": true
        },
        "error_message": {
          "type": "string",
          "description": "error_message if any was found.",
          "readOnly": true
        },
        "last_tested_at": {
          "type": "string",
          "format": "date-time",
          "description": "last_tested_at is the time when the credential was last tested."
        }
      }
    },
    "SpecSCMCredentialStatusState": {
      "type": "string",
      "enum": [
        "STATE_UNSPECIFIED",
        "STATE_SUCCESS",
        "STATE_FAIL"
      ],
      "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."
    },
    "SpecSRRequest": {
      "type": "object",
      "properties": {
        "project_filter": {
          "type": "string",
          "description": "Filter to select project."
        },
        "finding_severities": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SpecSecurityReviewLevel"
          },
          "description": "Severities to include in the summary."
        },
        "traverse": {
          "type": "boolean",
          "description": "Whether to traverse child namespaces."
        },
        "time_range": {
          "$ref": "#/definitions/SpecSRRequestTimeRange",
          "description": "Optional time range filter for security review data."
        },
        "review_time_config": {
          "$ref": "#/definitions/DashboardConfigReviewTimeConfig",
          "description": "Configuration for review time saved calculation.\nIf not provided, defaults will be used: small=5, medium=20, large=30."
        }
      }
    },
    "SpecSRRequestTimeRange": {
      "type": "object",
      "properties": {
        "start": {
          "type": "string",
          "format": "date-time",
          "description": "Start time for filtering (inclusive)."
        },
        "end": {
          "type": "string",
          "format": "date-time",
          "description": "End time for filtering (inclusive)."
        }
      },
      "description": "Time range filtering."
    },
    "SpecSRResponse": {
      "type": "object",
      "properties": {
        "security_review_findings": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Security Review Findings.",
          "readOnly": true
        },
        "top_categories": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SRResponseCategoryInfo"
          },
          "description": "Top categories by various metrics.",
          "readOnly": true
        },
        "top_projects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/TopProjectsProjectInfo"
          },
          "description": "Top projects by various metrics.",
          "readOnly": true
        },
        "top_languages": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SRResponseLanguageInfo"
          },
          "description": "Top languages by various metrics.",
          "readOnly": true
        },
        "security_reviews": {
          "type": "integer",
          "format": "int32",
          "description": "Total number of security review performed.",
          "readOnly": true
        },
        "commits": {
          "type": "integer",
          "format": "int32",
          "description": "Total number of commits reviewed.",
          "readOnly": true
        },
        "pull_requests": {
          "type": "integer",
          "format": "int32",
          "description": "Pull requests reviewed (latest PR scans only).",
          "readOnly": true
        },
        "prs_without_summaries": {
          "type": "integer",
          "format": "int32",
          "description": "Total number of PRs without summaries.",
          "readOnly": true
        },
        "prs_with_summaries": {
          "type": "integer",
          "format": "int32",
          "description": "Total number of PRs with summaries.",
          "readOnly": true
        },
        "projects": {
          "type": "integer",
          "format": "int32",
          "description": "Projects enabled for security review.",
          "readOnly": true
        },
        "review_time_saved_min": {
          "type": "number",
          "format": "double",
          "description": "Review time saved (in minutes).",
          "readOnly": true
        },
        "safe_pull_requests": {
          "type": "integer",
          "format": "int32",
          "description": "Number of safe pull requests.",
          "readOnly": true
        }
      }
    },
    "SpecSandboxConfig": {
      "type": "object",
      "properties": {
        "writable_paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Sandbox writable paths."
        },
        "environment_variables": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Sanbox environment variables."
        },
        "bazel_version": {
          "type": "string",
          "description": "Bazel version."
        },
        "sandbox_strategy": {
          "$ref": "#/definitions/SandboxConfigSandboxStrategyType",
          "description": "Sandbox strategy type."
        },
        "custom_script_config": {
          "$ref": "#/definitions/SandboxConfigCustomScriptConfig",
          "description": "Custom script configuration."
        }
      },
      "description": "Message for sandbox configuration."
    },
    "SpecScanComponent": {
      "type": "string",
      "enum": [
        "SCAN_COMPONENT_UNSPECIFIED",
        "SCAN_COMPONENT_SCA",
        "SCAN_COMPONENT_SAST",
        "SCAN_COMPONENT_AI_SAST",
        "SCAN_COMPONENT_SECRETS"
      ],
      "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."
    },
    "SpecScanCreditGrant": {
      "type": "object",
      "properties": {
        "credits": {
          "type": "string",
          "format": "int64",
          "description": "Number of additional scan credits in this grant. Must be a non-zero\nmultiple of 10,000. Negative values are permitted for corrections."
        },
        "granted_at": {
          "type": "string",
          "format": "date-time",
          "description": "Time at which this grant was applied. Stamped by the backend when the\nentry is first persisted; clients should leave this unset on writes.",
          "readOnly": true
        }
      },
      "description": "ScanCreditGrant captures an additional scan credit bucket granted to a\ntenant outside the standard per-bundle entitlement. CS adds entries via\nServiceRequest when upselling extra credits (typically 10,000 buckets).\nNegative values are allowed to record corrections.",
      "required": [
        "credits"
      ]
    },
    "SpecScanRequestOrigin": {
      "type": "string",
      "enum": [
        "SCAN_REQUEST_ORIGIN_UNSPECIFIED",
        "SCAN_REQUEST_ORIGIN_GITHUB",
        "SCAN_REQUEST_ORIGIN_GITLAB",
        "SCAN_REQUEST_ORIGIN_BITBUCKET",
        "SCAN_REQUEST_ORIGIN_AZURE"
      ],
      "default": "SCAN_REQUEST_ORIGIN_UNSPECIFIED"
    },
    "SpecScanRequestResult": {
      "type": "object",
      "properties": {
        "ci_run_uuid": {
          "type": "string",
          "description": "The execution id of the scan."
        },
        "status": {
          "$ref": "#/definitions/ScanRequestResultScanRequestResultStatus",
          "description": "The status exit code of the run."
        },
        "scan_time": {
          "type": "number",
          "format": "float",
          "description": "scan_time in seconds is the total time to process this scan request\ncalculated in seconds."
        }
      }
    },
    "SpecScanRequestStatus": {
      "type": "string",
      "enum": [
        "SCAN_REQUEST_STATUS_UNSPECIFIED",
        "SCAN_REQUEST_STATUS_QUEUED",
        "SCAN_REQUEST_STATUS_IN_PROGRESS",
        "SCAN_REQUEST_STATUS_COMPLETE",
        "SCAN_REQUEST_STATUS_FAILED"
      ],
      "default": "SCAN_REQUEST_STATUS_UNSPECIFIED"
    },
    "SpecScanRequestType": {
      "type": "string",
      "enum": [
        "SCAN_REQUEST_TYPE_UNSPECIFIED",
        "SCAN_REQUEST_TYPE_WEBHOOK",
        "SCAN_REQUEST_TYPE_SCHEDULED",
        "SCAN_REQUEST_TYPE_ANALYTICS",
        "SCAN_REQUEST_TYPE_FINDING_REFRESH"
      ],
      "default": "SCAN_REQUEST_TYPE_UNSPECIFIED",
      "description": " - SCAN_REQUEST_TYPE_UNSPECIFIED: Type is undefined.\n - SCAN_REQUEST_TYPE_WEBHOOK: SCAN_REQUEST_TYPE_WEBHOOK is a scan is an event driven request.\n - SCAN_REQUEST_TYPE_SCHEDULED: SCAN_REQUEST_TYPE_SCHEDULE is a periodic schedule scan request.\n - SCAN_REQUEST_TYPE_ANALYTICS: SCAN_REQUEST_TYPE_ANALYTICS is a request only for analytics.\n - SCAN_REQUEST_TYPE_FINDING_REFRESH: SCAN_REQUEST_TYPE_FINDING_REFRESH is a lightweight re-evaluation of\nfindings from persisted DependencyMetadata, without a full re-scan of\nthe repository."
    },
    "SpecSchedulerConfig": {
      "type": "object",
      "properties": {
        "image": {
          "type": "string"
        },
        "tag": {
          "type": "string",
          "description": "Default will be set to 'latest'."
        },
        "max_running_jobs": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum number of endorctl jobs that can be run concurrently."
        }
      }
    },
    "SpecSecurityAttestation": {
      "type": "object",
      "properties": {
        "patches": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SecurityAttestationPatch"
          },
          "description": "The list of all new patches applied to the assured package version."
        },
        "validations": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SecurityAttestationValidation"
          },
          "description": "The list of validations performed on the assured package version."
        }
      }
    },
    "SpecSecurityReviewConfiguration": {
      "type": "object",
      "properties": {
        "max_pr_reviews_per_month": {
          "type": "integer",
          "format": "int32",
          "description": "The maximum number of PR reviews per month."
        }
      },
      "description": "SecurityReviewConfiguration is the configuration for the security review."
    },
    "SpecSecurityReviewLevel": {
      "type": "string",
      "enum": [
        "SECURITY_REVIEW_LEVEL_UNSPECIFIED",
        "SECURITY_REVIEW_LEVEL_CRITICAL",
        "SECURITY_REVIEW_LEVEL_HIGH",
        "SECURITY_REVIEW_LEVEL_MEDIUM",
        "SECURITY_REVIEW_LEVEL_LOW"
      ],
      "default": "SECURITY_REVIEW_LEVEL_UNSPECIFIED",
      "description": "SecurityReviewLevel severity level.\n\n - SECURITY_REVIEW_LEVEL_CRITICAL: Critical Security Review.\n - SECURITY_REVIEW_LEVEL_HIGH: Very important Security Review.\n - SECURITY_REVIEW_LEVEL_MEDIUM: Important Security Review.\n - SECURITY_REVIEW_LEVEL_LOW: Low priority Security Review."
    },
    "SpecSecurityReviewScannerParameters": {
      "type": "object",
      "properties": {
        "user_prompt": {
          "type": "string",
          "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."
        },
        "disable_code_summary": {
          "type": "boolean",
          "description": "disable_code_summary indicates that the code summary part of the\nsecurity review should be disabled whether or not there are findings."
        }
      }
    },
    "SpecStateStatus": {
      "type": "string",
      "enum": [
        "STATUS_UNSPECIFIED",
        "STATUS_OPENED",
        "STATUS_IN_PROCESS",
        "STATUS_CLOSED",
        "STATUS_WONT_DO",
        "STATUS_DUPLICATE"
      ],
      "default": "STATUS_UNSPECIFIED",
      "description": "Status of a request."
    },
    "SpecStorage": {
      "type": "object",
      "properties": {
        "enable_storage_persistence": {
          "type": "boolean",
          "description": "Whether to store the AI request in the database."
        }
      }
    },
    "SpecSupportedVersions": {
      "type": "object",
      "properties": {
        "versions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SupportedVersion"
          }
        }
      }
    },
    "SpecTestAttestation": {
      "type": "object",
      "properties": {
        "are_tests_run": {
          "type": "boolean",
          "description": "Flag to identify whether the tests were executed or not."
        },
        "logs_url": {
          "type": "string",
          "description": "The URL to download the test logs.\nThis is a signed URL valid only for four hours.",
          "readOnly": true
        },
        "commands": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Commands used to test the package version."
        },
        "logs_upload_content": {
          "type": "string",
          "format": "byte"
        }
      }
    },
    "SpecToolCall": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The id of the tool call."
        },
        "function": {
          "$ref": "#/definitions/ToolCallToolCallFunction",
          "description": "The function of the tool call."
        }
      },
      "required": [
        "id"
      ]
    },
    "SpecToolChain": {
      "type": "object",
      "properties": {
        "toolchain": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/SpecSupportedVersions"
          }
        }
      }
    },
    "SpecTools": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the tool."
        },
        "description": {
          "type": "string",
          "description": "The description of the tool."
        },
        "schema": {
          "type": "object",
          "description": "The schema of input to the tool."
        }
      },
      "description": "The tools of the AI request.",
      "required": [
        "name"
      ]
    },
    "SpecUITelemetryEvent": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "timestamp": {
          "type": "string",
          "format": "date-time"
        },
        "value": {
          "type": "string"
        },
        "properties": {
          "$ref": "#/definitions/googleprotobufAny"
        }
      },
      "required": [
        "key",
        "timestamp"
      ]
    },
    "SpecUpgradeSummary": {
      "type": "object",
      "properties": {
        "line_added": {
          "type": "integer",
          "format": "int32",
          "description": "The number of line added with the patches."
        },
        "line_removed": {
          "type": "integer",
          "format": "int32",
          "description": "The number of line removed with the patches."
        },
        "fixed_vulns": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/UpgradeSummaryVulns"
          },
          "title": "Vuln fixed per severity level"
        },
        "number_of_endor_patches": {
          "type": "integer",
          "format": "int32",
          "description": "The number of patches written by Endor Labs."
        },
        "number_of_original_patches": {
          "type": "integer",
          "format": "int32",
          "description": "The number of patches from the original source."
        },
        "are_tests_run": {
          "type": "boolean",
          "description": "The flag to identify whether the test were executed or not."
        }
      },
      "description": "UpgradeInfo contains the summary of the impact of the upgrade of the package."
    },
    "SpecUserTelemetryEvent": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "timestamp": {
          "type": "string",
          "format": "date-time"
        },
        "value": {
          "type": "string"
        },
        "properties": {
          "$ref": "#/definitions/googleprotobufAny"
        }
      },
      "required": [
        "key",
        "timestamp"
      ]
    },
    "SpecVector": {
      "type": "object",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "float"
          }
        }
      },
      "description": "The vector of the embedding."
    },
    "SpecVersionType": {
      "type": "string",
      "enum": [
        "VERSION_TYPE_UNSPECIFIED",
        "VERSION_TYPE_PINNED",
        "VERSION_TYPE_LATEST",
        "VERSION_TYPE_AUTO"
      ],
      "default": "VERSION_TYPE_UNSPECIFIED",
      "description": " - VERSION_TYPE_UNSPECIFIED: Version type is undefined.\n - VERSION_TYPE_PINNED: Signifies that the version is pinned. For instance v1.2.3-endor-2024-01-01.\n - VERSION_TYPE_LATEST: Signifies that the version is latest. For instance v1.2.3-endor-latest.\n - VERSION_TYPE_AUTO: Signifies that the version is auto. For instance v1.2.3."
    },
    "SpecVulnerabilityType": {
      "type": "string",
      "enum": [
        "VULNERABILITY_TYPE_UNSPECIFIED",
        "VULNERABILITY_TYPE_MALICIOUS"
      ],
      "default": "VULNERABILITY_TYPE_UNSPECIFIED",
      "description": "Enum representing the type of vulnerability."
    },
    "SpecWorkflowResult": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/ScanResultSpecStatus",
          "description": "status is the success state."
        },
        "error": {
          "$ref": "#/definitions/WorkflowResultWorkflowResultError",
          "description": "error is the reason that a workflow step fails."
        },
        "scan_duration": {
          "type": "string",
          "description": "scan_duration is how log the scan ran."
        },
        "title": {
          "type": "string",
          "description": "title is descriptive text of the workflow step."
        },
        "scan_profile_uuid": {
          "type": "string",
          "description": "scan_profile_uuid is the UUID of the ScanProfile of the workflow step."
        },
        "scan_result_uuid": {
          "type": "string",
          "description": "scan_result_uuid is the UUID of the ScanResult of the workflow step."
        },
        "provisioning_result_uuid": {
          "type": "string",
          "description": "provisioning_result_uuid is the UUID of the ProvisioningResult of the workflow step."
        }
      }
    },
    "SpecWorkflowStep": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string",
          "description": "title is descriptive text of the workflow step."
        },
        "scan_profile_uuid": {
          "type": "string",
          "description": "scan_profile_uuid is the UUID of the ScanProfile of the workflow step."
        },
        "disabled": {
          "type": "boolean",
          "description": "disable is a way to disable a WorkflowStep without having to delete it."
        }
      },
      "required": [
        "title",
        "scan_profile_uuid"
      ]
    },
    "StateComment": {
      "type": "object",
      "properties": {
        "comment": {
          "type": "string"
        },
        "time": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "SupportAccessRequestServiceCreateSupportAccessRequestBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The uuid of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "The tenant metadata restricts access to a specific tenant.",
          "title": "The tenant metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1SupportAccessRequestSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates that the object should be visible in the child namespaces."
        }
      },
      "description": "Implements the API to grant access to support for a given namespace. It will\ncreate an authorization policy that allows access to the support team.",
      "required": [
        "tenant_meta",
        "meta"
      ]
    },
    "SupportedToolChainVersionServiceCreateSupportedToolChainVersionBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "UUID is a universally unique identifier for the tool chain profile.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant related data for the tenant containing the resource."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Meta identifies the tool chain object."
        },
        "spec": {
          "$ref": "#/definitions/v1SupportedToolChainVersionSpec"
        },
        "propagate": {
          "type": "boolean"
        }
      },
      "description": "SupportedToolChainVersion represents the versions that are maintained\nby Endor Labs.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "SupportedToolChainVersionServiceUpdateSupportedToolChainVersionBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "UUID is a universally unique identifier for the tool chain profile.",
              "readOnly": true,
              "x-endor-name": "UUID"
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant related data for the tenant containing the resource."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Meta identifies the tool chain object."
            },
            "spec": {
              "$ref": "#/definitions/v1SupportedToolChainVersionSpec"
            },
            "propagate": {
              "type": "boolean"
            }
          },
          "description": "SupportedToolChainVersion represents the versions that are maintained\nby Endor Labs.",
          "x-internal": true
        }
      },
      "description": "UpdateSupportedToolChainVersionRequest is used by UpdateSupportedToolChainVersion.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "SystemConfigAiConfig": {
      "type": "object",
      "properties": {
        "code_segment_processing": {
          "type": "boolean",
          "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."
        }
      },
      "description": "AI related system configuration."
    },
    "SystemConfigAnalyticsConfig": {
      "type": "object",
      "properties": {
        "enable_finding_prioritization": {
          "type": "boolean",
          "description": "Set to true to enable finding prioritization."
        },
        "enable_version_upgrade_prioritization": {
          "type": "boolean",
          "description": "Set to true to enable version upgrade prioritization."
        },
        "cvss_version": {
          "$ref": "#/definitions/SpecCVSSVersion",
          "description": "Versions of CVSS scores to use."
        }
      }
    },
    "SystemConfigArtifactoryConfig": {
      "type": "object",
      "properties": {
        "enable_streaming": {
          "type": "boolean",
          "description": "Enable streaming mode."
        }
      },
      "description": "ArtifactoryConfig contains all artifactory related system configuration."
    },
    "SystemConfigCloudDeploymentConfig": {
      "type": "object",
      "properties": {
        "nat_network_requests": {
          "type": "boolean",
          "description": "nat_network_requests will force all requests to go through the NAT\nnetwork."
        }
      },
      "description": "CloudDeploymentConfig contains all cloud deployment related configurations.\nThese parameteres can only be modified by the Endor team.",
      "x-internal": true
    },
    "SystemConfigEndorIgnoreConfig": {
      "type": "object",
      "properties": {
        "enable": {
          "type": "boolean",
          "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."
        },
        "custom_file_names": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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."
        }
      },
      "description": "EndorIgnoreConfig contains all ignore file related system configuration."
    },
    "SystemConfigLoggingConfig": {
      "type": "object",
      "properties": {
        "enable_remote_logging": {
          "type": "boolean",
          "description": "Set to true to enable remote logging."
        },
        "remote_ep": {
          "type": "string",
          "description": "Remote logging endpoint."
        },
        "remote_log_level": {
          "$ref": "#/definitions/v1LogLevel",
          "description": "Log level for remote logging."
        }
      }
    },
    "SystemConfigPackageFirewallConfig": {
      "type": "object",
      "properties": {
        "min_age_hours": {
          "type": "integer",
          "format": "int32",
          "description": "Minimum age in hours for a package to be allowed (0 = disabled)."
        },
        "min_age_action": {
          "$ref": "#/definitions/v1PackageFirewallAction",
          "description": "Action to take when a package does not meet the minimum age requirement."
        },
        "exceptions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/PackageFirewallConfigException"
          },
          "description": "Exception rules. If any exception matches the request, all checks are skipped."
        },
        "malware_action": {
          "$ref": "#/definitions/v1PackageFirewallAction",
          "description": "Action to take when malware is detected in a package."
        },
        "restricted_licenses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of restricted SPDX license identifiers.\nPackages with these licenses are subject to restricted_license_action."
        },
        "restricted_license_action": {
          "$ref": "#/definitions/v1PackageFirewallAction",
          "description": "Action to take when a package has a restricted license."
        },
        "cvss_severity_threshold": {
          "$ref": "#/definitions/SpecCVSSSeverityLevel",
          "description": "Minimum CVSS severity level that triggers cvss_severity_action. Packages with a vulnerability\nat or above this threshold are subject to cvss_severity_action. Unspecified disables CVSS checks.\nThe CVSS version used to evaluate this threshold is determined by AnalyticsConfig.cvss_version.\nMust be UNSPECIFIED, HIGH, or CRITICAL."
        },
        "cvss_severity_action": {
          "$ref": "#/definitions/v1PackageFirewallAction",
          "description": "Action to take when a package has a vulnerability meeting or exceeding cvss_severity_threshold."
        },
        "notification_rules": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/PackageFirewallConfigFirewallNotificationRule"
          },
          "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."
        }
      },
      "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."
    },
    "SystemConfigPolicyConfig": {
      "type": "object",
      "properties": {
        "auto_enable": {
          "type": "boolean",
          "description": "Automatically enable new system policies on release upgrade."
        },
        "auto_update": {
          "type": "boolean",
          "description": "Automatically update policies if the corresponding policy\ntemplate has changed between releases."
        }
      },
      "description": "PolicyConfig contains all policy related system configuration."
    },
    "SystemConfigSastConfig": {
      "type": "object",
      "properties": {
        "enable_semgrep": {
          "type": "boolean",
          "description": "Opt-in for the usage of semgrep."
        },
        "enable_code_snippet_storage": {
          "type": "boolean",
          "description": "Set to true to enable code snippet storage."
        }
      },
      "description": "SastConfig contains all SAST related system configuration."
    },
    "SystemConfigServiceCreateSystemConfigBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the system configuration.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "SystemConfig is associated with a tenant and namespace.",
          "title": "SystemConfig is associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1SystemConfigSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates that the object should be visible in child namespaces."
        }
      },
      "description": "SystemConfig represents the system configuration for a tenant.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "SystemConfigServiceUpdateSystemConfigBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the system configuration.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "SystemConfig is associated with a tenant and namespace.",
              "title": "SystemConfig is associated with a tenant and namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1SystemConfigSpec"
            },
            "propagate": {
              "type": "boolean",
              "description": "Indicates that the object should be visible in child namespaces."
            }
          },
          "description": "SystemConfig represents the system configuration for a tenant."
        }
      },
      "description": "Request to update a system configuration.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "SystemConfigUrgentNotificationConfig": {
      "type": "object",
      "properties": {
        "enable_urgent_notification": {
          "type": "boolean",
          "description": "Set to true to enable urgent notification."
        },
        "email_addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of email addresses to send urgent notifications to."
        },
        "slack_webhook_url": {
          "type": "string",
          "description": "Option slack channel webhook URL to send the notification to."
        },
        "urgent_notification_threshold": {
          "$ref": "#/definitions/UrgentNotificationConfigUrgentNotificationThreshold",
          "description": "Set urgent notification threshold - either 'definitely' or 'potentially'\naffected package versions."
        }
      },
      "description": "Urgent Notification configuration for critical alerts via email or slack."
    },
    "TableRowGroupServiceCreateTableRowGroupBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the table row group.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "type": "object",
          "description": "TableRowGroups are associated with a tenant and namespace.",
          "title": "TableRowGroups are associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1TableRowGroupSpec"
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "TableRowGroup in the main object that contains an ordered list of TableRows\nand TableDescription with general information about the table.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "TableRowGroupServiceUpdateTableRowGroupBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the table row group.",
              "readOnly": true,
              "x-endor-name": "UUID"
            },
            "tenant_meta": {
              "type": "object",
              "description": "TableRowGroups are associated with a tenant and namespace.",
              "title": "TableRowGroups are associated with a tenant and namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1TableRowGroupSpec"
            },
            "context": {
              "$ref": "#/definitions/v1Context"
            }
          },
          "description": "TableRowGroup in the main object that contains an ordered list of TableRows\nand TableDescription with general information about the table."
        }
      },
      "description": "Request to update a table row group.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "TargetTargetType": {
      "type": "string",
      "enum": [
        "TARGET_TYPE_UNSPECIFIED",
        "TARGET_TYPE_LANGUAGE",
        "TARGET_TYPE_FRAMEWORK",
        "TARGET_TYPE_OS",
        "TARGET_TYPE_CPU_ARCH"
      ],
      "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."
    },
    "TelemetryServiceCreateTelemetryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the telemetry.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespace of the message that is accessed.",
          "title": "Namespace of the message that is accessed."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1TelemetrySpec"
        }
      },
      "description": "Telemetry represents the Prometheus metrics obtained from endorctl processes.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "TemplateParameterQueryApiData": {
      "type": "object",
      "properties": {
        "resource_kind": {
          "type": "string",
          "description": "Resource kind (for example, \"LinterResult\" or \"License\")."
        },
        "input_field": {
          "type": "string",
          "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\")."
        },
        "filter": {
          "type": "string",
          "description": "Optional database filter for the list query (for example,\n\"spec.origin==\\\"LINTER_RESULT_ORIGIN_SECRETS_SCANNER\\\"\")."
        },
        "namespace": {
          "type": "string",
          "description": "Optional value for the namespace to be used when retrieving the\npossible data values."
        }
      },
      "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.",
      "required": [
        "resource_kind",
        "input_field"
      ]
    },
    "TemplateParamsTemplateValue": {
      "type": "object",
      "properties": {
        "name": {
          "$ref": "#/definitions/v1TemplateParamName",
          "description": "The template parameter name."
        },
        "value": {
          "type": "string",
          "description": "The template parameter value."
        }
      },
      "description": "TemplateValue represents a single template parameter name-value pair."
    },
    "ToolCallToolCallFunction": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the tool."
        },
        "description": {
          "type": "string",
          "description": "The description of the tool."
        },
        "arguments": {
          "type": "object",
          "description": "The arguments of the tool."
        },
        "results": {
          "type": "object",
          "description": "The results of the tool."
        }
      }
    },
    "ToolChainProfileArchitectureToolChain": {
      "type": "object",
      "properties": {
        "arch": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1ToolChains"
          }
        }
      }
    },
    "ToolPatternServiceCreateToolPatternBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the tool pattern.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Rules are associated with a tenant and namespace.",
          "title": "Rules are associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata identifies the tool pattern object."
        },
        "spec": {
          "$ref": "#/definitions/v1ToolPatternSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates that the object should be visible in child namespaces."
        }
      },
      "description": "ToolPattern represents the search pattern data for one tool.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "ToolPatternServiceUpdateToolPatternBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the tool pattern.",
              "readOnly": true,
              "x-endor-name": "UUID"
            },
            "tenant_meta": {
              "type": "object",
              "description": "Rules are associated with a tenant and namespace.",
              "title": "Rules are associated with a tenant and namespace."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata identifies the tool pattern object."
            },
            "spec": {
              "$ref": "#/definitions/v1ToolPatternSpec"
            },
            "propagate": {
              "type": "boolean",
              "description": "Indicates that the object should be visible in child namespaces."
            }
          },
          "description": "ToolPattern represents the search pattern data for one tool."
        }
      },
      "description": "Request to update a tool pattern.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "TopProjectsProjectInfo": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "Project UUID.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Project name.",
          "readOnly": true
        },
        "finding_counts": {
          "$ref": "#/definitions/SpecResponseFindingCounts",
          "description": "Finding counts for this project.",
          "readOnly": true
        },
        "vulnerability_counts": {
          "$ref": "#/definitions/SpecResponseVulnerabilityCounts",
          "description": "Vulnerability counts for this project.",
          "readOnly": true
        },
        "dependency_counts": {
          "$ref": "#/definitions/SpecResponseDependencyCounts",
          "description": "Dependency counts for this project.",
          "readOnly": true
        }
      }
    },
    "UITelemetryServiceCreateUITelemetryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the UI telemetry.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespace where the telemetry events were recorded.",
          "title": "Namespace where the telemetry events were recorded."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1UITelemetrySpec"
        }
      },
      "description": "UITelemetry represents events observered from the Endor UI.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "UpdateOptionFindingRecordSet": {
      "type": "object",
      "properties": {
        "fixed": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1BaseImageFindingRecord"
          },
          "description": "Top findings fixed by the update (present on the current base, gone\non the candidate), capped at max_top_records_per_bucket. Rendered\nstruck through in the UI.",
          "readOnly": true
        },
        "introduced": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1BaseImageFindingRecord"
          },
          "description": "Top findings introduced by the update (absent on the current base,\npresent on the candidate), capped at max_top_records_per_bucket.",
          "readOnly": true
        },
        "fixed_num_results": {
          "type": "integer",
          "format": "int32",
          "description": "Total number of fixed findings in this bucket (may exceed len(fixed)\nwhen capped); drives \"View more\" and the count shown by the UI.",
          "readOnly": true
        },
        "introduced_num_results": {
          "type": "integer",
          "format": "int32",
          "description": "Total number of introduced findings in this bucket (may exceed\nlen(introduced) when capped).",
          "readOnly": true
        }
      },
      "description": "One bucket's top changed findings (of the requested record_scope), with\nfixed and introduced kept as separate lists plus their full totals."
    },
    "UpdateOptionReachabilityRecords": {
      "type": "object",
      "properties": {
        "reachable": {
          "$ref": "#/definitions/UpdateOptionFindingRecordSet",
          "description": "Changed findings on dependencies reachable in the app image.",
          "readOnly": true
        },
        "potentially_reachable": {
          "$ref": "#/definitions/UpdateOptionFindingRecordSet",
          "description": "Changed findings on dependencies that may be reachable.",
          "readOnly": true
        },
        "unreachable": {
          "$ref": "#/definitions/UpdateOptionFindingRecordSet",
          "description": "Changed findings on dependencies not reachable in the app image.",
          "readOnly": true
        }
      },
      "description": "Top changed findings for one update option, grouped by reachability."
    },
    "UpdateOptionSeverityRecords": {
      "type": "object",
      "properties": {
        "critical": {
          "$ref": "#/definitions/UpdateOptionFindingRecordSet",
          "description": "Changed critical-severity findings.",
          "readOnly": true
        },
        "high": {
          "$ref": "#/definitions/UpdateOptionFindingRecordSet",
          "description": "Changed high-severity findings.",
          "readOnly": true
        },
        "medium": {
          "$ref": "#/definitions/UpdateOptionFindingRecordSet",
          "description": "Changed medium-severity findings.",
          "readOnly": true
        },
        "low": {
          "$ref": "#/definitions/UpdateOptionFindingRecordSet",
          "description": "Changed low-severity findings.",
          "readOnly": true
        }
      },
      "description": "Top changed findings for one update option, grouped by severity."
    },
    "UpgradeSummaryVulns": {
      "type": "object",
      "properties": {
        "vulns": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Vuln"
          }
        }
      }
    },
    "UrgentNotificationConfigUrgentNotificationThreshold": {
      "type": "string",
      "enum": [
        "URGENT_NOTIFICATION_THRESHOLD_UNSPECIFIED",
        "URGENT_NOTIFICATION_THRESHOLD_DEFINITELY_AFFECTED",
        "URGENT_NOTIFICATION_THRESHOLD_POTENTIALLY_AFFECTED"
      ],
      "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."
    },
    "UserInfoResponseTenantInfo": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the resource.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "The tenant name.",
          "readOnly": true
        },
        "expiry": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp indicating when the tenant is scheduled to expire."
        },
        "license_type": {
          "$ref": "#/definitions/SpecEndorLicenseType",
          "description": "The license type associated with this tenant."
        },
        "organizational_entity_name": {
          "type": "string",
          "title": "The human-readable name of the organization associated with this tenant",
          "readOnly": true
        }
      }
    },
    "UserTelemetryServiceCreateUserTelemetryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the user telemetry.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Namespace where the telemetry events were recorded.",
          "title": "Namespace where the telemetry events were recorded."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1UserTelemetrySpec"
        }
      },
      "description": "UserTelemetry represents user-specific events observered from the Endor Labs UI.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "UserTelemetryServiceUpdateUserTelemetryBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the user telemetry.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Namespace where the telemetry events were recorded.",
              "title": "Namespace where the telemetry events were recorded."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1UserTelemetrySpec"
            }
          },
          "description": "UserTelemetry represents user-specific events observered from the Endor Labs UI."
        }
      },
      "description": "Request to update a user telemetry.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "VEXExportServiceCreateVEXExportBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the VEX.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for the object."
        },
        "tenant_meta": {
          "type": "object",
          "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."
        },
        "spec": {
          "$ref": "#/definitions/v1ExportedVEXSpec"
        }
      },
      "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."
    },
    "VantaConfigVantaAccessTokenAuth": {
      "type": "object",
      "properties": {
        "client_id": {
          "type": "string"
        },
        "client_secret": {
          "type": "string"
        },
        "access_token": {
          "type": "string",
          "readOnly": true
        }
      }
    },
    "VantaConfigVantaAuthMethod": {
      "type": "string",
      "enum": [
        "VANTA_AUTH_METHOD_UNSPECIFIED",
        "VANTA_AUTH_METHOD_ACCESS_TOKEN",
        "VANTA_AUTH_METHOD_ACCESS_API_KEY"
      ],
      "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."
    },
    "VectorStoreDataDeleteQueryServiceCreateVectorStoreDataDeleteQueryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant related data for the tenant containing the resource."
        },
        "spec": {
          "$ref": "#/definitions/v1VectorStoreDataDeleteQuerySpec"
        }
      },
      "description": "VectorStoreDataDeleteQuery deletes documents matching filter whose uniqueness\nfield values are NOT in the provided retain set. This is a generic \"prune\" operation\nuseful for incremental index refresh.",
      "required": [
        "spec"
      ],
      "x-internal": true
    },
    "VectorStoreDataDocumentConsistencyQueryServiceCreateVectorStoreDataDocumentConsistencyQueryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant related data for the tenant containing the resource."
        },
        "spec": {
          "$ref": "#/definitions/v1VectorStoreDataDocumentConsistencyQuerySpec"
        }
      },
      "description": "VectorStoreDataDocumentConsistencyQuery checks which documents need to be updated in a vector store.\nThis is a lightweight check that only requires uniqueness fields and content hash,\navoiding the need to send full document content over the wire.",
      "required": [
        "spec"
      ],
      "x-internal": true
    },
    "VectorStoreDataServiceCreateVectorStoreDataBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant related data for the tenant containing the resource."
        },
        "spec": {
          "$ref": "#/definitions/v1VectorStoreDataSpec"
        }
      },
      "description": "VectorStoreData is the message for uploading data to the vector store.\nIt allows batch uploads.",
      "required": [
        "spec"
      ],
      "x-internal": true
    },
    "VectorStoreMetadataQueryServiceCreateVectorStoreMetadataQueryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant related data for the tenant containing the resource."
        },
        "spec": {
          "$ref": "#/definitions/v1VectorStoreMetadataQuerySpec"
        }
      },
      "description": "VectorStoreMetadataQuery is the message to query the vector store by metadata.",
      "required": [
        "spec"
      ],
      "x-internal": true
    },
    "VectorStoreQueryServiceCreateVectorStoreQueryBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant related data for the tenant containing the resource."
        },
        "spec": {
          "$ref": "#/definitions/v1VectorStoreQuerySpec"
        }
      },
      "description": "VectorStoreQuery is the message to query the vector store.",
      "required": [
        "spec"
      ],
      "x-internal": true
    },
    "VectorStoreServiceCreateVectorStoreBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an VectorStore.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "VectorStores are associated with a tenant or are global.",
          "title": "VectorStores are associated with a tenant or are global."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1VectorStoreSpec",
          "description": "The internal specification of the object."
        },
        "propagate": {
          "type": "boolean",
          "description": "Vector stores can be propagated and accessed in child namespaces."
        }
      },
      "description": "Represents a vector store in the system. The vector store will create all\nthe infrastructure for semantic searches.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "VersionDiffResultRepeatedString": {
      "type": "object",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "VersionUpgradeServiceCreateVersionUpgradeBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant metadata information.",
          "title": "Tenant metadata information."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1VersionUpgradeSpec",
          "description": "The internal specification of the object."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "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.",
      "required": [
        "tenant_meta",
        "meta",
        "context"
      ]
    },
    "VersionUpgradeServiceUpdateVersionUpgradeBody": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "type": "object",
          "properties": {
            "uuid": {
              "type": "string",
              "description": "The UUID of the resource.",
              "readOnly": true
            },
            "tenant_meta": {
              "type": "object",
              "description": "Tenant metadata information.",
              "title": "Tenant metadata information."
            },
            "meta": {
              "$ref": "#/definitions/v1Meta",
              "description": "Metadata required for all objects."
            },
            "spec": {
              "$ref": "#/definitions/v1VersionUpgradeSpec",
              "description": "The internal specification of the object."
            },
            "context": {
              "$ref": "#/definitions/v1Context"
            }
          },
          "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."
        }
      },
      "description": "Request to update a version upgrade.",
      "required": [
        "tenant_meta",
        "meta",
        "context"
      ]
    },
    "VersionUpgradeUpgradeList": {
      "type": "object",
      "properties": {
        "upgrade_list": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ReleaseUpgradeInfo"
          }
        }
      }
    },
    "VulnSpecAffected": {
      "type": "object",
      "properties": {
        "package": {
          "$ref": "#/definitions/SpecAffectedPackage"
        },
        "ranges": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecAffectedRange"
          }
        },
        "versions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "database_specific": {
          "type": "object",
          "description": "Optional. JSON object holding additional information about the\nvulnerability as defined by the database for which the record applies."
        },
        "ecosystem_specific": {
          "type": "object",
          "description": "Optional. JSON object holding additional information about the\nvulnerability as defined by the ecosystem for which the record applies."
        },
        "affected_filepaths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Class name that this vulnerability affects in JVM notation.\nFor example,\n\"com/atlassian/connect/spring/internal/lifecycle/LifecycleController.class\"."
        },
        "affected_callpath_uris": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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\"."
        },
        "fix_commits": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Links to the commits that fix the vulnerability"
        },
        "has_been_fixed": {
          "type": "boolean"
        },
        "source": {
          "$ref": "#/definitions/AffectedSource"
        },
        "maintainer_severity": {
          "$ref": "#/definitions/CVSSV3SeverityLevel",
          "title": "TO DEPRECATE: use maintainer_cvss_level instead"
        },
        "maintainer_cvss_level": {
          "$ref": "#/definitions/SpecCVSSSeverityLevel",
          "description": "maintainer_cvss_level is the severity level of the vulnerability as determined\nby the maintainer. It will determine the finding level if present."
        }
      }
    },
    "VulnSpecCredit": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name to give the credit."
        },
        "contact": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contact methods (URLs)."
        }
      }
    },
    "VulnSpecReference": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/ReferenceReferenceType",
          "description": "The type of the reference."
        },
        "url": {
          "type": "string",
          "description": "The vulnerability URL."
        }
      },
      "required": [
        "type",
        "url"
      ]
    },
    "VulnerabilityComponent": {
      "type": "object",
      "properties": {
        "group_id": {
          "type": "string",
          "description": "Indicates the artifact group id that the CVE affects."
        },
        "artifact_id": {
          "type": "string",
          "description": "Indicates the artifact artifact_id that the CVE affects."
        },
        "vulnerable_versions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of all affected artifact versions."
        },
        "fixed_versions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of all fixed versions.\nCan be more than one if the fix is applied on multiple release branches."
        },
        "vulnerable_filepath": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Class name that this vulnerability affects in JVM notation.\nFor example,\n\"com/atlassian/connect/spring/internal/lifecycle/LifecycleController.class\"."
        },
        "versions_range": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Vulnerable version range in Maven notation. For example, \"[1.1.0,2.1.3)\"."
        },
        "endor_uri": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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\"."
        }
      },
      "required": [
        "group_id",
        "artifact_id"
      ]
    },
    "VulnerabilityServiceCreateVulnerabilityBody": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a vulnerability.",
          "readOnly": true
        },
        "tenant_meta": {
          "type": "object",
          "description": "Tenant related data for the tenant containing the resource."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "spec": {
          "$ref": "#/definitions/v1VulnSpec"
        }
      },
      "description": "Vuln represents an Endor Labs vulnerability in the system.",
      "required": [
        "meta"
      ]
    },
    "WebhookConfigWebhookAuthMethod": {
      "type": "string",
      "enum": [
        "WEBHOOK_AUTH_METHOD_UNSPECIFIED",
        "WEBHOOK_AUTH_METHOD_NONE",
        "WEBHOOK_AUTH_METHOD_BASIC",
        "WEBHOOK_AUTH_METHOD_API_KEY"
      ],
      "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."
    },
    "WebhookConfigWebhookBasicAuth": {
      "type": "object",
      "properties": {
        "username": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      }
    },
    "WebhookConfigWebhookHeader": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "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."
        },
        "value": {
          "type": "string",
          "description": "Header value sent verbatim. Stored as a secret (encrypted at rest,\nredacted in API responses) because values often hold API keys."
        }
      },
      "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.",
      "required": [
        "name",
        "value"
      ]
    },
    "WorkflowAllSecretsExposed": {
      "type": "object",
      "properties": {
        "line_content": {
          "type": "string",
          "description": "Content of the line exposing full 'secrets' object."
        },
        "evidence": {
          "type": "string",
          "description": "Matched keyword from the content of the line."
        },
        "location_uri": {
          "type": "string",
          "description": "Full path of exposed 'secrets' object with the line number."
        }
      },
      "description": "AllSecretsExposed defines the exposure of the 'secrets' object."
    },
    "WorkflowGHTokenPermission": {
      "type": "string",
      "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"
      ],
      "default": "GH_TOKEN_PERMISSION_UNSPECIFIED",
      "description": "GHTokenPermission represents the possible permissions assignable to GITHUB_TOKEN used by the workflow."
    },
    "WorkflowResultWorkflowResultError": {
      "type": "object",
      "properties": {
        "code": {
          "$ref": "#/definitions/v1EndorctlRC",
          "description": "code is the endor return code."
        },
        "error": {
          "type": "string",
          "description": "error is the message of the workflow step failure."
        }
      }
    },
    "clientBucket": {
      "type": "object",
      "properties": {
        "cumulative_count": {
          "type": "string",
          "format": "uint64",
          "description": "Cumulative in increasing order."
        },
        "cumulative_count_float": {
          "type": "number",
          "format": "double",
          "description": "Overrides cumulative_count if \u003e 0."
        },
        "upper_bound": {
          "type": "number",
          "format": "double",
          "description": "Inclusive."
        },
        "exemplar": {
          "$ref": "#/definitions/clientExemplar"
        }
      },
      "description": "A Bucket of a conventional histogram, each of which is treated as\nan individual counter-like time series by Prometheus."
    },
    "clientBucketSpan": {
      "type": "object",
      "properties": {
        "offset": {
          "type": "integer",
          "format": "int32",
          "description": "Gap to previous span, or starting point for 1st span (which can be negative)."
        },
        "length": {
          "type": "integer",
          "format": "int64",
          "description": "Length of consecutive buckets."
        }
      },
      "description": "A BucketSpan defines a number of consecutive buckets in a native\nhistogram with their offset. Logically, it would be more\nstraightforward to include the bucket counts in the Span. However,\nthe protobuf representation is more compact in the way the data is\nstructured here (with all the buckets in a single array separate\nfrom the Spans)."
    },
    "clientCounter": {
      "type": "object",
      "properties": {
        "value": {
          "type": "number",
          "format": "double"
        },
        "exemplar": {
          "$ref": "#/definitions/clientExemplar"
        },
        "created_timestamp": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "clientExemplar": {
      "type": "object",
      "properties": {
        "label": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/clientLabelPair"
          }
        },
        "value": {
          "type": "number",
          "format": "double"
        },
        "timestamp": {
          "type": "string",
          "format": "date-time",
          "description": "OpenMetrics-style."
        }
      }
    },
    "clientGauge": {
      "type": "object",
      "properties": {
        "value": {
          "type": "number",
          "format": "double"
        }
      }
    },
    "clientHistogram": {
      "type": "object",
      "properties": {
        "sample_count": {
          "type": "string",
          "format": "uint64"
        },
        "sample_count_float": {
          "type": "number",
          "format": "double",
          "description": "Overrides sample_count if \u003e 0."
        },
        "sample_sum": {
          "type": "number",
          "format": "double"
        },
        "bucket": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/clientBucket"
          },
          "description": "Buckets for the conventional histogram.\n\nOrdered in increasing order of upper_bound, +Inf bucket is optional."
        },
        "created_timestamp": {
          "type": "string",
          "format": "date-time"
        },
        "schema": {
          "type": "integer",
          "format": "int32",
          "description": "schema defines the bucket schema. Currently, valid numbers are -4 \u003c= n \u003c= 8.\nThey are all for base-2 bucket schemas, where 1 is a bucket boundary in each case, and\nthen each power of two is divided into 2^n logarithmic buckets.\nOr in other words, each bucket boundary is the previous boundary times 2^(2^-n).\nIn the future, more bucket schemas may be added using numbers \u003c -4 or \u003e 8."
        },
        "zero_threshold": {
          "type": "number",
          "format": "double",
          "description": "Breadth of the zero bucket."
        },
        "zero_count": {
          "type": "string",
          "format": "uint64",
          "description": "Count in zero bucket."
        },
        "zero_count_float": {
          "type": "number",
          "format": "double",
          "description": "Overrides sb_zero_count if \u003e 0."
        },
        "negative_span": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/clientBucketSpan"
          },
          "description": "Negative buckets for the native histogram."
        },
        "negative_delta": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "int64"
          },
          "description": "Use either \"negative_delta\" or \"negative_count\", the former for\nregular histograms with integer counts, the latter for float\nhistograms.\n\nCount delta of each bucket compared to previous one (or to zero for 1st bucket)."
        },
        "negative_count": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          },
          "description": "Absolute count of each bucket."
        },
        "positive_span": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/clientBucketSpan"
          },
          "description": "Positive buckets for the native histogram.\nUse a no-op span (offset 0, length 0) for a native histogram without any\nobservations yet and with a zero_threshold of 0. Otherwise, it would be\nindistinguishable from a classic histogram."
        },
        "positive_delta": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "int64"
          },
          "description": "Use either \"positive_delta\" or \"positive_count\", the former for\nregular histograms with integer counts, the latter for float\nhistograms.\n\nCount delta of each bucket compared to previous one (or to zero for 1st bucket)."
        },
        "positive_count": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "double"
          },
          "description": "Absolute count of each bucket."
        },
        "exemplars": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/clientExemplar"
          },
          "description": "Only used for native histograms. These exemplars MUST have a timestamp."
        }
      }
    },
    "clientLabelPair": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      }
    },
    "clientMetricFamily": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "help": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/clientMetricType"
        },
        "metric": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/prometheusclientMetric"
          }
        },
        "unit": {
          "type": "string"
        }
      }
    },
    "clientMetricType": {
      "type": "string",
      "enum": [
        "COUNTER",
        "GAUGE",
        "SUMMARY",
        "UNTYPED",
        "HISTOGRAM",
        "GAUGE_HISTOGRAM"
      ],
      "default": "COUNTER",
      "description": " - COUNTER: COUNTER must use the Metric field \"counter\".\n - GAUGE: GAUGE must use the Metric field \"gauge\".\n - SUMMARY: SUMMARY must use the Metric field \"summary\".\n - UNTYPED: UNTYPED must use the Metric field \"untyped\".\n - HISTOGRAM: HISTOGRAM must use the Metric field \"histogram\".\n - GAUGE_HISTOGRAM: GAUGE_HISTOGRAM must use the Metric field \"histogram\"."
    },
    "clientQuantile": {
      "type": "object",
      "properties": {
        "quantile": {
          "type": "number",
          "format": "double"
        },
        "value": {
          "type": "number",
          "format": "double"
        }
      }
    },
    "clientSummary": {
      "type": "object",
      "properties": {
        "sample_count": {
          "type": "string",
          "format": "uint64"
        },
        "sample_sum": {
          "type": "number",
          "format": "double"
        },
        "quantile": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/clientQuantile"
          }
        },
        "created_timestamp": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "clientUntyped": {
      "type": "object",
      "properties": {
        "value": {
          "type": "number",
          "format": "double"
        }
      }
    },
    "endorv1ConfidenceLevel": {
      "type": "string",
      "enum": [
        "CONFIDENCE_LEVEL_UNSPECIFIED",
        "CONFIDENCE_LEVEL_UNKNOWN",
        "CONFIDENCE_LEVEL_HIGH",
        "CONFIDENCE_LEVEL_MEDIUM",
        "CONFIDENCE_LEVEL_LOW"
      ],
      "default": "CONFIDENCE_LEVEL_UNSPECIFIED",
      "description": "Protobuf definition for ConfidenceLevel."
    },
    "endorv1Job": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a Job.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Jobs are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1JobSpec"
        }
      },
      "description": "The Job represents a background task that is executed by the Job Service.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "endorv1License": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a license.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Licenses live in the system namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1LicenseSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates that the object should be visible in child namespaces."
        }
      },
      "description": "Represents a license in the system.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "endorv1Metric": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the the metric resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Metrics are associated with a tenant and tenant information must be provided."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata identifies the object."
        },
        "spec": {
          "$ref": "#/definitions/v1MetricSpec",
          "description": "The internal specification of a metric."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "This contains the definition all metrics.",
      "required": [
        "tenant_meta",
        "meta",
        "spec",
        "context"
      ]
    },
    "endorv1NotificationAction": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The tenant metadata restrict access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1NotificationActionSpec"
        },
        "response": {
          "$ref": "#/definitions/v1NotificationActionResponse",
          "description": "The return value of the executed notification action.",
          "readOnly": true
        }
      },
      "description": "Implements the notification action.",
      "required": [
        "tenant_meta",
        "meta"
      ]
    },
    "endorv1Package": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "UUID is a universally unique identifier for a package.",
          "readOnly": true,
          "x-endor-name": "Package UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Packages are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageSpec"
        }
      },
      "description": "Package represents a package of a project.\n\nFor Golang:\nEvery golang package of a repository will be an package. For instance\ngithub.com/yarpc/yarpc-go/pkg/encoding is a package of the project github.com/yarpc/yarpc-go.\n\nFor Java:\nEvery artifact of a Java repository will be a package. For instance\ngithub.com/apache/logging-log4j2/log4j-api is a package of the project github.com/apache/logging-log4j2.\n\nThe uuid of the parent project.",
      "required": [
        "meta"
      ]
    },
    "endorv1Tag": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The display name of a tag.",
          "x-endor-name": "Tag Name"
        },
        "sha": {
          "type": "string",
          "description": "The commit SHA of tag references.",
          "x-endor-name": "Tag Commit SHA"
        },
        "commit_date": {
          "type": "string",
          "format": "date-time",
          "title": "The commit date of the tag"
        }
      },
      "description": "The list of tags associated with commits. It is used to mark an individual point in the source control repository's history."
    },
    "endorv1VersionMetadata": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string",
          "title": "The version of the package.\nFor example - 5.23.4"
        },
        "release_time": {
          "type": "string",
          "format": "date-time"
        },
        "license": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Raw license information as returned by the package manager."
        },
        "checksums": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Checksum"
          },
          "description": "A list of checksum types."
        },
        "source_code_url": {
          "type": "string",
          "description": "Source code URL of the package if known."
        },
        "platform_source": {
          "$ref": "#/definitions/v1PlatformSource",
          "description": "The discovered platform source."
        },
        "source_code_ref": {
          "type": "string",
          "description": "The source code reference if known.\nOptional. This can be a tag or a commit SHA."
        },
        "last_updated": {
          "type": "string",
          "format": "date-time",
          "description": "The last time that this particular version was re-synced with the source."
        },
        "license_info": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LicenseInfo"
          },
          "description": "Detailed license information populated by Endor."
        },
        "consumed": {
          "type": "boolean",
          "description": "Set to true once the corresponding source metadata has been created."
        },
        "eol_timestamp": {
          "type": "string",
          "format": "date-time",
          "description": "End of life timestamp the package version if known."
        },
        "lts": {
          "type": "boolean",
          "description": "Set to true if a version is a long-term support (LTS) version."
        },
        "last_package_info_attempt": {
          "type": "string",
          "format": "date-time",
          "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."
        }
      },
      "required": [
        "version",
        "release_time",
        "license"
      ]
    },
    "endorv1Vulnerability": {
      "type": "object",
      "properties": {
        "cve_id": {
          "type": "string",
          "description": "The CVE ID, as it appears in the NVD. For example, CVE-2021-36090."
        },
        "cve_description": {
          "type": "string",
          "description": "A freeform textual summary of the vulnerability."
        },
        "cvss_score": {
          "type": "number",
          "format": "float",
          "description": "The Common Vulnerability Scoring System (CVSS score) provides a numerical\n(0-10) representation of the severity of an information security\nvulnerability."
        },
        "cvss_vector": {
          "type": "string",
          "title": "A specially formatted vector indicating the attack surface and severity of\nthe vulnerability. Format is here:\nhttps://www.first.org/cvss/specification-document"
        },
        "cwe": {
          "type": "string",
          "title": "The Common Weakness Enumeration field, if any.\nSee: https://cwe.mitre.org"
        },
        "cve_references": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Web links containing extra information about the CVE"
        },
        "package_name": {
          "type": "string",
          "title": "A free form name of the affected package / project, e.g. Apache\ncommons-compress"
        },
        "ecosystem": {
          "type": "string",
          "title": "A free form name of the ecosystem, e.g. Maven"
        },
        "fix_commit": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "Links to the commit(s) that fix the vulnerability"
        },
        "additional_notes": {
          "type": "string",
          "description": "Notes by the person that processed the CVE."
        },
        "component": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/VulnerabilityComponent"
          },
          "description": "Information about affected artifacts, versions\nand function identifiers."
        },
        "deepdive": {
          "type": "boolean",
          "description": "Indicates whether the research team performed full analysis on multiple\nartifact_ids involved in CVE."
        },
        "disputed": {
          "type": "boolean",
          "description": "Indicates whether the research team considers a CVE should be disputed\nbased on analysis."
        },
        "nofix": {
          "type": "boolean",
          "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."
        },
        "schema_version": {
          "type": "string",
          "description": "The schema version used for this vulnerability descriptor."
        },
        "malicious": {
          "type": "boolean",
          "description": "Indicates whether this item is classified as malicious or not."
        },
        "withdrawn": {
          "type": "string",
          "format": "date-time",
          "description": "Indicates whether the underlying vulnerability has been withdrawn."
        },
        "last_updated": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp when the vulnerability was last updated."
        }
      },
      "description": "Vulnerability models information that can be extracted by analyzing CVEs.",
      "required": [
        "cve_id",
        "cve_description",
        "package_name",
        "ecosystem",
        "schema_version"
      ]
    },
    "googleprotobufAny": {
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "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."
        }
      },
      "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    }"
    },
    "googlerpcStatus": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "description": "The status code, which should be an enum value of\n[google.rpc.Code][google.rpc.Code]."
        },
        "message": {
          "type": "string",
          "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."
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/googleprotobufAny"
          },
          "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use."
        }
      },
      "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)."
    },
    "osvAffected": {
      "type": "object",
      "properties": {
        "package": {
          "$ref": "#/definitions/osvPackage",
          "description": "Required. Package information."
        },
        "ranges": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/osvRange"
          },
          "description": "Required. Range information."
        },
        "versions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of affected versions."
        },
        "ecosystem_specific": {
          "type": "object",
          "description": "Optional. JSON object holding additional information about the\nvulnerability as defined by the ecosystem for which the record applies."
        },
        "database_specific": {
          "type": "object",
          "description": "Optional. JSON object holding additional information about the\nvulnerability as defined by the database for which the record applies."
        }
      },
      "description": "Affected versions and commits."
    },
    "osvCredit": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name to give credit to."
        },
        "contact": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contact methods (URLs)."
        }
      }
    },
    "osvEvent": {
      "type": "object",
      "properties": {
        "introduced": {
          "type": "string",
          "description": "The earliest version/commit where this vulnerability\nwas introduced in."
        },
        "fixed": {
          "type": "string",
          "description": "The version/commit that this vulnerability was fixed in."
        },
        "limit": {
          "type": "string",
          "description": "The limit to apply to the range."
        }
      },
      "description": "Version events."
    },
    "osvPackage": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "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."
        },
        "ecosystem": {
          "type": "string",
          "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."
        },
        "purl": {
          "type": "string",
          "description": "Optional. The package URL for this package."
        }
      },
      "description": "Package information and version."
    },
    "osvRange": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/osvRangeType",
          "description": "Required. The type of version information."
        },
        "repo": {
          "type": "string",
          "description": "Required if type is GIT. The publicly accessible URL of the repo that can\nbe directly passed to clone commands."
        },
        "events": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/osvEvent"
          },
          "description": "Required. Version event information."
        }
      },
      "description": "Affected ranges."
    },
    "osvRangeType": {
      "type": "string",
      "enum": [
        "UNSPECIFIED",
        "GIT",
        "SEMVER",
        "ECOSYSTEM"
      ],
      "default": "UNSPECIFIED",
      "description": "Type of the version information."
    },
    "osvReference": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/osvReferenceType",
          "description": "Required. The type of the reference."
        },
        "url": {
          "type": "string",
          "description": "Required. The URL."
        }
      },
      "description": "Reference URL."
    },
    "osvReferenceType": {
      "type": "string",
      "enum": [
        "NONE",
        "WEB",
        "ADVISORY",
        "REPORT",
        "FIX",
        "PACKAGE",
        "ARTICLE"
      ],
      "default": "NONE"
    },
    "osvSeverity": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/osvSeverityType",
          "description": "The type of this severity entry."
        },
        "score": {
          "type": "string",
          "description": "The quantitative score."
        }
      }
    },
    "osvSeverityType": {
      "type": "string",
      "enum": [
        "UNSPECIFIED",
        "CVSS_V3"
      ],
      "default": "UNSPECIFIED",
      "description": "Type of the severity."
    },
    "osvVulnerability": {
      "type": "object",
      "properties": {
        "schema_version": {
          "type": "string",
          "description": "The OSV schema version."
        },
        "id": {
          "type": "string",
          "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”."
        },
        "published": {
          "type": "string",
          "format": "date-time",
          "description": "The RFC3339 timestamp indicating when this entry was published."
        },
        "modified": {
          "type": "string",
          "format": "date-time",
          "description": "The RFC3339 timestamp indicating when this entry was last modified."
        },
        "withdrawn": {
          "type": "string",
          "format": "date-time",
          "description": "Optional. The RFC3339 timestamp indicating when this entry is considered to\nbe withdrawn."
        },
        "aliases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. IDs for the same vulnerability in other databases."
        },
        "related": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of IDs of closely related vulnerabilities, such as the same\nproblem in alternate ecosystems."
        },
        "package": {
          "$ref": "#/definitions/osvPackage",
          "description": "Required. Package information."
        },
        "summary": {
          "type": "string",
          "description": "Required. One line human readable summary for the vulnerability. It is\nrecommended to keep this under 120 characters."
        },
        "details": {
          "type": "string",
          "description": "Required. Any additional human readable details for the vulnerability."
        },
        "affected": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/osvAffected"
          },
          "description": "Required. Affected commit ranges and versions."
        },
        "references": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/osvReference"
          },
          "description": "Optional. URLs to more information/advisories (including the\nscheme e.g \"https://\")."
        },
        "database_specific": {
          "type": "object",
          "description": "Optional. JSON object holding additional information about the\nvulnerability as defined by the database for which the record applies."
        },
        "severity": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/osvSeverity"
          },
          "description": "Optional. Severity of the vulnerability."
        },
        "credits": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/osvCredit"
          },
          "description": "Optional. Credits for the vulnerability."
        }
      },
      "description": "A vulnerability entry.\nThe protobuf representation is *NOT* stable and only used for implementing\nthe JSON based API."
    },
    "prometheusclientMetric": {
      "type": "object",
      "properties": {
        "label": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/clientLabelPair"
          }
        },
        "gauge": {
          "$ref": "#/definitions/clientGauge"
        },
        "counter": {
          "$ref": "#/definitions/clientCounter"
        },
        "summary": {
          "$ref": "#/definitions/clientSummary"
        },
        "untyped": {
          "$ref": "#/definitions/clientUntyped"
        },
        "histogram": {
          "$ref": "#/definitions/clientHistogram"
        },
        "timestamp_ms": {
          "type": "string",
          "format": "int64"
        }
      }
    },
    "protobufNullValue": {
      "type": "string",
      "enum": [
        "NULL_VALUE"
      ],
      "default": "NULL_VALUE",
      "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\nThe JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value."
    },
    "v1ADOBoardsConfig": {
      "type": "object",
      "properties": {
        "installation_uuid": {
          "type": "string",
          "description": "UUID of the installation that provides ADO credentials."
        },
        "user_config": {
          "$ref": "#/definitions/ADOBoardsConfigUserConfig",
          "description": "Credentials provided directly by the user (org URL and PAT)."
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ADOBoardsConfigProjectConfig"
          },
          "description": "Projects to create work items in. At least one project must be specified."
        }
      },
      "description": "ADOBoardsConfig configures Azure DevOps Boards as a notification action target.",
      "required": [
        "projects"
      ]
    },
    "v1AICreditMetric": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The uuid of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The tenant metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "meta.name is the model name used.\nMetadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AICreditMetricSpec"
        }
      },
      "description": "Implements metric to measure credits accrued for AI usage per root tenant.",
      "required": [
        "tenant_meta",
        "meta"
      ],
      "x-internal": true
    },
    "v1AICreditMetricSpec": {
      "type": "object",
      "properties": {
        "total_credit_count": {
          "type": "number",
          "format": "double",
          "description": "Indicates total tokens/credits accrued for using this specific AI model for the said AI feature on the accrued date."
        },
        "accrued_date": {
          "type": "string",
          "format": "date-time",
          "description": "Indicates the date when cost was calculated/accrured."
        },
        "llm": {
          "$ref": "#/definitions/SpecAvailableLLM",
          "description": "Indicates the model for which expense is being reported."
        },
        "ai_feature": {
          "$ref": "#/definitions/v1AIFeature",
          "description": "Indicates the feature for which expense is being reported."
        },
        "llm_cost": {
          "type": "number",
          "format": "double",
          "description": "Indicates total cost accrued for using this specific AI model for the said AI feature on the accrued date."
        }
      },
      "required": [
        "total_credit_count",
        "accrued_date",
        "llm"
      ]
    },
    "v1AIEmbeddingsRequest": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the embedding request.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Embedding requests are measured by tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata for the embedding request."
        },
        "spec": {
          "$ref": "#/definitions/v1AIEmbeddingsRequestSpec",
          "description": "Embedding request specifications."
        }
      },
      "description": "AIEmbeddingsRequest represents an AI embedding request in the system.",
      "required": [
        "meta"
      ]
    },
    "v1AIEmbeddingsRequestSpec": {
      "type": "object",
      "properties": {
        "model": {
          "$ref": "#/definitions/v1EmbeddingModel",
          "description": "The model to use for the embedding."
        },
        "provider": {
          "$ref": "#/definitions/v1EmbeddingProvider",
          "description": "The provider to use for the embedding."
        },
        "dimensions": {
          "type": "integer",
          "format": "int32",
          "description": "The dimensions of the embedding. Note that not all models allow this to\nbe set."
        },
        "texts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The texts to embed."
        },
        "vectors": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecVector"
          },
          "description": "The vectors of the embeddings in the same sequence as they were received.",
          "readOnly": true
        }
      },
      "required": [
        "model",
        "provider"
      ]
    },
    "v1AIFeature": {
      "type": "string",
      "enum": [
        "AI_FEATURE_UNSPECIFIED",
        "AI_FEATURE_SECURITY_REVIEW",
        "AI_FEATURE_AI_SAST",
        "AI_FEATURE_AIFP_EVALUATOR",
        "AI_FEATURE_LICENSE_EXTRACTION",
        "AI_FEATURE_MODEL_DISCOVERY",
        "AI_FEATURE_MODEL_METADATA_EXTRACTION",
        "AI_FEATURE_SKILL_SCORING",
        "AI_FEATURE_MCP_RISK_EVALUATION",
        "AI_FEATURE_AI_SAST_CONTEXT_SUMMARY"
      ],
      "default": "AI_FEATURE_UNSPECIFIED",
      "description": "AIFeature identifies which AI feature is making the request.\nThis is used for metrics, billing, and feature tracking.\n\n - AI_FEATURE_AI_SAST_CONTEXT_SUMMARY: AI SAST per-project context summarization that grounds segment prompts."
    },
    "v1AIMeta": {
      "type": "object",
      "properties": {
        "llm_context": {
          "$ref": "#/definitions/v1LLMContext",
          "description": "LLM context for the finding."
        },
        "confidence_justification": {
          "type": "string",
          "description": "Confidence justification for the finding."
        },
        "confidence_level": {
          "$ref": "#/definitions/v1AIMetaConfidenceLevel",
          "description": "Confidence level for the finding."
        }
      },
      "description": "AI metadata for the finding.\nThis is only used for findings generated by AI."
    },
    "v1AIMetaConfidenceLevel": {
      "type": "string",
      "enum": [
        "CONFIDENCE_LEVEL_UNSPECIFIED",
        "CONFIDENCE_LEVEL_CRITICAL",
        "CONFIDENCE_LEVEL_HIGH",
        "CONFIDENCE_LEVEL_MEDIUM",
        "CONFIDENCE_LEVEL_LOW"
      ],
      "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."
    },
    "v1AIModelProvider": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "v1AIQuery": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The uuid of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The tenant metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AIQuerySpec"
        }
      },
      "description": "Implements queries by interacting with the OpenAI API.",
      "required": [
        "tenant_meta",
        "meta"
      ]
    },
    "v1AIQueryQueryType": {
      "type": "string",
      "enum": [
        "QUERY_TYPE_UNSPECIFIED",
        "QUERY_TYPE_OSS_EXPLORER",
        "QUERY_TYPE_HOST_CHECK",
        "QUERY_TYPE_DEPSCANNER",
        "QUERY_TYPE_OSS_LLM"
      ],
      "default": "QUERY_TYPE_UNSPECIFIED",
      "description": " - QUERY_TYPE_UNSPECIFIED: Unspecified query.\n - QUERY_TYPE_OSS_EXPLORER: Query from the OSS Explorer.\n - QUERY_TYPE_HOST_CHECK: Query from the endorctl host-check command.\n - QUERY_TYPE_DEPSCANNER: Query from the endorctl depedency scan.\n - QUERY_TYPE_OSS_LLM: Query from an OSS LLM."
    },
    "v1AIQuerySpec": {
      "type": "object",
      "properties": {
        "input_prompt": {
          "type": "string",
          "description": "The actual query."
        },
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem"
        },
        "output_text": {
          "type": "string",
          "readOnly": true
        },
        "packages": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/AIQueryPackageData"
          },
          "description": "Aggregates the results of the query.",
          "readOnly": true
        },
        "query_type": {
          "$ref": "#/definitions/v1AIQueryQueryType",
          "description": "The query type."
        }
      }
    },
    "v1AIRequest": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The uuid of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The tenant metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AIRequestSpec"
        }
      },
      "description": "Implements qi request by interacting with the LLM API.",
      "required": [
        "tenant_meta",
        "meta"
      ],
      "x-internal": true
    },
    "v1AIRequestSpec": {
      "type": "object",
      "properties": {
        "input": {
          "$ref": "#/definitions/SpecInput",
          "description": "The input of the AI request."
        },
        "output": {
          "$ref": "#/definitions/SpecOutput",
          "description": "The output of the AI request."
        },
        "storage": {
          "$ref": "#/definitions/SpecStorage",
          "description": "The storage of the AI request."
        },
        "ai_feature": {
          "$ref": "#/definitions/v1AIFeature",
          "description": "AIFeature identifies which AI feature is making this request.\nThis is used for metrics, billing, and feature tracking."
        }
      },
      "required": [
        "input"
      ]
    },
    "v1AIResult": {
      "type": "object",
      "properties": {
        "explanation": {
          "type": "string",
          "description": "Human-readable description of the result."
        },
        "sast": {
          "$ref": "#/definitions/AIResultSAST"
        },
        "level": {
          "$ref": "#/definitions/AIResultAILevel",
          "description": "The severity level of the AI SAST."
        },
        "title": {
          "type": "string",
          "description": "Human-readable title of the result."
        }
      },
      "description": "AI result.",
      "required": [
        "explanation",
        "level",
        "title"
      ]
    },
    "v1AISASTScanCache": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the scan cache entry.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Scan cache entries are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata for the scan cache entry."
        },
        "spec": {
          "$ref": "#/definitions/v1AISASTScanCacheSpec",
          "description": "Scan cache entry specifications."
        }
      },
      "description": "AISASTScanCache tracks scan outcomes at file-level granularity for AI SAST\nincremental scanning. Each document contains the segments for a single\nfile, enabling efficient bulk reads and writes against MongoDB. When the\noutcome changes (e.g. a previously failed file is retried successfully),\nthe existing cache entry is updated in place.\n\nThis is a cache: LinterResults remain the authoritative finding records.\nIf the cache is lost, the system falls back to a full scan.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "v1AISASTScanCacheSpec": {
      "type": "object",
      "properties": {
        "project_uuid": {
          "type": "string",
          "description": "The UUID of the project this scan cache entry belongs to."
        },
        "file_path": {
          "type": "string",
          "description": "Relative file path within the repository (e.g. \"src/api/handler.go\")."
        },
        "content_hash": {
          "type": "string",
          "description": "SHA-256 hex hash of the full file content. Uses the same hashing\napproach as repoindexer/indexer.go calculateHash."
        },
        "outcome": {
          "$ref": "#/definitions/AISASTScanCacheScanOutcome",
          "description": "The scan outcome shared by all segments in this document."
        },
        "language": {
          "$ref": "#/definitions/v1Language",
          "description": "Programming language of the file."
        },
        "scanned_at_sha": {
          "type": "string",
          "description": "The commit SHA at which these segments were last scanned."
        },
        "scanned_at": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp of the last scan attempt for this file."
        },
        "segments": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/AISASTScanCacheSegmentEntry"
          },
          "description": "Embedded per-segment scan states."
        }
      },
      "description": "Spec holds the file-level scan state and embedded segment entries.",
      "required": [
        "project_uuid",
        "file_path",
        "content_hash",
        "outcome",
        "scanned_at_sha",
        "scanned_at"
      ]
    },
    "v1AISastAnalysisParameters": {
      "type": "object",
      "properties": {
        "retriage": {
          "type": "boolean",
          "description": "enable retriage of sast findings using AI."
        },
        "mode": {
          "$ref": "#/definitions/AISastAnalysisParametersAISastAnalysisMode",
          "description": "mode for triage of sast findings using AI."
        },
        "fp_triage": {
          "type": "boolean",
          "description": "enable false positive triage of sast findings using AI."
        }
      },
      "description": "Runtime parameters controlling behavior of ai sast analysis."
    },
    "v1AISastContextSummary": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta"
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "spec": {
          "$ref": "#/definitions/v1AISastContextSummarySpec"
        }
      },
      "description": "Project- or path-scoped summary with three sections (project, finding, FP) and an inputs hash.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "v1AISastContextSummarySpec": {
      "type": "object",
      "properties": {
        "project_uuid": {
          "type": "string",
          "description": "Owning project; required for both PROJECT and PATH scope."
        },
        "project_spec": {
          "$ref": "#/definitions/AISastContextSummaryProjectSpec",
          "description": "Selects a whole-project summary."
        },
        "path_spec": {
          "$ref": "#/definitions/AISastContextSummaryPathSpec",
          "description": "Selects a directory-subtree summary."
        },
        "inputs_hash": {
          "type": "string",
          "description": "Denormalized rollup of component_hashes; SHA-256 hex over their canonical encoding."
        },
        "project_summary": {
          "type": "string",
          "description": "Project-context section (~1000 tokens)."
        },
        "finding_summary": {
          "type": "string",
          "description": "True-positive finding-context section (~1000 tokens)."
        },
        "fp_summary": {
          "type": "string",
          "description": "False-positive finding-context section (~1000 tokens)."
        },
        "summarized_at": {
          "type": "string",
          "format": "date-time",
          "description": "When the LLM pipeline last (re)generated these sections; set by the\npipeline alongside the generated content so callers can detect drift."
        },
        "model_id": {
          "type": "string",
          "description": "Producing model identifier (e.g. \"claude-opus-4-7\")."
        },
        "component_hashes": {
          "$ref": "#/definitions/AISastContextSummaryComponentHashes",
          "description": "Per-input fingerprints; populated by the diff/recompute pipeline alongside inputs_hash."
        }
      },
      "required": [
        "project_uuid",
        "inputs_hash",
        "project_summary",
        "finding_summary",
        "fp_summary",
        "component_hashes"
      ]
    },
    "v1AISastCustomerContext": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta"
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "spec": {
          "$ref": "#/definitions/v1AISastCustomerContextSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagates system-level context settings to child namespaces when enabled."
        }
      },
      "description": "Customer-provided context scoped to projects using policy-style selectors.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1AISastCustomerContextSpec": {
      "type": "object",
      "properties": {
        "context": {
          "type": "string",
          "description": "Human-authored guidance text consumed as-is by the summary pipeline."
        },
        "project_selector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Project tag selectors or $uuid=\u003cproject_uuid\u003e selectors that select where this context applies.\nEmpty applies to all projects in the namespace.",
          "x-endor-name": "Project Selector"
        },
        "project_exceptions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Project tag selectors or $uuid=\u003cproject_uuid\u003e selectors that exclude matching projects from this context.",
          "x-endor-name": "Project Exceptions"
        },
        "disable": {
          "type": "boolean",
          "description": "Disables this context without deleting the object.",
          "x-endor-name": "AI SAST Context Disable"
        }
      },
      "description": "Customer-provided context payload.",
      "required": [
        "context"
      ]
    },
    "v1AISastSummary": {
      "type": "object",
      "properties": {
        "call_stack": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LocationWithName"
          },
          "description": "The path (call stack) of the vulnerable code."
        },
        "sanitizer_definitions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LocationWithName"
          },
          "description": "The sanitizer definitions locations that are used to mitigate the vulnerability."
        },
        "sanitizer_callsites": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LocationWithName"
          },
          "description": "This are the locations of the callsites that are used to mitigate the vulnerability."
        },
        "semgrep_source_trigger": {
          "$ref": "#/definitions/v1SemgrepTriggerPattern"
        },
        "semgrep_sink_trigger": {
          "$ref": "#/definitions/v1SemgrepTriggerPattern"
        },
        "cwe": {
          "type": "string",
          "description": "The CWE of the vulnerability."
        },
        "explanation": {
          "type": "string",
          "description": "Free-form explanation of the vulnerability."
        }
      },
      "description": "AI SAST summary.",
      "required": [
        "call_stack",
        "cwe",
        "explanation"
      ]
    },
    "v1APIKey": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an API key resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "APIKeys are namespaced objects."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1APIKeySpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates whether the API key can be used for the child namespaces."
        }
      },
      "description": "Manages the system API keys.",
      "required": [
        "meta"
      ]
    },
    "v1APIKeySpec": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string",
          "description": "The identifier of an API key.",
          "readOnly": true,
          "x-endor-name": "API Key"
        },
        "secret": {
          "type": "string",
          "description": "The secret for the specified API key.",
          "readOnly": true,
          "x-endor-name": "API Secret"
        },
        "permissions": {
          "$ref": "#/definitions/v1Permissions",
          "description": "The access permissions associated with the specified API key.",
          "x-endor-name": "API Permissions"
        },
        "expiration_time": {
          "type": "string",
          "format": "date-time",
          "description": "The expiration time of the API key."
        },
        "issuing_user": {
          "$ref": "#/definitions/v1User",
          "description": "The user that created this API key.",
          "readOnly": true
        }
      },
      "required": [
        "permissions",
        "expiration_time"
      ]
    },
    "v1ActionPolicies": {
      "type": "object",
      "properties": {
        "allowed_actions": {
          "type": "string"
        },
        "enabled_repositories": {
          "type": "string"
        }
      }
    },
    "v1Actions": {
      "type": "object",
      "properties": {
        "policy_uuids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of action policies triggered by this finding."
        }
      },
      "description": "Metadata added by the admission or notification policy scanner."
    },
    "v1AgentActivity": {
      "type": "object",
      "properties": {
        "agent_id": {
          "type": "string",
          "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."
        },
        "agent_identity": {
          "type": "string",
          "description": "The {name}@{version} identity from the agent's JWT (agent_identity claim).\nUnset for an unregistered agent, distinct from a recorded empty identity."
        },
        "calls": {
          "type": "string",
          "format": "int64",
          "description": "Total captured backend calls in the window."
        },
        "allowed": {
          "type": "string",
          "format": "int64",
          "description": "Calls the authorization + mutability gates allowed."
        },
        "denied": {
          "type": "string",
          "format": "int64",
          "description": "Calls denied (e.g. a read-only agent attempting a mutation)."
        },
        "sessions": {
          "type": "string",
          "format": "int64",
          "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."
        },
        "last_seen": {
          "type": "string",
          "format": "date-time",
          "description": "When the agent was last seen making a call. Unset if it never has."
        },
        "active": {
          "type": "boolean",
          "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."
        }
      },
      "description": "AgentActivity is the per-agent usage summary for one agent. Keyed by\nagent_id, the join key to the agent catalog (EndorAgent.id)."
    },
    "v1AgentCall": {
      "type": "object",
      "properties": {
        "timestamp": {
          "type": "string",
          "format": "date-time",
          "description": "When the edge observed the call."
        },
        "operation": {
          "type": "string",
          "description": "Coarse verb: READ | LIST | CREATE | UPDATE | DELETE | UPSERT | EXECUTE.\nUnset when the operation could not be derived, distinct from a recorded\nempty verb."
        },
        "resource_kind": {
          "type": "string",
          "description": "The Endor resource the call operated on (e.g. Project)."
        },
        "rpc_method": {
          "type": "string",
          "description": "Full gRPC method, for engineers who want the exact RPC."
        },
        "decision": {
          "type": "string",
          "description": "allowed | denied."
        },
        "status_code": {
          "type": "string",
          "description": "gRPC status code name (e.g. OK, PermissionDenied)."
        },
        "session": {
          "type": "string",
          "description": "The agent-run session this call belongs to; unset for a call with no session."
        },
        "on_behalf_of": {
          "type": "string",
          "description": "The human principal the agent acted on behalf of; unset when none."
        },
        "scopes": {
          "type": "string",
          "description": "The scope the call ran under, e.g. customer-full; comma-joined when more than\none. Unset when none were recorded."
        }
      },
      "description": "AgentCall is one captured call in an agent's recent history — a tenant-safe\nprojection of AgentAuditEvent."
    },
    "v1AgentConfig": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an AgentConfig.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "AgentConfigs are associated with a tenant or are global."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AgentConfigSpec",
          "description": "The internal specification of the object."
        },
        "propagate": {
          "type": "boolean",
          "description": "Object can be propagated to child namespaces. Global objects are visible to\nall namespaces."
        }
      },
      "description": "Represents the information captured from an AgentConfig of endorctl.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "v1AgentConfigLevel": {
      "type": "object",
      "properties": {
        "mcp_servers": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AgentMCPServer"
          },
          "description": "McpServers lists the MCP servers configured at this level."
        },
        "sandbox": {
          "$ref": "#/definitions/v1AgentSandboxConfig",
          "description": "Sandbox holds sandbox network and filesystem rules."
        },
        "permissions": {
          "$ref": "#/definitions/v1AgentPermissionsConfig",
          "description": "Permissions holds tool and command permission rules."
        },
        "hooks": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AgentHookConfig"
          },
          "description": "Hooks lists the hook event bindings configured at this level."
        },
        "env": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Env holds environment variables configured at this level."
        },
        "instruction_files": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AgentInstructionFile"
          },
          "description": "InstructionFiles lists rule/instruction files discovered at this level.\nCursor: .mdc files from rules/ directories. Claude Code: reserved for future use."
        },
        "default_model": {
          "type": "string",
          "description": "DefaultModel is the default model ID configured at this level.\nPopulated from Claude Code settings only."
        },
        "available_models": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "AvailableModels restricts which model IDs are selectable.\nPopulated from Claude Code settings only."
        },
        "environment_type": {
          "type": "string",
          "description": "EnvironmentType is the remote environment type (e.g. \"docker\").\nPopulated from Cursor environment.json only."
        }
      },
      "description": "AgentConfigLevel captures the agent configuration at one scope level\n(repository, user, or enterprise)."
    },
    "v1AgentConfigSnapshot": {
      "type": "object",
      "properties": {
        "repository": {
          "$ref": "#/definitions/v1AgentConfigLevel",
          "description": "Repository holds config from the workspace's .claude/ or .cursor/ directory."
        },
        "user": {
          "$ref": "#/definitions/v1AgentConfigLevel",
          "description": "User holds config from the user's home directory (~/.claude/ or ~/.cursor/)."
        },
        "enterprise": {
          "$ref": "#/definitions/v1AgentConfigLevel",
          "description": "Enterprise holds config from the OS-managed enterprise config path."
        }
      },
      "description": "AgentConfigSnapshot captures the three-level configuration hierarchy\n(repository, user, enterprise) at session start time."
    },
    "v1AgentConfigSpec": {
      "type": "object",
      "properties": {
        "system_prompt": {
          "type": "string",
          "description": "SystemPrompt is the system prompt that the agent will use."
        },
        "tool_names": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "tool_names is the list of tool names that the agent will use.\nIt must be one of the supported tools. If the tool is not supported, the\nrequest will fail."
        },
        "llm": {
          "$ref": "#/definitions/SpecAvailableLLM",
          "description": "LLM is the LLM that the agent will use. It must be one of the supported\nLLMs."
        },
        "options": {
          "$ref": "#/definitions/SpecOptions",
          "description": "Options is the options that the agent will use."
        },
        "mcp_servers": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecMCPServer"
          }
        },
        "vector_store_uuid": {
          "type": "string",
          "description": "VectorStoreUUID is the vector store that the agent can use."
        },
        "local_execution_only": {
          "type": "boolean",
          "description": "LocalExecutionOnly is true if the agent can only be executed locally."
        }
      },
      "required": [
        "system_prompt",
        "llm"
      ]
    },
    "v1AgentHookAction": {
      "type": "object",
      "properties": {
        "match_type": {
          "$ref": "#/definitions/AgentHookActionMatchType"
        },
        "feedback": {
          "$ref": "#/definitions/v1FeedbackAction",
          "description": "Show feedback to the user (e.g. \"are you sure you want to do this?\")."
        },
        "block": {
          "$ref": "#/definitions/v1BlockAction",
          "description": "Block the action (e.g. \"can't do this!\")."
        },
        "alert": {
          "$ref": "#/definitions/v1AlertAction",
          "description": "Raise an alert (e.g. \"user should not be messing with this file\")."
        },
        "ask": {
          "$ref": "#/definitions/v1AskAction",
          "description": "Ask the user with a message (e.g. \"are you sure you want to do this?\")."
        }
      },
      "description": "Action describes how to match the activity with the policy and what to do when it matches."
    },
    "v1AgentHookActivity": {
      "type": "object",
      "properties": {
        "mcp_tool_call": {
          "$ref": "#/definitions/v1McpToolCallActivity",
          "description": "Match MCP tool calls (server + tool + optional input matchers)."
        },
        "cmd_line": {
          "$ref": "#/definitions/v1CmdLineActivity",
          "description": "Match command-line invocations by pattern."
        },
        "file_access": {
          "$ref": "#/definitions/v1FileAccessActivity",
          "description": "Match file access by operation and path patterns."
        },
        "skill": {
          "$ref": "#/definitions/v1SkillActivity",
          "description": "Match skills by name and/or score thresholds."
        },
        "mcp_server": {
          "$ref": "#/definitions/v1McpServerActivity",
          "description": "Match MCP servers by name and/or score thresholds (server-level,\nnot tool-call-level)."
        },
        "session": {
          "$ref": "#/definitions/v1SessionActivity",
          "description": "Match sessions by posture predicates over SessionHook fields and\nthe captured AgentConfigSnapshot."
        },
        "malware_check": {
          "$ref": "#/definitions/v1MalwareCheckActivity",
          "description": "Check the packages in an install command against Endor's malware feed."
        },
        "secrets_check": {
          "$ref": "#/definitions/v1SecretsCheckActivity",
          "description": "Scan file content (write/edit proposed content, or a read) for secrets."
        }
      },
      "description": "Activity describes what kind of hook activity the policy applies to."
    },
    "v1AgentHookConfig": {
      "type": "object",
      "properties": {
        "event_name": {
          "type": "string",
          "description": "EventName is the lifecycle hook event name (e.g. \"PostToolUse\")."
        },
        "commands": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Commands lists the shell commands registered for this event."
        }
      },
      "description": "AgentHookConfig represents one hook event binding: the event that triggers\nit and the commands that run in response."
    },
    "v1AgentHookEvent": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an AgentHookEvent.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "AgentHookEvent are associated with a tenant or are global."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AgentHookEventSpec",
          "description": "The internal specification of the object."
        },
        "processing_result": {
          "$ref": "#/definitions/v1ProcessingResult",
          "description": "Result of downstream processing (inventory, dashboard, etc.).",
          "readOnly": true
        },
        "consumers_failed": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Consumer keys that failed to process this event. Used for retry.",
          "readOnly": true
        }
      },
      "description": "AgentHookEvent represents a single event emitted by the agent runtime.\nEach event has a type, context, and optional type-specific payload.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "v1AgentHookEventSpec": {
      "type": "object",
      "properties": {
        "session_id": {
          "type": "string",
          "description": "Session identifier for the agent run."
        },
        "sub_session_id": {
          "type": "string",
          "description": "Sub-session identifier for the agent run."
        },
        "agent": {
          "$ref": "#/definitions/SpecAgent",
          "description": "Agent generating the event."
        },
        "agent_version": {
          "type": "string",
          "description": "Agent version if available."
        },
        "model": {
          "type": "string",
          "description": "Model involved."
        },
        "repository": {
          "type": "string",
          "description": "Repository where the action happened."
        },
        "cwd": {
          "type": "string",
          "description": "Working directory when the event was captured."
        },
        "user": {
          "type": "string",
          "description": "User name if available."
        },
        "device_id": {
          "type": "string",
          "description": "Device ID if available."
        },
        "hook_event_category": {
          "$ref": "#/definitions/SpecHookEventCategory",
          "description": "Hook category."
        },
        "hook_event_name": {
          "$ref": "#/definitions/SpecHookEventName",
          "description": "Type of hook event."
        },
        "raw_hook_event_name": {
          "type": "string",
          "description": "Raw hook event name from the agent."
        },
        "permission_mode": {
          "type": "string",
          "description": "Permission mode at capture time (e.g. \"default\", \"acceptEdits\")."
        },
        "duration_msec": {
          "type": "number",
          "format": "float",
          "description": "Duration in milliseconds."
        },
        "error_message": {
          "type": "string",
          "description": "Error message if the hook event failed."
        },
        "is_interrupted": {
          "type": "boolean",
          "description": "Whether the hook event was interrupted."
        },
        "mcp_tool": {
          "$ref": "#/definitions/v1McpToolHook",
          "description": "MCP tool invocation."
        },
        "internal_tool": {
          "$ref": "#/definitions/v1InternalToolHook",
          "description": "Internal tool invocation."
        },
        "cmd_line": {
          "$ref": "#/definitions/v1CmdHook",
          "description": "Command-line invocation."
        },
        "file": {
          "$ref": "#/definitions/v1FileHook",
          "description": "File access."
        },
        "session": {
          "$ref": "#/definitions/v1SessionHook",
          "description": "Session lifecycle metadata."
        },
        "policy_matches": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AgentHookPolicyMatch"
          },
          "description": "List of policy matches (if any)."
        },
        "has_policy_violation": {
          "type": "boolean",
          "description": "Set to true when policy_matches is non-empty."
        }
      }
    },
    "v1AgentHookPolicy": {
      "type": "object",
      "properties": {
        "activity": {
          "$ref": "#/definitions/v1AgentHookActivity",
          "description": "Activity that this policy matches."
        },
        "action": {
          "$ref": "#/definitions/v1AgentHookAction",
          "description": "Action to take when the activity matches."
        },
        "name": {
          "type": "string",
          "description": "Name of the policy."
        },
        "system": {
          "type": "boolean",
          "description": "Whether this is a system-defined policy (vs user-defined)."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether this policy is active."
        },
        "inventory_classification": {
          "$ref": "#/definitions/v1InventoryClassification",
          "description": "Inventory classification this policy assigns to a matched MCP server\nor skill. Projected onto AgenticInventory by the aiapiserver inventory\nconsumers. Unset / UNSPECIFIED means the policy does not affect\ninventory classification."
        },
        "scope": {
          "$ref": "#/definitions/v1AgentHookPolicyScope",
          "description": "Cross-cutting scope restricting which events this policy applies to,\nindependent of activity kind. Unset means the policy applies to every\nevent (back-compatible default)."
        }
      },
      "description": "AgentHookPolicy describes a policy to apply when agent hook events match a\ngiven activity. When the activity matches, the action (e.g. feedback, block,\nalert) is applied."
    },
    "v1AgentHookPolicyDefinition": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an AgentHookPolicyDefinition.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "AgentHookPolicyDefinitions are associated with a tenant or are global."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AgentHookPolicyDefinitionSpec",
          "description": "The internal specification of the object."
        },
        "propagate": {
          "type": "boolean",
          "description": "Object can be propagated to child namespaces. Global objects are visible to\nall namespaces."
        }
      },
      "description": "AgentHookPolicyDefinition is a top-level CRUD object that stores a single\nAgentHookPolicy alongside standard metadata.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "v1AgentHookPolicyDefinitionSpec": {
      "type": "object",
      "properties": {
        "policy": {
          "$ref": "#/definitions/v1AgentHookPolicy",
          "description": "The policy stored in this definition."
        }
      }
    },
    "v1AgentHookPolicyMatch": {
      "type": "object",
      "properties": {
        "match_type": {
          "$ref": "#/definitions/AgentHookPolicyMatchAgentHookPolicyMatchType"
        },
        "mcp_tool_call": {
          "$ref": "#/definitions/v1McpToolMatch",
          "description": "MCP tool call match."
        },
        "cmd_line": {
          "$ref": "#/definitions/v1CmdLineMatch",
          "description": "Command-line invocation match."
        },
        "file_access": {
          "$ref": "#/definitions/v1FileAccessMatch",
          "description": "File access match."
        },
        "skill": {
          "$ref": "#/definitions/v1SkillMatch",
          "description": "Skill match."
        },
        "mcp_server": {
          "$ref": "#/definitions/v1McpServerMatch",
          "description": "MCP server match (server-level, not tool-call-level)."
        },
        "session": {
          "$ref": "#/definitions/v1SessionMatch",
          "description": "Session match (posture predicates over SessionHook + AgentConfigSnapshot)."
        },
        "malware": {
          "$ref": "#/definitions/v1MalwareMatch",
          "description": "Malware match (a package flagged by the malware check on an install)."
        },
        "secrets": {
          "$ref": "#/definitions/v1SecretsMatch",
          "description": "Secrets match (a secret detected in file content by the secrets check)."
        },
        "policy_matched": {
          "$ref": "#/definitions/v1AgentHookPolicy",
          "description": "The policy that matched."
        }
      },
      "description": "AgentHookPolicyMatch tracks a policy match."
    },
    "v1AgentHookPolicyScope": {
      "type": "object",
      "properties": {
        "repository_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Regex matchers for the repository from AgentHookEvent.Spec.repository\n(e.g. \"github\\\\.com/acme/.*\", \".*-infra$\"). OR'd among themselves."
        },
        "user_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Regex matchers for the user/account from AgentHookEvent.Spec.user\n(e.g. \"alice\", \"svc-.*\", \".*@example\\\\.com\"). \"Account\" in the ticket\nmaps to this per-session user identity; there is no separate account\nentity. OR'd among themselves."
        }
      },
      "description": "AgentHookPolicyScope restricts a policy to a subset of events by matching\nagainst per-event identity carried on AgentHookEvent.Spec (repository, user).\nScope is evaluated once, before activity-kind matching, so it applies\nuniformly to all activity kinds.\n\nMatch logic: an unset scope (or a scope with no matchers set) applies to\nevery event. When set, configured matcher branches are AND'd — every set\nbranch must produce a hit; within a branch the regexes are OR'd (any one\nmatching satisfies the branch); an empty branch is ignored. A scope miss\nmakes the policy a no-op for the event for both blocklist and allowlist\nmatch types (the policy simply does not apply)."
    },
    "v1AgentInstructionFile": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name is the base filename without extension (e.g. \"security\" from \"security.mdc\")."
        },
        "path": {
          "type": "string",
          "description": "Path is the absolute filesystem path to the instruction file."
        },
        "content_hash": {
          "type": "string",
          "description": "ContentHash is the SHA-256 hex digest of the file content."
        }
      },
      "description": "AgentInstructionFile represents a rule or instruction file discovered during\nconfiguration scanning. Content is not stored; only paths and hashes are\ncaptured to detect changes without exposing potentially sensitive content."
    },
    "v1AgentMCPServer": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name is the canonical runtime identifier of the MCP server program — the\nvalue extracted from the command line (e.g. \"endorctl\" from\n\"npx -y endorctl ai-tools mcp-server\") or, for HTTP/SSE servers, the host\nslice of the URL. The backend uses this as the inventory document name\nso SESSION_START rows and per-tool rows (whose McpToolHook.server_name\nis derived the same way from the runtime URL/command) land on a single\ninventory document per logical server."
        },
        "command": {
          "type": "string",
          "description": "Command is the executable used for stdio-transport servers."
        },
        "args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Args are the command-line arguments passed to the server process."
        },
        "env": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Env holds environment variables injected into the server process."
        },
        "url": {
          "type": "string",
          "description": "URL is the endpoint for HTTP or SSE transport servers."
        },
        "transport": {
          "type": "string",
          "description": "Transport is the MCP transport type: \"stdio\", \"http\", or \"sse\".\nCollectors must populate this; an empty value means the collector could\nnot classify the server. Claude Code reads this from .mcp.json; Cursor\nderives it structurally from command/url since mcp.json has no transport\nfield."
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Headers are additional HTTP headers sent with requests.\nPopulated by collectors when available; Cursor's mcp.json has no headers\nfield so this is empty for Cursor."
        },
        "config_server_name": {
          "type": "string",
          "description": "ConfigServerName is the user-authored mcp.json map key that named this\nserver entry in the agent's configuration (e.g. \"claude-endor-cli-tools\",\n\"postgres\"). It is the stable identifier per-tool hooks can use to look\nthe entry up in the cached SESSION_START snapshot — Claude's tool name\nshape \"mcp__\u003cserver\u003e__\u003ctool\u003e\" carries this value, while Name carries the\nruntime program identity. Wrapped to distinguish \"unset\" from \"\"."
        }
      },
      "description": "AgentMCPServer represents a single named MCP server entry common to all agents."
    },
    "v1AgentPermissionsConfig": {
      "type": "object",
      "properties": {
        "allowed_tools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "AllowedTools lists MCP tool names that are auto-approved.\nPopulated primarily from Cursor configs; Claude Code uses rule strings instead."
        },
        "denied_tools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "DeniedTools lists MCP tool names that are blocked."
        },
        "allowed_commands": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "AllowedCommands lists shell command patterns that are auto-approved.\nFor Claude Code these are permission rule strings (e.g. \"Bash(git:*)\")."
        },
        "denied_commands": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "DeniedCommands lists shell command patterns that are blocked."
        },
        "allowed_mcp_servers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "AllowedMcpServers lists MCP server names permitted by managed policy.\nPopulated from Claude Code managed settings; empty for Cursor."
        },
        "denied_mcp_servers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "DeniedMcpServers lists MCP server names blocked by managed policy.\nPopulated from Claude Code managed settings; empty for Cursor."
        },
        "additional_directories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "AdditionalDirectories lists extra working directories the agent may access.\nClaude Code: from permissions.additionalDirectories. Cursor: from CLI allowedPaths."
        },
        "default_mode": {
          "type": "string",
          "description": "DefaultMode is the permission mode used when no explicit rule matches.\nPopulated from Claude Code only (e.g. \"default\", \"bypassPermissions\")."
        },
        "bypass_disabled": {
          "type": "boolean",
          "description": "BypassDisabled indicates whether bypass-permissions mode is disabled.\nPopulated from Claude Code only."
        }
      },
      "description": "AgentPermissionsConfig normalizes permission rules across agents."
    },
    "v1AgentSandboxConfig": {
      "type": "object",
      "properties": {
        "allowed_network_hosts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "AllowedNetworkHosts lists hostnames/domains the agent may reach."
        },
        "blocked_network_hosts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "BlockedNetworkHosts lists hostnames/domains the agent may not reach.\nPopulated from Cursor configs only; Claude Code uses allowlist-only."
        },
        "writable_paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "WritablePaths lists filesystem paths the agent may write to."
        },
        "readable_paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "ReadablePaths lists filesystem paths the agent may read from."
        },
        "enabled": {
          "type": "boolean",
          "description": "Enabled indicates whether sandboxing is turned on.\nWrapped to distinguish \"unset\" from \"false\"."
        },
        "fail_if_unavailable": {
          "type": "boolean",
          "description": "FailIfUnavailable causes the agent to exit when sandboxing is unavailable.\nWrapped to distinguish \"unset\" from \"false\"."
        }
      },
      "description": "AgentSandboxConfig normalizes sandbox network and filesystem rules across agents."
    },
    "v1AgentSession": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The uuid of the resource. This is also the session ID for a user\nthat wants to continue a conversation with the agent.\nIt will accumulate messages over the conversation.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The tenant metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AgentSessionSpec"
        }
      },
      "description": "Implements an agent session by interacting with the implemented agents.",
      "required": [
        "tenant_meta",
        "meta"
      ],
      "x-internal": true
    },
    "v1AgentSessionCountQuery": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the query.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Agent session count queries are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AgentSessionCountQuerySpec",
          "description": "Agent session count query specification."
        }
      },
      "description": "AgentSessionCountQuery is an internal API returning the total number of\nagent sessions in a namespace. Unlike ListAgentSessions, results are not\nrestricted to sessions owned by or shared with the caller: the response\ncarries only a count, so no session content can be exposed.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "v1AgentSessionCountQuerySpec": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1AgentSessionCountQuerySpecRequest",
          "description": "The agent session count request."
        },
        "response": {
          "$ref": "#/definitions/v1AgentSessionCountQuerySpecResponse",
          "description": "The agent session count response.",
          "readOnly": true
        }
      }
    },
    "v1AgentSessionCountQuerySpecRequest": {
      "type": "object",
      "properties": {
        "time_range": {
          "$ref": "#/definitions/SpecRequestTimeRange",
          "description": "Optional time range filter on session creation time.\nWhen unset, all sessions in the namespace are counted."
        },
        "traverse": {
          "type": "boolean",
          "description": "Whether to include child namespaces in the count."
        }
      }
    },
    "v1AgentSessionCountQuerySpecResponse": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer",
          "format": "int32",
          "description": "Total number of agent sessions matching the request.",
          "readOnly": true
        }
      }
    },
    "v1AgentSessionSpec": {
      "type": "object",
      "properties": {
        "agent_contexts": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecAgentContext"
          },
          "description": "agent_contexts can include multiple instances of AgentContext. The context\ncan only be provided at the beginning of a session and cannot be updated\nlater on."
        },
        "message_history": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecMessage"
          },
          "description": "The previous messages in the session.",
          "readOnly": true
        },
        "request": {
          "type": "string",
          "description": "The current message request in the session."
        },
        "text": {
          "type": "string",
          "readOnly": true
        },
        "owner_claims": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "owner claims representing the owner of the session (ie user)"
        },
        "shared_session": {
          "type": "boolean",
          "description": "shared_session indicates if this session is shared with other users.\nIf true, the session will be visible to all users in the same namespace."
        }
      },
      "required": [
        "request"
      ]
    },
    "v1AgentTool": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The uuid of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The tenant metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AgentToolSpec"
        }
      },
      "description": "Lists the available Agent Tools that can be attached to agents.",
      "required": [
        "tenant_meta",
        "meta"
      ],
      "x-internal": true
    },
    "v1AgentToolSpec": {
      "type": "object",
      "properties": {
        "input_schema": {
          "type": "object"
        }
      }
    },
    "v1AgentWorkflow": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an AgentWorkflow.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "AgentWorkflows are associated with a tenant or are global."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AgentWorkflowSpec",
          "description": "The internal specification of the object."
        },
        "propagate": {
          "type": "boolean",
          "description": "Object can be propagated to child namespaces. Global objects are visible to\nall namespaces."
        }
      },
      "description": "Represents an agent workflow that orchestrates multiple agents.\nWorkflows can be of different types, such as chain, planner, or swarm.\nThe initial implementation supports chain workflows where agents execute\nsequentially, passing outputs to the next agent in the chain.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "v1AgentWorkflowSpec": {
      "type": "object",
      "properties": {
        "chain": {
          "$ref": "#/definitions/AgentWorkflowChainWorkflow",
          "description": "Chain workflow executes agents sequentially.\n\nFuture workflow types can be added here without breaking changes:\n PlannerWorkflow planner = 2;\n SwarmWorkflow swarm = 3;"
        }
      }
    },
    "v1AgenticAggregate": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the aggregate record.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Aggregate is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AgenticAggregateSpec",
          "description": "The internal specification of the aggregate."
        }
      },
      "description": "AgenticAggregate stores time-bucketed aggregated metrics from AgentHookEvents.\nOne document per (namespace, aggregate_bucket, bucket_granularity, dimension_key, dimension_value).",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "v1AgenticAggregateSpec": {
      "type": "object",
      "properties": {
        "aggregate_bucket": {
          "type": "string",
          "format": "date-time",
          "description": "Time bucket (UTC, truncated to the granularity)."
        },
        "dimension_key": {
          "$ref": "#/definitions/v1DimensionKey",
          "description": "Aggregation dimension (e.g. by agent, model, command)."
        },
        "dimension_value": {
          "type": "string",
          "description": "Value within the dimension (e.g. agent name, model name, command binary)."
        },
        "bucket_granularity": {
          "$ref": "#/definitions/v1BucketGranularity",
          "description": "Time granularity of the aggregate bucket (e.g. hourly, daily)."
        },
        "sessions": {
          "type": "string",
          "format": "int64",
          "description": "Total number of session events within the aggregate bucket."
        },
        "tool_calls": {
          "type": "string",
          "format": "int64",
          "description": "Number of tool invocations (e.g. agent tool calls)."
        },
        "executions": {
          "type": "string",
          "format": "int64",
          "description": "Total number of command executions within this bucket."
        },
        "executions_success": {
          "type": "string",
          "format": "int64",
          "description": "Total number of successful executions."
        },
        "read_operations": {
          "type": "string",
          "format": "int64",
          "description": "Number of read-type operations (e.g. file reads, data retrieval)."
        },
        "write_operations": {
          "type": "string",
          "format": "int64",
          "description": "Number of write-type operations (e.g. file writes, data modification)."
        },
        "file_access_events": {
          "type": "string",
          "format": "int64",
          "description": "Number of events where files were accessed (read, write, edit, etc)."
        },
        "user_prompts": {
          "type": "string",
          "format": "int64",
          "description": "Total number of user prompts or messages handled."
        },
        "errors": {
          "type": "string",
          "format": "int64",
          "description": "Number of error events encountered in this bucket."
        },
        "interrupted": {
          "type": "string",
          "format": "int64",
          "description": "Number of events where operations were interrupted or cancelled."
        },
        "edit_operations": {
          "type": "string",
          "format": "int64",
          "description": "Number of file or entity edit operations."
        },
        "delete_operations": {
          "type": "string",
          "format": "int64",
          "description": "Number of delete operations (e.g. files, records)."
        },
        "users": {
          "type": "string",
          "format": "int64",
          "description": "Number of distinct users who generated events in this bucket."
        },
        "repositories": {
          "type": "string",
          "format": "int64",
          "description": "Number of distinct repositories seen in events for this bucket."
        }
      },
      "required": [
        "aggregate_bucket",
        "dimension_key",
        "dimension_value",
        "bucket_granularity"
      ]
    },
    "v1AgenticInventory": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the inventory record.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Inventory is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AgenticInventorySpec",
          "description": "The internal specification of the inventory."
        }
      },
      "description": "AgenticInventory represents aggregated metrics for agents, models, MCP servers, skills, and AI tools.\nOne collection with type discriminator. Upserted on agent hook events.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "v1AgenticInventorySpec": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/v1InventoryType",
          "description": "Type discriminator for the unified inventory collection."
        },
        "name": {
          "type": "string",
          "description": "Unique name within the type (e.g. server name for MCP, agent name, model name)."
        },
        "total_hook_events": {
          "type": "string",
          "format": "int64",
          "description": "Total number of hook events."
        },
        "error_hook_events": {
          "type": "string",
          "format": "int64",
          "description": "Number of hook events that had an error."
        },
        "total_duration_msec": {
          "type": "string",
          "format": "int64",
          "description": "Sum of all hook event durations in milliseconds."
        },
        "last_seen": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when this inventory was last seen (most recent activity)."
        },
        "tool_hook_events": {
          "type": "string",
          "format": "int64",
          "description": "Number of tool hook events."
        },
        "session_hook_events": {
          "type": "string",
          "format": "int64",
          "description": "Number of session hook events."
        },
        "cmd_hook_events": {
          "type": "string",
          "format": "int64",
          "description": "Number of command hook events."
        },
        "active_sessions": {
          "type": "string",
          "format": "int64",
          "description": "Number of sessions currently in progress (incremented on SESSION_START,\ndecremented on SESSION_STOP)."
        },
        "user_prompt_hook_events": {
          "type": "string",
          "format": "int64",
          "description": "Number of user prompts submitted."
        },
        "interrupted_hook_events": {
          "type": "string",
          "format": "int64",
          "description": "Number of events that were interrupted."
        },
        "users": {
          "type": "string",
          "format": "int64",
          "description": "Number of distinct users that triggered events for this inventory item."
        },
        "repositories": {
          "type": "string",
          "format": "int64",
          "description": "Number of distinct repositories associated with this inventory item."
        },
        "file_hook_events": {
          "type": "string",
          "format": "int64",
          "description": "Number of file hook events."
        },
        "agent": {
          "$ref": "#/definitions/AgenticInventoryAgentMeta"
        },
        "model": {
          "$ref": "#/definitions/AgenticInventoryModelMeta"
        },
        "mcp_server": {
          "$ref": "#/definitions/AgenticInventoryMcpMeta"
        },
        "skill": {
          "$ref": "#/definitions/AgenticInventorySkillMeta"
        },
        "ai_tool": {
          "$ref": "#/definitions/AgenticInventoryAiToolMeta"
        }
      },
      "required": [
        "type",
        "name"
      ]
    },
    "v1AiToolCategory": {
      "type": "string",
      "enum": [
        "AI_TOOL_CATEGORY_UNSPECIFIED",
        "AI_TOOL_CATEGORY_IDE",
        "AI_TOOL_CATEGORY_CLI_TOOL",
        "AI_TOOL_CATEGORY_AGENT",
        "AI_TOOL_CATEGORY_FRAMEWORK",
        "AI_TOOL_CATEGORY_MCP_CONFIG",
        "AI_TOOL_CATEGORY_IDE_EXTENSION"
      ],
      "default": "AI_TOOL_CATEGORY_UNSPECIFIED",
      "description": "AiToolCategory classifies a detected AI development tool."
    },
    "v1AiToolDetection": {
      "type": "object",
      "properties": {
        "tool": {
          "type": "string",
          "description": "Tool identifier (e.g. \"cursor\", \"claude-code\", \"ollama\")."
        },
        "vendor": {
          "type": "string",
          "description": "Vendor name (e.g. \"Anthropic\", \"OpenSource\", \"Google\")."
        },
        "category": {
          "$ref": "#/definitions/v1AiToolCategory",
          "description": "Category of the tool."
        },
        "evidence": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AiToolEvidence"
          },
          "description": "Evidence supporting the detection."
        }
      },
      "description": "AiToolDetection represents a single detected AI development tool."
    },
    "v1AiToolEvidence": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string",
          "description": "Evidence key (e.g. \"install_path\", \"binary_path\", \"version\", \"config_path\")."
        },
        "value": {
          "type": "string",
          "description": "Evidence value."
        }
      },
      "description": "AiToolEvidence is a single key-value signal supporting an AI tool detection."
    },
    "v1AiToolInventory": {
      "type": "object",
      "properties": {
        "detections": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AiToolDetection"
          },
          "description": "Detected AI tools."
        }
      },
      "description": "AiToolInventory contains all AI development tools detected on the host machine."
    },
    "v1AlertAction": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string"
        },
        "feedback_message": {
          "type": "string",
          "description": "Feedback message shown to the user when the alert is raised."
        }
      },
      "description": "AlertAction records an alert with a message (e.g. for audit)."
    },
    "v1Allowlist": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "description": "Short human readable description of the allowlist."
        },
        "regexes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A slice of content regular expressions that are allowed to be ignored."
        },
        "regex_target": {
          "type": "string",
          "title": "RegexTarget"
        },
        "paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A slice of path regular expressions that are allowed to be ignored."
        },
        "commits": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A slice of commit SHAs that are allowed to be ignored."
        },
        "stop_words": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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."
        },
        "condition": {
          "type": "string",
          "description": "Match condition for this allowlist (\"OR\" or \"AND\"). Defaults to \"OR\".\nWhen \"AND\", all criteria must match for the allowlist to apply."
        }
      },
      "description": "Allows a rule to be ignored for specific regexes, paths, and/or commits."
    },
    "v1AnalyticsExecutionRecord": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a AnalyticsExecutionRecord resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Analytic records are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AnalyticsExecutionRecordSpec",
          "description": "Execution record specification."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "Captures the status, time and stats of an execution of the analytics.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "v1AnalyticsExecutionRecordSpec": {
      "type": "object",
      "properties": {
        "platform_source": {
          "$ref": "#/definitions/v1PlatformSource",
          "description": "The platform to which the parent repository belongs."
        },
        "analytics_time": {
          "type": "string",
          "format": "date-time",
          "description": "Represents the last time a repository was analysed.\n\nTimestamp is represented in the RFC 3339 format, for example, 2017-01-15T01:30:15.01Z.\n\nRFC 3339: https://www.ietf.org/rfc/rfc3339.txt"
        },
        "analytics_state": {
          "$ref": "#/definitions/AnalyticsExecutionRecordAnalysisState",
          "description": "The status of the analytics run."
        },
        "execution_stats": {
          "type": "object",
          "description": "The execution stats generated during the analysis."
        },
        "project_name": {
          "type": "string",
          "description": "The project name."
        },
        "version_name": {
          "type": "string",
          "description": "The version name."
        },
        "project_uuid": {
          "type": "string",
          "description": "The UUID of the project to which the execution record belongs."
        }
      },
      "required": [
        "platform_source",
        "project_uuid"
      ]
    },
    "v1AndroidToolChain": {
      "type": "object",
      "properties": {
        "command_line_tools_version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        },
        "packages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "command_line_tools_version"
      ]
    },
    "v1AppPasswordConfig": {
      "type": "object",
      "properties": {
        "username": {
          "type": "string",
          "description": "The username (or Atlassian account email for Scoped API Tokens) used for\nHTTP Basic Auth against Bitbucket Cloud."
        },
        "app_password": {
          "type": "string",
          "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)."
        }
      },
      "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.",
      "required": [
        "username",
        "app_password"
      ]
    },
    "v1ApproveServiceRequest": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an approve service request.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "ApproveServiceRequest are raised on a specific internal tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "spec": {
          "$ref": "#/definitions/v1ApproveServiceRequestSpec"
        }
      },
      "description": "ApproveServiceRequest defines a message for approving or denying service requests.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "v1ApproveServiceRequestSpec": {
      "type": "object",
      "properties": {
        "service_request_uuid": {
          "type": "string",
          "description": "The service request for which the approval request is associated."
        },
        "comment": {
          "type": "string",
          "description": "The reasoning behind the decision by the approver."
        },
        "status": {
          "$ref": "#/definitions/v1RequestStatus",
          "description": "The approval or denial decision by the approver for the given request."
        }
      },
      "required": [
        "service_request_uuid",
        "status"
      ]
    },
    "v1Artifact": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Full name of the artifact with extension type."
        },
        "checksum": {
          "$ref": "#/definitions/v1Hash",
          "description": "Checksum of the artifact, used to verify data integrity."
        }
      },
      "description": "Name and checksum value for an artifact."
    },
    "v1ArtifactDownloadType": {
      "type": "string",
      "enum": [
        "ARTIFACT_DOWNLOAD_TYPE_UNSPECIFIED",
        "ARTIFACT_DOWNLOAD_TYPE_PKG",
        "ARTIFACT_DOWNLOAD_TYPE_PKG_META",
        "ARTIFACT_DOWNLOAD_TYPE_GITHUB_API",
        "ARTIFACT_DOWNLOAD_TYPE_GIT_TARBALL",
        "ARTIFACT_DOWNLOAD_TYPE_PUBLISHER_ACCOUNT",
        "ARTIFACT_DOWNLOAD_TYPE_DOWNLOAD_STATS"
      ],
      "default": "ARTIFACT_DOWNLOAD_TYPE_UNSPECIFIED",
      "description": "ArtifactDownloadType identifies the kind of artifact downloaded for malware detection."
    },
    "v1ArtifactLog": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the artifact log.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace of the artifact log."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ArtifactLogSpec",
          "description": "Resource kind specific data."
        }
      },
      "description": "An artifact log contains details of the access of artifacts through https://factory.endorlabs.com.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1ArtifactLogSpec": {
      "type": "object",
      "properties": {
        "assured_package_version_name": {
          "type": "string",
          "description": "The name of the assured package versions."
        },
        "operation": {
          "$ref": "#/definitions/v1ArtifactLogSpecOperation",
          "description": "Operation of the request."
        },
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "Ecosystem of the assured package version."
        },
        "error": {
          "$ref": "#/definitions/googlerpcStatus",
          "description": "Error if the operation fails."
        },
        "claims": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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  ]"
        },
        "remote_address": {
          "type": "string"
        }
      },
      "required": [
        "assured_package_version_name",
        "operation"
      ]
    },
    "v1ArtifactLogSpecOperation": {
      "type": "string",
      "enum": [
        "OPERATION_UNSPECIFIED",
        "OPERATION_READ",
        "OPERATION_UPDATE"
      ],
      "default": "OPERATION_UNSPECIFIED"
    },
    "v1ArtifactOperation": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the artifact operation.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The tenant metadata restrict access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Meta identifies the object."
        },
        "spec": {
          "$ref": "#/definitions/v1ArtifactOperationSpec"
        },
        "response": {
          "$ref": "#/definitions/v1ArtifactOperationResponse",
          "description": "Response contains the result of the executed artifacts command.",
          "readOnly": true
        }
      },
      "description": "ArtifactOperation implements the artifacts operations on the server side.",
      "required": [
        "tenant_meta",
        "meta"
      ]
    },
    "v1ArtifactOperationCommand": {
      "type": "string",
      "enum": [
        "ARTIFACT_OPERATION_COMMAND_UNSPECIFIED",
        "ARTIFACT_OPERATION_COMMAND_SIGN",
        "ARTIFACT_OPERATION_COMMAND_VERIFY",
        "ARTIFACT_OPERATION_COMMAND_REVOKE_SIGNATURE"
      ],
      "default": "ARTIFACT_OPERATION_COMMAND_UNSPECIFIED",
      "description": " - ARTIFACT_OPERATION_COMMAND_SIGN: ARTIFACT_OPERATION_COMMAND_SIGN is used to sign an artifact.\n - ARTIFACT_OPERATION_COMMAND_VERIFY: ARTIFACT_OPERATION_COMMAND_VERIFY is used to verify an artifact.\n - ARTIFACT_OPERATION_COMMAND_REVOKE_SIGNATURE: ARTIFACT_OPERATION_COMMAND_REVOKE_SIGNATURE is used to revoke an artifact signature."
    },
    "v1ArtifactOperationResponse": {
      "type": "object",
      "properties": {
        "result": {
          "$ref": "#/definitions/v1ArtifactOperationResult",
          "description": "The result of the artifact operation."
        },
        "artifact_signature": {
          "$ref": "#/definitions/v1ArtifactSignature",
          "description": "In case of successful verification, this holds information about\nthe signature event, which includes the signature, the time of the signing event\nas well as the various attestations."
        }
      }
    },
    "v1ArtifactOperationResult": {
      "type": "string",
      "enum": [
        "ARTIFACT_OPERATION_RESULT_UNSPECIFIED",
        "ARTIFACT_OPERATION_RESULT_SUCCESS",
        "ARTIFACT_OPERATION_RESULT_NO_ARTIFACT",
        "ARTIFACT_OPERATION_RESULT_NO_SIGNATURE",
        "ARTIFACT_OPERATION_RESULT_TIME_MISMATCH",
        "ARTIFACT_OPERATION_RESULT_INVALID_SIGNATURE",
        "ARTIFACT_OPERATION_RESULT_UNKNOWN_CA",
        "ARTIFACT_OPERATION_RESULT_REVOKED_SIGNATURE",
        "ARTIFACT_OPERATION_RESULT_CLAIMS_MISMATCH",
        "ARTIFACT_OPERATION_RESULT_BAD_CERTIFICATE",
        "ARTIFACT_OPERATION_RESULT_INVALID_KEY_TYPE",
        "ARTIFACT_OPERATION_RESULT_CORRUPTED_SIGNATURE",
        "ARTIFACT_OPERATION_RESULT_KEY_GEN_FAILURE",
        "ARTIFACT_OPERATION_RESULT_CSR_GEN_FAILURE",
        "ARTIFACT_OPERATION_RESULT_SIGN_FAILURE",
        "ARTIFACT_OPERATION_RESULT_INVALID_ARTIFACT_NAME"
      ],
      "default": "ARTIFACT_OPERATION_RESULT_UNSPECIFIED",
      "description": "The result of an artifact operation.\n\n - ARTIFACT_OPERATION_RESULT_UNSPECIFIED: No validator.\n - ARTIFACT_OPERATION_RESULT_SUCCESS: Success in the artifact operation.\n - ARTIFACT_OPERATION_RESULT_NO_ARTIFACT: Couldn't find any signatures for the given artifact name.\n - ARTIFACT_OPERATION_RESULT_NO_SIGNATURE: No signature found for the given digest of the artifact.\n - ARTIFACT_OPERATION_RESULT_TIME_MISMATCH: The timestamp associated with the signature is outside the\ntime window of the validity of the certificate.\n - ARTIFACT_OPERATION_RESULT_INVALID_SIGNATURE: The stored signature is invalid.\n - ARTIFACT_OPERATION_RESULT_UNKNOWN_CA: Unable to verify with a known CA.\n - ARTIFACT_OPERATION_RESULT_REVOKED_SIGNATURE: Signature has been revoked.\n - ARTIFACT_OPERATION_RESULT_CLAIMS_MISMATCH: Claims/attestations in the signature don't match input.\n - ARTIFACT_OPERATION_RESULT_BAD_CERTIFICATE: Empty or corrupted certificate.\n - ARTIFACT_OPERATION_RESULT_INVALID_KEY_TYPE: Could not find the right type of key in the certificate.\n - ARTIFACT_OPERATION_RESULT_CORRUPTED_SIGNATURE: Could not decode signature.\n - ARTIFACT_OPERATION_RESULT_KEY_GEN_FAILURE: Failed to generate private key.\n - ARTIFACT_OPERATION_RESULT_CSR_GEN_FAILURE: Failed to generate certificate request.\n - ARTIFACT_OPERATION_RESULT_SIGN_FAILURE: Failed to sign.\n - ARTIFACT_OPERATION_RESULT_INVALID_ARTIFACT_NAME: Invalid artifact name."
    },
    "v1ArtifactOperationSpec": {
      "type": "object",
      "properties": {
        "command": {
          "$ref": "#/definitions/v1ArtifactOperationCommand",
          "title": "ARTIFACT_OPERATION_COMMAND_SIGN, ARTIFACT_OPERATION_COMMAND_VERIFY or ARTIFACT_OPERATION_COMMAND_REVOKE_SIGNATURE"
        },
        "artifact_name": {
          "type": "string",
          "description": "The name of the artifact being signed or verified."
        },
        "digest": {
          "type": "string",
          "description": "Used only for the REVOKE command and is the source repository digest for the\nsignature to be revoked. The artifact name has to be provided as well."
        },
        "extensions": {
          "$ref": "#/definitions/v1CertificateExtensions",
          "description": "Certificate extensions for artifact signing operations."
        },
        "artifact_type": {
          "$ref": "#/definitions/v1ArtifactType",
          "description": "The type of the artifact being signed or verified."
        }
      },
      "required": [
        "command",
        "artifact_name",
        "artifact_type"
      ]
    },
    "v1ArtifactSignature": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an artifact signature object.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Tenant metadata required for artifact signature requests."
        },
        "spec": {
          "$ref": "#/definitions/v1ArtifactSignatureSpec"
        }
      },
      "description": "Represents an artifact signature object.",
      "required": [
        "meta",
        "tenant_meta",
        "spec"
      ]
    },
    "v1ArtifactSignatureSpec": {
      "type": "object",
      "properties": {
        "certificate": {
          "type": "string",
          "description": "The certificate obtained for this sign operation."
        },
        "signature": {
          "type": "string",
          "description": "The signature of the build artifact."
        },
        "timestamp": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp of the signing event."
        },
        "simple_container_image": {
          "$ref": "#/definitions/v1SimpleContainerImage"
        },
        "revoked": {
          "type": "boolean",
          "description": "Set to true if the signature gets revoked."
        },
        "artifact_type": {
          "$ref": "#/definitions/v1ArtifactType",
          "description": "The type of artifact for this signature."
        },
        "artifact_digest": {
          "type": "string",
          "title": "The artifact's digest"
        },
        "source_repository_ref": {
          "type": "string",
          "description": "Source repository ref. This also exists in the certificate but it's also here\nto quickly look up entries that match."
        },
        "provenance": {
          "$ref": "#/definitions/v1CertificateExtensions",
          "description": "Provenance information for this build artifact."
        },
        "artifact_name": {
          "type": "string",
          "description": "The artifact's name."
        }
      },
      "required": [
        "signature",
        "artifact_type",
        "artifact_digest",
        "artifact_name"
      ]
    },
    "v1ArtifactType": {
      "type": "string",
      "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"
      ],
      "default": "ARTIFACT_TYPE_UNSPECIFIED"
    },
    "v1AskAction": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string"
        },
        "feedback_message": {
          "type": "string",
          "description": "Feedback message shown to the user when asking for confirmation."
        }
      },
      "description": "AskAction allows asking the user with a message."
    },
    "v1AssuredPackageVersion": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the assured package version.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Git repositories are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata are generic for any object."
        },
        "spec": {
          "$ref": "#/definitions/v1AssuredPackageVersionSpec",
          "description": "Specification of the assured package version."
        },
        "processing_status": {
          "$ref": "#/definitions/v1ProcessingStatus"
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "AssuredPackageVersion is a  package version that have been built, tested, and patched by Endor Labs.\nIt includes details on how the version was built, tested, and patched, as well as information on the vulnerabilities that have been addressed through the patches.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "v1AssuredPackageVersionSpec": {
      "type": "object",
      "properties": {
        "build_attestation": {
          "$ref": "#/definitions/SpecBuildAttestation"
        },
        "test_attestation": {
          "$ref": "#/definitions/SpecTestAttestation"
        },
        "security_attestation": {
          "$ref": "#/definitions/SpecSecurityAttestation"
        },
        "deploy_attestation": {
          "$ref": "#/definitions/SpecDeployAttestation"
        },
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "readOnly": true
        },
        "package_name": {
          "type": "string",
          "description": "The name of the package of this assured package version. It is\ncalculated automatically from the assured package version name."
        },
        "sha256": {
          "type": "string",
          "description": "SHA-256 of the assured package version.\nFor Java, this is the SHA of the jar file."
        },
        "reproducible_build_source_code_url": {
          "type": "string",
          "description": "The URL to download the source code\nto reproduce the build of the package version.\nThis is a signed URL valid only for four hours.",
          "readOnly": true
        },
        "reproducible_build_source_code_upload_content": {
          "type": "string",
          "format": "byte"
        },
        "upgrade_summary": {
          "$ref": "#/definitions/SpecUpgradeSummary",
          "description": "Contains the upgrade summary with the package version."
        },
        "version_type": {
          "$ref": "#/definitions/SpecVersionType"
        }
      },
      "required": [
        "version_type"
      ]
    },
    "v1AuditLog": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the audit log.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace of the message that is accessed."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AuditLogSpec"
        }
      },
      "description": "AuditLog represents a CRUD operation on a message.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1AuditLogSpec": {
      "type": "object",
      "properties": {
        "message_uuid": {
          "type": "string",
          "description": "Represents the UUID of the resource which is accessed."
        },
        "message_kind": {
          "type": "string",
          "description": "The kind of the message."
        },
        "operation": {
          "$ref": "#/definitions/v1AuditLogSpecOperation"
        },
        "payload": {
          "$ref": "#/definitions/googleprotobufAny",
          "description": "The payload of the message."
        },
        "error": {
          "$ref": "#/definitions/googlerpcStatus",
          "description": "Error if the operation fails."
        },
        "claims": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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  ]"
        },
        "remote_address": {
          "type": "string"
        }
      },
      "required": [
        "operation"
      ]
    },
    "v1AuditLogSpecOperation": {
      "type": "string",
      "enum": [
        "OPERATION_UNSPECIFIED",
        "OPERATION_CREATE",
        "OPERATION_UPDATE",
        "OPERATION_DELETE",
        "OPERATION_UPSERT"
      ],
      "default": "OPERATION_UNSPECIFIED"
    },
    "v1AuthMethodAPICredentials": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string",
          "description": "The identifier of an API key."
        },
        "secret": {
          "type": "string",
          "description": "The secret for the specified API key."
        }
      },
      "required": [
        "key",
        "secret"
      ]
    },
    "v1AuthMethodAzure": {
      "type": "object",
      "properties": {
        "enable_managed_identity": {
          "type": "boolean",
          "description": "Auth using Azure managed identity for system."
        },
        "managed_identity_client_id": {
          "type": "string",
          "description": "The client ID of the Azure managed identity."
        }
      },
      "required": [
        "managed_identity_client_id"
      ]
    },
    "v1AuthMethodGCP": {
      "type": "object",
      "properties": {
        "service_account": {
          "type": "string",
          "description": "Auth using GCP service account."
        }
      },
      "required": [
        "service_account"
      ]
    },
    "v1AuthenticationLog": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the authentication log.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace of the message that is accessed."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1AuthenticationLogSpec"
        }
      },
      "description": "Represents a CRUD operation on a message.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1AuthenticationLogSpec": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean",
          "description": "Success is set to true if the authentication is succesful."
        },
        "authorized_tenants": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The tenants accessible by this user at the time of authentication."
        },
        "error_message": {
          "type": "string",
          "description": "Error message details if the authentication fails."
        },
        "status": {
          "type": "integer",
          "format": "int32",
          "description": "The return code of the authentication."
        },
        "claims": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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  ]"
        },
        "remote_address": {
          "type": "string",
          "description": "The remote IP address that was discovered."
        },
        "uri": {
          "type": "string",
          "description": "URI used for authentication event."
        }
      }
    },
    "v1AuthenticationResponse": {
      "type": "object",
      "properties": {
        "authentication_source": {
          "type": "string"
        },
        "token": {
          "type": "string"
        },
        "expiration_time": {
          "type": "string",
          "format": "date-time"
        },
        "user": {
          "$ref": "#/definitions/v1User"
        }
      },
      "description": "Response to the request includes a token and the token expiration time for an authenticated user."
    },
    "v1Authorization": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the authorization request.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "claims": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Establishes the list of claims for attribute based access control."
        },
        "target_namespace": {
          "type": "string",
          "description": "The target namespace of the request. If empty, the request is for a global object\nthat doesn't have a namespace."
        },
        "permissions": {
          "$ref": "#/definitions/v1Permissions",
          "description": "The set of allowed permissions.\n\nFor the given claims, the caller has the permissions described below for every\nAPI call. If an API call is not included, then it is not authorized.",
          "readOnly": true
        }
      },
      "description": "Represents an authorization request in the system.",
      "required": [
        "meta",
        "claims"
      ]
    },
    "v1AuthorizationPolicy": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the AuthorizationPolicy resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Authorization policies are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "spec": {
          "$ref": "#/definitions/v1AuthorizationPolicySpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates that the object should be visible in the child namespaces."
        }
      },
      "description": "Represents an authorization policy in the system.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "v1AuthorizationPolicySpec": {
      "type": "object",
      "properties": {
        "clause": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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)."
        },
        "target_namespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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."
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagate indicates that the policy should include\nthe children of the target namespace as well as allowed targets."
        },
        "permissions": {
          "$ref": "#/definitions/v1Permissions"
        },
        "expiration_time": {
          "type": "string",
          "format": "date-time",
          "description": "Disables this policy after its expiration time.\nIf expiration time is not provided, the policy will never expire."
        },
        "is_support_policy": {
          "type": "boolean",
          "description": "is_support_policy indicates that the policy is a support policy and\ncannot be altered without using the SupportAccess API.",
          "readOnly": true
        }
      },
      "required": [
        "clause",
        "target_namespaces",
        "propagate",
        "permissions"
      ]
    },
    "v1AutoDetectResult": {
      "type": "object",
      "properties": {
        "detected_tool_chain_versions": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/AutoDetectResultDetectedToolChainVersion"
          }
        },
        "tool_chains": {
          "$ref": "#/definitions/v1ToolChains",
          "description": "Toolchains auto detected."
        },
        "error": {
          "type": "string",
          "description": "Auto detect error message."
        },
        "detected_versions": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/AutoDetectResultDetectedToolChainVersionList"
          },
          "description": "Detected versions by lanaguage."
        }
      },
      "description": "Message for an auto detect result."
    },
    "v1AutomatedScanParameters": {
      "type": "object",
      "properties": {
        "full_pr_scan": {
          "type": "boolean",
          "description": "full_pr_scan indicates whether a full scan should be enabled during PRs."
        },
        "full_push_scan": {
          "type": "boolean",
          "description": "full_push_scan indicates whether a full scan should be enabled during\npushes."
        },
        "included_paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "included_paths is a list of paths that should be included in the scan."
        },
        "excluded_paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "excluded_paths is a list of paths that should be excluded from the scan."
        },
        "languages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "languages is a list of languages that should be scanned. If emtpy\ndefault values are used."
        },
        "call_graph_languages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "call_graph_languages is the list of languages that should be used to\ncalculate call graphs. If empty, default values are used."
        },
        "bazel_configuration": {
          "$ref": "#/definitions/AutomatedScanParametersBazelConfiguration",
          "description": "bazel_configuration is the configuration that should be used for Bazel\nbuilds. If populated, scans are performed as a bazel repository."
        },
        "additional_environment_variables": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "additional_environment_variables is a list of additional environment\nvariables that must be used, specific to languages or tools."
        },
        "enable_pr_comments": {
          "type": "boolean",
          "description": "enable_pr_comments for this repository."
        },
        "enable_remediation_action": {
          "type": "boolean",
          "description": "enable_remediation_action for this repository."
        },
        "enable_automated_pr_scans": {
          "type": "boolean",
          "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."
        },
        "enable_sast_scan": {
          "type": "boolean",
          "description": "enable_sast_scan for this repository."
        },
        "enable_secret_scan": {
          "type": "boolean",
          "description": "enable_secret_scan for this repository."
        },
        "enable_full_git_log_secret_scan": {
          "type": "boolean",
          "description": "enable_full_git_log_secret_scan for this repository."
        },
        "disable_code_storage": {
          "type": "boolean",
          "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."
        },
        "disable_code_snippet_storage": {
          "type": "boolean",
          "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."
        },
        "enable_pr_security_review_scan": {
          "type": "boolean",
          "description": "enable_pr_security_review_scan is a boolean value that indicates if a Security Review scan should be requested."
        },
        "enable_pr_incremental_scan": {
          "type": "boolean",
          "description": "enable_pr_incremental_scan is a boolean value that indicates if the PR incremental scan should be requested."
        },
        "enable_ai_sast_scan": {
          "type": "boolean",
          "description": "enable_ai_sast_scan is a boolean value that indicates if AI SAST scan should be requested."
        },
        "segment_match_languages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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."
        }
      },
      "description": "AutomatedScanParameters represents the parameters that must be applied during\nautomated cloud scans to the projects associated with the corresponding\nprofile."
    },
    "v1AutomatedScanParametersConfig": {
      "type": "object",
      "properties": {
        "automated_scan_parameters_source": {
          "$ref": "#/definitions/v1AutomatedScanParametersSource",
          "description": "Automated scan parameter source."
        },
        "resolved_scan_environment_variables": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Resolved environment variables."
        }
      },
      "description": "Message for automated scan parameter configuration."
    },
    "v1AutomatedScanParametersSource": {
      "type": "string",
      "enum": [
        "AUTOMATED_SCAN_PARAMETERS_SOURCE_UNSPECIFIED",
        "AUTOMATED_SCAN_PARAMETERS_SOURCE_API",
        "AUTOMATED_SCAN_PARAMETERS_SOURCE_FILE",
        "AUTOMATED_SCAN_PARAMETERS_SOURCE_NAMESPACE_DEFAULT"
      ],
      "default": "AUTOMATED_SCAN_PARAMETERS_SOURCE_UNSPECIFIED",
      "description": "Automated scan parameter source types."
    },
    "v1AzureConfig": {
      "type": "object",
      "properties": {
        "host_url": {
          "type": "string",
          "description": "The URL of the project."
        },
        "personal_access_token": {
          "type": "string",
          "description": "PAT of the user doing integration to fetch resources using REST APIs."
        },
        "webhook_secret": {
          "type": "string",
          "description": "The shared password configured as the basic authentication credential for\nAzure DevOps Service Hook deliveries belonging to this installation."
        },
        "enable_pr_scans": {
          "type": "boolean",
          "description": "enable_pr_scans is a boolean value that indicates if automated PR scans\nare enabled for Azure DevOps repositories."
        },
        "enable_pr_comments": {
          "type": "boolean",
          "description": "enable_pr_comments is a boolean value that indicates if automated PR\ncomments are enabled for Azure DevOps repositories."
        },
        "enable_full_scan": {
          "type": "boolean",
          "description": "enable_full_scan is a boolean value that indicates if the full scan should\nbe enabled for Azure DevOps PR scans."
        }
      },
      "required": [
        "host_url"
      ]
    },
    "v1AzureEvent": {
      "type": "object",
      "properties": {
        "event_type": {
          "$ref": "#/definitions/v1AzureEventEventType"
        }
      },
      "required": [
        "event_type"
      ]
    },
    "v1AzureEventEventType": {
      "type": "string",
      "enum": [
        "EVENT_TYPE_UNSPECIFIED",
        "EVENT_TYPE_PULL_REQUEST"
      ],
      "default": "EVENT_TYPE_UNSPECIFIED"
    },
    "v1AzurePayload": {
      "type": "object",
      "properties": {
        "pull_request_payload": {
          "type": "object",
          "description": "pull_request_payload contains the raw Azure DevOps pull request Service\nHook payload as JSON. The originating PR number lives at\n\"resource.pullRequestId\"."
        }
      },
      "description": "AzurePayload carries SCM-specific webhook data for an Azure DevOps-originated\nscan. Mirrors GitHubPayload so downstream components (e.g., AI SAST baseline\nlookup) can recover the originating PR number on merge-to-main webhook events\nwhere pull_request_id is intentionally blank."
    },
    "v1BaseImageFindingRecord": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The finding UUID.",
          "readOnly": true
        },
        "level": {
          "$ref": "#/definitions/SpecFindingLevel",
          "description": "Severity level of the finding.",
          "readOnly": true
        },
        "finding_categories": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1FindingCategory"
          },
          "description": "Finding categories (e.g. FINDING_CATEGORY_VULNERABILITY).",
          "readOnly": true
        },
        "target_dependency_package": {
          "type": "string",
          "description": "Fully qualified dependency package in \"ecosystem://package@version\" form.\nPopulated from the finding's spec.target_dependency_package_name when set,\notherwise from dependency_package_version_metadata.meta.name. Never the\nbare target_dependency_name.",
          "readOnly": true
        },
        "vulnerability_id": {
          "type": "string",
          "description": "Preferred single vulnerability identifier for VULNERABILITY findings: the\nCVE ID when the advisory has one, otherwise the primary advisory ID (e.g. a\nGHSA). Empty for non-vulnerability findings. For the complete set of IDs use\nvulnerability_ids.",
          "readOnly": true
        },
        "vulnerability_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "All identifiers for the advisory behind a VULNERABILITY finding: the primary\nadvisory ID (vulnerability.meta.name) first, followed by every alias\n(vulnerability.spec.aliases, e.g. CVE / GHSA cross-references), de-duplicated\nand order-preserving. Empty for non-vulnerability findings.",
          "readOnly": true
        },
        "summary": {
          "type": "string",
          "description": "Human-readable finding text, copied from the finding's spec.summary\n(e.g. \"\u003cpkg\u003e has a \u003ctype\u003e vulnerability identified by \u003cid\u003e: \u003csummary\u003e. ...\").",
          "readOnly": true
        },
        "finding_tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1FindingTags"
          },
          "description": "Projected reachability of the finding's dependency in the app image.\nPopulated only when Response.reachability_available is true.",
          "readOnly": true
        }
      },
      "description": "BaseImageFindingRecord is a compact projection of one changed finding in the\nbase-image update impact record lists (the per-bucket fixed/introduced lists\nand the records drill-down page). Feature-local by design: it is intentionally\nNOT the shared FindingSummaryInfo, so the version-upgrade surface that consumes\nthat message is left untouched."
    },
    "v1BatchDependencyMetadata": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Information about the tenant to which the root package (importer)\nbelongs."
        },
        "spec": {
          "$ref": "#/definitions/v1BatchDependencyMetadataSpec",
          "description": "Resource kind specific data."
        }
      },
      "description": "Request to create multiple DependencyMetadata objects."
    },
    "v1BatchDependencyMetadataSpec": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1DependencyMetadata"
          },
          "description": "List of dependency metadata objects."
        }
      },
      "description": "BatchDependencyMetadata specific data."
    },
    "v1BatchFileSegments": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace of the file segments."
        },
        "spec": {
          "$ref": "#/definitions/v1BatchFileSegmentsSpec",
          "description": "Resource kind specific data."
        }
      },
      "description": "Request used to create or delete multiple file segment objects."
    },
    "v1BatchFileSegmentsSpec": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1FileSegments"
          },
          "description": "List of file segment objects."
        }
      },
      "description": "BatchFileSegments specific data."
    },
    "v1BatchNotification": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Information about the tenant."
        },
        "spec": {
          "$ref": "#/definitions/v1BatchNotificationSpec",
          "description": "Resource kind specific data."
        }
      },
      "description": "Request to create multiple Notification objects."
    },
    "v1BatchNotificationSpec": {
      "type": "object",
      "properties": {
        "finding_uuids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of finding UUIDs to create notifications."
        },
        "notification_target_uuid": {
          "type": "string",
          "description": "Notification target UUID."
        },
        "notifications": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Notification"
          },
          "description": "List of notification objects."
        }
      },
      "description": "BatchNotification specific data."
    },
    "v1BatchPackageLicenseQuery": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The uuid of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace all queries in the batch belong to."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1BatchPackageLicenseQuerySpec",
          "description": "Resource kind specific data."
        }
      },
      "description": "BatchPackageLicenseQuery groups multiple PackageLicenseQuery requests into a single call.\nThe server evaluates each item and populates its output fields (licenses, copyrights,\nnotices, applied_overrides) before returning the object."
    },
    "v1BatchPackageLicenseQuerySpec": {
      "type": "object",
      "properties": {
        "queries": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PackageLicenseQuery"
          },
          "description": "Package license queries to evaluate. Each item requires spec.package_version_uuid;\nthe server populates spec.licenses, spec.copyrights, spec.notices, and\nspec.applied_overrides on each returned item."
        }
      }
    },
    "v1BazelMetadata": {
      "type": "object",
      "properties": {
        "build_path": {
          "type": "string",
          "description": "The build path."
        }
      },
      "description": "BazelMetadata contains the Bazel metadata."
    },
    "v1BitBucketCloudAuthConfig": {
      "type": "object",
      "properties": {
        "app_password_config": {
          "$ref": "#/definitions/v1AppPasswordConfig"
        },
        "access_token": {
          "type": "string",
          "title": "The access token associated with the Bitbucket Cloud account.\nhttps://support.atlassian.com/bitbucket-cloud/docs/access-tokens"
        }
      },
      "description": "Configuration for Bitbucket Cloud authentication.",
      "required": [
        "access_token"
      ]
    },
    "v1BitBucketConfig": {
      "type": "object",
      "properties": {
        "host_url": {
          "type": "string",
          "description": "The URL of the workspace (only for cloud) or project."
        },
        "cloud": {
          "$ref": "#/definitions/v1BitBucketCloudAuthConfig"
        },
        "data_center": {
          "$ref": "#/definitions/v1BitBucketDataCenterAuthConfig"
        },
        "webhook_secret": {
          "type": "string",
          "description": "The webhook secret configured in Bitbucket for validating incoming webhook\nevents."
        },
        "enable_pr_scans": {
          "type": "boolean",
          "description": "enable_pr_scans is a boolean value that indicates if the automated PR scans\nare enabled."
        },
        "enable_pr_comments": {
          "type": "boolean",
          "description": "enable_pr_comments is a boolean value that indicates if the automated PR\ncomments should be enabled."
        },
        "enable_full_scan": {
          "type": "boolean",
          "description": "enable_full_scan is a boolean value that indicates if the full scan should\nbe enabled."
        }
      },
      "required": [
        "host_url"
      ]
    },
    "v1BitBucketDataCenterAuthConfig": {
      "type": "object",
      "properties": {
        "http_access_token": {
          "type": "string",
          "description": "The HTTP Access Token used for Bitbucket Datacenter authentication."
        }
      },
      "description": "Configuration for Bitbucket Datacenter authentication.",
      "required": [
        "http_access_token"
      ]
    },
    "v1BitbucketEvent": {
      "type": "object",
      "properties": {
        "event_type": {
          "$ref": "#/definitions/v1BitbucketEventEventType"
        }
      },
      "required": [
        "event_type"
      ]
    },
    "v1BitbucketEventEventType": {
      "type": "string",
      "enum": [
        "EVENT_TYPE_UNSPECIFIED",
        "EVENT_TYPE_PULL_REQUEST"
      ],
      "default": "EVENT_TYPE_UNSPECIFIED"
    },
    "v1BitbucketPayload": {
      "type": "object",
      "properties": {
        "pull_request_payload": {
          "type": "object",
          "description": "pull_request_payload contains the raw Bitbucket pull request webhook\npayload as JSON. The originating PR number lives at \"pullrequest.id\"\n(Bitbucket Cloud) or \"pullRequest.id\" (Bitbucket Data Center)."
        }
      },
      "description": "BitbucketPayload carries SCM-specific webhook data for a Bitbucket-originated\nscan (Bitbucket Cloud or Bitbucket Data Center). Mirrors GitHubPayload so\ndownstream components (e.g., AI SAST baseline lookup) can recover the\noriginating PR number on merge-to-main webhook events where pull_request_id\nis intentionally blank."
    },
    "v1BlockAction": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string"
        },
        "feedback_message": {
          "type": "string",
          "description": "Feedback message shown to the user when the action is blocked."
        }
      },
      "description": "BlockAction blocks the activity and shows a message."
    },
    "v1BlockReason": {
      "type": "string",
      "enum": [
        "BLOCK_REASON_UNSPECIFIED",
        "BLOCK_REASON_MALWARE_DETECTED",
        "BLOCK_REASON_MIN_AGE_NOT_MET"
      ],
      "default": "BLOCK_REASON_UNSPECIFIED",
      "description": "BlockReason represents the reason why a package was blocked.\nDeprecated: use PackageFirewallLog.Reason instead."
    },
    "v1Bom": {
      "type": "object",
      "properties": {
        "resolution_timestamp": {
          "type": "string",
          "format": "date-time"
        },
        "dependency_graph": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "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"
        },
        "dependencies": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/BomDependency"
          },
          "description": "Different package managers use different dependency graph serialization\nstrategies. Include the serialized list here to avoid re-implementing\nthis within endoctl."
        },
        "dependency_files": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/BomDependencyFile"
          },
          "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."
        }
      },
      "required": [
        "resolution_timestamp"
      ]
    },
    "v1BranchAccess": {
      "type": "object",
      "properties": {
        "allow_create": {
          "type": "boolean",
          "description": "Anyone with write access to the repository can create a new branch."
        },
        "allow_delete": {
          "type": "boolean",
          "description": "Anyone with write access to the repository can delete a branch."
        },
        "allow_force_push": {
          "type": "boolean",
          "description": "Anyone with write access to the repository can force push to a branch."
        },
        "allow_fork_sync": {
          "type": "boolean",
          "description": "Users can pull changes from upstream when the branch is locked."
        },
        "allow_review_bypass": {
          "type": "boolean",
          "description": "Specific users, teams, or apps can bypass pull request requirements."
        },
        "allow_self_approval": {
          "type": "boolean",
          "description": "Users can approve their own pull requests."
        },
        "dismiss_stale_approvals": {
          "type": "boolean",
          "description": "Approving reviews are automatically dismissed when someone pushes a new commit."
        },
        "enforce_admins": {
          "type": "boolean",
          "description": "All configured restrictions are also enforced for administrators."
        },
        "is_locked": {
          "type": "boolean",
          "description": "Branch is set to read-only."
        },
        "linear_history": {
          "type": "boolean",
          "description": "Linear commit Git history is enforced, which prevents anyone from pushing merge commits to a branch."
        },
        "require_code_owner_approval": {
          "type": "boolean",
          "description": "Pull request merges are blocked until code owners have reviewed."
        },
        "require_comment_resolution": {
          "type": "boolean",
          "description": "All pull request comments must be resolved before it can be merged."
        },
        "require_signatures": {
          "type": "boolean",
          "description": "All commits must be signed."
        },
        "require_status_checks": {
          "type": "boolean",
          "description": "All status checks must pass before merging."
        },
        "require_update": {
          "type": "boolean",
          "description": "Branch must be up to date before merging."
        },
        "restrict_dismiss": {
          "type": "boolean",
          "description": "Specific users, teams, and apps can dismiss pull request reviews."
        },
        "restrict_push": {
          "type": "boolean",
          "description": "Specific users, teams, and apps can push code."
        },
        "num_approvals_required": {
          "type": "integer",
          "format": "int32",
          "description": "A minimum number of approvals is required to merge a pull request."
        }
      },
      "description": "BranchAccess contains normalized branch protection settings."
    },
    "v1BranchProtection": {
      "type": "object",
      "properties": {
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested branch protection rule object."
        }
      },
      "description": "The list of branch protection rules for protected branches.",
      "required": [
        "ingested_object"
      ]
    },
    "v1BreakdownDimension": {
      "type": "string",
      "enum": [
        "BREAKDOWN_DIMENSION_UNSPECIFIED",
        "BREAKDOWN_DIMENSION_PROJECT",
        "BREAKDOWN_DIMENSION_USER_TYPE",
        "BREAKDOWN_DIMENSION_REF_TYPE",
        "BREAKDOWN_DIMENSION_EMAIL_DOMAIN",
        "BREAKDOWN_DIMENSION_EMAIL_VERIFICATION"
      ],
      "default": "BREAKDOWN_DIMENSION_UNSPECIFIED",
      "description": "BreakdownDimension represents the dimension by which contributor usage can be broken down.\n\n - BREAKDOWN_DIMENSION_PROJECT: Breakdown by project.\n - BREAKDOWN_DIMENSION_USER_TYPE: Breakdown by user type (eg by bot vs human).\n - BREAKDOWN_DIMENSION_REF_TYPE: Breakdown by ref type (eg default branch vs non-default branch).\n - BREAKDOWN_DIMENSION_EMAIL_DOMAIN: Breakdown by email domain.\n - BREAKDOWN_DIMENSION_EMAIL_VERIFICATION: Breakdown by contributor email verification status (e.g. verified vs unverified)."
    },
    "v1BreakdownEntry": {
      "type": "object",
      "properties": {
        "dimension": {
          "$ref": "#/definitions/v1BreakdownDimension",
          "description": "The dimension at which the breakdown is performed."
        },
        "dimension_key": {
          "type": "string",
          "description": "The key of the breakdown dimension (e.g. project UUID)."
        },
        "dimension_count": {
          "type": "string",
          "format": "uint64",
          "description": "The number of active contributors at this breakdown dimension."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional metadata for the breakdown entry.\nKeys must match pattern: ^[-A-Za-z0-9_.]*$ and be max 64 characters.\nValues must be max 16384 bytes."
        },
        "emails": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ContributorEmail"
          },
          "description": "The emails of the contributors at this breakdown dimension."
        }
      },
      "description": "BreakdownEntry represents a single breakdown dimension for contributor history.",
      "required": [
        "dimension",
        "dimension_key",
        "dimension_count"
      ]
    },
    "v1BucketGranularity": {
      "type": "string",
      "enum": [
        "BUCKET_GRANULARITY_UNSPECIFIED",
        "BUCKET_GRANULARITY_HOURLY",
        "BUCKET_GRANULARITY_DAILY"
      ],
      "default": "BUCKET_GRANULARITY_UNSPECIFIED",
      "description": "BucketGranularity identifies the time granularity of an aggregate bucket.\n\n - BUCKET_GRANULARITY_DAILY: Bucket spans a full UTC calendar day (truncated to 00:00:00Z)."
    },
    "v1CIRun": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a CI run.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "CI runs are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1CIRunSpec",
          "description": "The internal specification of the object."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "Represents the information captured from a CI run of endorctl.",
      "required": [
        "meta",
        "context"
      ]
    },
    "v1CIRunSpec": {
      "type": "object",
      "properties": {
        "start_time": {
          "type": "string",
          "format": "date-time",
          "description": "Start time is the time a CI run started."
        },
        "end_time": {
          "type": "string",
          "format": "date-time",
          "description": "End time is the time a CI run ended."
        },
        "run_uuid": {
          "type": "string",
          "description": "The UUID of the run."
        },
        "run_tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The tags associated with this CI run."
        },
        "baseline": {
          "type": "string",
          "description": "Baseline repository version for this CI run."
        }
      }
    },
    "v1CallGraphAnalysisType": {
      "type": "string",
      "enum": [
        "CALL_GRAPH_ANALYSIS_TYPE_UNSPECIFIED",
        "CALL_GRAPH_ANALYSIS_TYPE_FULL",
        "CALL_GRAPH_ANALYSIS_TYPE_PRECOMPUTED"
      ],
      "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."
    },
    "v1CallGraphData": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID for a call graph resource.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespaces are associated with a tenant."
        },
        "zstd_bytes": {
          "type": "string",
          "format": "byte",
          "description": "Callgraph proto bytes are encoded in zstd bytes.\nThe caller is responsible to compress/uncompress the bytes."
        },
        "any": {
          "$ref": "#/definitions/googleprotobufAny",
          "description": "Callgraph is encoded in json bytes.\nUse the HTTP header x-callgraph-encoding=any to get the spec in this format."
        },
        "related_object": {
          "type": "string",
          "description": "An internal value that identifies the callgraph storage location.",
          "readOnly": true
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "The context of the call graph that is equal to the context of the associated\npackage."
        },
        "storage_url": {
          "type": "string",
          "description": "The URL of the storage location of the callgraph.",
          "readOnly": true
        }
      },
      "description": "CallGraphData represents a call graph data request in the system.",
      "required": [
        "meta",
        "tenant_meta"
      ]
    },
    "v1CargoSpec": {
      "type": "object",
      "properties": {
        "priority": {
          "type": "integer",
          "format": "int32",
          "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."
        },
        "url": {
          "type": "string",
          "description": "The url of the crates registry that Cargo must use."
        },
        "token": {
          "type": "string",
          "description": "A token that must be provided by the repository owner."
        }
      },
      "description": "CargoSpec represents a configuration for Cargo.",
      "required": [
        "priority"
      ]
    },
    "v1CategoryScore": {
      "type": "object",
      "properties": {
        "category": {
          "$ref": "#/definitions/v1ScoreCategory",
          "description": "The category for this score."
        },
        "score": {
          "type": "integer",
          "format": "int32",
          "description": "The score for this score."
        },
        "description": {
          "type": "string",
          "description": "Text description of the category."
        },
        "centered_score": {
          "type": "number",
          "format": "float",
          "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."
        },
        "raw_score": {
          "type": "number",
          "format": "float",
          "description": "Raw score for the category. This is the score by\nadding up the score factors, not centered around 5."
        }
      },
      "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."
    },
    "v1CertificateExtensions": {
      "type": "object",
      "properties": {
        "runner_environment": {
          "type": "string",
          "description": "Specifies whether the build took place in platform-hosted cloud infrastructure or customer/self-hosted infrastructure."
        },
        "source_repository": {
          "type": "string",
          "description": "Source repository on which the build was based."
        },
        "source_repository_digest": {
          "type": "string",
          "description": "Immutable reference to a specific version of the source code on which the build was based."
        },
        "source_repository_owner": {
          "type": "string",
          "description": "Source repository owner of the source repository on which the build was based."
        },
        "source_repository_ref": {
          "type": "string",
          "description": "Source Repository Ref on which the build run was based."
        },
        "build_config_name": {
          "type": "string",
          "description": "Name of the top-level/initiating build instructions (workflow)."
        },
        "build_config_digest": {
          "type": "string",
          "description": "Immutable reference to the specific version of the top-level/initiating build instructions (workflow SHA)."
        },
        "certificate_identity": {
          "type": "string",
          "description": "Immutable reference to the specific identity expected in a valid certificate. Valid values include email address, DNS names, IP addresses, and URIs."
        },
        "certificate_oidc_issuer": {
          "type": "string",
          "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."
        }
      },
      "description": "CertificateExtensions contains the certificate extensions retrieved from an identity token."
    },
    "v1CertificateRequest": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a certificate request.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata are generic for any object."
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Tenant metadata required for certificate requests."
        },
        "spec": {
          "$ref": "#/definitions/v1CertificateRequestSpec"
        }
      },
      "description": "CertificateRequest represents a certificate signing request.",
      "required": [
        "meta",
        "tenant_meta"
      ]
    },
    "v1CertificateRequestSpec": {
      "type": "object",
      "properties": {
        "certificate_request": {
          "type": "string"
        },
        "certificate": {
          "type": "string",
          "readOnly": true
        },
        "type": {
          "$ref": "#/definitions/SpecRequestType",
          "description": "The type of request."
        },
        "extensions": {
          "$ref": "#/definitions/v1CertificateExtensions",
          "description": "Certificate extensions for image signing operations."
        }
      },
      "required": [
        "certificate_request"
      ]
    },
    "v1ChangeType": {
      "type": "string",
      "enum": [
        "CHANGE_TYPE_UNSPECIFIED",
        "CHANGE_TYPE_ADDED",
        "CHANGE_TYPE_REMOVED",
        "CHANGE_TYPE_CHANGED",
        "CHANGE_TYPE_RENAMED"
      ],
      "default": "CHANGE_TYPE_UNSPECIFIED",
      "description": "Protobuf definition for ChangeType."
    },
    "v1Checksum": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "description": "A string representation (base64 encoded) of the SHA/MD5 checksum of the package."
        },
        "algorithm": {
          "$ref": "#/definitions/ChecksumHashAlgorithm",
          "description": "Algorithm can be from MD5, SHA256, SHA1, or others."
        }
      },
      "description": "The details of checksum including the algorithm used to prepare the checksum.",
      "required": [
        "value",
        "algorithm"
      ]
    },
    "v1CiCdTool": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Tool name."
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of control function categories (based on static name to category mapping)."
        },
        "summary": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Summary of each evidence instance."
        },
        "evidence": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/CiCdToolEvidence"
          },
          "description": "Details of where and/or how the tool was discovered."
        },
        "description": {
          "type": "string",
          "description": "Tool description."
        },
        "display_name": {
          "type": "string",
          "description": "Tool's display name for UI."
        }
      },
      "description": "Represents a CI/CD tool.",
      "required": [
        "name"
      ]
    },
    "v1CiCdTools": {
      "type": "object",
      "properties": {
        "tools": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1CiCdTool"
          }
        }
      },
      "description": "CiCdTools Metric Value contains information about CI/CD tools discovered in the repository version."
    },
    "v1CisCategory": {
      "type": "string",
      "enum": [
        "CIS_CATEGORY_UNSPECIFIED",
        "CIS_CATEGORY_SRC_CODE",
        "CIS_CATEGORY_BLD_PIPELINES",
        "CIS_CATEGORY_DEPENDENCIES",
        "CIS_CATEGORY_ARTIFACTS",
        "CIS_CATEGORY_DEPLOYMENT"
      ],
      "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."
    },
    "v1CisReqId": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "v1CisScorecard": {
      "type": "object",
      "properties": {
        "benchmarks": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/CisScorecardCisBenchmark"
          }
        }
      },
      "description": "CisScorecard represents the CIS benchmark scorecard for the parent repository.\nA scorecard contains a list of benchmarks."
    },
    "v1CisSubCategory": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "v1Class": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Fully qualified name of the class."
        },
        "checksum": {
          "$ref": "#/definitions/v1Hash",
          "description": "Checksum of the resource, used to verify data integrity."
        },
        "non_metadata_checksum": {
          "$ref": "#/definitions/v1Hash",
          "description": "Checksum of the resource without any naming metadata.\nExample: For Java, this is the checksum of the class file after we have\nremoved all occurences of namespaces (package names)."
        }
      },
      "description": "Contains metadata information about the source code for a specific Java\nclass."
    },
    "v1ClientLog": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the client log.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace of the message that is accessed."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ClientLogSpec"
        }
      },
      "description": "ClientLog represents a CRUD operation on a message.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1ClientLogLogMessage": {
      "type": "object",
      "properties": {
        "level": {
          "$ref": "#/definitions/v1LogLevel",
          "description": "The log level."
        },
        "json_payload": {
          "type": "string",
          "description": "The json payload of the message."
        },
        "tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The tags that are associated with the log message."
        },
        "timestamp": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp of the log message."
        }
      },
      "required": [
        "level",
        "json_payload",
        "timestamp"
      ]
    },
    "v1ClientLogSpec": {
      "type": "object",
      "properties": {
        "log_messages": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ClientLogLogMessage"
          },
          "description": "An array of log messages provided as JSON payloads."
        },
        "source": {
          "type": "string",
          "description": "The source that is creating this message."
        }
      },
      "required": [
        "source"
      ]
    },
    "v1CmdHook": {
      "type": "object",
      "properties": {
        "cmd_line": {
          "type": "string",
          "description": "Command line that was executed."
        },
        "tool_input": {
          "type": "object",
          "description": "Tool invocation input; structure is tool-specific (use Struct for JSON)."
        },
        "tool_response": {
          "type": "object",
          "description": "Tool result; structure is tool-specific (e.g. stdout/stderr or filenames)."
        }
      },
      "description": "CmdHook contains payload for command-line related hooks."
    },
    "v1CmdLineActivity": {
      "type": "object",
      "properties": {
        "patterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Patterns to match against the command (e.g. \"rm -rf /.*\", \"curl .* \\\\| bash\")."
        }
      },
      "description": "CmdLineActivity matches command-line execution by regex patterns."
    },
    "v1CmdLineMatch": {
      "type": "object",
      "properties": {
        "matched_cmd_pattern": {
          "type": "string",
          "title": "matched cmd pattern"
        }
      },
      "description": "CmdLineMatch describes a command-line invocation that matched a policy."
    },
    "v1CocoapodSpec": {
      "type": "object",
      "properties": {
        "priority": {
          "type": "integer",
          "format": "int32",
          "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."
        },
        "url": {
          "type": "string",
          "description": "The URL of the registry that the Cocoapods package manager must use."
        }
      },
      "description": "Represents a configuration for the Cocoapod package manager.\nCocoapods does not support any registry authentication.",
      "required": [
        "priority"
      ]
    },
    "v1CodeOwnerData": {
      "type": "object",
      "properties": {
        "owners": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of code owners."
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of labels."
        }
      },
      "description": "Code owner information for a file path or pattern."
    },
    "v1CodeOwners": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the object.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Tenant data."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1CodeOwnersSpec",
          "description": "Object specific data."
        }
      },
      "description": "Code owner information for a project.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1CodeOwnersSpec": {
      "type": "object",
      "properties": {
        "patterns": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/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."
        },
        "version": {
          "$ref": "#/definitions/v1Version",
          "description": "Version the current CODEOWNERS content was first observed in.\nOnly updated when the CODEOWNERS file content changes."
        },
        "file_hash": {
          "type": "string",
          "description": "The SHA-256 hash of the CODEOWNERS file."
        }
      }
    },
    "v1ColumnTypes": {
      "type": "string",
      "enum": [
        "COLUMN_TYPES_UNSPECIFIED",
        "COLUMN_TYPES_INT32",
        "COLUMN_TYPES_STRING",
        "COLUMN_TYPES_FLOAT",
        "COLUMN_TYPES_BOOL",
        "COLUMN_TYPES_STRING_LIST"
      ],
      "default": "COLUMN_TYPES_UNSPECIFIED",
      "description": "The supported data types.\n\n - COLUMN_TYPES_UNSPECIFIED: EMPTY\n - COLUMN_TYPES_INT32: INT32\n - COLUMN_TYPES_STRING: String\n - COLUMN_TYPES_FLOAT: Float\n - COLUMN_TYPES_BOOL: Bool\n - COLUMN_TYPES_STRING_LIST: List of strings"
    },
    "v1ColumnValue": {
      "type": "object",
      "properties": {
        "int_value": {
          "type": "integer",
          "format": "int32"
        },
        "str_value": {
          "type": "string"
        },
        "float_value": {
          "type": "number",
          "format": "float"
        },
        "bool_value": {
          "type": "boolean"
        },
        "string_list_value": {
          "$ref": "#/definitions/v1StringList"
        }
      },
      "description": "The container for various data types that can be contained in a column.\nThe information from column_types in TableDescription is used to read the values."
    },
    "v1ConanSpec": {
      "type": "object",
      "properties": {
        "priority": {
          "type": "integer",
          "format": "int32",
          "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."
        },
        "url": {
          "type": "string",
          "description": "The URL of the Conan remote registry."
        },
        "remote_name": {
          "type": "string",
          "description": "The logical name of the remote in the Conan client configuration."
        },
        "basic_auth": {
          "$ref": "#/definitions/v1ConanSpecBasicAuth",
          "description": "Basic auth credentials for the Conan remote."
        },
        "aws": {
          "$ref": "#/definitions/PackageManagerAWSAuthProvider",
          "description": "AWS authentication for the Conan remote (for example CodeArtifact)."
        }
      },
      "description": "Represents a configuration for the Conan package manager.",
      "required": [
        "priority",
        "url"
      ]
    },
    "v1ConanSpecBasicAuth": {
      "type": "object",
      "properties": {
        "username": {
          "type": "string",
          "description": "Username for basic auth (JFrog Artifactory or self-hosted)."
        },
        "password": {
          "type": "string",
          "description": "Password or API token for basic auth."
        }
      },
      "required": [
        "username",
        "password"
      ]
    },
    "v1Confidence": {
      "type": "string",
      "enum": [
        "CONFIDENCE_UNSPECIFIED",
        "CONFIDENCE_UNKNOWN",
        "CONFIDENCE_HIGH",
        "CONFIDENCE_MEDIUM",
        "CONFIDENCE_LOW"
      ],
      "default": "CONFIDENCE_UNSPECIFIED",
      "description": "Protobuf definition for Confidence."
    },
    "v1Conflict": {
      "type": "object",
      "properties": {
        "current": {
          "type": "string",
          "description": "The current version of the direct dependency being upgraded."
        },
        "upgrade": {
          "type": "string",
          "description": "The new version of the direct dependency being upgraded."
        },
        "conflicting_current": {
          "type": "string",
          "description": "The conflicting transitive dependency, current version."
        },
        "conflicting_upgrade": {
          "type": "string",
          "description": "The conflicting transitive dependency, version after the upgrade."
        },
        "conflicting_directs_current": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The direct dependencies using the conflicting transitive dependency in the current version."
        },
        "conflicting_directs_upgrade": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The direct dependencies using the conflicting transitive dependency after the upgrade."
        }
      },
      "description": "Protobuf definition for Conflict."
    },
    "v1Constraint": {
      "type": "object",
      "properties": {
        "min": {
          "type": "string"
        },
        "max": {
          "type": "string"
        }
      }
    },
    "v1ContainerArchitecture": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "v1ContainerAsBase": {
      "type": "object",
      "properties": {
        "used": {
          "type": "boolean",
          "description": "True if this image is used as a base image elsewhere."
        },
        "use_count": {
          "type": "string",
          "format": "uint64",
          "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."
        },
        "first_seen": {
          "type": "string",
          "format": "date-time",
          "description": "First time this image was seen used as a base image."
        },
        "last_seen": {
          "type": "string",
          "format": "date-time",
          "description": "Most recent time this image was seen used as a base image."
        },
        "update_options": {
          "$ref": "#/definitions/v1ContainerImageUpdateOptions",
          "description": "Update options capturing possible base image update candidates.\nThe update_time on ContainerImageUpdateOptions applies to the entire set of options."
        }
      },
      "description": "ContainerAsBase captures usage of this container image as a base image elsewhere."
    },
    "v1ContainerBaseImage": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the base image. For example, \"debian:bookworm-slim\"."
        },
        "digest": {
          "type": "string",
          "description": "The SHA256 digest of the base image."
        },
        "chain_id": {
          "type": "string",
          "description": "Chain ID for the base image's layers."
        },
        "update_options": {
          "$ref": "#/definitions/v1ContainerImageUpdateOptions",
          "description": "Base image update candidates for this app image."
        },
        "package_version_uuid": {
          "type": "string",
          "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."
        }
      },
      "description": "The base image of a container Image."
    },
    "v1ContainerBaseImageUpdateImpactQuery": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the query.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The query is scoped to a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ContainerBaseImageUpdateImpactQuerySpec",
          "description": "Query specification."
        }
      },
      "description": "ContainerBaseImageUpdateImpactQuery computes, on demand, how the vulnerability\nfindings of a scanned container image's base image would change if the base\nwere moved to each of its available update options (refreshed, next, latest).\nIt is a computed query in the style of DashboardSummaryQuery: the response is\nderived live from existing Finding and PackageVersion records and is never\npersisted, so it cannot go stale as findings are recomputed.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "v1ContainerBaseImageUpdateImpactQuerySpec": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1ContainerBaseImageUpdateImpactQuerySpecRequest",
          "description": "The impact query request."
        },
        "response": {
          "$ref": "#/definitions/v1ContainerBaseImageUpdateImpactQuerySpecResponse",
          "description": "The impact query response."
        }
      },
      "description": "Spec carries the request and the computed response."
    },
    "v1ContainerBaseImageUpdateImpactQuerySpecRequest": {
      "type": "object",
      "properties": {
        "package_version_uuid": {
          "type": "string",
          "description": "The scanned application image PackageVersion whose\ncontainer_metadata.base_image.update_options define the candidates to\nassess. Its own findings supply the reachability that is projected onto\nthe base image findings, since candidate base scans do not measure\nreachability themselves."
        },
        "max_top_records_per_bucket": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum number of top changed findings per list, in both the\nseverity_records and reachability_records groupings. Applied to each\nbucket's fixed and introduced lists separately (e.g. up to this many\nfixed and this many introduced criticals). Unset defaults to 10; set to 0\nto omit the inline lists (counts only, cheaper). Capped at 100; for a full\nper-bucket list use ContainerBaseImageUpdateImpactRecordsQueryService. A\nsingle-digit value is typical (cf. the dashboard's top-N of 8)."
        },
        "record_scope": {
          "$ref": "#/definitions/v1FindingRecordScope",
          "description": "Which finding types to include in the record-level fixed/introduced\nlists. Unset defaults to ALL (every finding type). Only affects the\nrecord lists (and the per-bucket *_num_results totals); the count fields\nare always computed for both all and vulnerability findings."
        }
      },
      "description": "Inputs that select the app image and shape the computation.",
      "required": [
        "package_version_uuid"
      ]
    },
    "v1ContainerBaseImageUpdateImpactQuerySpecResponse": {
      "type": "object",
      "properties": {
        "base_image_name": {
          "type": "string",
          "description": "The current base image reference (tag), copied from the app image's\ncontainer_metadata.base_image.name.",
          "readOnly": true
        },
        "base_image_digest": {
          "type": "string",
          "description": "The current base image manifest digest, copied from the app image's\ncontainer_metadata.base_image.digest.",
          "readOnly": true
        },
        "reachability_available": {
          "type": "boolean",
          "description": "True when OS reachability analysis was enabled and succeeded on the app\nimage scan. When true, the *_reachability_counts fields (here and on each\nupdate option) are populated; when false they are left unset and only the\n*_counts severity breakdowns are returned.",
          "readOnly": true
        },
        "all_reachability_counts": {
          "$ref": "#/definitions/ResponseReachabilityCounts",
          "description": "Reachability breakdown of ALL current-base findings (every finding type).\nPopulated only when reachability_available is true.",
          "readOnly": true
        },
        "vuln_reachability_counts": {
          "$ref": "#/definitions/ResponseReachabilityCounts",
          "description": "Reachability breakdown of current-base VULNERABILITY findings only.\nPopulated only when reachability_available is true.",
          "readOnly": true
        },
        "all_counts": {
          "$ref": "#/definitions/ResponseSeverityCounts",
          "description": "Severity counts of ALL current-base findings (every finding type). Always\npopulated: the baseline is derived from the app image's own base-layer\nfindings (see §7.1), so it is available whenever update options exist.",
          "readOnly": true
        },
        "vuln_counts": {
          "$ref": "#/definitions/ResponseSeverityCounts",
          "description": "Severity counts of current-base VULNERABILITY findings only. Always\npopulated: the baseline is derived from the app image's own base-layer\nfindings (see §7.1), so it is available whenever update options exist.",
          "readOnly": true
        },
        "refreshed_option": {
          "$ref": "#/definitions/ResponseUpdateOption",
          "description": "Impact of adopting the refreshed base (same tag, newer digest). Unset\nwhen the app image has no refreshed update option.",
          "readOnly": true
        },
        "next_option": {
          "$ref": "#/definitions/ResponseUpdateOption",
          "description": "Impact of adopting the next base (the immediately newer tag by\nsemver/timestamp ordering). Unset when the app image has no next update\noption.",
          "readOnly": true
        },
        "latest_option": {
          "$ref": "#/definitions/ResponseUpdateOption",
          "description": "Impact of adopting the latest base (newest available tag). Unset when\nthe app image has no latest update option.",
          "readOnly": true
        }
      },
      "description": "Computed results: shared current-base counts plus one entry per update\noption available on the app image."
    },
    "v1ContainerBaseImageUpdateImpactRecordsQuery": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the query.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The query is scoped to a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ContainerBaseImageUpdateImpactRecordsQuerySpec",
          "description": "Query specification."
        }
      },
      "description": "ContainerBaseImageUpdateImpactRecordsQuery pages through the full fixed or\nintroduced finding list for a single update option and a single bucket (one\nseverity or one reachability bucket), using the standard ListParameters\npagination contract. It backs each per-bucket \"View more\" in the impact UI.\nThe impact query above returns only the top-N inline records per bucket; this\nquery is the drill-down for the complete per-bucket, per-kind set.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "v1ContainerBaseImageUpdateImpactRecordsQuerySeverity": {
      "type": "string",
      "enum": [
        "SEVERITY_UNSPECIFIED",
        "SEVERITY_CRITICAL",
        "SEVERITY_HIGH",
        "SEVERITY_MEDIUM",
        "SEVERITY_LOW"
      ],
      "default": "SEVERITY_UNSPECIFIED",
      "description": "A severity bucket to page (the severity view).\n\n - SEVERITY_UNSPECIFIED: The severity was not set.\n - SEVERITY_CRITICAL: Critical-severity findings.\n - SEVERITY_HIGH: High-severity findings.\n - SEVERITY_MEDIUM: Medium-severity findings.\n - SEVERITY_LOW: Low-severity findings."
    },
    "v1ContainerBaseImageUpdateImpactRecordsQuerySpec": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1ContainerBaseImageUpdateImpactRecordsQuerySpecRequest",
          "description": "The records query request."
        },
        "response": {
          "$ref": "#/definitions/v1ContainerBaseImageUpdateImpactRecordsQuerySpecResponse",
          "description": "The records query response."
        }
      },
      "description": "Spec carries the request and the computed page of records."
    },
    "v1ContainerBaseImageUpdateImpactRecordsQuerySpecRequest": {
      "type": "object",
      "properties": {
        "package_version_uuid": {
          "type": "string",
          "description": "The scanned application image PackageVersion (same as the impact query)."
        },
        "update_option_kind": {
          "$ref": "#/definitions/ContainerBaseImageUpdateImpactRecordsQueryUpdateOptionKind",
          "description": "Which update option's diff to page through."
        },
        "severity": {
          "$ref": "#/definitions/v1ContainerBaseImageUpdateImpactRecordsQuerySeverity",
          "description": "Page a severity bucket (the severity view)."
        },
        "reachability": {
          "$ref": "#/definitions/ContainerBaseImageUpdateImpactRecordsQueryReachabilityBucket",
          "description": "Page a reachability bucket (the reachability view). Requires the app\nscan to have reachability available."
        },
        "record_kind": {
          "$ref": "#/definitions/ContainerBaseImageUpdateImpactRecordsQueryRecordKind",
          "description": "Which list to page: fixed or introduced (they are separate lists)."
        },
        "list_parameters": {
          "$ref": "#/definitions/v1ListParameters",
          "description": "Standard pagination parameters. page_token is a numeric offset into the\nfixed, total ordering (primary rank per the selected view, then a\ndeterministic tiebreaker of finding identity, dependency package name,\nfinding uuid); the handler computes the full ordered list and returns the\nslice [page_token, page_token+page_size). page_size defaults to 100, max\n500. filter/sort/group are ignored. next_page_token is page_token +\nlen(returned), unset on the last page."
        },
        "record_scope": {
          "$ref": "#/definitions/v1FindingRecordScope",
          "description": "Which finding types to page. Must match the record_scope used for the\ninline lists so the drill-down continues the same set. Unset defaults to\nALL."
        }
      },
      "description": "Inputs that select the bucket and the page.",
      "required": [
        "package_version_uuid",
        "update_option_kind",
        "record_kind"
      ]
    },
    "v1ContainerBaseImageUpdateImpactRecordsQuerySpecResponse": {
      "type": "object",
      "properties": {
        "records": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1BaseImageFindingRecord"
          },
          "description": "The findings for this page (all of the requested record_kind), with\nreachability projected from the app image (see §3).",
          "readOnly": true
        },
        "page": {
          "$ref": "#/definitions/v1ListResponse",
          "description": "Pagination tokens for retrieving the next page.",
          "readOnly": true
        }
      },
      "description": "A single page of records."
    },
    "v1ContainerCompositionMetadata": {
      "type": "object",
      "properties": {
        "package_type": {
          "$ref": "#/definitions/v1ContainerPackageType",
          "description": "Container package type."
        }
      },
      "description": "ContainerCompositionMetadata is the metadata of the composition of a container image."
    },
    "v1ContainerDependencyLayer": {
      "type": "object",
      "properties": {
        "digest": {
          "type": "string",
          "description": "The SHA256 digest of the layer,\nwhere a dependency is found to be present in the container."
        },
        "file_locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The locations of the files in the container,\nthrough which the dependency is evident to be present in the container."
        }
      },
      "description": "ContainerDependency is a dependency of a container image.",
      "required": [
        "digest"
      ]
    },
    "v1ContainerDependencyMetadata": {
      "type": "object",
      "properties": {
        "layers": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ContainerLayerMetadata"
          },
          "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."
        },
        "runtime_files": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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."
        },
        "user_application_dependency": {
          "type": "boolean",
          "description": "Set to true if this is a user application dependency."
        },
        "reachable_count": {
          "type": "string",
          "format": "uint64",
          "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."
        },
        "first_reachable_time": {
          "type": "string",
          "format": "date-time",
          "description": "First time this dependency was determined to be reachable in an application image."
        },
        "last_reachable_time": {
          "type": "string",
          "format": "date-time",
          "description": "Most recent time this dependency was determined to be reachable in an application image."
        }
      }
    },
    "v1ContainerImageUpdateOption": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Full image reference including registry, repository, and tag\n(e.g., \"docker.io/library/ubuntu:22.04\")."
        },
        "digest": {
          "type": "string",
          "description": "The SHA256 digest of the candidate image (e.g., \"sha256:...\")."
        },
        "chain_id": {
          "type": "string",
          "description": "Chain ID for the candidate image's layers."
        },
        "package_version_uuid": {
          "type": "string",
          "description": "UUID of the container PackageVersion produced by scanning this candidate."
        }
      },
      "description": "ContainerImageUpdateOption describes a single base image update candidate."
    },
    "v1ContainerImageUpdateOptions": {
      "type": "object",
      "properties": {
        "refreshed": {
          "$ref": "#/definitions/v1ContainerImageUpdateOption",
          "description": "Same image reference; potentially newer digest."
        },
        "next_version": {
          "$ref": "#/definitions/v1ContainerImageUpdateOption",
          "description": "Immediately newer tag (based on semver or timestamp ordering)."
        },
        "latest_version": {
          "$ref": "#/definitions/v1ContainerImageUpdateOption",
          "description": "Newest available tag (based on semver or timestamp ordering)."
        },
        "update_time": {
          "type": "string",
          "format": "date-time",
          "description": "Time when these update options were determined."
        }
      },
      "description": "ContainerImageUpdateOptions groups possible base image update candidates."
    },
    "v1ContainerLayer": {
      "type": "object",
      "properties": {
        "digest": {
          "type": "string",
          "description": "digest is the sha256 digest of the layer."
        },
        "command": {
          "type": "string",
          "description": "The command that was run to create the layer.\nFor example, `COPY /app /app`.\nThis is an optional field."
        },
        "base_layer": {
          "type": "boolean",
          "description": "True if the layer is came through the base image otherwise false."
        }
      },
      "description": "A layer of a container image.",
      "required": [
        "digest"
      ]
    },
    "v1ContainerLayerMetadata": {
      "type": "object",
      "properties": {
        "digest": {
          "type": "string",
          "description": "The SHA256 digest of the container image layer."
        },
        "file_locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "File locations on the container file system that reference the dependency."
        },
        "base_layer": {
          "type": "boolean",
          "description": "Set to true if this is the base image layer."
        }
      },
      "required": [
        "digest"
      ]
    },
    "v1ContainerMetadata": {
      "type": "object",
      "properties": {
        "digest": {
          "type": "string",
          "description": "The SHA256 digest of the container image."
        },
        "layers": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ContainerLayer"
          },
          "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`."
        },
        "base_image": {
          "$ref": "#/definitions/v1ContainerBaseImage",
          "description": "The base image of the container image.",
          "x-endor-name": "Base Image"
        },
        "distribution": {
          "type": "string",
          "description": "The OS distribution of the base image.",
          "x-endor-name": "OS Distribution"
        },
        "version": {
          "type": "string",
          "description": "The version of the OS distribution of the base image.",
          "x-endor-name": "OS Version"
        },
        "exposed_ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of container exposed ports.",
          "x-endor-name": "Exposed Ports"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of container labels.",
          "x-endor-name": "Labels"
        },
        "environment": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of container environment variables.",
          "x-endor-name": "Environment"
        },
        "entrypoint": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of container entrypoint arguments.",
          "x-endor-name": "Entrypoint"
        },
        "command": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of container command arguments.",
          "x-endor-name": "Command"
        },
        "working_directory": {
          "type": "string",
          "description": "The working directory of the container.",
          "x-endor-name": "Working Directory"
        },
        "architecture": {
          "$ref": "#/definitions/v1ContainerArchitecture",
          "description": "The architecture of the container.",
          "x-endor-name": "Architecture"
        },
        "used_as_base": {
          "$ref": "#/definitions/v1ContainerAsBase",
          "description": "Indicates if this image is ever been used as a base image in other images and if it's still in active use. It is not meant for exact usage tracking.",
          "x-endor-name": "Used As Base Image"
        },
        "repo_digest": {
          "type": "string",
          "description": "The repo digest of the container image (e.g., \"your-image-name@sha256:...\")."
        },
        "chain_id": {
          "type": "string",
          "description": "Chain ID for the image's layers."
        },
        "profiled": {
          "type": "boolean",
          "description": "True if the container image has been profiled."
        },
        "profile_details": {
          "$ref": "#/definitions/v1ContainerProfileDetails",
          "description": "Addition details about the container profiling."
        },
        "profile_error": {
          "$ref": "#/definitions/v1ContainerProfileError",
          "description": "The error while profiling the container image.\nIt is only set when the container image profiling failed.\nThe container image reachability analysis will not be performed\nand all the vulnerabilities will still be surfaced as findings."
        },
        "previous_base_image": {
          "$ref": "#/definitions/v1ContainerBaseImage",
          "description": "The base image detected on the immediately prior scan of this app image,\nset only when it differs from the current base_image."
        }
      },
      "description": "ContainerMetadata is the metadata of a container image."
    },
    "v1ContainerPackageType": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "v1ContainerProfileDetails": {
      "type": "object",
      "properties": {
        "application_type": {
          "$ref": "#/definitions/ContainerProfileDetailsApplicationType",
          "description": "The type of the application.",
          "x-endor-name": "Application Type"
        },
        "profile_type": {
          "$ref": "#/definitions/ContainerProfileDetailsProfileType",
          "description": "The type of the profile.",
          "x-endor-name": "Profile Type"
        },
        "duration_ms": {
          "type": "string",
          "format": "int64",
          "description": "The duration of the profile in milliseconds.",
          "x-endor-name": "Duration (Milliseconds)"
        },
        "detected_as_base_image": {
          "type": "boolean",
          "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\".",
          "x-endor-name": "Detected As Base Image"
        },
        "entry_point_package_version_name": {
          "type": "string",
          "description": "Dependency that boots the container image and creates Process ID (PID) 1.",
          "x-endor-name": "Entry Point Package Version Name"
        }
      },
      "description": "ContainerProfileDetails represents the details of the container profiling."
    },
    "v1ContainerProfileError": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/ContainerProfileErrorContainerProfileStatus",
          "description": "The status of the container profiling."
        },
        "description": {
          "type": "string",
          "description": "A description of the profile error."
        }
      },
      "description": "ContainerProfileError represents the error while profiling the container image."
    },
    "v1ContainerRuntimeDependencyFile": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string",
          "description": "Path of the dependency file as seen in the container image."
        },
        "real_path": {
          "type": "string",
          "description": "Actual path of the file accessed when a dependency is called at runtime in the\ncontainer image."
        },
        "file_type": {
          "$ref": "#/definitions/v1FileType",
          "description": "File type of the file."
        },
        "digests": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Digest"
          },
          "description": "Digest of the file."
        }
      },
      "description": "ContainerRuntimeDependencyFile is a file accessed in the container image at runtime."
    },
    "v1Context": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/ContextContextType",
          "description": "Context type, usually defined based on how endorctl is being used."
        },
        "will_be_deleted_at": {
          "type": "string",
          "format": "date-time",
          "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.",
          "readOnly": true
        },
        "id": {
          "type": "string",
          "description": "The context ID, such as a pull request ID or branch reference."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of tags applied to a context. Used primarily for CI and SBOM\ncontexts."
        }
      },
      "description": "Contexts keep objects from different scans separated.",
      "required": [
        "type",
        "id"
      ]
    },
    "v1Contributor": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the contributor record.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Contributors are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects.\nmeta.create_time represents when this contributor was first discovered.\nmeta.update_time represents when this contributor was last seen."
        },
        "spec": {
          "$ref": "#/definitions/v1ContributorSpec",
          "description": "Contributor specification."
        }
      },
      "description": "Contributor represents a contributor discovered from git repository scans.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1ContributorEmail": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string",
          "description": "The email address of the contributor."
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional metadata for the breakdown entry.\nKeys must match pattern: ^[-A-Za-z0-9_.]*$ and be max 64 characters.\nValues must be max 16384 bytes."
        }
      },
      "description": "ContributorEmail represents an email address of a contributor.",
      "required": [
        "email"
      ]
    },
    "v1ContributorHistory": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the contributor history record.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Contributor history is stored per tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects.\nmeta.create_time represents when this snapshot was generated.\nmeta.update_time represents when this snapshot was last updated."
        },
        "spec": {
          "$ref": "#/definitions/v1ContributorHistorySpec",
          "description": "Contributor history specification."
        }
      },
      "description": "ContributorHistory represents a bi-weekly snapshot of aggregated contributor data\nfor trend visualization. Each snapshot captures the state of active contributors\nin the last 90 days at the time of the snapshot.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "v1ContributorHistorySpec": {
      "type": "object",
      "properties": {
        "snapshot_date": {
          "type": "string",
          "format": "date-time",
          "description": "The date/time when this snapshot was taken.\nThis represents a bi-weekly snapshot for trend visualization.\nWhile snapshots are generated bi-weekly, the UI will aggregate to show\none record per month for display purposes."
        },
        "active_count": {
          "type": "string",
          "format": "uint64",
          "description": "The number of unique active contributors in the last 90 days\nas of the snapshot date."
        },
        "purchased_seat_count": {
          "type": "string",
          "format": "uint64",
          "description": "The number of seats the customer has purchased as of the snapshot date."
        },
        "breakdowns": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1BreakdownEntry"
          },
          "description": "Breakdown of contributor counts by different dimensions (e.g. project)."
        },
        "emails": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ContributorEmail"
          },
          "description": "The emails of the contributors at this snapshot."
        },
        "pat_scan_required_orgs": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PatRequiredOrg"
          },
          "description": "The list of source-code-host orgs that require a PAT-based contributor scan\n(the default app/installation-based scans did not fully cover all contributors\nfor these orgs, so a PAT-based job must be run instead). Each entry carries\nthe org host_url together with its SCM platform so on-prem instances are\nunambiguously classified."
        }
      },
      "required": [
        "snapshot_date",
        "active_count",
        "purchased_seat_count"
      ]
    },
    "v1ContributorIdentityMapping": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the contributor identity mapping record.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Mappings are stored per tenant namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ContributorIdentityMappingSpec",
          "description": "Mapping specification."
        }
      },
      "description": "ContributorIdentityMapping links a SCM login to one or more normalized commit emails for a tenant.\nData is populated from SCM APIs (e.g. App based scans or PAT-backed reports) and used to deduplicate contributors across emails.\n\nDeterministic canonical_email (persisted in spec.canonical_email, applied on create/update only):\n 1. Normalize every associated email: trim ASCII whitespace and lowercase (same rules as contributor aggregation).\n 2. Deduplicate, then sort lexicographically before persisting associated_emails.\n 3. If any email is a GitHub noreply address for this login (see github.com docs: USERNAME@users.noreply.github.com\n    or ID+USERNAME@users.noreply.github.com), pick the lexicographically smallest matching noreply address.\n 4. Otherwise use the lexicographically smallest normalized email.\n\nAggregation and other readers must use spec.canonical_email as stored;\nthey must not re-derive a different \"first\" email from scan order.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "v1ContributorIdentityMappingSpec": {
      "type": "object",
      "properties": {
        "login": {
          "type": "string",
          "description": "SCM login for this identity (natural upsert key with tenant namespace)."
        },
        "associated_emails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Normalized emails associated with this GitHub user (trimmed, lowercased, sorted lexicographically on write)."
        },
        "canonical_email": {
          "type": "string",
          "description": "Persisted canonical email for stable counting and display (recomputed on create/update by the API server).",
          "readOnly": true
        }
      },
      "required": [
        "login",
        "associated_emails"
      ]
    },
    "v1ContributorSpec": {
      "type": "object",
      "properties": {
        "contributor_email": {
          "type": "string",
          "description": "The email address of the contributor.\nThis is the unique identifier used for upserts.\nFormat: email addresses extracted from git commit authors."
        },
        "project_uuid": {
          "type": "string",
          "description": "The UUID of the project that the contributor is associated with."
        },
        "last_seen": {
          "type": "string",
          "format": "date-time",
          "description": "The last time the contributor committed to the project at the given ref."
        },
        "ref": {
          "type": "string",
          "description": "The ID of the git reference the contributor was discovered from."
        },
        "is_forked_project": {
          "type": "boolean",
          "description": "Indicates whether the project is a forked project."
        },
        "is_public_project": {
          "type": "boolean",
          "description": "Indicates whether the project is a public project."
        }
      },
      "required": [
        "contributor_email",
        "project_uuid",
        "last_seen",
        "ref"
      ]
    },
    "v1Correctness": {
      "type": "string",
      "enum": [
        "CORRECTNESS_UNSPECIFIED",
        "CORRECTNESS_TRUE_POSITIVE",
        "CORRECTNESS_FALSE_POSITIVE",
        "CORRECTNESS_FALSE_NEGATIVE",
        "CORRECTNESS_UNKNOWN"
      ],
      "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."
    },
    "v1CorrectnessAnalyzer": {
      "type": "string",
      "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"
      ],
      "default": "CORRECTNESS_ANALYZER_UNSPECIFIED",
      "description": "CorrectnessAnalyzer represents the analyzer used to determine the correctness of a linter result."
    },
    "v1CountResponse": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer",
          "format": "int32",
          "description": "Number of objects matching the given list parameters."
        }
      },
      "description": "Response to a list count request."
    },
    "v1Critical": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "description": "Type must be 'atomic container signature'."
        },
        "identity": {
          "$ref": "#/definitions/CriticalIdentity",
          "description": "The claimed identity of the image."
        },
        "image": {
          "$ref": "#/definitions/CriticalImage",
          "description": "The container image to which the signature applies."
        }
      }
    },
    "v1CustomTemplate": {
      "type": "object",
      "properties": {
        "template_type": {
          "$ref": "#/definitions/v1CustomTemplateType",
          "description": "The type of the template."
        },
        "prcomments_template": {
          "$ref": "#/definitions/v1PRCommentsTemplate"
        },
        "email_template": {
          "$ref": "#/definitions/v1EmailTemplate"
        },
        "slack_template": {
          "$ref": "#/definitions/v1SlackTemplate"
        },
        "webhook_template": {
          "$ref": "#/definitions/v1WebhookTemplate"
        }
      },
      "description": "CustomTemplate is the type specific custom template.",
      "required": [
        "template_type"
      ]
    },
    "v1CustomTemplateType": {
      "type": "string",
      "enum": [
        "CUSTOM_TEMPLATE_TYPE_UNSPECIFIED",
        "CUSTOM_TEMPLATE_TYPE_PR_COMMENTS",
        "CUSTOM_TEMPLATE_TYPE_EMAIL",
        "CUSTOM_TEMPLATE_TYPE_SLACK",
        "CUSTOM_TEMPLATE_TYPE_WEBHOOK"
      ],
      "default": "CUSTOM_TEMPLATE_TYPE_UNSPECIFIED"
    },
    "v1CvssDataV2": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string"
        },
        "vector_string": {
          "type": "string"
        },
        "access_vector": {
          "$ref": "#/definitions/v1NVDAttackVector"
        },
        "access_complexity": {
          "$ref": "#/definitions/CvssDataV2AccessComplexity"
        },
        "authentication": {
          "$ref": "#/definitions/CvssDataV2Auth"
        },
        "confidentiality_impact": {
          "$ref": "#/definitions/CvssDataV2V2Impact"
        },
        "integrity_impact": {
          "$ref": "#/definitions/CvssDataV2V2Impact"
        },
        "availability_impact": {
          "$ref": "#/definitions/CvssDataV2V2Impact"
        },
        "base_score": {
          "type": "number",
          "format": "float"
        },
        "exploitability": {
          "$ref": "#/definitions/CvssDataV2Exploitability"
        },
        "remediation_level": {
          "$ref": "#/definitions/v1NVDRemediationLevel"
        },
        "report_confidence": {
          "$ref": "#/definitions/CvssDataV2ReportConfidence"
        },
        "temporal_score": {
          "type": "number",
          "format": "float"
        },
        "collateral_damage_potential": {
          "$ref": "#/definitions/CvssDataV2CollateralDamagePotential"
        },
        "target_distribution": {
          "$ref": "#/definitions/CvssDataV2TargetDistribution"
        },
        "confidentiality_requirement": {
          "$ref": "#/definitions/v1NVDRequirement"
        },
        "integrity_requirement": {
          "$ref": "#/definitions/v1NVDRequirement"
        },
        "availability_requirement": {
          "$ref": "#/definitions/v1NVDRequirement"
        },
        "environmental_score": {
          "type": "number",
          "format": "float"
        }
      },
      "required": [
        "version",
        "vector_string",
        "base_score"
      ]
    },
    "v1CvssDataV30": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string"
        },
        "vector_string": {
          "type": "string"
        },
        "attack_vector": {
          "$ref": "#/definitions/v1NVDAttackVector"
        },
        "attack_complexity": {
          "$ref": "#/definitions/v1NVDAttackComplexity"
        },
        "privileges_required": {
          "$ref": "#/definitions/v1NVDPrivilegesRequired"
        },
        "user_interaction": {
          "$ref": "#/definitions/v1NVDUserInteraction"
        },
        "scope": {
          "$ref": "#/definitions/v1NVDScope"
        },
        "confidentiality_impact": {
          "$ref": "#/definitions/v1NVDImpact"
        },
        "integrity_impact": {
          "$ref": "#/definitions/v1NVDImpact"
        },
        "availability_impact": {
          "$ref": "#/definitions/v1NVDImpact"
        },
        "base_score": {
          "type": "number",
          "format": "float"
        },
        "base_severity": {
          "$ref": "#/definitions/v1NVDSeverity"
        },
        "exploit_code_maturity": {
          "$ref": "#/definitions/v1NVDExploitCodeMaturity"
        },
        "remediation_level": {
          "$ref": "#/definitions/v1NVDRemediationLevel"
        },
        "report_confidence": {
          "$ref": "#/definitions/v1NVDReportConfidence"
        },
        "temporal_score": {
          "type": "number",
          "format": "float"
        },
        "temporal_severity": {
          "$ref": "#/definitions/v1NVDSeverity"
        },
        "confidentiality_requirement": {
          "$ref": "#/definitions/v1NVDRequirement"
        },
        "integrity_requirement": {
          "$ref": "#/definitions/v1NVDRequirement"
        },
        "availability_requirement": {
          "$ref": "#/definitions/v1NVDRequirement"
        },
        "modified_attack_vector": {
          "$ref": "#/definitions/v1NVDModifiedAttackVector"
        },
        "modified_attack_complexity": {
          "$ref": "#/definitions/v1NVDModifiedAttackComplexity"
        },
        "modified_privileges_required": {
          "$ref": "#/definitions/v1NVDModifiedPrivilegesRequired"
        },
        "modified_user_interaction": {
          "$ref": "#/definitions/v1NVDModifiedUserInteraction"
        },
        "modified_scope": {
          "$ref": "#/definitions/v1NVDModifiedScope"
        },
        "modified_confidentiality_impact": {
          "$ref": "#/definitions/v1NVDModifiedImpact"
        },
        "modified_integrity_impact": {
          "$ref": "#/definitions/v1NVDModifiedImpact"
        },
        "modified_availability_impact": {
          "$ref": "#/definitions/v1NVDModifiedImpact"
        },
        "environmental_score": {
          "type": "number",
          "format": "float"
        },
        "environmental_severity": {
          "$ref": "#/definitions/v1NVDSeverity"
        }
      },
      "required": [
        "version",
        "vector_string",
        "base_score",
        "base_severity"
      ]
    },
    "v1CvssDataV31": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string"
        },
        "vector_string": {
          "type": "string"
        },
        "attack_vector": {
          "$ref": "#/definitions/v1NVDAttackVector"
        },
        "attack_complexity": {
          "$ref": "#/definitions/v1NVDAttackComplexity"
        },
        "privileges_required": {
          "$ref": "#/definitions/v1NVDPrivilegesRequired"
        },
        "user_interaction": {
          "$ref": "#/definitions/v1NVDUserInteraction"
        },
        "scope": {
          "$ref": "#/definitions/v1NVDScope"
        },
        "confidentiality_impact": {
          "$ref": "#/definitions/v1NVDImpact"
        },
        "integrity_impact": {
          "$ref": "#/definitions/v1NVDImpact"
        },
        "availability_impact": {
          "$ref": "#/definitions/v1NVDImpact"
        },
        "base_score": {
          "type": "number",
          "format": "float"
        },
        "base_severity": {
          "$ref": "#/definitions/v1NVDSeverity"
        },
        "exploit_code_maturity": {
          "$ref": "#/definitions/v1NVDExploitCodeMaturity"
        },
        "remediation_level": {
          "$ref": "#/definitions/v1NVDRemediationLevel"
        },
        "report_confidence": {
          "$ref": "#/definitions/v1NVDReportConfidence"
        },
        "temporal_score": {
          "type": "number",
          "format": "float"
        },
        "temporal_severity": {
          "$ref": "#/definitions/v1NVDSeverity"
        },
        "confidentiality_requirement": {
          "$ref": "#/definitions/v1NVDRequirement"
        },
        "integrity_requirement": {
          "$ref": "#/definitions/v1NVDRequirement"
        },
        "availability_requirement": {
          "$ref": "#/definitions/v1NVDRequirement"
        },
        "modified_attack_vector": {
          "$ref": "#/definitions/v1NVDModifiedAttackVector"
        },
        "modified_attack_complexity": {
          "$ref": "#/definitions/v1NVDModifiedAttackComplexity"
        },
        "modified_privileges_required": {
          "$ref": "#/definitions/v1NVDModifiedPrivilegesRequired"
        },
        "modified_user_interaction": {
          "$ref": "#/definitions/v1NVDModifiedUserInteraction"
        },
        "modified_scope": {
          "$ref": "#/definitions/v1NVDModifiedScope"
        },
        "modified_confidentiality_impact": {
          "$ref": "#/definitions/v1NVDModifiedScope"
        },
        "modified_integrity_impact": {
          "$ref": "#/definitions/v1NVDModifiedImpact"
        },
        "modified_availability_impact": {
          "$ref": "#/definitions/v1NVDModifiedImpact"
        },
        "environmental_score": {
          "type": "number",
          "format": "float"
        },
        "environmental_severity": {
          "$ref": "#/definitions/v1NVDSeverity"
        }
      },
      "required": [
        "version",
        "vector_string",
        "base_score",
        "base_severity"
      ]
    },
    "v1CvssDataV40": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string"
        },
        "vector_string": {
          "type": "string"
        },
        "attack_vector": {
          "$ref": "#/definitions/v1NVDV40AttackVector",
          "title": "Base Metrics"
        },
        "attack_complexity": {
          "$ref": "#/definitions/v1NVDV40AttackComplexity"
        },
        "attack_requirements": {
          "$ref": "#/definitions/v1NVDV40AttackRequirements"
        },
        "privileges_required": {
          "$ref": "#/definitions/v1NVDV40PrivilegesRequired"
        },
        "user_interaction": {
          "$ref": "#/definitions/v1NVDV40UserInteraction"
        },
        "vuln_confidentiality_impact": {
          "$ref": "#/definitions/v1NVDV40Impact"
        },
        "vuln_integrity_impact": {
          "$ref": "#/definitions/v1NVDV40Impact"
        },
        "vuln_availability_impact": {
          "$ref": "#/definitions/v1NVDV40Impact"
        },
        "sub_confidentiality_impact": {
          "$ref": "#/definitions/v1NVDV40Impact"
        },
        "sub_integrity_impact": {
          "$ref": "#/definitions/v1NVDV40Impact"
        },
        "sub_availability_impact": {
          "$ref": "#/definitions/v1NVDV40Impact"
        },
        "base_score": {
          "type": "number",
          "format": "float"
        },
        "base_severity": {
          "$ref": "#/definitions/v1NVDSeverity"
        },
        "exploit_maturity": {
          "$ref": "#/definitions/v1NVDV40ExploitMaturity",
          "title": "Threat Metrics"
        },
        "threat_score": {
          "type": "number",
          "format": "float"
        },
        "threat_severity": {
          "$ref": "#/definitions/v1NVDSeverity"
        },
        "confidentiality_requirement": {
          "$ref": "#/definitions/v1NVDV40Requirement",
          "title": "Environmental Metrics"
        },
        "integrity_requirement": {
          "$ref": "#/definitions/v1NVDV40Requirement"
        },
        "availability_requirement": {
          "$ref": "#/definitions/v1NVDV40Requirement"
        },
        "modified_attack_vector": {
          "$ref": "#/definitions/v1NVDV40ModifiedAttackVector"
        },
        "modified_attack_complexity": {
          "$ref": "#/definitions/v1NVDV40ModifiedAttackComplexity"
        },
        "modified_attack_requirements": {
          "$ref": "#/definitions/v1NVDV40ModifiedAttackRequirements"
        },
        "modified_privileges_required": {
          "$ref": "#/definitions/v1NVDV40ModifiedPrivilegesRequired"
        },
        "modified_user_interaction": {
          "$ref": "#/definitions/v1NVDV40ModifiedUserInteraction"
        },
        "modified_vuln_confidentiality_impact": {
          "$ref": "#/definitions/v1NVDV40ModifiedImpact"
        },
        "modified_vuln_integrity_impact": {
          "$ref": "#/definitions/v1NVDV40ModifiedImpact"
        },
        "modified_vuln_availability_impact": {
          "$ref": "#/definitions/v1NVDV40ModifiedImpact"
        },
        "modified_sub_confidentiality_impact": {
          "$ref": "#/definitions/v1NVDV40ModifiedSubImpact"
        },
        "modified_sub_integrity_impact": {
          "$ref": "#/definitions/v1NVDV40ModifiedSubImpact"
        },
        "modified_sub_availability_impact": {
          "$ref": "#/definitions/v1NVDV40ModifiedSubImpact"
        },
        "environmental_score": {
          "type": "number",
          "format": "float"
        },
        "environmental_severity": {
          "$ref": "#/definitions/v1NVDSeverity"
        },
        "safety": {
          "$ref": "#/definitions/v1NVDV40Safety",
          "title": "Supplemental Metrics"
        },
        "automatable": {
          "$ref": "#/definitions/v1NVDV40Automatable"
        },
        "recovery": {
          "$ref": "#/definitions/v1NVDV40Recovery"
        },
        "value_density": {
          "$ref": "#/definitions/v1NVDV40ValueDensity"
        },
        "vulnerability_response_effort": {
          "$ref": "#/definitions/v1NVDV40VulnerabilityResponseEffort"
        },
        "provider_urgency": {
          "$ref": "#/definitions/v1NVDV40ProviderUrgency"
        }
      },
      "required": [
        "version",
        "vector_string",
        "base_score",
        "base_severity"
      ]
    },
    "v1DashboardConfig": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the dashboard configuration object.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "DashboardConfig is associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1DashboardConfigSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagate indicates that the object should be visible in child namespaces."
        }
      },
      "description": "DashboardConfig represents the dashboard configuration for a namespace.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1DashboardConfigSpec": {
      "type": "object",
      "properties": {
        "vuln_prioritization": {
          "$ref": "#/definitions/DashboardConfigVulnPrioritizationConfig"
        },
        "dev_estimate": {
          "$ref": "#/definitions/DashboardConfigDevEstimateConfig"
        },
        "sla_days": {
          "$ref": "#/definitions/DashboardConfigSLAConfig"
        },
        "security_review_estimate": {
          "$ref": "#/definitions/DashboardConfigReviewTimeConfig"
        }
      }
    },
    "v1DashboardSummaryQuery": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the dashboard summary.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Dashboard Summary are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1DashboardSummaryQuerySpec",
          "description": "Dashboard Summary specification."
        }
      },
      "description": "DashboardSummaryQuery is an internal API to accelerate the UI operations.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "v1DashboardSummaryQuerySpec": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1DashboardSummaryQuerySpecRequest",
          "description": "The dashboard summary request."
        },
        "response": {
          "$ref": "#/definitions/v1DashboardSummaryQuerySpecResponse",
          "description": "The dashboard summary response."
        }
      }
    },
    "v1DashboardSummaryQuerySpecRequest": {
      "type": "object",
      "properties": {
        "list_projects_filter": {
          "type": "string",
          "description": "Filter to select projects."
        },
        "finding_severities": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/RequestFindingSeverity"
          },
          "description": "Severities to include in the summary."
        },
        "traverse": {
          "type": "boolean",
          "description": "Whether to traverse child namespaces."
        },
        "count_dependencies_filter": {
          "type": "string",
          "description": "Filter for counting dependencies.\nDefaults to dependencies in the MAIN context."
        }
      }
    },
    "v1DashboardSummaryQuerySpecResponse": {
      "type": "object",
      "properties": {
        "total_projects": {
          "type": "integer",
          "format": "int32",
          "description": "Total number of projects.",
          "readOnly": true
        },
        "total_packages": {
          "type": "integer",
          "format": "int32",
          "description": "Total number of packages.",
          "readOnly": true
        },
        "total_scans": {
          "type": "integer",
          "format": "int32",
          "description": "Total number of scans.",
          "readOnly": true
        },
        "total_notifications": {
          "type": "integer",
          "format": "int32",
          "description": "Total number of notifications.",
          "readOnly": true
        },
        "dependency_counts": {
          "$ref": "#/definitions/SpecResponseDependencyCounts",
          "description": "Dependency count statistics.",
          "readOnly": true
        },
        "vulnerability_counts": {
          "$ref": "#/definitions/SpecResponseVulnerabilityCounts",
          "description": "Vulnerability count statistics.",
          "readOnly": true
        },
        "top_projects": {
          "$ref": "#/definitions/ResponseTopProjects",
          "description": "Top projects by various metrics.",
          "readOnly": true
        },
        "top_packages": {
          "$ref": "#/definitions/SpecResponseTopPackages",
          "description": "Top packages by various metrics.",
          "readOnly": true
        },
        "top_dependencies": {
          "$ref": "#/definitions/SpecResponseTopDependencies",
          "description": "Top dependencies by various metrics.",
          "readOnly": true
        }
      }
    },
    "v1DeleteParameters": {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "description": "Action to be executed with delete request."
        },
        "force": {
          "type": "boolean",
          "description": "Force will force the deletion of the resource if any\nchecks fail."
        }
      },
      "description": "Parameters for the delete request."
    },
    "v1Demo": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "UUID is a universally unique identifier for a namespace resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Demos are per tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1DemoSpec"
        }
      },
      "description": "Demo provides a mechanism for isolating groups of resources.\nDemos may be defined in a parent child hierarchy.",
      "required": [
        "meta"
      ]
    },
    "v1DemoSpec": {
      "type": "object",
      "properties": {
        "workflow_url": {
          "type": "string",
          "description": "The link to the GitHub actions workflow.\nOnly the latest run is included.",
          "readOnly": true
        },
        "demo_projects": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of available projects that a user can select.",
          "readOnly": true
        },
        "requested_project": {
          "type": "string",
          "description": "The project that must be scanned."
        },
        "initiate_scan": {
          "type": "boolean",
          "description": "Initiates the scan with an update operation."
        },
        "code_url": {
          "type": "string",
          "description": "The link to the corresponding tag in Github.",
          "readOnly": true
        },
        "workflow_id": {
          "type": "string",
          "description": "The GitHub ID of the workflow.",
          "readOnly": true
        },
        "workflow_logs": {
          "type": "string",
          "description": "Returns the workflow logs.",
          "readOnly": true
        },
        "job_status": {
          "type": "object",
          "description": "Returns the GitHub Job status.",
          "readOnly": true
        }
      },
      "required": [
        "requested_project"
      ]
    },
    "v1DependencyMetadata": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the object.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Information about the tenant to which the root package (importer) belongs."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1DependencyMetadataSpec",
          "description": "Resource kind specific data."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Contexts keep objects from different scans separated."
        }
      },
      "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.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "v1DependencyMetadataPath": {
      "type": "object",
      "properties": {
        "nodes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of nodes in a dependency path."
        }
      },
      "description": "List of nodes in a dependency path."
    },
    "v1DependencyMetadataSpec": {
      "type": "object",
      "properties": {
        "dependency_data": {
          "$ref": "#/definitions/DependencyMetadataDependencyData",
          "description": "Information about the dependency."
        },
        "importer_data": {
          "$ref": "#/definitions/DependencyMetadataImporterData",
          "description": "Information about the root package version (importer),\nthat imports the dependency in one or more versions,\neither directly or indirectly."
        }
      },
      "description": "DependencyMetadata specific data."
    },
    "v1DependencyScope": {
      "type": "string",
      "enum": [
        "DEPENDENCY_SCOPE_UNSPECIFIED",
        "DEPENDENCY_SCOPE_TEST",
        "DEPENDENCY_SCOPE_BUILD",
        "DEPENDENCY_SCOPE_NORMAL"
      ],
      "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."
    },
    "v1DependencySpec": {
      "type": "object",
      "properties": {
        "dependency_name": {
          "type": "string",
          "description": "The name of the dependency package."
        },
        "unpinned": {
          "type": "boolean",
          "description": "Set to true if the dependency is not pinned."
        },
        "reachable": {
          "$ref": "#/definitions/DependencyMetadataReachabilityType",
          "description": "Set to true if the dependency is used from the code in this package."
        },
        "utilization": {
          "type": "number",
          "format": "float",
          "description": "The fraction of the dependency that is used by this package."
        },
        "dependency_version": {
          "type": "string",
          "description": "The dependency version."
        }
      },
      "description": "Captures the details of a single dependency."
    },
    "v1DependencyStats": {
      "type": "object",
      "properties": {
        "dependency_specs": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1DependencySpec"
          },
          "description": "A list of all the related dependencies\nfor this package or package version."
        },
        "unpinned_dependencies": {
          "type": "integer",
          "format": "int32",
          "description": "The number of unpinned dependencies."
        },
        "unused_dependencies": {
          "type": "integer",
          "format": "int32",
          "description": "The number of unused dependencies."
        },
        "unpinned_direct_dependencies": {
          "type": "integer",
          "format": "int32",
          "description": "The number of unpinned dependencies."
        },
        "unused_direct_dependencies": {
          "type": "integer",
          "format": "int32",
          "description": "The number of unused dependencies."
        },
        "direct_dependencies": {
          "type": "integer",
          "format": "int32",
          "description": "The total number of direct dependencies."
        },
        "indirect_dependencies": {
          "type": "integer",
          "format": "int32",
          "description": "The total number of indirect dependencies."
        }
      },
      "description": "Includes all dependency related data."
    },
    "v1DepsDevPackage": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The tenant metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata identifies the object."
        },
        "spec": {
          "$ref": "#/definitions/v1DepsDevPackageSpec",
          "description": "Resource kind specific data."
        }
      },
      "description": "DepsDevPackage stores package metadata from deps.dev snapshots.\nThis data includes package popularity (dependents count) and age information\nused for typosquatting detection and package analysis.\n\nMongoDB Atlas Search Index Configuration:\nTo enable fuzzy typosquatting detection, create an Atlas Search index on this collection with:\n  - Field: meta.name\n    Type: string\n    Analyzer: lucene.keyword (treats full package identifier as single token)\n  - Field: spec.ecosystem\n    Type: token\n    Normalizer: lowercase\n  - Field: tenant_meta.namespace\n    Type: token\n    Normalizer: lowercase",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "v1DepsDevPackageSpec": {
      "type": "object",
      "properties": {
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "The ecosystem of the package."
        },
        "dependents_count": {
          "type": "integer",
          "format": "int32",
          "description": "Number of packages that depend on this package.\nUsed to determine package popularity for typosquatting detection."
        },
        "age_weeks": {
          "type": "integer",
          "format": "int32",
          "description": "Age of the package in weeks since its first release.\nUsed to filter out old packages in typosquatting detection."
        },
        "snapshot_time": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp of the deps.dev snapshot this data was extracted from."
        }
      },
      "required": [
        "ecosystem"
      ]
    },
    "v1DetectLicenseQuery": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The uuid of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "title": "tenant metadata"
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "title": "metadata"
        },
        "spec": {
          "$ref": "#/definitions/v1DetectLicenseQuerySpec"
        }
      },
      "title": "DetectLicenseQuery"
    },
    "v1DetectLicenseQuerySpec": {
      "type": "object",
      "properties": {
        "license_text": {
          "type": "string"
        },
        "spdx_expr": {
          "type": "string",
          "readOnly": true
        },
        "spdx_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "readOnly": true
        },
        "hash": {
          "type": "string",
          "readOnly": true
        },
        "error_text": {
          "type": "string",
          "readOnly": true
        }
      },
      "required": [
        "license_text"
      ]
    },
    "v1Digest": {
      "type": "object",
      "properties": {
        "algorithm": {
          "$ref": "#/definitions/v1DigestType",
          "description": "Digest type of the file."
        },
        "value": {
          "type": "string",
          "description": "Digest value of the file."
        }
      },
      "description": "Digest is a digest of a file/container image.",
      "required": [
        "algorithm",
        "value"
      ]
    },
    "v1DigestType": {
      "type": "string",
      "enum": [
        "DIGEST_TYPE_UNSPECIFIED",
        "DIGEST_TYPE_SHA1",
        "DIGEST_TYPE_SHA256",
        "DIGEST_TYPE_SHA512",
        "DIGEST_TYPE_MD5"
      ],
      "default": "DIGEST_TYPE_UNSPECIFIED"
    },
    "v1DimensionKey": {
      "type": "string",
      "enum": [
        "DIMENSION_KEY_UNSPECIFIED",
        "DIMENSION_KEY_SUMMARY",
        "DIMENSION_KEY_AGENT",
        "DIMENSION_KEY_MODEL",
        "DIMENSION_KEY_MCP_SERVER",
        "DIMENSION_KEY_COMMAND",
        "DIMENSION_KEY_CATEGORY",
        "DIMENSION_KEY_TOOL"
      ],
      "default": "DIMENSION_KEY_UNSPECIFIED",
      "description": "DimensionKey identifies the aggregation dimension."
    },
    "v1DiscoveredSkill": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Skill name from SKILL.md frontmatter or directory name fallback."
        },
        "description": {
          "type": "string",
          "description": "Human-readable description from SKILL.md frontmatter."
        },
        "path": {
          "type": "string",
          "description": "Path to the SKILL.md file within the workspace or user home directory."
        },
        "content_hash": {
          "type": "string",
          "description": "SHA-256 hash of the SKILL.md content."
        },
        "file_count": {
          "type": "integer",
          "format": "int32",
          "description": "Number of files in the skill directory (including SKILL.md)."
        },
        "allowed_tools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tools declared in SKILL.md frontmatter (allowed-tools)."
        },
        "content": {
          "type": "string",
          "description": "Base64-encoded SKILL.md content for backend scoring. Capped at 128 KB."
        },
        "license": {
          "type": "string",
          "description": "License from SKILL.md frontmatter (agentskills.io standard field)."
        },
        "compatibility": {
          "type": "string",
          "description": "Environment requirements from SKILL.md frontmatter (agentskills.io standard field)."
        }
      },
      "description": "DiscoveredSkill represents a skill found during session-start scanning."
    },
    "v1Discussion": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer",
          "format": "int32",
          "description": "Total count of discussion posts/pull requests."
        },
        "num_closed": {
          "type": "integer",
          "format": "int32",
          "description": "Count of closed discussion posts/pull requests."
        }
      }
    },
    "v1DismissParams": {
      "type": "object",
      "properties": {
        "updated_by": {
          "type": "string",
          "description": "Username of the user who last updated the snooze or ignore."
        },
        "update_time": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp of the last update."
        },
        "expiration_time": {
          "type": "string",
          "format": "date-time",
          "description": "Expiration time of the snooze or ignore."
        },
        "expire_if_fix_available": {
          "type": "boolean",
          "description": "Set to true if the snooze or ignore should expire if a fix is available."
        },
        "reason": {
          "$ref": "#/definitions/v1ExceptionReason",
          "description": "Reason for snoozing or ignoring the finding."
        },
        "comments": {
          "type": "string",
          "description": "Comments for the snooze or ignore."
        },
        "file_name": {
          "type": "string",
          "description": "Name of the file that was used to ignore the finding."
        },
        "entry_id": {
          "type": "string",
          "description": "The ignore file entry id."
        }
      },
      "description": "Metadata associated with a snooze or ignore request."
    },
    "v1DistinctEntry": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the distinct record.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Distinct entry is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1DistinctEntrySpec",
          "description": "The internal specification of the distinct entry."
        }
      },
      "description": "DistinctEntry tracks uniqueness for distinct-count metrics (users, repositories).\nOne document per (namespace, scope, bucket, distinct_key, distinct_value).\nUnique compound index enforces at-most-once counting.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "v1DistinctEntrySpec": {
      "type": "object",
      "properties": {
        "scope": {
          "type": "string",
          "description": "Scope identifies the counter document this entry deduplicates against."
        },
        "bucket": {
          "type": "string",
          "format": "date-time",
          "description": "Time bucket for the distinct scope. Null for all-time.\nTruncated timestamp for time-bucketed aggregates (hourly, daily, weekly)."
        },
        "distinct_key": {
          "type": "string",
          "description": "Which distinct-count metric this entry tracks (e.g. \"user\", \"repository\")."
        },
        "distinct_value": {
          "type": "string",
          "description": "The observed value being deduplicated (e.g. \"john@acme.com\", \"my-org/my-repo\")."
        },
        "bucket_granularity": {
          "type": "string",
          "description": "Granularity of the time bucket this entry backs, as the BucketGranularity\nenum name (e.g. \"BUCKET_GRANULARITY_DAILY\"). Set only for bucketed markers\nso hourly and daily stay disjoint at midnight where both buckets are\n00:00:00. A StringValue (not the bare enum) so all-time inventory markers\nleave it nil: a nil wrapper serializes to null (matching pre-field docs),\nkeeping their unique key stable, whereas an unset enum serializes to\n\"...UNSPECIFIED\" under EmitUnpopulated and would split the key."
        }
      },
      "required": [
        "scope",
        "distinct_key",
        "distinct_value"
      ]
    },
    "v1DistributionFormatType": {
      "type": "string",
      "enum": [
        "DISTRIBUTION_FORMAT_TYPE_UNSPECIFIED",
        "DISTRIBUTION_FORMAT_TYPE_PYTHON_SOURCE",
        "DISTRIBUTION_FORMAT_TYPE_PYTHON_EGG",
        "DISTRIBUTION_FORMAT_TYPE_PYTHON_WHEEL"
      ],
      "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."
    },
    "v1DotNetToolChain": {
      "type": "object",
      "properties": {
        "version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        },
        "dotnet_installer_version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        },
        "additional_dotnet_versions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "version"
      ]
    },
    "v1DownloadInfo": {
      "type": "object",
      "properties": {
        "from_url": {
          "type": "string",
          "description": "The URL from which the artifact was downloaded."
        },
        "to_path": {
          "type": "string",
          "description": "The local path where the artifact was saved."
        },
        "filename": {
          "type": "string",
          "description": "Optional filename."
        },
        "mime_type": {
          "type": "string",
          "description": "Optional MIME type."
        },
        "digest": {
          "type": "string",
          "description": "SHA-256 digest of the downloaded content."
        },
        "version": {
          "type": "string",
          "description": "Optional version string."
        },
        "metadata": {
          "type": "object",
          "description": "Optional metadata."
        }
      },
      "description": "DownloadInfo represents information about a single downloaded artifact."
    },
    "v1EMailConfig": {
      "type": "object",
      "properties": {
        "receivers_addresses": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "receivers_addresses"
      ]
    },
    "v1Ecosystem": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "v1EmailTemplate": {
      "type": "object",
      "properties": {
        "open_action_template": {
          "type": "string",
          "description": "The template to be used for OPEN action for email plugin."
        },
        "update_action_template": {
          "type": "string",
          "description": "The template to be used for UPDATE action for email plugin."
        },
        "resolve_action_template": {
          "type": "string",
          "description": "The template to be used for RESOLVE action for email plugin."
        }
      }
    },
    "v1EmbeddingModel": {
      "type": "string",
      "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"
      ],
      "default": "EMBEDDING_MODEL_UNSPECIFIED",
      "description": "EmbeddingModel is the model of the embedding provider."
    },
    "v1EmbeddingProvider": {
      "type": "string",
      "enum": [
        "EMBEDDING_PROVIDER_UNSPECIFIED",
        "EMBEDDING_PROVIDER_OPENAI",
        "EMBEDDING_PROVIDER_GOOGLE"
      ],
      "default": "EMBEDDING_PROVIDER_UNSPECIFIED",
      "description": "EmbeddingProvider is the provider of the embeddings."
    },
    "v1EmbeddingVector": {
      "type": "object",
      "properties": {
        "vector": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "float"
          }
        }
      },
      "description": "Embedding vector for one code segment."
    },
    "v1EndorAgent": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "Opaque identifier, derived from the agent id (meta.name); stable across\nrefreshes.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace the catalog was requested under. Global in V1; reserved for V2\nper-tenant scoping."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "meta.name is the agent id -- a kebab-case slug that is also the join key to\nagent telemetry (AgentActivity.agent_id). meta.update_time is when the\ncache was last refreshed from the signed artifact."
        },
        "spec": {
          "$ref": "#/definitions/v1EndorAgentSpec",
          "description": "Agent catalog details."
        }
      },
      "description": "EndorAgent is one agent in the signed catalog published by the\nendor-labs-agent-kit release pipeline. Apiserver fetches the catalog,\nverifies its signature, caches it in memory, and serves it read-only via\nAgentCatalogService; the monorepo stores no agent code or metadata. There is\nno stored row, so uuid is derived deterministically from the agent id and is\nstable across refreshes.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "v1EndorAgentSpec": {
      "type": "object",
      "properties": {
        "display_name": {
          "type": "string",
          "description": "Human-readable name."
        },
        "short_description": {
          "type": "string",
          "description": "One-line summary."
        },
        "description": {
          "type": "string",
          "description": "Long-form markdown description."
        },
        "endorctl_min_version": {
          "type": "string",
          "description": "Minimum endorctl version required to install or run the agent."
        },
        "version": {
          "type": "string",
          "description": "Agent semver, sourced from its manifest."
        },
        "authors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Author display names only; no PII."
        },
        "install": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecInstall"
          },
          "description": "Per-host install recipes."
        }
      },
      "description": "Spec holds the agent's catalog details.",
      "required": [
        "display_name",
        "short_description",
        "endorctl_min_version",
        "version",
        "install"
      ]
    },
    "v1EndorIgnoreEntry": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the object.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Tenant data."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1EndorIgnoreEntrySpec",
          "description": "Object specific data."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Context of the ignore entry."
        }
      },
      "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.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1EndorIgnoreEntrySpec": {
      "type": "object",
      "properties": {
        "ignore_params": {
          "$ref": "#/definitions/v1DismissParams",
          "description": "Metadata associated with the ignore entry."
        },
        "finding_name": {
          "type": "string",
          "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."
        },
        "parent_name": {
          "type": "string",
          "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."
        },
        "dependency_name": {
          "type": "string",
          "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."
        },
        "vuln_id": {
          "type": "string",
          "description": "Vulnerability ID of the finding that is being ignored.\nFor example, \"CVE-2025-12345\" or \"GHSA-7rjr-3q55-vv33\".\nExact matches only."
        },
        "extra_key": {
          "type": "string",
          "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."
        },
        "project_uuid": {
          "type": "string",
          "description": "Project UUID."
        }
      },
      "required": [
        "ignore_params"
      ]
    },
    "v1EndorLicense": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an Endor Labs license.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "EndorLicenses are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "spec": {
          "$ref": "#/definitions/v1EndorLicenseSpec",
          "description": "The specification of the Endor Labs license."
        }
      },
      "description": "EndorLicense represents a specific Endor license assigned to a tenant.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "v1EndorLicenseSpec": {
      "type": "object",
      "properties": {
        "license_info": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecEndorLicenseInfo"
          },
          "description": "An array that stores the types of valid feature licenses and their\nlimits. Protobuf does not allow enums to be the key of maps. Ensure that\nany code accessing this array checks for an existing type before writing.",
          "readOnly": true
        },
        "target_namespace": {
          "type": "string",
          "description": "Target namespace of the Endor Labs license."
        },
        "type": {
          "$ref": "#/definitions/SpecEndorLicenseType",
          "description": "Type of license assigned to the tenant."
        },
        "read_access_until": {
          "type": "string",
          "format": "date-time",
          "description": "Optional. Indicates the time upto to which users of this tenant have read\naccess."
        },
        "write_access_until": {
          "type": "string",
          "format": "date-time",
          "description": "The time upto to which users of this tenant have write access."
        },
        "bundle_info": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecEndorLicenseBundleInfo"
          },
          "description": "A repeated field containing information about Endor Labs license bundles."
        },
        "quota": {
          "$ref": "#/definitions/SpecQuota",
          "description": "Quota for the Endor Labs license."
        },
        "is_customer": {
          "type": "boolean",
          "description": "Indicates whether the license belongs to a customer."
        },
        "excluded_feature_types": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SpecEndorLicenseFeatureType"
          },
          "description": "Indicates excluded features."
        },
        "license_configurations": {
          "$ref": "#/definitions/SpecLicenseConfiguration",
          "description": "The configuration for the Endor Labs license."
        },
        "salesforce_account_id": {
          "type": "string",
          "description": "Salesforce Account ID for CRM integration.\nLinks this license to a Salesforce account for revenue attribution and\ncustomer success reporting.\n\nFormat: Salesforce IDs are either 15 or 18 characters:\n- 15 chars: case-sensitive alphanumeric (0-9, a-z, A-Z)\n- 18 chars: 15-char ID + 3-char case-safe checksum\nPattern validates format only, not checksum correctness.\nRef: https://stackoverflow.com/questions/9742913/validating-a-salesforce-id"
        },
        "scan_credit_limit": {
          "type": "string",
          "format": "int64",
          "description": "Scan credit limit available to the tenant for the current counting\nwindow. Computed by the backend as the derived base from seats and\nbundle tiers plus the sum of scan_credit_grants. Clients must not\nset this field; any value provided on write is discarded.",
          "readOnly": true
        },
        "scan_credit_grants": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecScanCreditGrant"
          },
          "description": "History of additional scan credit buckets outside the bundle entitlement granted to the tenant, in the\norder they were applied. Entries are appended via ServiceRequest by CS\nwhen customers buy additional credits beyond the bundle entitlement."
        },
        "credits_period_start": {
          "type": "string",
          "format": "date-time",
          "description": "Anchor timestamp for the scan credit counting window. Set on contract\nrenewal. Any unused credits will be refreshed and NOT carry forwarded once the new period starts."
        }
      },
      "required": [
        "target_namespace"
      ]
    },
    "v1EndorRuleOrigin": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string"
        },
        "license": {
          "type": "string"
        }
      }
    },
    "v1EndorTarget": {
      "type": "string",
      "enum": [
        "ENDOR_TARGET_UNSPECIFIED",
        "ENDOR_TARGET_PACKAGE",
        "ENDOR_TARGET_REPOSITORY"
      ],
      "default": "ENDOR_TARGET_UNSPECIFIED",
      "description": "EndorTarget determines the origin of the files that will be analyzed by a\nrule."
    },
    "v1EndorctlRC": {
      "type": "string",
      "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_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"
      ],
      "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_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."
    },
    "v1ErrorParsingRule": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the for the error parsing rule.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "ErrorParsingRule are associated with a  tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ErrorParsingRuleSpec",
          "description": "ErrorParsingRule specification."
        },
        "propagate": {
          "type": "boolean",
          "description": "Object can be propagated to child namespaces. Global objects are visible to\nall namespaces."
        }
      },
      "description": "ErrorParsingRule is an internal API to manage error parsing rules\nand regular expressions.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "v1ErrorParsingRuleSpec": {
      "type": "object",
      "properties": {
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "The ecosystem of the error parsing rule."
        },
        "regex": {
          "type": "string",
          "description": "regular expression to match the error message."
        },
        "error_category": {
          "$ref": "#/definitions/SpecErrorCategory",
          "description": "The type of error that the rule is for."
        },
        "fixable": {
          "type": "boolean",
          "description": "Fixable indicates if the error is fixable through configuration."
        },
        "fixable_notes": {
          "type": "string",
          "description": "Notes about the fixable status."
        },
        "priority": {
          "type": "integer",
          "format": "int32",
          "description": "Rule matching priority (lower is higher)."
        }
      },
      "required": [
        "ecosystem",
        "regex",
        "error_category"
      ]
    },
    "v1EvaluationMethod": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the evaluation method.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "EvaluationMethods are associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1EvaluationMethodSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates that the object should be visible in child namespaces."
        }
      },
      "description": "EvaluationMethod represents an evaluation method.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1EvaluationMethodSpec": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/SpecEvaluationMethodType",
          "description": "The type of evaluation method."
        },
        "system_method": {
          "$ref": "#/definitions/v1SystemEvaluationMethodDefinition",
          "description": "The evaluation method to be used."
        },
        "target_kinds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of resources (kind) to which this evaluation method applies."
        }
      }
    },
    "v1EvaluationParameter": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the evaluation parameter.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Evaluation parameters are associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1EvaluationParameterSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates that the object should be visible in child namespaces."
        }
      },
      "description": "EvaluationParameter represents an evaluation parameter.\nThe parameters are applied to the method before execution.\nThe parameters correspond to the method identified by the parent UUID.\n\nOrder of evaluation:\n\nFor system methods, parameters at the system namespace\nare used first. If a tenant namespace has parameters for the\nsame method, they overwrite the system level parameters.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1EvaluationParameterSpec": {
      "type": "object",
      "properties": {
        "disable": {
          "type": "boolean",
          "description": "Disables an evaluation parameter."
        },
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/SpecParameter"
          },
          "description": "Parameters associated with the evaluation parameter."
        }
      }
    },
    "v1Events": {
      "type": "object",
      "properties": {
        "event": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "List of user events"
        }
      }
    },
    "v1ExceptionReason": {
      "type": "string",
      "enum": [
        "EXCEPTION_REASON_UNSPECIFIED",
        "EXCEPTION_REASON_FALSE_POSITIVE",
        "EXCEPTION_REASON_RISK_ACCEPTED",
        "EXCEPTION_REASON_IN_TRIAGE",
        "EXCEPTION_REASON_OTHER",
        "EXCEPTION_REASON_RESOLVED"
      ],
      "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."
    },
    "v1Exceptions": {
      "type": "object",
      "properties": {
        "policy_uuids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of exception policies triggered by this finding."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of tags set by exception policies."
        }
      },
      "description": "Metadata added by the exception policy scanner."
    },
    "v1ExportParameters": {
      "type": "object",
      "properties": {
        "project_uuid": {
          "type": "string",
          "description": "The UUID of the project."
        },
        "project_name": {
          "type": "string",
          "description": "Name of the project."
        },
        "package_version_uuids": {
          "type": "array",
          "items": {
            "type": "object"
          },
          "description": "List of package version UUIDs."
        },
        "repository_version": {
          "type": "string",
          "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."
        }
      },
      "description": "Parameters to export a SBOM/VEX."
    },
    "v1ExportedSBOM": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the SBOM.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "SBOM are associated with a tenant and tenant information must be provided."
        },
        "spec": {
          "$ref": "#/definitions/v1ExportedSBOMSpec"
        }
      },
      "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.",
      "required": [
        "meta"
      ]
    },
    "v1ExportedSBOMComponentType": {
      "type": "string",
      "enum": [
        "COMPONENT_TYPE_UNSPECIFIED",
        "COMPONENT_TYPE_LIBRARY",
        "COMPONENT_TYPE_APPLICATION"
      ],
      "default": "COMPONENT_TYPE_UNSPECIFIED",
      "description": "The kind of component for which we are creating an SBOM.\nThis is a mandatory field."
    },
    "v1ExportedSBOMFormat": {
      "type": "string",
      "enum": [
        "FORMAT_UNSPECIFIED",
        "FORMAT_JSON",
        "FORMAT_XML",
        "FORMAT_TAG_VALUE"
      ],
      "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."
    },
    "v1ExportedSBOMSpec": {
      "type": "object",
      "properties": {
        "data": {
          "type": "string",
          "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
        },
        "kind": {
          "$ref": "#/definitions/v1SBOMKind",
          "description": "SBOM kind."
        },
        "format": {
          "$ref": "#/definitions/v1ExportedSBOMFormat",
          "description": "SBOM format."
        },
        "component_type": {
          "$ref": "#/definitions/v1ExportedSBOMComponentType",
          "description": "The SBOM component type."
        },
        "hide_private_components": {
          "type": "boolean",
          "description": "Whether to hide internal packages or not."
        },
        "export_parameters": {
          "$ref": "#/definitions/v1ExportParameters",
          "description": "parameters to export the SBOM."
        },
        "include_test_dependencies": {
          "type": "boolean",
          "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."
        }
      },
      "description": "The internal specification of the object.",
      "required": [
        "component_type"
      ]
    },
    "v1ExportedVEX": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the VEX.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for the object."
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "SBOM are associated with a tenant and tenant information must be provided."
        },
        "spec": {
          "$ref": "#/definitions/v1ExportedVEXSpec"
        }
      },
      "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."
    },
    "v1ExportedVEXComponentType": {
      "type": "string",
      "enum": [
        "COMPONENT_TYPE_UNSPECIFIED",
        "COMPONENT_TYPE_LIBRARY",
        "COMPONENT_TYPE_APPLICATION"
      ],
      "default": "COMPONENT_TYPE_UNSPECIFIED",
      "description": "The kind of component for which we are creating an SBOM.\nThis is a mandatory field."
    },
    "v1ExportedVEXFormat": {
      "type": "string",
      "enum": [
        "FORMAT_UNSPECIFIED",
        "FORMAT_JSON",
        "FORMAT_XML"
      ],
      "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."
    },
    "v1ExportedVEXSpec": {
      "type": "object",
      "properties": {
        "data": {
          "type": "string",
          "description": "This is the output of the VEX which is a string type only.",
          "readOnly": true
        },
        "format": {
          "$ref": "#/definitions/v1ExportedVEXFormat"
        },
        "component_type": {
          "$ref": "#/definitions/v1ExportedVEXComponentType"
        },
        "kind": {
          "$ref": "#/definitions/v1SBOMKind"
        },
        "export_parameters": {
          "$ref": "#/definitions/v1ExportParameters",
          "description": "parameters to export the VEX."
        },
        "include_test_dependencies": {
          "type": "boolean",
          "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."
        }
      },
      "description": "The internal specification of the object.",
      "required": [
        "component_type"
      ]
    },
    "v1Exporter": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the exporter.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Exporters are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ExporterSpec",
          "description": "The project specification."
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates whether the object should be visible in the child namespaces or\nnot."
        }
      },
      "description": "Defines a data exporter.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1ExporterSpec": {
      "type": "object",
      "properties": {
        "exporter_type": {
          "$ref": "#/definitions/SpecExporterType"
        },
        "s3_config": {
          "$ref": "#/definitions/ExporterS3Config"
        },
        "wiz_config": {
          "$ref": "#/definitions/ExporterWizConfig"
        },
        "message_type_configs": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ExporterMessageTypeConfig"
          }
        }
      },
      "required": [
        "exporter_type"
      ]
    },
    "v1ExternalProviderModel": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID for the ingested external provider model.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Models scanned per namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ExternalProviderModelSpec",
          "description": "The specification of the model."
        }
      },
      "description": "ExternalProviderModel represents a model from an external provider.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1ExternalProviderModelSpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the model."
        },
        "provider": {
          "$ref": "#/definitions/v1AIModelProvider",
          "description": "The provider the model comes from."
        },
        "project_uuid": {
          "type": "string",
          "description": "The UUID of the project that this model relates to."
        },
        "terms_of_service": {
          "type": "string",
          "description": "The terms of service of the external provider."
        },
        "custom_provider_name": {
          "type": "string",
          "description": "Custom provider's name as given by the user.\nApplies when the provider type is AI_MODEL_PROVIDER_CUSTOM."
        }
      },
      "required": [
        "project_uuid"
      ]
    },
    "v1FactorCategory": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "v1FactorImpact": {
      "type": "string",
      "enum": [
        "FACTOR_IMPACT_UNSPECIFIED",
        "FACTOR_IMPACT_NONE",
        "FACTOR_IMPACT_POSITIVE",
        "FACTOR_IMPACT_VERY_POSITIVE",
        "FACTOR_IMPACT_NEGATIVE",
        "FACTOR_IMPACT_VERY_NEGATIVE"
      ],
      "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."
    },
    "v1Feedback": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the feedback.",
          "readOnly": true,
          "x-endor-name": "Feedback UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Security review pull requests are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata for the feedback."
        },
        "spec": {
          "$ref": "#/definitions/v1FeedbackSpec",
          "description": "Security review pull request specifications."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "Feedback represents a feedback in the system.",
      "required": [
        "meta",
        "context"
      ],
      "x-internal": true
    },
    "v1FeedbackAction": {
      "type": "object",
      "properties": {
        "feedback_message": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      },
      "description": "FeedbackAction prompts the user with a message without blocking."
    },
    "v1FeedbackSpec": {
      "type": "object",
      "properties": {
        "resource_uuid": {
          "type": "string",
          "description": "The unique identifier (UUID) of the parent resource to which this feedback is attached."
        },
        "resource_kind": {
          "type": "string",
          "description": "The type of the parent resource to which this feedback is attached, such as \"Project\"."
        },
        "comment": {
          "type": "string",
          "description": "The comment associated with the feedback."
        },
        "feedback_type": {
          "$ref": "#/definitions/FeedbackFeedbackType",
          "description": "The type of feedback, such as positive or negative."
        },
        "finding": {
          "$ref": "#/definitions/v1Finding"
        }
      },
      "required": [
        "resource_uuid",
        "resource_kind",
        "feedback_type"
      ]
    },
    "v1FileAccessActivity": {
      "type": "object",
      "properties": {
        "file_operation": {
          "$ref": "#/definitions/v1FileAccessActivityFileOperation",
          "description": "Operation to match (e.g. read, write). When unspecified, any operation."
        },
        "file_name_patterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Regex file patterns (e.g. \"\\\\.env$\", \"secrets/.*\", \".*\\\\.key$\")."
        }
      },
      "description": "FileAccessActivity matches file access by operation and path patterns."
    },
    "v1FileAccessActivityFileOperation": {
      "type": "string",
      "enum": [
        "FILE_OPERATION_UNSPECIFIED",
        "FILE_OPERATION_READ",
        "FILE_OPERATION_WRITE",
        "FILE_OPERATION_DELETE",
        "FILE_OPERATION_EDIT"
      ],
      "default": "FILE_OPERATION_UNSPECIFIED",
      "description": "FileOperation identifies the type of file access."
    },
    "v1FileAccessMatch": {
      "type": "object",
      "properties": {
        "matched_file_operation": {
          "$ref": "#/definitions/v1FileAccessActivityFileOperation",
          "description": "Operation that matched (e.g. read, write)."
        },
        "matched_file_name_pattern": {
          "type": "string",
          "description": "File name pattern that matched."
        }
      },
      "description": "FileAccessMatch describes a file access that matched a policy."
    },
    "v1FileHashQueryRequest": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the filehash query request.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace of the filehash query request."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1FileHashQueryRequestSpec",
          "description": "Resource kind specific data."
        }
      },
      "description": "A file hash query request allows the caller to send a set of file hashes\nand use the segment index to match those hashes to file versions\nin one or more repositories.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1FileHashQueryRequestSpec": {
      "type": "object",
      "properties": {
        "query": {
          "$ref": "#/definitions/FileHashQueryRequestFileHashQuery",
          "description": "One query can contain multiple file hashes."
        }
      }
    },
    "v1FileHook": {
      "type": "object",
      "properties": {
        "file_name": {
          "type": "string",
          "description": "File name or path."
        },
        "operation": {
          "$ref": "#/definitions/AgentHookEventSpecFileOperation",
          "description": "Type of file operation."
        },
        "tool_input": {
          "type": "object",
          "description": "Tool invocation input; structure is tool-specific (use Struct for JSON)."
        },
        "tool_response": {
          "type": "object",
          "description": "Tool result; structure is tool-specific (e.g. stdout/stderr or filenames)."
        }
      },
      "description": "FileHook contains payload for file-related hooks."
    },
    "v1FileInfo": {
      "type": "object",
      "properties": {
        "file_count": {
          "type": "string",
          "format": "uint64",
          "description": "The number of files."
        },
        "line_count": {
          "type": "string",
          "format": "uint64",
          "description": "The number of lines."
        },
        "byte_count": {
          "type": "string",
          "format": "uint64",
          "description": "The number of bytes."
        }
      },
      "description": "The breakdown for various file categories."
    },
    "v1FileSegments": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "UUID of the file segments.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace of the file segments."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects.\nName corresponds to the relative file path."
        },
        "spec": {
          "$ref": "#/definitions/v1FileSegmentsSpec",
          "description": "Resource kind specific data."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Contexts keep objects from different scans separated."
        }
      },
      "description": "File segment metadata for a given customer source file.\nStored in mongo and used to refresh dependencies.\nNOTE: Not used for OSS-projects.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "v1FileSegmentsSpec": {
      "type": "object",
      "properties": {
        "project_uuid": {
          "type": "string",
          "description": "UUID of the project that this file belongs to."
        },
        "segments": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SegmentMetadata"
          },
          "description": "File segment metadata."
        },
        "file_hash": {
          "type": "string",
          "description": "File content hash."
        },
        "scope": {
          "$ref": "#/definitions/v1DependencyScope",
          "description": "File dependency scope."
        },
        "segmenter_version": {
          "type": "integer",
          "format": "int32",
          "description": "Segmenter version."
        },
        "language": {
          "$ref": "#/definitions/v1Language",
          "description": "File language."
        }
      }
    },
    "v1FileStats": {
      "type": "object",
      "properties": {
        "file_info": {
          "$ref": "#/definitions/v1FileInfo",
          "description": "The overall file information (file count, line count, byte count)."
        },
        "has_codeowners": {
          "type": "boolean",
          "description": "Whether the version contain a valid code owners file or not."
        },
        "has_license": {
          "type": "boolean",
          "description": "Whether there is a licence or not."
        },
        "has_security_md": {
          "type": "boolean",
          "description": "Whether the version contain a SECURITY.md file or not."
        },
        "license_name": {
          "type": "string",
          "description": "The name of the license."
        },
        "license_type": {
          "type": "string",
          "description": "The type of the license."
        },
        "documentation_files": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of files that contain documentation."
        },
        "test_files": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of files that contain tests."
        },
        "cicd_files": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of files that contain CI/CD configuration."
        },
        "best_practices_files": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of files that represent best practices."
        },
        "sast_files": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of files that are related to SAST tools."
        },
        "make_files": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of files that are related to Make tools."
        },
        "badges": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of the badges in the repository."
        },
        "file_types": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1FileInfo"
          },
          "description": "The breadown for each file type."
        },
        "languages": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1FileInfo"
          },
          "description": "The breadown for each language type."
        },
        "copyrights": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of copyright notices found in source files."
        }
      },
      "description": "File statistics message. Included as the payload of a metric object."
    },
    "v1FileType": {
      "type": "string",
      "enum": [
        "FILE_TYPE_UNSPECIFIED",
        "FILE_TYPE_FILE",
        "FILE_TYPE_SYMLINK"
      ],
      "default": "FILE_TYPE_UNSPECIFIED"
    },
    "v1Finding": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the object.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Information about the tenant and namespace that the finding belongs to."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1FindingSpec",
          "description": "Resource kind specific data."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Contexts keep objects from different scans separated."
        }
      },
      "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.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "v1FindingCategory": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "v1FindingClassification": {
      "type": "string",
      "enum": [
        "FINDING_CLASSIFICATION_UNSPECIFIED",
        "FINDING_CLASSIFICATION_SECURITY_VULNERABILITY",
        "FINDING_CLASSIFICATION_LOGICAL_BUG"
      ],
      "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)."
    },
    "v1FindingContainerData": {
      "type": "object",
      "properties": {
        "layer_digests": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of layer digests for the container image where the target\ndependency was found."
        },
        "has_base_layer": {
          "type": "boolean",
          "description": "Set to true if the target dependency was found in the base layer of the\ncontainer image."
        },
        "base_image": {
          "type": "string",
          "description": "Base image of the container image where the target dependency was\nfound."
        }
      }
    },
    "v1FindingFixingPatch": {
      "type": "object",
      "properties": {
        "endor_patch_available": {
          "type": "boolean"
        }
      },
      "description": "FindingFixingPatch that can fix the finding."
    },
    "v1FindingFixingUpgrades": {
      "type": "object",
      "properties": {
        "upgrade_list": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/FindingFixingUpgradesUpgradeInfo"
          },
          "description": "List of upgrades that can fix the finding."
        }
      },
      "description": "Upgrades that can fix the finding."
    },
    "v1FindingLog": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the finding log.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace of the finding log."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1FindingLogSpec",
          "description": "Resource kind specific data."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Contexts keep objects from different scans separated."
        }
      },
      "description": "A finding log contains details of the state of a finding at the time it was\ncreated, updated or deleted.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "v1FindingLogSpec": {
      "type": "object",
      "properties": {
        "finding_uuid": {
          "type": "string",
          "description": "The UUID of the finding."
        },
        "finding_parent_kind": {
          "type": "string",
          "description": "Finding parent object resource kind. For example, PackageVersion."
        },
        "finding_parent_uuid": {
          "type": "string",
          "description": "Finding parent object UUID."
        },
        "operation": {
          "$ref": "#/definitions/v1FindingLogSpecOperation",
          "description": "Operation that triggered the creation of this finding log."
        },
        "introduced_at": {
          "type": "string",
          "format": "date-time",
          "description": "Time the finding was introduced."
        },
        "resolved_at": {
          "type": "string",
          "format": "date-time",
          "description": "Time the finding was resolved."
        },
        "days_unresolved": {
          "type": "string",
          "format": "int64",
          "description": "Number of days that this finding remained unresolved."
        },
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "Ecosystem where the finding was detected."
        },
        "target_uuid": {
          "type": "string",
          "description": "The UUID of the DependencyMetadata object for the dependency."
        },
        "target_dependency_package_name": {
          "type": "string",
          "description": "Fully qualified name of the dependency. For example,\neco://package@version."
        },
        "method": {
          "$ref": "#/definitions/v1SystemEvaluationMethodDefinition",
          "description": "Method used to compute the finding."
        },
        "level": {
          "$ref": "#/definitions/SpecFindingLevel",
          "description": "Finding severity level."
        },
        "finding_tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1FindingTags"
          },
          "description": "List of tags, or attributes, that describe the scope of the finding\nand can be used to filter findings."
        },
        "finding_categories": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1FindingCategory"
          },
          "description": "List of categories that capture the use case to which the finding fits."
        },
        "approximation": {
          "type": "boolean",
          "description": "True if this finding is for an approximate dependency\nbased on the unresolved package dependencies."
        },
        "finding_parent_name": {
          "type": "string",
          "description": "finding_parent_name is the name of the parent object."
        },
        "snooze": {
          "$ref": "#/definitions/v1DismissParams",
          "description": "Snooze params."
        },
        "location": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "File paths or URLs where the finding was detected."
        }
      },
      "required": [
        "finding_uuid",
        "finding_parent_kind",
        "finding_parent_uuid",
        "operation",
        "introduced_at",
        "method",
        "level",
        "finding_tags",
        "finding_categories"
      ]
    },
    "v1FindingLogSpecOperation": {
      "type": "string",
      "enum": [
        "OPERATION_UNSPECIFIED",
        "OPERATION_CREATE",
        "OPERATION_UPDATE",
        "OPERATION_DELETE"
      ],
      "default": "OPERATION_UNSPECIFIED"
    },
    "v1FindingMetadata": {
      "type": "object",
      "properties": {
        "root_package_score_card": {
          "$ref": "#/definitions/v1ScoreCard",
          "description": "The package scorecard for findings about low scores."
        },
        "dependency_score_card": {
          "$ref": "#/definitions/v1ScoreCard",
          "description": "The dependency scorecard for findings about low scores."
        },
        "root_package_score_factor_list": {
          "$ref": "#/definitions/v1ScoreFactorList",
          "description": "A list of (relevant) score factors, for the root package, for findings\nabout low scores."
        },
        "dependency_score_factor_list": {
          "$ref": "#/definitions/v1ScoreFactorList",
          "description": "A list of (relevant) score factors, for the dependency, for findings about\nlow scores."
        },
        "vulnerability": {
          "$ref": "#/definitions/v1Vuln",
          "description": "Vulnerability data for vulnerability related findings."
        },
        "root_package_resolved_dependencies": {
          "$ref": "#/definitions/v1Bom",
          "description": "The resolved dependencies of the root package."
        },
        "source_policy_info": {
          "$ref": "#/definitions/v1FindingPolicyInfo",
          "description": "Details about the policy that created the finding."
        },
        "ci_blocking_policy_info": {
          "$ref": "#/definitions/v1FindingPolicyInfo",
          "description": "This field is always empty. See spec.actions instead."
        },
        "root_package_version_metadata": {
          "$ref": "#/definitions/v1PackageVersionMetadata",
          "description": "Package metadata for the root package."
        },
        "dependency_package_version_metadata": {
          "$ref": "#/definitions/v1PackageVersionMetadata",
          "description": "Package metadata for the dependency."
        },
        "typosquatted_dependency_version_metadata": {
          "$ref": "#/definitions/v1PackageVersionMetadata",
          "description": "Package metadata for the typosquatted package, for findings about\ntyposquatting."
        },
        "container_data": {
          "$ref": "#/definitions/v1FindingContainerData",
          "description": "Container image data of finding."
        },
        "custom": {
          "description": "Custom finding metadata."
        },
        "security_review_data": {
          "$ref": "#/definitions/v1SecurityReviewFindingData",
          "description": "Security review data for security review findings."
        },
        "malware": {
          "$ref": "#/definitions/v1Malware",
          "description": "Malware data for malware related findings."
        },
        "cvss_version": {
          "$ref": "#/definitions/SpecCVSSVersion",
          "description": "CVSS version of the vulnerability."
        },
        "ai_sast_data": {
          "$ref": "#/definitions/AIResultSAST",
          "description": "Structured AI SAST data (per-section markdown and the source-to-sink\ndata-flow path with SCM links) for AI Model SAST findings. Reuses the\nAIResult.SAST message so the typed contract is not duplicated."
        }
      },
      "description": "Metadata associated with a finding."
    },
    "v1FindingPolicyInfo": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Policy name."
        },
        "uuid": {
          "type": "string",
          "description": "Policy UUID."
        },
        "description": {
          "type": "string",
          "description": "Policy description."
        },
        "finding_name": {
          "type": "string",
          "description": "Finding name."
        },
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/FindingPolicyInfoPolicyResult"
          },
          "description": "List of policy matches."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Policy meta tags."
        },
        "total_num_results": {
          "type": "integer",
          "format": "int32",
          "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."
        }
      },
      "description": "Details about the policy that created the finding."
    },
    "v1FindingRecordScope": {
      "type": "string",
      "enum": [
        "FINDING_RECORD_SCOPE_UNSPECIFIED",
        "FINDING_RECORD_SCOPE_ALL",
        "FINDING_RECORD_SCOPE_VULNERABILITY"
      ],
      "default": "FINDING_RECORD_SCOPE_UNSPECIFIED",
      "description": "Which finding types populate the record-level fixed/introduced lists. Shared\nby the impact query and the records drill-down query. The severity/reachability\nCOUNT fields are always computed both ways (all_counts and vuln_counts); this\nselects only which findings appear in the record lists and, correspondingly,\nwhich totals those record views reconcile against.\n\n - FINDING_RECORD_SCOPE_UNSPECIFIED: Unset; treated as FINDING_RECORD_SCOPE_ALL.\n - FINDING_RECORD_SCOPE_ALL: All finding types. Record views reconcile with all_counts / all_changes.\n - FINDING_RECORD_SCOPE_VULNERABILITY: Vulnerability findings only. Record views reconcile with vuln_counts /\nvuln_changes."
    },
    "v1FindingRemediation": {
      "type": "string",
      "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"
      ],
      "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"
    },
    "v1FindingSpec": {
      "type": "object",
      "properties": {
        "project_uuid": {
          "type": "string",
          "description": "The UUID of the project to which this finding belongs.",
          "x-endor-name": "Impacted Project UUID"
        },
        "last_processed": {
          "type": "string",
          "format": "date-time",
          "description": "Last time the finding was processed."
        },
        "level": {
          "$ref": "#/definitions/SpecFindingLevel",
          "description": "Finding severity level.",
          "x-endor-name": "Severity Level"
        },
        "dismiss": {
          "type": "boolean",
          "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.",
          "x-endor-name": "Dismissed"
        },
        "remediation": {
          "type": "string",
          "description": "String describing the recommended remediation to fix this finding."
        },
        "finding_metadata": {
          "$ref": "#/definitions/v1FindingMetadata",
          "title": "Metadata associated with the finding"
        },
        "summary": {
          "type": "string",
          "description": "A more detailed description of the finding."
        },
        "finding_tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1FindingTags"
          },
          "description": "List of tags, or attributes, that describe the scope of the finding\nand can be used to filter findings.",
          "x-endor-name": "Attributes"
        },
        "target_uuid": {
          "type": "string",
          "description": "The UUID of the DependencyMetadata object for the dependency, if\napplicable."
        },
        "extra_key": {
          "type": "string",
          "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."
        },
        "method": {
          "$ref": "#/definitions/v1SystemEvaluationMethodDefinition",
          "description": "Method used to compute the finding.",
          "x-endor-name": "Evaluation Method"
        },
        "target_dependency_package_name": {
          "type": "string",
          "description": "Fully qualified name of the dependency, e.g. eco://package@version, if\napplicable."
        },
        "target_dependency_name": {
          "type": "string",
          "description": "Dependency package name, if applicable.\nThis is just the name (i.e. it does not include the ecosystem or the\nversion)."
        },
        "target_dependency_version": {
          "type": "string",
          "description": "Dependency version, if applicable.\nThis is just the version (i.e. it does not include the ecosystem or the\npackage name)."
        },
        "explanation": {
          "type": "string",
          "description": "Information about why this finding is considered noteworthy."
        },
        "remediation_action": {
          "$ref": "#/definitions/v1FindingRemediation",
          "description": "Recommended action to resolve the finding."
        },
        "source_code_version": {
          "$ref": "#/definitions/v1Version",
          "description": "Ref of the source code repository for root package version, if\napplicable."
        },
        "reachable_paths": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/FindingSpecPath"
          },
          "description": "Function paths to the vulnerable method.\nOnly applies to vulnerability findings."
        },
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "Ecosystem where the finding was detected."
        },
        "finding_categories": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1FindingCategory"
          },
          "description": "List of categories that capture the use case the finding fits in.",
          "x-endor-name": "Categories"
        },
        "relationship": {
          "type": "string",
          "description": "String describing the relationship to dependency,\nFor example, \"Foo is a direct dependency of bar.\", if applicable."
        },
        "latest_version": {
          "type": "string",
          "description": "Latest version of dependency, if available."
        },
        "dependency_file_paths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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."
        },
        "approximation": {
          "type": "boolean",
          "description": "True if this finding is for an approximate dependency\nbased on the unresolved package dependencies."
        },
        "proposed_version": {
          "type": "string",
          "description": "Recommended version of dependency if available."
        },
        "exceptions": {
          "$ref": "#/definitions/v1Exceptions",
          "description": "Tags and other fields set by exception policies."
        },
        "actions": {
          "$ref": "#/definitions/v1Actions",
          "description": "Tags and other fields set by action policies."
        },
        "fixing_upgrades": {
          "$ref": "#/definitions/v1FindingFixingUpgrades",
          "description": "List of upgrades that can fix the finding."
        },
        "fixing_patch": {
          "$ref": "#/definitions/v1FindingFixingPatch",
          "description": "Patch that can fix the finding."
        },
        "code_owners": {
          "$ref": "#/definitions/v1CodeOwnerData",
          "description": "Code owner data for the finding. See also dependency_file_paths.\nIf there are multiple file paths for the finding, then the\ncode owner data is merged into one entry."
        },
        "location_urls": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The URLs that correspond to the paths contained in dependency_file_paths."
        },
        "call_graph_analysis_type": {
          "$ref": "#/definitions/v1CallGraphAnalysisType",
          "description": "Type of call graph analysis used for this finding."
        },
        "snooze": {
          "$ref": "#/definitions/v1DismissParams",
          "description": "Snooze parameters for the finding.\nSet if the finding is snoozed, nil or empty if not snoozed."
        },
        "ignore": {
          "$ref": "#/definitions/v1DismissParams",
          "description": "Ignore parameters for the finding.\nSet if the finding is ignored via the ignore file,\nnil or empty if not ignored."
        }
      },
      "description": "Finding specific data.",
      "required": [
        "project_uuid",
        "last_processed",
        "level",
        "summary",
        "finding_tags",
        "target_uuid",
        "extra_key"
      ]
    },
    "v1FindingSummaryInfo": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "parent_uuid": {
          "type": "string"
        },
        "finding_tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1FindingTags"
          }
        },
        "level": {
          "$ref": "#/definitions/SpecFindingLevel"
        },
        "finding_categories": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1FindingCategory"
          }
        },
        "target_dependency_package_name": {
          "type": "string"
        }
      },
      "description": "FindingSummaryInfo contains some selected fields for a finding."
    },
    "v1FindingTags": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "v1FindingUpgradeBreakdown": {
      "type": "object",
      "properties": {
        "reduction": {
          "type": "integer",
          "format": "int32",
          "description": "The reduction in findings across all severities."
        },
        "current_count": {
          "type": "integer",
          "format": "int32",
          "description": "The finding count in the current version across all severities."
        },
        "upgrade_count": {
          "type": "integer",
          "format": "int32",
          "description": "The finding count in the upgrade version across all severities."
        },
        "severity": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1FindingUpgradeInfo"
          },
          "description": "The breakdown of finding information per severity level."
        },
        "fixed_findings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Fixed findings."
        }
      },
      "description": "Protobuf definition for FindingUpgradeBreakdown."
    },
    "v1FindingUpgradeInfo": {
      "type": "object",
      "properties": {
        "current_count": {
          "type": "integer",
          "format": "int32",
          "description": "The finding count in the current version."
        },
        "upgrade_count": {
          "type": "integer",
          "format": "int32",
          "description": "The finding count in the upgrade version."
        },
        "fixed": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1Finding"
          },
          "description": "The findings fixed."
        },
        "introduced": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1Finding"
          },
          "description": "The findings introduced."
        },
        "reduction": {
          "type": "integer",
          "format": "int32",
          "description": "Overall reduction in findings."
        },
        "fixed_summary": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1FindingSummaryInfo"
          },
          "description": "The findings fixed. Summary information only."
        },
        "introduced_summary": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1FindingSummaryInfo"
          },
          "description": "The findings introduced. Summary information only."
        },
        "fixed_count": {
          "type": "integer",
          "format": "int32",
          "description": "The number of total findings fixed by the upgrade."
        },
        "introduced_count": {
          "type": "integer",
          "format": "int32",
          "description": "The number of total findings introduced by the upgrade."
        },
        "reachable_fixed_count": {
          "type": "integer",
          "format": "int32",
          "description": "The number of reachable findings fixed by the upgrade."
        },
        "reachable_introduced_count": {
          "type": "integer",
          "format": "int32",
          "description": "The number of reachable findings introduced by the upgrade."
        }
      },
      "description": "Protobuf definition for FindingUpgradeInfo."
    },
    "v1FunctionChange": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "function_reference": {
          "type": "string"
        },
        "defined": {
          "type": "boolean"
        },
        "diff_change": {
          "$ref": "#/definitions/v1ChangeType"
        },
        "modifier_change": {
          "$ref": "#/definitions/v1ModifierChangeType"
        }
      },
      "description": "Protobuf definition for FunctionChange."
    },
    "v1FunctionGraphData": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the function graph.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespaces are associated with a tenant."
        },
        "zstd_bytes": {
          "type": "string",
          "format": "byte",
          "description": "Function graph proto bytes are encoded in zstd bytes.\nIt is the responsibility of the caller to compress/uncompress the bytes."
        },
        "any": {
          "$ref": "#/definitions/googleprotobufAny",
          "description": "Function graph is encoded in json bytes.\nUse the http header x-callgraph-encoding=any to get the specification in this  format."
        },
        "related_object": {
          "type": "string",
          "description": "The internal value that identifies the function graph storage location.",
          "readOnly": true
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "The context of the associated package."
        },
        "storage_url": {
          "type": "string",
          "description": "The URL to the storage location of the callgraph.",
          "readOnly": true
        }
      },
      "description": "FunctionGraphData represents a function graph data request in the system.",
      "required": [
        "meta",
        "tenant_meta"
      ]
    },
    "v1Fuzzy": {
      "type": "object",
      "properties": {
        "max_edits": {
          "type": "integer",
          "format": "int32"
        },
        "max_expansion": {
          "type": "integer",
          "format": "int32"
        },
        "prefix_length": {
          "type": "integer",
          "format": "int32"
        },
        "score_options": {
          "$ref": "#/definitions/v1ScoreOptions"
        }
      },
      "description": "Fuzzy is used to search for a similar string. Parameters\ndetermine the deviation."
    },
    "v1GHEAppRegistration": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The tenant metadata restrict access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1GHEAppRegistrationSpec"
        },
        "response": {
          "$ref": "#/definitions/v1GHEAppRegistrationResponse",
          "description": "The return value of the GHE app registration.",
          "readOnly": true
        }
      },
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "v1GHEAppRegistrationResponse": {
      "type": "object",
      "properties": {
        "app_registration_url": {
          "type": "string",
          "description": "The URL to register the GHE app."
        }
      }
    },
    "v1GHEAppRegistrationSpec": {
      "type": "object",
      "properties": {
        "base_url": {
          "type": "string",
          "description": "The base URL of the GHE instance."
        },
        "organization": {
          "type": "string",
          "description": "The organization that will own the app."
        }
      },
      "required": [
        "base_url",
        "organization"
      ]
    },
    "v1Gated": {
      "type": "object",
      "properties": {
        "mode_type": {
          "type": "string"
        },
        "disabled": {
          "type": "boolean"
        }
      }
    },
    "v1GemSpec": {
      "type": "object",
      "properties": {
        "priority": {
          "type": "integer",
          "format": "int32",
          "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."
        },
        "url": {
          "type": "string",
          "description": "The URL of the registry that the Ruby gems package manager must use."
        },
        "user": {
          "type": "string",
          "description": "The user name to use to access this repository."
        },
        "password": {
          "type": "string",
          "description": "An encrypted password that must be provided by the repository owner."
        }
      },
      "description": "GemSpec represents a configuration for the Ruby gems package manager.",
      "required": [
        "priority"
      ]
    },
    "v1GetParameters": {
      "type": "object",
      "properties": {
        "mask": {
          "type": "string",
          "description": "List of fields to return (all fields are returned by default)."
        }
      },
      "description": "Parameters for a get request."
    },
    "v1GitHubConfig": {
      "type": "object",
      "properties": {
        "app_id": {
          "type": "string",
          "description": "The app id of the installation."
        },
        "enable_pr_scans": {
          "type": "boolean",
          "description": "enable_pr_scans is a boolean value that indicates if the automated PR scans\nare enabled."
        },
        "enable_pr_comments": {
          "type": "boolean",
          "description": "enable_pr_comments is a boolean value that indicates if the automated PR\ncomments should be enabled."
        },
        "enable_full_scan": {
          "type": "boolean",
          "description": "enable_full_scan is a boolean value that indicates if the full scan should\nbe enabled."
        },
        "include_archived_repos": {
          "type": "boolean",
          "description": "include_archived_repos is a boolean value that indicates if the archived\nrepos should be included. Default will be off."
        },
        "installation_github_user": {
          "type": "string",
          "title": "installation_github_user is the Github user that initiated the installation",
          "readOnly": true
        },
        "host_url": {
          "type": "string",
          "description": "The base URL of the corresponding SCM app."
        }
      }
    },
    "v1GitHubEvent": {
      "type": "object",
      "properties": {
        "event_type": {
          "$ref": "#/definitions/v1GitHubEventEventType"
        }
      },
      "required": [
        "event_type"
      ]
    },
    "v1GitHubEventEventType": {
      "type": "string",
      "enum": [
        "EVENT_TYPE_UNSPECIFIED",
        "EVENT_TYPE_INSTALLATION",
        "EVENT_TYPE_PULL_REQUEST",
        "EVENT_TYPE_CHECK_SUITE",
        "EVENT_TYPE_CHECK_RUN",
        "EVENT_TYPE_REPOSITORY"
      ],
      "default": "EVENT_TYPE_UNSPECIFIED"
    },
    "v1GitHubPRConfig": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        }
      },
      "required": [
        "enabled"
      ]
    },
    "v1GitHubPayload": {
      "type": "object",
      "properties": {
        "pull_request_payload": {
          "type": "object",
          "description": "pull_request_payload contains the GitHub Pull Request payload\nassociated with this scan request, when available. This allows downstream\ncomponents (e.g., security review scanner) to avoid refetching PR data\nfrom GitHub and instead map this JSON to internal structures on demand."
        }
      },
      "description": "GitHubPayload carries SCM-specific webhook data for a GitHub-originated scan."
    },
    "v1GitHubWorkflows": {
      "type": "object",
      "properties": {
        "workflows": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/GitHubWorkflowsWorkflow"
          }
        }
      },
      "description": "GitHubWorkflows Metric Value contains information about the workflow file's code posture management."
    },
    "v1GitLabConfig": {
      "type": "object",
      "properties": {
        "host_url": {
          "type": "string",
          "description": "The URL of the group/sub-group."
        },
        "personal_access_token": {
          "type": "string",
          "description": "PAT of the user doing integration to fetch resources using REST APIs."
        },
        "webhook_secret": {
          "type": "string",
          "description": "The webhook secret configured in GitLab for validating incoming webhook\nevents."
        },
        "enable_mr_scans": {
          "type": "boolean",
          "description": "enable_mr_scans is a boolean value that indicates if the automated MR scans\nare enabled."
        },
        "enable_mr_comments": {
          "type": "boolean",
          "description": "enable_mr_comments is a boolean value that indicates if the automated MR\ncomments should be enabled."
        },
        "enable_full_scan": {
          "type": "boolean",
          "description": "enable_full_scan is a boolean value that indicates if the full scan should\nbe enabled."
        }
      },
      "required": [
        "host_url"
      ]
    },
    "v1GitLabEvent": {
      "type": "object",
      "properties": {
        "event_type": {
          "$ref": "#/definitions/v1GitLabEventEventType"
        }
      },
      "required": [
        "event_type"
      ]
    },
    "v1GitLabEventEventType": {
      "type": "string",
      "enum": [
        "EVENT_TYPE_UNSPECIFIED",
        "EVENT_TYPE_MERGE_REQUEST"
      ],
      "default": "EVENT_TYPE_UNSPECIFIED"
    },
    "v1GitSpec": {
      "type": "object",
      "properties": {
        "http_clone_url": {
          "type": "string",
          "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.",
          "x-endor-name": "Project HTTP Clone URL"
        },
        "git_clone_url": {
          "type": "string",
          "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,
          "x-endor-name": "Project Git Clone URL"
        },
        "organization": {
          "type": "string",
          "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,
          "x-endor-name": "Organization"
        },
        "path": {
          "type": "string",
          "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
        },
        "full_name": {
          "type": "string",
          "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
        },
        "web_url": {
          "type": "string",
          "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
        },
        "external_installation_id": {
          "type": "string",
          "format": "int64",
          "description": "Endor Labs GitHub app installation ID of this project.\nOptional and only available if the project is created through an\ninstallation."
        },
        "invalid_installation": {
          "type": "boolean",
          "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."
        }
      },
      "description": "Git repository project configuration.\n\nFields of this object might differ from the Git host.",
      "required": [
        "http_clone_url"
      ]
    },
    "v1GithubApp": {
      "type": "object",
      "properties": {
        "client_id": {
          "type": "string",
          "description": "The client ID of the GitHub app."
        },
        "client_secret": {
          "type": "string",
          "description": "The client secret of the GitHub app."
        },
        "webhook_secret": {
          "type": "string",
          "description": "The webhook secret of the GitHub app."
        },
        "pem": {
          "type": "string",
          "description": "The PEM file of the GitHub app. This is the private key of the GitHub app."
        },
        "html_url": {
          "type": "string",
          "description": "The HTML URL of the GitHub app."
        },
        "app_name": {
          "type": "string",
          "description": "The name of the GitHub app."
        }
      },
      "required": [
        "client_id",
        "client_secret",
        "pem",
        "html_url",
        "app_name"
      ]
    },
    "v1GithubToken": {
      "type": "object",
      "properties": {
        "spec": {
          "$ref": "#/definitions/v1GithubTokenSpec"
        }
      }
    },
    "v1GithubTokenSpec": {
      "type": "object",
      "properties": {
        "token": {
          "type": "string",
          "description": "The address fields of the tenant."
        }
      }
    },
    "v1GitlabPayload": {
      "type": "object",
      "properties": {
        "merge_request_payload": {
          "type": "object",
          "description": "merge_request_payload contains the raw GitLab merge request webhook\npayload as JSON. The originating MR number lives at\n\"object_attributes.iid\"."
        }
      },
      "description": "GitlabPayload carries SCM-specific webhook data for a GitLab-originated scan.\nMirrors GitHubPayload so downstream components (e.g., AI SAST baseline\nlookup) can recover the originating MR number on merge-to-main webhook\nevents where pull_request_id is intentionally blank."
    },
    "v1GolangToolChain": {
      "type": "object",
      "properties": {
        "version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        }
      },
      "required": [
        "version"
      ]
    },
    "v1GradleSpec": {
      "type": "object",
      "properties": {
        "property_key_name": {
          "type": "string",
          "description": "The key name for Gradle properties."
        },
        "property_key_value": {
          "type": "string",
          "description": "The key value for Gradle properties."
        },
        "mtls": {
          "$ref": "#/definitions/v1MTLSAuth",
          "description": "MTLS authentication for the Gradle package manager."
        }
      },
      "description": "GradleSpec represents properties that need to be set for Gradle projects."
    },
    "v1GroupAggregationValueResponse": {
      "type": "object",
      "properties": {
        "value": {
          "type": "number",
          "format": "float"
        }
      },
      "description": "GroupAggregationValueResponse returns the value of the aggregation if\nrequested."
    },
    "v1GroupResponse": {
      "type": "object",
      "properties": {
        "groups": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/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 } } }."
        }
      },
      "description": "Response to a list group request."
    },
    "v1Hash": {
      "type": "object",
      "properties": {
        "sha256": {
          "type": "string",
          "description": "Checksum value of package in hash 256 algorithm."
        },
        "sha512": {
          "type": "string",
          "description": "Checksum value of package in hash 512 algorithm."
        }
      },
      "description": "Sequence of characters that can help you verify data integrity."
    },
    "v1HttpHmacAuth": {
      "type": "object",
      "properties": {
        "secret": {
          "type": "string",
          "description": "The secret to use for the HMAC calculation."
        },
        "hdr_name": {
          "type": "string",
          "description": "The name of the header field that contains the signature."
        }
      },
      "description": "HMAC information."
    },
    "v1HttpParam": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string",
          "description": "The key for this pair."
        },
        "value": {
          "type": "string",
          "description": "The value."
        },
        "authz": {
          "type": "boolean",
          "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)"
        },
        "separator": {
          "type": "string",
          "description": "The separator to use between key and value. Default is \":\"."
        }
      },
      "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\"."
    },
    "v1HttpParamsProfile": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "title": "Name identifies this entry. For example, \"GitHub\""
        },
        "description": {
          "type": "string",
          "description": "Detailed description of the request. For example, \"GitHub credential validation\"."
        },
        "h_request": {
          "$ref": "#/definitions/v1HttpParamsRequest",
          "description": "Contains the fields required for the operation."
        },
        "http_request": {
          "$ref": "#/definitions/v1HttpParamsRequest"
        },
        "h_response": {
          "$ref": "#/definitions/v1HttpParamsResponse",
          "description": "Contains the fields we're expecting to receive in response to\nour request."
        },
        "http_response": {
          "$ref": "#/definitions/v1HttpParamsResponse"
        },
        "hmac_auth": {
          "$ref": "#/definitions/v1HttpHmacAuth"
        },
        "request_body": {
          "type": "string",
          "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."
        },
        "template_params": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/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\"}]}]"
        },
        "allowed_template_params": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/HttpParamsProfileAllowedTemplateParam"
          },
          "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}\"}]",
          "readOnly": true
        }
      },
      "description": "HttpParamsProfile defines the parameters to create an HTTP request."
    },
    "v1HttpParamsRequest": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": "The URI to use for this validation. For example, \"https://api.github.com/user\""
        },
        "method": {
          "type": "string",
          "description": "Method is either GET or POST."
        },
        "header": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1HttpParam"
          },
          "description": "The information to be put in the HTTP header."
        },
        "query": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1HttpParam"
          },
          "description": "The information to be put in the HTTP query section."
        },
        "body": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1HttpParam"
          },
          "description": "The information to be put in the HTTP body."
        },
        "method_name": {
          "type": "string",
          "description": "Gets appended to the URL as:\nURL[:method_name] usually followed by the query section."
        }
      },
      "description": "HttpParamsRequest contains the information expected with the HTTP request."
    },
    "v1HttpParamsResponse": {
      "type": "object",
      "properties": {
        "status_code": {
          "type": "string",
          "description": "The code expected on success. For example, 200."
        },
        "invalid_code_regex": {
          "type": "string",
          "description": "The pattern/regex expected on failure. For example, \"5\\\\d\\\\d\"."
        },
        "successful_auth_codes": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The codes expected for a successful authentication."
        },
        "failed_auth_codes": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The codes expected on the failed authentication."
        },
        "successful_response_data": {
          "type": "object",
          "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."
        },
        "successful_response_text": {
          "type": "string",
          "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."
        }
      },
      "description": "HttpParamsResponse contains the information expected with the HTTP response."
    },
    "v1HuggingFaceConfig": {
      "type": "object",
      "properties": {
        "host_url": {
          "type": "string",
          "title": "The HuggingFace organization URL.\nExample: \"https://huggingface.co/meta-llama\""
        },
        "access_token": {
          "type": "string",
          "description": "Optional HuggingFace API token used to authenticate requests for\nprivate models within the organization. When omitted, only publicly\naccessible models are discovered."
        },
        "avatar_url": {
          "type": "string",
          "description": "Avatar URL of the HuggingFace organization."
        }
      },
      "required": [
        "host_url"
      ]
    },
    "v1HuggingFaceModel": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID for the ingested HuggingFace model.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Models scanned per namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1HuggingFaceModelSpec",
          "description": "The specification of the model."
        }
      },
      "description": "HuggingFaceModel represents the JSON object from ingesting from the HuggingFace API.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1HuggingFaceModelSpec": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "ID of model (_id)."
        },
        "name": {
          "type": "string",
          "description": "Author and model name (id). For example, \"openai/clip-vit-base-patch16\"."
        },
        "model_id": {
          "type": "string",
          "description": "Author and model name (seems to hold the same value as the name field)."
        },
        "author": {
          "type": "string",
          "description": "Author of the model. For example, \"openai\"."
        },
        "sha": {
          "type": "string",
          "description": "Repository SHA at this particular revision."
        },
        "last_modified": {
          "type": "string",
          "format": "date-time",
          "description": "Date of last commit to the repository."
        },
        "private": {
          "type": "boolean",
          "description": "Whether the repository is private not."
        },
        "disabled": {
          "type": "boolean",
          "description": "Whether the repository is disabled or not."
        },
        "gated": {
          "$ref": "#/definitions/v1Gated",
          "description": "Whether the repository is gated or not. If so, whether there is manual or automatic approval."
        },
        "pipeline_tag": {
          "type": "string",
          "description": "Pipeline tag associated with the model."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of tags of the model."
        },
        "downloads": {
          "type": "integer",
          "format": "int32",
          "description": "Number of downloads of the model."
        },
        "library_name": {
          "type": "string",
          "description": "Library associated with the model."
        },
        "mask_token": {
          "type": "string",
          "description": "Mask token used by the model."
        },
        "widget_data": {
          "type": "array",
          "items": {
            "type": "object"
          },
          "description": "Widget data associated with the model."
        },
        "likes": {
          "type": "integer",
          "format": "int32",
          "description": "Number of likes of the model."
        },
        "model_index": {
          "type": "array",
          "items": {
            "type": "object"
          },
          "description": "Model index for evaluation."
        },
        "config": {
          "type": "object",
          "description": "Model configuration."
        },
        "card_data": {
          "type": "object",
          "description": "Model card metadata."
        },
        "transformers_info": {
          "type": "object",
          "description": "Transformers-specific information associated with the model."
        },
        "spaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of spaces using the model."
        },
        "siblings": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Sibling"
          },
          "description": "List of files that constitute the model."
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Date of creation of the repository on the Hub."
        },
        "safetensors": {
          "type": "object",
          "description": "Model's safetensors information."
        },
        "readme_content": {
          "type": "string",
          "description": "README.md file content."
        },
        "config_content": {
          "type": "string",
          "description": "config.json file content."
        },
        "authorization_required": {
          "type": "boolean",
          "description": "Requires authorized request to access the model."
        },
        "discussions": {
          "$ref": "#/definitions/v1Discussion",
          "description": "Discussion metadata."
        },
        "pull_requests": {
          "$ref": "#/definitions/v1Discussion",
          "description": "Pull request metadata."
        },
        "project_uuid": {
          "type": "string",
          "description": "The UUID of the project that this model relates to."
        },
        "readme_metadata": {
          "$ref": "#/definitions/v1ReadmeMetadata",
          "description": "README file metadata."
        },
        "organization_name": {
          "type": "string",
          "description": "Organization name for which this model belongs to."
        }
      },
      "required": [
        "project_uuid"
      ]
    },
    "v1HuggingFaceOrganization": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID for the HuggingFace organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Organizations scanned per namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1HuggingFaceOrganizationSpec",
          "description": "The specification of the organization."
        }
      },
      "description": "HuggingFaceOrganization represents a HuggingFace organization and its associated metadata.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1HuggingFaceOrganizationSpec": {
      "type": "object",
      "properties": {
        "organization_name": {
          "type": "string",
          "description": "Name of the HuggingFace organization."
        },
        "url": {
          "type": "string",
          "description": "URL of the HuggingFace organization page."
        },
        "model_names": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of models that belong to this organization."
        }
      }
    },
    "v1IOCStatus": {
      "type": "string",
      "enum": [
        "IOC_STATUS_UNSPECIFIED",
        "IOC_STATUS_MALICIOUS",
        "IOC_STATUS_BENIGN",
        "IOC_STATUS_UNKNOWN"
      ],
      "default": "IOC_STATUS_UNSPECIFIED",
      "description": "IOCStatus represents the confirmation status of an IoC."
    },
    "v1IOCType": {
      "type": "string",
      "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"
      ],
      "default": "IOC_TYPE_UNSPECIFIED",
      "description": "IOCType classifies the type of Indicator of Compromise."
    },
    "v1IPAddressPolicy": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the ip address policy.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace of the ip address policy."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1IPAddressPolicySpec",
          "description": "Resource kind specific data."
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagate indicates that the object should be visible in child namespaces.\nIt should be set to true for most use cases."
        }
      },
      "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.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1IPAddressPolicySpec": {
      "type": "object",
      "properties": {
        "allowed_ip_subnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of allowed IP subnets from where traffic should be\nallowed."
        }
      },
      "required": [
        "allowed_ip_subnets"
      ]
    },
    "v1IdentityProvider": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an identify provider.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "IdentityProviders are associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1IdentityProviderSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagate indicates that the object should be visible in child namespaces."
        }
      },
      "description": "Represents an identity provider.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1IdentityProviderSpec": {
      "type": "object",
      "properties": {
        "oidc_provider": {
          "$ref": "#/definitions/IdentityProviderOIDCProvider"
        },
        "saml_provider": {
          "$ref": "#/definitions/v1SAMLProvider"
        }
      }
    },
    "v1ImportedRuleSet": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the object.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for the object."
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Rule set is associated with a tenant and tenant information must be provided."
        },
        "spec": {
          "$ref": "#/definitions/v1ImportedRuleSetSpec"
        }
      },
      "description": "ImportedRuleSet represents a request to import a set of rules.",
      "required": [
        "meta"
      ]
    },
    "v1ImportedRuleSetSpec": {
      "type": "object",
      "properties": {
        "rule_type": {
          "$ref": "#/definitions/v1RuleType",
          "description": "The type of rules being imported."
        },
        "sha256_hash": {
          "type": "string",
          "description": "The SHA256 checksum if applicable (e.g, file).",
          "readOnly": true
        },
        "rule_source_type": {
          "$ref": "#/definitions/v1RuleSourceType",
          "description": "The source type of rules being imported."
        },
        "bytes": {
          "type": "string",
          "format": "byte",
          "description": "A file has been used as a source."
        },
        "version": {
          "type": "string",
          "description": "The version for this rule set. All rules in the set will be created with this version."
        },
        "result": {
          "$ref": "#/definitions/SpecImportedRuleSetResult"
        },
        "opengrep_validate": {
          "type": "boolean",
          "description": "Validate this import request with opengrep."
        }
      },
      "description": "The internal specification of the object.",
      "required": [
        "rule_type"
      ]
    },
    "v1ImportedSBOM": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "title": "The UUID of the SBOM",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for the object."
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "SBOM are associated with a tenant and tenant information must be provided."
        },
        "spec": {
          "$ref": "#/definitions/v1ImportedSBOMSpec"
        },
        "processing_status": {
          "$ref": "#/definitions/v1ProcessingStatus"
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "ImportedSBOM represents an SBOM that has been imported.",
      "required": [
        "meta",
        "context"
      ]
    },
    "v1ImportedSBOMSpec": {
      "type": "object",
      "properties": {
        "identifier": {
          "type": "string",
          "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
        },
        "kind": {
          "$ref": "#/definitions/v1SBOMKind"
        },
        "version": {
          "type": "integer",
          "format": "int32",
          "description": "The version of the imported SBOM.",
          "readOnly": true
        },
        "main_component_purl": {
          "type": "string",
          "description": "The PURL of the main component of a SBOM.",
          "readOnly": true
        },
        "supplier_name": {
          "type": "string",
          "description": "The suplier name of the imported SBOM.",
          "readOnly": true
        },
        "cyclone_dx": {
          "type": "string",
          "description": "CycloneDX is the cyclonedx bom struct serialized to a string."
        },
        "spdx": {
          "type": "string",
          "description": "SPDX is the spdx bom struct serialized to a string."
        },
        "cyclone_dx_bytes": {
          "type": "string",
          "format": "byte",
          "description": "CycloneDX bom struct encoded in zstd bytes."
        },
        "spdx_bytes": {
          "type": "string",
          "format": "byte",
          "description": "SPDX bom struct encoded in zstd bytes."
        }
      },
      "description": "The internal specification of the object.",
      "required": [
        "kind"
      ]
    },
    "v1IndexData": {
      "type": "object",
      "properties": {
        "tenant": {
          "type": "string",
          "readOnly": true
        },
        "data": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "readOnly": true
        },
        "will_be_deleted_at": {
          "type": "string",
          "format": "date-time",
          "description": "Time that the resource will be deleted.",
          "readOnly": true
        },
        "search_score": {
          "type": "number",
          "format": "float",
          "description": "search_score is the score of the resource for search. Internal use only.",
          "readOnly": true
        }
      },
      "description": "IndexData is used to index the resource for search. It's an internal\nobject.",
      "x-internal": true
    },
    "v1IngestedObject": {
      "type": "object",
      "properties": {
        "raw": {
          "type": "object",
          "description": "Generic representation of the object."
        },
        "ingestion_time": {
          "type": "string",
          "format": "date-time",
          "description": "Time the object was last ingested."
        },
        "status": {
          "$ref": "#/definitions/IngestedObjectIngestedObjectStatus",
          "description": "Current status of the ingested object."
        }
      },
      "description": "Raw ingested object from a 3rd party source,\nalong with any additional metadata we want\nto add to the object.",
      "required": [
        "raw",
        "ingestion_time",
        "status"
      ]
    },
    "v1IngestionState": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the ingestion state.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "IngestionState is associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1IngestionStateSpec"
        }
      },
      "description": "IngestionState represents the state of data ingestion for cross-cluster communication.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "v1IngestionStateSpec": {
      "type": "object",
      "properties": {
        "last_malware_ingestion_time": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp of the last successful malware ingestion (updated by malware ingestor)."
        },
        "last_vuln_ingestion_time": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp of the last successful vulnerability ingestion (updated by vuln ingestor)."
        }
      }
    },
    "v1Installation": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the installation.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespaces are associated with a tenant."
        },
        "spec": {
          "$ref": "#/definitions/v1InstallationSpec"
        },
        "processing_status": {
          "$ref": "#/definitions/v1ProcessingStatus"
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagate indicates that the object should be visible in child namespaces."
        }
      },
      "description": "Installation represents an installation request in the system.",
      "required": [
        "meta",
        "tenant_meta"
      ]
    },
    "v1InstallationSpec": {
      "type": "object",
      "properties": {
        "public": {
          "type": "boolean",
          "description": "Apply only to public repositories. Default value is false."
        },
        "external_id": {
          "type": "string",
          "description": "The external ID of the installation."
        },
        "external_name": {
          "type": "string",
          "description": "The external name of the installation.",
          "readOnly": true
        },
        "user": {
          "type": "string",
          "description": "The user name of the user that initiated the installation.\nRefers back to the GitHub user name.",
          "readOnly": true
        },
        "ingestion_time": {
          "type": "string",
          "format": "date-time",
          "description": "The last time that we ingested the installation data.",
          "readOnly": true
        },
        "target_type": {
          "type": "string",
          "description": "The target of the installation (Organization or User).",
          "readOnly": true
        },
        "suspended": {
          "type": "boolean",
          "description": "Indicates if the installation is suspended."
        },
        "project_uuids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of projects that are associated with this installation."
        },
        "login": {
          "type": "string",
          "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."
        },
        "invalid": {
          "type": "boolean",
          "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."
        },
        "ingestion_token": {
          "type": "string",
          "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
        },
        "enabled_features": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SpecEnabledFeatureType"
          },
          "title": "Enabled features. The valid values are \"git, github\""
        },
        "platform_source": {
          "$ref": "#/definitions/SpecPlatformSourceType",
          "description": "Deprecated: Use platform_type instead."
        },
        "platform_type": {
          "$ref": "#/definitions/v1PlatformSource",
          "description": "The platform type for the installation, which can be GitHub, GitLab,\nAzure, or Bitbucket."
        },
        "github_config": {
          "$ref": "#/definitions/v1GitHubConfig"
        },
        "azure_config": {
          "$ref": "#/definitions/v1AzureConfig"
        },
        "gitlab_config": {
          "$ref": "#/definitions/v1GitLabConfig"
        },
        "bitbucket_config": {
          "$ref": "#/definitions/v1BitBucketConfig"
        },
        "huggingface_config": {
          "$ref": "#/definitions/v1HuggingFaceConfig"
        },
        "marked_for_deletion": {
          "type": "boolean",
          "description": "Indicates the installation is marked for deletion,\nand in next sync call the installation with its related data will be\ndeleted.",
          "readOnly": true
        },
        "include_archived_repos": {
          "type": "boolean",
          "description": "include_archived_repos is a boolean value that indicates if the archived\nrepos should be included. Default will be off."
        },
        "installation_error_message": {
          "type": "string",
          "description": "Message explaining why the installation is invalid.\nThis field is populated when invalid is true."
        },
        "scm_app_uuid": {
          "type": "string",
          "description": "The UUID of the SCM app being installed."
        },
        "cleanup_stale_namespaces": {
          "type": "boolean",
          "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."
        },
        "exclude_project_regexes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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."
        }
      }
    },
    "v1InternalToolHook": {
      "type": "object",
      "properties": {
        "tool_name": {
          "type": "string",
          "description": "Name of the tool (e.g. \"Bash\", \"Glob\", \"AskUserQuestion\", \"Skill\")."
        },
        "tool_input": {
          "type": "object",
          "description": "Tool invocation input; structure is tool-specific (use Struct for JSON)."
        },
        "tool_response": {
          "type": "object",
          "description": "Tool result; structure is tool-specific (e.g. stdout/stderr or filenames)."
        }
      },
      "description": "InternalToolHook contains payload for internal tool-related hooks."
    },
    "v1InventoryAdminClassification": {
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/definitions/InventoryAdminClassificationAdminLevel",
          "description": "Current admin classification value."
        },
        "evidence": {
          "$ref": "#/definitions/v1InventoryClassificationEvidence",
          "description": "Evidence describing the policy that assigned the current value."
        }
      },
      "description": "InventoryAdminClassification carries the allow/block axis plus evidence.\nWithin a single event, when multiple matching policies disagree, the\nstronger value wins (BLOCKED dominates ALLOWED dominates UNSPECIFIED).\nAcross events, the current policy set is authoritative: a later event\nthat no longer matches any classification policy leaves the field\nuntouched, but a later event matching a different policy reclassifies\nthe record accordingly."
    },
    "v1InventoryClassification": {
      "type": "string",
      "enum": [
        "INVENTORY_CLASSIFICATION_UNSPECIFIED",
        "INVENTORY_CLASSIFICATION_ALLOW",
        "INVENTORY_CLASSIFICATION_BLOCK",
        "INVENTORY_CLASSIFICATION_SUSPICIOUS",
        "INVENTORY_CLASSIFICATION_MALICIOUS"
      ],
      "default": "INVENTORY_CLASSIFICATION_UNSPECIFIED",
      "description": "InventoryClassification declares the classification a policy assigns to a\nmatched MCP server or skill when it fires. UNSPECIFIED means the policy\nplays no role in inventory classification (e.g. a session, file-access,\nor cmd-line policy, or an MCP/skill policy whose author only wants the\nper-event action)."
    },
    "v1InventoryClassificationEvidence": {
      "type": "object",
      "properties": {
        "policy_name": {
          "type": "string",
          "description": "Policy name at the time of match (snapshot — not refreshed later)."
        }
      },
      "description": "InventoryClassificationEvidence records the policy that assigned the\ncurrent value on a single classification axis. Snapshotted from the\nmatching AgentHookPolicy so the inventory record remains self-describing\nafter the policy is renamed or deleted."
    },
    "v1InventoryThreatClassification": {
      "type": "object",
      "properties": {
        "value": {
          "$ref": "#/definitions/InventoryThreatClassificationThreatLevel",
          "description": "Current threat classification value."
        },
        "evidence": {
          "$ref": "#/definitions/v1InventoryClassificationEvidence",
          "description": "Evidence describing the policy that assigned the current value."
        }
      },
      "description": "InventoryThreatClassification carries the suspicious/malicious axis plus\nevidence. Within a single event, when multiple matching policies disagree,\nthe stronger value wins (MALICIOUS dominates SUSPICIOUS dominates\nUNSPECIFIED). Across events, the current policy set is authoritative:\nsee InventoryAdminClassification for the full semantics."
    },
    "v1InventoryType": {
      "type": "string",
      "enum": [
        "INVENTORY_TYPE_UNSPECIFIED",
        "INVENTORY_TYPE_AGENT",
        "INVENTORY_TYPE_MODEL",
        "INVENTORY_TYPE_MCP_SERVER",
        "INVENTORY_TYPE_SKILL",
        "INVENTORY_TYPE_AI_TOOL"
      ],
      "default": "INVENTORY_TYPE_UNSPECIFIED",
      "description": "InventoryType discriminates agent, model, MCP server, skill, and AI tool inventory in the unified collection."
    },
    "v1Invitation": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the invitation.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Invitations can be issued per namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1InvitationSpec"
        }
      },
      "description": "Invitation represents an invitation for a new user in the system.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1InvitationSpec": {
      "type": "object",
      "properties": {
        "user_email": {
          "type": "string",
          "description": "The email of the user that we want to invite to the tenant."
        },
        "invitation_state": {
          "$ref": "#/definitions/SpecInvitationState",
          "readOnly": true
        }
      },
      "required": [
        "user_email"
      ]
    },
    "v1JIRAConfig": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "description": "The Jira endpoint."
        },
        "user_name": {
          "type": "string",
          "description": "The user name to authenticate with Jira."
        },
        "api_key": {
          "type": "string",
          "description": "The API Key to authenticate with Jira."
        },
        "project_key": {
          "type": "string",
          "description": "The project key in which the Jira issue is raised as an action for the notification."
        },
        "issue_type": {
          "$ref": "#/definitions/JIRAConfigJiraIssueType",
          "description": "The issue Type to raise in Jira."
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The labels to apply to the Jira issue."
        },
        "jira_issue_type": {
          "type": "string"
        },
        "custom_fields": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/JIRAConfigCustomField"
          },
          "title": "user defined custom fields"
        },
        "resolve_state": {
          "type": "string",
          "description": "The final ticket status after resolving."
        },
        "use_bearer_token": {
          "type": "boolean",
          "description": "Denotes if we should use bearer token to authenticate with Jira."
        },
        "bearer_token": {
          "type": "string",
          "description": "The bearer token to authenticate with Jira."
        },
        "components": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The Components field in Jira board."
        },
        "cloud_id": {
          "type": "string",
          "description": "The Jira Cloud ID required to route API requests through the Atlassian API gateway.",
          "readOnly": true
        },
        "jira_child_issue_type": {
          "type": "string",
          "description": "Child issue type used for dependency aggregation. Optional.\nDefaults to the project's sub-task type when unset."
        }
      },
      "required": [
        "url",
        "project_key",
        "labels"
      ]
    },
    "v1JVMClassMetadata": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the jvm class metadata.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "JVMClassMetadata are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects.\nmeta.name is the class file sha , either original sha or remapped sha.\nParent kind is empty for JVMClassMetadata."
        },
        "spec": {
          "$ref": "#/definitions/v1JVMClassMetadataSpec"
        }
      },
      "description": "JVMClassMetadata contains metadata such as file sha, name, gav of oss library for a jvm class file.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1JVMClassMetadataSpec": {
      "type": "object",
      "properties": {
        "file_name": {
          "type": "string",
          "description": "Name of java class file.\nThis would be the fully qualified class name, such as org.slf4j.ILoggerFactory."
        },
        "gav": {
          "type": "string",
          "description": "Open source library that contains this class file, in endor ecosystem name format.\neg for org.slf4j.ILoggerFactory, this value would be mvn://org.slf4j:slf4j-api@1.7."
        },
        "is_original_sha": {
          "type": "boolean",
          "description": "True indicates if the class file sha value is the original class's sha value.\nFalse indicates the sha value would be for a class that is remapped, i.e namespace wiped off."
        },
        "last_modified_time": {
          "type": "string",
          "format": "date-time",
          "description": "time when artifact was published."
        },
        "is_rebundled": {
          "type": "boolean",
          "description": "True indicates if the class file is a dependency class file which has been rebundled within this package."
        }
      },
      "required": [
        "file_name",
        "gav",
        "is_original_sha"
      ]
    },
    "v1JVMSourceMeta": {
      "type": "object",
      "properties": {
        "classes": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Class"
          },
          "description": "List of classes in the Java package."
        },
        "import_statements": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of external classes referenced in the Java package."
        }
      },
      "description": "Contains metadata information about source code for a Java package."
    },
    "v1JavaScriptToolChain": {
      "type": "object",
      "properties": {
        "nodejs_version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        },
        "yarn_version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        },
        "pnpm_version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        },
        "npm_packages": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1ToolChainVersion"
          }
        },
        "rush_version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        }
      },
      "required": [
        "nodejs_version"
      ]
    },
    "v1JavaToolChain": {
      "type": "object",
      "properties": {
        "version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        },
        "maven_version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        },
        "gradle_version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        }
      },
      "required": [
        "version"
      ]
    },
    "v1JobSpec": {
      "type": "object",
      "properties": {
        "state": {
          "$ref": "#/definitions/SpecJobState",
          "description": "Defines the current job status."
        },
        "type": {
          "$ref": "#/definitions/SpecJobType",
          "description": "Job type so that the job can matched to its handler."
        },
        "source_uuid": {
          "type": "string",
          "description": "UUID passed back to the client for which the job is being performed."
        },
        "request": {
          "$ref": "#/definitions/googleprotobufAny",
          "description": "Request data to be executed by the service."
        },
        "response": {
          "$ref": "#/definitions/JobSpecJobResponse",
          "description": "Response data returned by the job."
        },
        "start_time": {
          "type": "string",
          "format": "date-time",
          "description": "Start time of the job denotes the time when the job is scheduled for execution."
        },
        "end_time": {
          "type": "string",
          "format": "date-time",
          "description": "End time of the job denotes the time when the job execution is completed."
        },
        "last_heartbeat_time": {
          "type": "string",
          "format": "date-time",
          "description": "Last Heartbeat time of the job."
        },
        "max_duration": {
          "type": "string",
          "description": "Maximum duration of the job. Defaults to 5 minutes."
        },
        "priority": {
          "$ref": "#/definitions/SpecJobPriority",
          "description": "Priority of the job."
        },
        "max_retries": {
          "type": "integer",
          "format": "int64",
          "description": "Maximum number of retries for the job. Defaults to 1. Maximum allowed is 5."
        },
        "retention_time": {
          "type": "integer",
          "format": "int64",
          "description": "Retention time of the job. Defaults to 30 days.\nCannot exceed 1095 days."
        },
        "run_count": {
          "type": "integer",
          "format": "int64",
          "description": "run count of the job."
        },
        "run_errors_history": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "run errors history of the job. This is maintained\nfor debugging purposes."
        },
        "category": {
          "$ref": "#/definitions/SpecJobCategory",
          "description": "Category of the job."
        }
      },
      "required": [
        "state",
        "type",
        "request",
        "category"
      ]
    },
    "v1LLMContext": {
      "type": "object",
      "properties": {
        "structured_content": {
          "$ref": "#/definitions/LLMContextStructuredContent",
          "description": "The structured content of the LLM context."
        },
        "unstructured_content": {
          "type": "string",
          "description": "The unstructured content of the LLM context."
        }
      }
    },
    "v1Language": {
      "type": "string",
      "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"
      ],
      "default": "LANGUAGE_UNSPECIFIED"
    },
    "v1Languages": {
      "type": "object",
      "properties": {
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "The languages used and bytes of code for each language in the source control repository.",
      "required": [
        "ingested_object"
      ]
    },
    "v1LicenseData": {
      "type": "object",
      "properties": {
        "all_licenses": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LicenseInfo"
          },
          "description": "All the licenses found by Endor Labs."
        },
        "repository_license": {
          "$ref": "#/definitions/v1LicenseInfo",
          "description": "The license of the repository from the SCM system."
        },
        "code_licenses": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LicenseInfo"
          },
          "description": "The licenses found in the source code."
        },
        "package_manager_licenses": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LicenseInfo"
          },
          "description": "The licenses from the package manager."
        },
        "copyrights": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of copyright notices found in source files."
        }
      },
      "description": "Contains a summary of license information for a project or package.\nThis will be included as the payload of a metric object."
    },
    "v1LicenseDependency": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the license dependency.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The tenant metadata of the license dependency."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "The metadata of the license dependency."
        },
        "spec": {
          "$ref": "#/definitions/v1LicenseDependencySpec",
          "description": "The specification of the license dependency."
        }
      },
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1LicenseDependencyMetadata": {
      "type": "object",
      "properties": {
        "spdx_id": {
          "type": "string",
          "description": "SPDX license identifier (e.g. \"Apache-2.0\")."
        },
        "category": {
          "type": "string",
          "description": "License category (e.g. \"Restricted\")."
        },
        "type": {
          "type": "string",
          "description": "License classification (based on licenseclassifier by Google)."
        }
      },
      "description": "LicenseDependencyMetadata contains license information for a dependency."
    },
    "v1LicenseDependencySpec": {
      "type": "object",
      "properties": {
        "spdx_id": {
          "type": "string",
          "description": "SPDX ID of the license."
        },
        "declared": {
          "type": "boolean",
          "description": "Whether we classify the license as declared."
        },
        "license_name": {
          "type": "string",
          "description": "Full name of the license."
        },
        "osi_approved": {
          "type": "boolean",
          "description": "Indicates if the license is OSI approved."
        },
        "category": {
          "type": "string",
          "description": "License category."
        },
        "package_version_uuids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Package versions of dependencies with the license."
        }
      },
      "required": [
        "spdx_id"
      ]
    },
    "v1LicenseFileLocation": {
      "type": "object",
      "properties": {
        "relative_path": {
          "type": "string",
          "description": "The relative path to the file where the license/copyright/notice was found."
        },
        "start_line": {
          "type": "integer",
          "format": "int32",
          "description": "The start line of the license/copyright/notice in the file."
        },
        "end_line": {
          "type": "integer",
          "format": "int32",
          "description": "The end line of the license/copyright/notice in the file."
        },
        "start_byte": {
          "type": "integer",
          "format": "int32",
          "description": "The start byte of the license/copyright/notice in the file."
        },
        "end_byte": {
          "type": "integer",
          "format": "int32",
          "description": "The end byte of the license/copyright/notice in the file."
        }
      },
      "description": "LicenseFileLocation represents the location of a license, copyright, or notice in source files."
    },
    "v1LicenseInfo": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Raw license description as found, for example in package managers.\nIt is free form text that may not contain a valid SPDX ID."
        },
        "spdxid": {
          "type": "string",
          "description": "Normalized SPDX id if known."
        },
        "mapping_info": {
          "$ref": "#/definitions/v1LicenseMappingInfo",
          "description": "Additional context about the raw license description."
        },
        "type": {
          "type": "string",
          "description": "License classification (based on licenseclassifier by Google)."
        },
        "url": {
          "type": "string",
          "description": "The URL that points to the license description."
        },
        "file": {
          "type": "string",
          "description": "The name of the file where the license was found."
        },
        "file_location": {
          "type": "integer",
          "format": "int32",
          "description": "The line in the file where the license text begins."
        },
        "matched_text": {
          "type": "string",
          "description": "The license text that was matched."
        }
      },
      "description": "LicenseInfo contains information for a license.",
      "required": [
        "name"
      ]
    },
    "v1LicenseMappingInfo": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "v1LicenseNoticesReport": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the license notices report.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Tenant metadata."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1LicenseNoticesReportSpec",
          "description": "The specification of the license notices report."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "The context of the license notices report."
        }
      },
      "required": [
        "tenant_meta",
        "meta",
        "spec",
        "context"
      ]
    },
    "v1LicenseNoticesReportSpec": {
      "type": "object",
      "properties": {
        "package_license_edit_uuid": {
          "type": "string",
          "description": "Deprecated: not used by current implementations; kept for wire compatibility.",
          "readOnly": true
        },
        "grouping": {
          "$ref": "#/definitions/LicenseNoticesReportSpecGrouping",
          "description": "The grouping of the license notices report."
        },
        "report_type": {
          "$ref": "#/definitions/LicenseNoticesReportSpecReportType",
          "description": "The report type of the license notices report."
        },
        "contents": {
          "type": "string",
          "format": "byte",
          "description": "The contents of the license notices report."
        },
        "package_version_uuid": {
          "type": "string",
          "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."
        }
      },
      "required": [
        "grouping",
        "report_type",
        "package_version_uuid"
      ]
    },
    "v1LicenseSource": {
      "type": "string",
      "enum": [
        "LICENSE_SOURCE_UNSPECIFIED",
        "LICENSE_SOURCE_PKG_MGR_ONLY",
        "LICENSE_SOURCE_PKG_MGR_AND_CODE",
        "LICENSE_SOURCE_CODE_ONLY",
        "LICENSE_SOURCE_NOT_FOUND"
      ],
      "default": "LICENSE_SOURCE_UNSPECIFIED",
      "description": "Enum to describe the source of  license information.\n\n - LICENSE_SOURCE_UNSPECIFIED: Licesne Source unspecified\n - LICENSE_SOURCE_PKG_MGR_ONLY: License was found only in the package manager metadata,\nbut not in the source code. This may happen if source code is unavailable\nor scanning failed. In this case, spec.license_data contains only package manager license(s).\n - LICENSE_SOURCE_PKG_MGR_AND_CODE: License was found in both the code and the package manager.\nspec.license_data contains all licenses, and the Metric includes the package manager license.\n - LICENSE_SOURCE_CODE_ONLY: License was found only in the code , not in the package manager.\nspec.license_data will not include any package manager license.\n - LICENSE_SOURCE_NOT_FOUND: No license data found anywhere"
    },
    "v1LicenseSpec": {
      "type": "object",
      "properties": {
        "license_id": {
          "type": "string",
          "x-endor-name": "License Identifier"
        },
        "license_name": {
          "type": "string",
          "x-endor-name": "License Name"
        },
        "license_text": {
          "type": "string",
          "x-endor-name": "License Text"
        },
        "is_deprecated": {
          "type": "boolean"
        },
        "is_osi_approved": {
          "type": "boolean"
        },
        "additional_info": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Links to additional information."
        },
        "category": {
          "type": "string"
        },
        "short_name": {
          "type": "string"
        }
      },
      "description": "Specification mostly follows the SPDX data format.",
      "required": [
        "license_id",
        "license_name",
        "license_text"
      ]
    },
    "v1LicenseSummary": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the license summary.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The tenant metadata of the license summary."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "The metadata of the license summary."
        },
        "spec": {
          "$ref": "#/definitions/v1LicenseSummarySpec",
          "description": "The specification of the license summary."
        }
      },
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1LicenseSummarySpec": {
      "type": "object",
      "properties": {
        "spdx_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The SPDX IDs per license associated with the project.\nThis includes declared and discovered licenses."
        },
        "declared_spdx_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The declared SPDX IDs per license associated with the project."
        },
        "singular_spdx_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The singular SPDX IDs of all licenses associated with the project."
        },
        "copyright_count": {
          "type": "integer",
          "format": "int32",
          "description": "The number of copyrights found in the project dependencies."
        },
        "notices_count": {
          "type": "integer",
          "format": "int32",
          "description": "The number of notice files found in the project dependencies."
        }
      }
    },
    "v1LinterCorrectnessAnalysis": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string",
          "description": "The version of the linter correctness analysis."
        },
        "analyzer": {
          "$ref": "#/definitions/v1CorrectnessAnalyzer",
          "description": "The analyzer of the linter correctness analysis."
        },
        "description": {
          "type": "string",
          "description": "The textual description of the linter correctness analysis."
        },
        "correctness": {
          "$ref": "#/definitions/v1Correctness",
          "description": "The correctness assessment of the linter correctness analysis."
        },
        "confidence_level": {
          "$ref": "#/definitions/v1AIMetaConfidenceLevel",
          "description": "The confidence level of the linter correctness analysis."
        },
        "sanitizers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The sanitizers used to determine the correctness of the linter result."
        },
        "code_fixes": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/LinterCorrectnessAnalysisCodeFix"
          },
          "description": "Code fixes are potential fixes to the identified issue."
        },
        "analysis_summary": {
          "type": "string",
          "description": "Analysis summary, providing an explanation of the linter result and classification."
        },
        "security_impact": {
          "type": "string",
          "description": "Description of the security impact/potential consequences for the linter result."
        },
        "technical_detail": {
          "type": "string",
          "description": "Further technical details (eg results about the vulnerability type and exploitation potential) for the linter result."
        },
        "data_flow": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/LinterCorrectnessAnalysisDataFlowNode"
          },
          "description": "Textual Description of the source to sink data flow analysis for the linter result."
        },
        "risk_assessment": {
          "type": "string",
          "description": "Risk assessment for the linter result. Provides False/True positive classifaction and reasoning for the linter result.."
        },
        "security_control": {
          "type": "string",
          "description": "Description of any sanitizers, validators, or mitigations found (or lack thereof) for the linter result."
        },
        "code_references": {
          "type": "string",
          "description": "Textual description of line references/ fields/variables , etc for the linter result."
        },
        "symbols": {
          "type": "string",
          "description": "Key variables/symbols in the data flow path for the linter result."
        }
      },
      "description": "LinterCorrectnessAnalysis represents an analysis of a linter result.",
      "required": [
        "version",
        "analyzer",
        "correctness",
        "confidence_level"
      ]
    },
    "v1LinterResult": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a linter result.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Linter results are associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Meta identifies the object."
        },
        "spec": {
          "$ref": "#/definitions/v1LinterResultSpec"
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Context for the repository version will be automatically updated\nto that of the version, unless it is a CI run."
        }
      },
      "description": "The meta parent_kind can take one of two values - PackageVersion or RepositoryVersion.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "v1LinterResultInfo": {
      "type": "object",
      "properties": {
        "rule_id": {
          "type": "string",
          "description": "The rule that generated the result."
        },
        "file": {
          "type": "string",
          "description": "The file where the result was found."
        },
        "line": {
          "type": "integer",
          "format": "int32",
          "description": "The line in the file where the result was found."
        },
        "match": {
          "type": "string",
          "description": "The text that matched."
        },
        "severity": {
          "type": "string",
          "description": "The severity of the result."
        },
        "confidence": {
          "type": "string",
          "description": "The confidence of the result."
        },
        "likelihood": {
          "type": "string",
          "description": "The likelihood of the result."
        },
        "category": {
          "type": "string",
          "description": "The category of the result."
        },
        "critical_api_category": {
          "type": "string",
          "description": "The critical API category of the result."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The tags of the result."
        },
        "snippet": {
          "type": "string",
          "description": "The source code that triggered the result."
        }
      },
      "description": "A brief summary of linter results."
    },
    "v1LinterResultSpec": {
      "type": "object",
      "properties": {
        "project_uuid": {
          "type": "string",
          "description": "The UUID of the project to which this result is related.",
          "x-endor-name": "Impacted Project UUID"
        },
        "origin": {
          "$ref": "#/definitions/SpecLinterResultOrigin",
          "description": "The origin of the result."
        },
        "version": {
          "type": "string"
        },
        "sarif_result": {
          "$ref": "#/definitions/v1SarifResult"
        },
        "ai_result": {
          "$ref": "#/definitions/v1AIResult"
        },
        "level": {
          "$ref": "#/definitions/SpecLinterResultLevel",
          "description": "The level of the result.",
          "x-endor-name": "Severity Level"
        },
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "The result ecosystem."
        },
        "extra_key": {
          "type": "string",
          "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."
        },
        "semgrep": {
          "$ref": "#/definitions/v1SemgrepSummary"
        },
        "secret": {
          "$ref": "#/definitions/v1SecretSummary"
        },
        "aisast": {
          "$ref": "#/definitions/v1AISastSummary"
        },
        "fingerprints": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list and count of found fingerprints. The counter is maintained\nto ease the retrieval of these records in the analytics phase."
        },
        "fingerprint_count": {
          "type": "integer",
          "format": "int64"
        },
        "distribution_format": {
          "$ref": "#/definitions/v1DistributionFormatType",
          "description": "The distribution format of the package."
        },
        "ref": {
          "type": "string",
          "description": "The Git reference of the repository version."
        },
        "storage_location": {
          "type": "string",
          "description": "The storage location of the package related to this linter result."
        },
        "suppressed": {
          "type": "boolean",
          "description": "Result was suppressed by semgrep (e.g. because of a \"nosemgrep\" code annotation)."
        },
        "linter_correctness_analyses": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LinterCorrectnessAnalysis"
          },
          "description": "An analysis of the linter result."
        },
        "endor_fingerprint": {
          "$ref": "#/definitions/SpecEndorFingerprint"
        }
      },
      "required": [
        "project_uuid",
        "origin",
        "level",
        "extra_key"
      ]
    },
    "v1LinterStats": {
      "type": "object",
      "properties": {
        "result_count": {
          "type": "integer",
          "format": "int32",
          "description": "The number of linter results."
        },
        "files_with_result_count": {
          "type": "integer",
          "format": "int32",
          "description": "The number of files with results."
        },
        "distinct_rules_with_results": {
          "type": "integer",
          "format": "int32",
          "description": "The count of distint rules with results."
        },
        "distinct_file_types_with_results": {
          "type": "integer",
          "format": "int32",
          "description": "The count of distinct file types with results."
        },
        "results_per_filecnt_ratio_by_severity": {
          "type": "object",
          "additionalProperties": {
            "type": "number",
            "format": "float"
          },
          "description": "The ratio of result count/file count per severity level."
        },
        "results_per_loc_ratio_by_severity": {
          "type": "object",
          "additionalProperties": {
            "type": "number",
            "format": "float"
          },
          "description": "The ratio of result count/LOC per severity level."
        },
        "results_per_filecnt_ratio_by_file_type": {
          "type": "object",
          "additionalProperties": {
            "type": "number",
            "format": "float"
          },
          "description": "The ratio of result count/file count per file type."
        },
        "results_per_loc_ratio_by_file_type": {
          "type": "object",
          "additionalProperties": {
            "type": "number",
            "format": "float"
          },
          "description": "The ratio of result count/LOC per severity per file type."
        },
        "results_cnt_by_severity": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The breakdown of result count per severity level."
        },
        "results_cnt_by_rule": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The breakdown of result count per rule."
        },
        "results_cnt_by_file_type": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The breakdown of result count per file type."
        },
        "results_cnt_by_category": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The breakdown of result count per category."
        },
        "file_cnt_by_severity": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The breakdown of distinct file count per severity level."
        },
        "file_cnt_by_rule": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The breakdown of distinct file count per rule."
        },
        "file_cnt_by_file_type": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The breakdown of distinct file count per file type."
        },
        "file_cnt_by_category": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The breakdown of distinct file count per category."
        },
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LinterResultInfo"
          },
          "description": "A list of all the linter results."
        },
        "results_cnt_by_critical_api_category": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The breakdown of result count per critical API category."
        },
        "file_cnt_by_critical_api_category": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The breakdown of distinct file count per critical API category."
        },
        "finding_results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LinterResultInfo"
          },
          "description": "A list of the results that are marked with ANALYTICS_FINDING, which results\nin raising findings."
        }
      },
      "description": "The linter statistics message. Included as the payload of a metric object."
    },
    "v1ListAICreditMetricsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAICreditMetricsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list AICreditMetric.",
      "x-internal": true
    },
    "v1ListAICreditMetricsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AICreditMetric"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListAIRequestsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAIRequestsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list AIRequests.",
      "x-internal": true
    },
    "v1ListAIRequestsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AIRequest"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListAISASTScanCachesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAISASTScanCachesResponseList",
          "description": "List of scan cache entries."
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse",
          "description": "Count response."
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse",
          "description": "Group response."
        }
      },
      "description": "Response returned for requests to list AI SAST scan cache entries.",
      "x-internal": true
    },
    "v1ListAISASTScanCachesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AISASTScanCache"
          },
          "description": "Scan cache entries matching the query."
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse",
          "description": "List response metadata."
        }
      },
      "description": "List of scan cache entries."
    },
    "v1ListAISastContextSummariesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAISastContextSummariesResponseList",
          "description": "Standard list payload."
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse",
          "description": "Standard count payload."
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse",
          "description": "Standard group payload."
        }
      },
      "description": "List response for AI SAST context summaries.",
      "x-internal": true
    },
    "v1ListAISastContextSummariesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AISastContextSummary"
          },
          "description": "Context summaries matching the query."
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse",
          "description": "List response metadata."
        }
      },
      "description": "List payload."
    },
    "v1ListAISastCustomerContextsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAISastCustomerContextsResponseList",
          "description": "Standard list payload."
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse",
          "description": "Standard count payload."
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse",
          "description": "Standard group payload."
        }
      },
      "description": "List response for AI SAST customer contexts."
    },
    "v1ListAISastCustomerContextsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AISastCustomerContext"
          },
          "description": "Customer contexts matching the query."
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse",
          "description": "List response metadata."
        }
      },
      "description": "List payload."
    },
    "v1ListAPIKeysResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAPIKeysResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list API keys."
    },
    "v1ListAPIKeysResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1APIKey"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListAgentActivityResponse": {
      "type": "object",
      "properties": {
        "schema_version": {
          "type": "string",
          "description": "Schema version of this response envelope. Additive AgentActivity fields do\nnot bump it; protobuf unknown-field preservation handles forward-compat."
        },
        "window_days": {
          "type": "integer",
          "format": "int32",
          "description": "The look-back window the counts cover."
        },
        "generated_at": {
          "type": "string",
          "format": "date-time",
          "description": "When the backend assembled this snapshot."
        },
        "stale": {
          "type": "boolean",
          "description": "True when served from a degraded/stale snapshot."
        },
        "agents": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AgentActivity"
          },
          "description": "One entry per agent that has activity in the window. Empty is valid."
        }
      },
      "description": "ListAgentActivityResponse is served at\nGET /v1/namespaces/{tenant_meta.namespace}/agent-telemetry/activity."
    },
    "v1ListAgentCallsResponse": {
      "type": "object",
      "properties": {
        "schema_version": {
          "type": "string",
          "description": "Schema version of this response envelope."
        },
        "agent_id": {
          "type": "string",
          "description": "Echo of the requested agent id."
        },
        "agent_identity": {
          "type": "string",
          "description": "The agent's {name}@{version} identity; unset for an unregistered agent."
        },
        "next_page_token": {
          "type": "string",
          "description": "Opaque keyset cursor; empty when there are no more pages."
        },
        "calls": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AgentCall"
          },
          "description": "The calls, newest first."
        }
      },
      "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."
    },
    "v1ListAgentConfigsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAgentConfigsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list CI runs."
    },
    "v1ListAgentConfigsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AgentConfig"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListAgentHookEventsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAgentHookEventsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list agent hook events."
    },
    "v1ListAgentHookEventsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AgentHookEvent"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListAgentHookPolicyDefinitionsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAgentHookPolicyDefinitionsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list agent hook policy definitions."
    },
    "v1ListAgentHookPolicyDefinitionsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AgentHookPolicyDefinition"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListAgentSessionsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAgentSessionsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list CI runs."
    },
    "v1ListAgentSessionsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AgentSession"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListAgentToolsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAgentToolsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request for AgentTools. .",
      "x-internal": true
    },
    "v1ListAgentToolsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AgentTool"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListAgentWorkflowsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAgentWorkflowsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list AgentWorkflows.",
      "x-internal": true
    },
    "v1ListAgentWorkflowsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AgentWorkflow"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListAgenticAggregateResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAgenticAggregateResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "ListAgenticAggregateResponse wraps the result of a list operation."
    },
    "v1ListAgenticAggregateResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AgenticAggregate"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListAgenticInventoryResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAgenticInventoryResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to list agentic inventory records."
    },
    "v1ListAgenticInventoryResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AgenticInventory"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListAnalyticsExecutionRecordResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAnalyticsExecutionRecordResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list analytics execution records."
    },
    "v1ListAnalyticsExecutionRecordResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AnalyticsExecutionRecord"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListApproveServiceRequestsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListApproveServiceRequestsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Respponse to request to return all the approval requests for a given namespace.",
      "x-internal": true
    },
    "v1ListApproveServiceRequestsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ApproveServiceRequest"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListArtifactLogsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListArtifactLogsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list artifact logs."
    },
    "v1ListArtifactLogsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ArtifactLog"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListArtifactSignaturesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListArtifactSignaturesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list all artifact signatures."
    },
    "v1ListArtifactSignaturesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ArtifactSignature"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListAssuredPackageVersionsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAssuredPackageVersionsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response for the request to list assured package versions."
    },
    "v1ListAssuredPackageVersionsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AssuredPackageVersion"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListAuditLogsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAuditLogsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to request to list audit logs."
    },
    "v1ListAuditLogsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AuditLog"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListAuthenticationLogsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAuthenticationLogsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list authentication logs."
    },
    "v1ListAuthenticationLogsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AuthenticationLog"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListAuthorizationPoliciesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListAuthorizationPoliciesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list all authorization policies for a given\ntenant."
    },
    "v1ListAuthorizationPoliciesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1AuthorizationPolicy"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListCIRunsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListCIRunsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list CI runs."
    },
    "v1ListCIRunsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1CIRun"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListCallGraphDataResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListCallGraphDataResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list call graph data."
    },
    "v1ListCallGraphDataResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1CallGraphData"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListCodeOwnersResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListCodeOwnersResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list CodeOwners objects."
    },
    "v1ListCodeOwnersResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1CodeOwners"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListContributorHistoryResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListContributorHistoryResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list contributor history."
    },
    "v1ListContributorHistoryResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ContributorHistory"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListContributorIdentityMappingsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListContributorIdentityMappingsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list contributor identity mappings."
    },
    "v1ListContributorIdentityMappingsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ContributorIdentityMapping"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListContributorsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListContributorsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list contributors."
    },
    "v1ListContributorsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Contributor"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListDashboardConfigResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListDashboardConfigResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list dashboard configuration objects."
    },
    "v1ListDashboardConfigResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1DashboardConfig"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListDemosResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListDemosResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list namespaces."
    },
    "v1ListDemosResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Demo"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListDependencyMetadataResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListDependencyMetadataResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list dependency metadata objects."
    },
    "v1ListDependencyMetadataResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1DependencyMetadata"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListDepsDevPackageResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListDepsDevPackageResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list DepsDevPackage objects."
    },
    "v1ListDepsDevPackageResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1DepsDevPackage"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListDistinctEntryResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListDistinctEntryResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "ListDistinctEntryResponse lists DistinctEntry records."
    },
    "v1ListDistinctEntryResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1DistinctEntry"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListEndorAgentsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListEndorAgentsResponseList",
          "description": "The agents."
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse",
          "description": "Count response."
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse",
          "description": "Group response."
        }
      },
      "description": "ListEndorAgentsResponse is served at GET /v1/namespaces/{namespace}/agents."
    },
    "v1ListEndorAgentsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1EndorAgent"
          },
          "description": "The agents."
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse",
          "description": "List response metadata."
        }
      },
      "description": "List of agents."
    },
    "v1ListEndorIgnoreEntriesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListEndorIgnoreEntriesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list EndorIgnoreEntry objects."
    },
    "v1ListEndorIgnoreEntriesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1EndorIgnoreEntry"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListEndorLicensesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListEndorLicensesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list Endor Labs licenses.",
      "x-internal": true
    },
    "v1ListEndorLicensesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1EndorLicense"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListErrorParsingRulesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListErrorParsingRulesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list error parsing rules.",
      "x-internal": true
    },
    "v1ListErrorParsingRulesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ErrorParsingRule"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListEvaluationMethodsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListEvaluationMethodsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list all evaluation methods."
    },
    "v1ListEvaluationMethodsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1EvaluationMethod"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListEvaluationParametersResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListEvaluationParametersResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "ListEvaluationParametersResponse is used by ListEvaluationParameterss."
    },
    "v1ListEvaluationParametersResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1EvaluationParameter"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListExportersResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListExportersResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list exporters."
    },
    "v1ListExportersResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Exporter"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListExternalProviderModelsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListExternalProviderModelsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list external provider models."
    },
    "v1ListExternalProviderModelsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ExternalProviderModel"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListFeedbacksResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListFeedbacksResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list feedbacks."
    },
    "v1ListFeedbacksResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Feedback"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListFileSegmentsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListFileSegmentsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list file segments."
    },
    "v1ListFileSegmentsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1FileSegments"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListFindingLogsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListFindingLogsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list finding logs."
    },
    "v1ListFindingLogsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1FindingLog"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListFindingsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListFindingsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list findings."
    },
    "v1ListFindingsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Finding"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListFunctionGraphDataResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListFunctionGraphDataResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list function graph data."
    },
    "v1ListFunctionGraphDataResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1FunctionGraphData"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListGithubTokensResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListGithubTokensResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to return all available GitHub tokens."
    },
    "v1ListGithubTokensResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1GithubToken"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListHuggingFaceModelsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListHuggingFaceModelsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list HuggingFace models."
    },
    "v1ListHuggingFaceModelsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1HuggingFaceModel"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListHuggingFaceOrganizationsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListHuggingFaceOrganizationsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list HuggingFace organizations."
    },
    "v1ListHuggingFaceOrganizationsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1HuggingFaceOrganization"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListIPAddressPoliciesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListIPAddressPoliciesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list ip address policies."
    },
    "v1ListIPAddressPoliciesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1IPAddressPolicy"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListIdentityProvidersResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListIdentityProvidersResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list identity providers."
    },
    "v1ListIdentityProvidersResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1IdentityProvider"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListIngestionStateResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListIngestionStateResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to request to list ingestion state."
    },
    "v1ListIngestionStateResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1IngestionState"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListInstallationsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListInstallationsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list installations."
    },
    "v1ListInstallationsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Installation"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListInvitationsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListInvitationsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list invitations."
    },
    "v1ListInvitationsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Invitation"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListJVMClassMetadataResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListJVMClassMetadataResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list jvm class metadata."
    },
    "v1ListJVMClassMetadataResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1JVMClassMetadata"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListJobsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListJobsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list jobs.",
      "x-internal": true
    },
    "v1ListJobsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/endorv1Job"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListLicenseDependenciesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListLicenseDependenciesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to list all the license dependencies."
    },
    "v1ListLicenseDependenciesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LicenseDependency"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListLicenseResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListLicenseResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list licenses."
    },
    "v1ListLicenseResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/endorv1License"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListLicenseSummariesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListLicenseSummariesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to list all the license summaries."
    },
    "v1ListLicenseSummariesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LicenseSummary"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListLinterResultsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListLinterResultsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list linter results."
    },
    "v1ListLinterResultsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1LinterResult"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListMCPServerLogsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListMCPServerLogsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list MCP server logs.",
      "x-internal": true
    },
    "v1ListMCPServerLogsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1MCPServerLog"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListMalwareDetectionAnalysisTasksResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListMalwareDetectionAnalysisTasksResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to list malware detection analysis tasks.",
      "x-internal": true
    },
    "v1ListMalwareDetectionAnalysisTasksResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1MalwareDetectionAnalysisTask"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListMalwareDetectionArtifactDownloadStatusResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListMalwareDetectionArtifactDownloadStatusResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to list malware detection artifact download status.",
      "x-internal": true
    },
    "v1ListMalwareDetectionArtifactDownloadStatusResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1MalwareDetectionArtifactDownloadStatus"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListMalwareDetectionAssessmentsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListMalwareDetectionAssessmentsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to list malware detection assessments.",
      "x-internal": true
    },
    "v1ListMalwareDetectionAssessmentsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1MalwareDetectionAssessment"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListMalwareDetectionIoCsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListMalwareDetectionIoCsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to list malware detection IoCs.",
      "x-internal": true
    },
    "v1ListMalwareDetectionIoCsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1MalwareDetectionIoC"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListMalwareDetectionPackageIoCsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListMalwareDetectionPackageIoCsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to list malware detection package-IoC relationships.",
      "x-internal": true
    },
    "v1ListMalwareDetectionPackageIoCsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1MalwareDetectionPackageIoC"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListMalwareDetectionPackagesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListMalwareDetectionPackagesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to list malware detection packages.",
      "x-internal": true
    },
    "v1ListMalwareDetectionPackagesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1MalwareDetectionPackage"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListMalwareDetectionWorkflowsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListMalwareDetectionWorkflowsResponseList",
          "description": "List of malware detection workflows."
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse",
          "description": "Count response."
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse",
          "description": "Group response."
        }
      },
      "description": "Response returned for requests to list malware detection workflows.",
      "x-internal": true
    },
    "v1ListMalwareDetectionWorkflowsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1MalwareDetectionWorkflow"
          },
          "description": "Malware detection workflow records."
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse",
          "description": "List response metadata."
        }
      },
      "description": "List of malware detection workflows."
    },
    "v1ListMalwareExposureResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListMalwareExposureResponseList",
          "description": "List response containing a list of MalwareExposure objects."
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse",
          "description": "Count response."
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse",
          "description": "Group response."
        }
      },
      "description": "Response to the request to list MalwareExposure objects."
    },
    "v1ListMalwareExposureResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1MalwareExposure"
          },
          "description": "List of MalwareExposure objects."
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse",
          "description": "Response metadata."
        }
      },
      "description": "List response containing a list of MalwareExposure objects."
    },
    "v1ListMalwareResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListMalwareResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list malware."
    },
    "v1ListMalwareResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Malware"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListMetricConfigurationsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListMetricConfigurationsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list metric configurations."
    },
    "v1ListMetricConfigurationsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1MetricConfiguration"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListMetricsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListMetricsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to retrieve the metrics."
    },
    "v1ListMetricsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/endorv1Metric"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListNamespacesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListNamespacesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list namespaces."
    },
    "v1ListNamespacesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Namespace"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListNotificationTargetsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListNotificationTargetsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list notification targets."
    },
    "v1ListNotificationTargetsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1NotificationTarget"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListNotificationsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListNotificationsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list notifications."
    },
    "v1ListNotificationsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Notification"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListOnPremSchedulersResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListOnPremSchedulersResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "ListOnPremSchedulersResponse is used by ListOnPremSchedulers."
    },
    "v1ListOnPremSchedulersResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1OnPremScheduler"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListOrganizationAllowedWorkflowsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListOrganizationAllowedWorkflowsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for the request to list all update allowed workflows object of an organization."
    },
    "v1ListOrganizationAllowedWorkflowsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1OrganizationAllowedWorkflows"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListOrganizationBlockListsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListOrganizationBlockListsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for the request to list the block lists of organizations."
    },
    "v1ListOrganizationBlockListsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1OrganizationBlockList"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListOrganizationCICDPermissionsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListOrganizationCICDPermissionsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Request to list CI/CD permissions objects of a platform organization."
    },
    "v1ListOrganizationCICDPermissionsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1OrganizationCICDPermissions"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListOrganizationCustomPermissionListsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListOrganizationCustomPermissionListsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list the custom fine grained permissions of a platform organization."
    },
    "v1ListOrganizationCustomPermissionListsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1OrganizationCustomPermissionList"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListOrganizationCustomRoleListsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListOrganizationCustomRoleListsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned to list custom role lists in organizations."
    },
    "v1ListOrganizationCustomRoleListsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1OrganizationCustomRoleList"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListOrganizationHooksResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListOrganizationHooksResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for the request to list organization hooks."
    },
    "v1ListOrganizationHooksResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1OrganizationHook"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListOrganizationInstallationListsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListOrganizationInstallationListsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list installation information of platform organizations."
    },
    "v1ListOrganizationInstallationListsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1OrganizationInstallationList"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListOrganizationInvitationListsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListOrganizationInvitationListsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the requests to list invitations of platform organizations."
    },
    "v1ListOrganizationInvitationListsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1OrganizationInvitationList"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListOrganizationMemberListsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListOrganizationMemberListsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list members of platform organizations."
    },
    "v1ListOrganizationMemberListsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1OrganizationMemberList"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListOrganizationOutsideCollaboratorListsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListOrganizationOutsideCollaboratorListsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list outside collaborators of platform organizations."
    },
    "v1ListOrganizationOutsideCollaboratorListsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1OrganizationOutsideCollaboratorList"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListOrganizationRunnerGroupConfigsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListOrganizationRunnerGroupConfigsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list runner group configurations of platform organizations."
    },
    "v1ListOrganizationRunnerGroupConfigsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1OrganizationRunnerGroupConfig"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListOrganizationSecurityManagerListsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListOrganizationSecurityManagerListsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list security managers of platform organizations."
    },
    "v1ListOrganizationSecurityManagerListsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1OrganizationSecurityManagerList"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListOrganizationWorkflowPermissionsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListOrganizationWorkflowPermissionsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to request to list workflow permissions of organizations."
    },
    "v1ListOrganizationWorkflowPermissionsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1OrganizationWorkflowPermissions"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListPRCommentConfigsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListPRCommentConfigsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list PR comment configurations."
    },
    "v1ListPRCommentConfigsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PRCommentConfig"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListPackageFirewallLogsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListPackageFirewallLogsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list package firewall logs."
    },
    "v1ListPackageFirewallLogsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PackageFirewallLog"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListPackageLicenseOverridesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListPackageLicenseOverridesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "title": "Response for ListPackageLicenseOverrides"
    },
    "v1ListPackageLicenseOverridesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PackageLicenseOverride"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListPackageLicenseResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListPackageLicenseResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to list all the package licenses."
    },
    "v1ListPackageLicenseResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PackageLicense"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListPackageManagersResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListPackageManagersResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list package managers."
    },
    "v1ListPackageManagersResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PackageManager"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListPackageVersionSourceMetadataResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListPackageVersionSourceMetadataResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list package version source metadata."
    },
    "v1ListPackageVersionSourceMetadataResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PackageVersionSourceMetadata"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListPackageVersionsMetadataResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListPackageVersionsMetadataResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list package version metadata."
    },
    "v1ListPackageVersionsMetadataResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PackageVersionMetadata"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListPackageVersionsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListPackageVersionsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list package versions."
    },
    "v1ListPackageVersionsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PackageVersion"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListPackagesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListPackagesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list packages."
    },
    "v1ListPackagesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/endorv1Package"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListParameters": {
      "type": "object",
      "properties": {
        "filter": {
          "type": "string",
          "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\")\"."
        },
        "page_token": {
          "type": "integer",
          "format": "int32",
          "description": "Set the page token to start from.\nUse page tokens to page through list results or list specific pages."
        },
        "page_size": {
          "type": "integer",
          "format": "int32",
          "description": "Set the page size to limit the number of results returned.\nDefault: 100. Max: 500."
        },
        "action": {
          "type": "string",
          "description": "Action to be executed with a request. Not supported for all endpoints."
        },
        "mask": {
          "type": "string",
          "description": "List of fields to return (all fields are returned by default)."
        },
        "traverse": {
          "type": "boolean",
          "description": "Get data from any child namespaces as well."
        },
        "sort": {
          "$ref": "#/definitions/ListParametersSortEntry",
          "description": "Sort the objects returned."
        },
        "count": {
          "type": "boolean",
          "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."
        },
        "group": {
          "$ref": "#/definitions/ListParametersGroup",
          "description": "Group objects according to the given group parameters.\nIf group is set, the response is a GroupResponse.\nCan be used together with filter and traverse."
        },
        "ci_run_uuid": {
          "type": "string",
          "description": "Only return objects from PR scans that match this context id."
        },
        "page_id": {
          "type": "string",
          "description": "Page ID to retrieve."
        },
        "group_by_time": {
          "$ref": "#/definitions/ListParametersGroupByTime",
          "description": "Group objects according to the given group_by_time parameters.\nIf group_by_time is set, the response is a GroupResponse.\nCan be used together with filter and traverse."
        },
        "disable_pagination": {
          "type": "boolean",
          "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."
        },
        "search_query": {
          "$ref": "#/definitions/v1SearchQuery"
        }
      },
      "description": "Parameters for a list request."
    },
    "v1ListPlatformAccountsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListPlatformAccountsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list platform accounts."
    },
    "v1ListPlatformAccountsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PlatformAccount"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListPlatformOrganizationsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListPlatformOrganizationsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list platform organizations."
    },
    "v1ListPlatformOrganizationsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PlatformOrganization"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListPluginBinariesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListPluginBinariesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list plugin binaries."
    },
    "v1ListPluginBinariesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PluginBinary"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListPoliciesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListPoliciesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list policies."
    },
    "v1ListPoliciesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Policy"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListPolicyTemplatesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListPolicyTemplatesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list policy templates."
    },
    "v1ListPolicyTemplatesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PolicyTemplate"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListProjectSummariesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListProjectSummariesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list project summaries.",
      "x-internal": true
    },
    "v1ListProjectSummariesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ProjectSummary"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListProjectsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListProjectsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list projects."
    },
    "v1ListProjectsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Project"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListProvisioningResultsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListProvisioningResultsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "ListProvisioningResultsResponse is used by ListProvisioningResults."
    },
    "v1ListProvisioningResultsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ProvisioningResult"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListRegistryIngestionCheckpointResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListRegistryIngestionCheckpointResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to request to list registry ingestion checkpoints."
    },
    "v1ListRegistryIngestionCheckpointResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1RegistryIngestionCheckpoint"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListRepositoriesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListRepositoriesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list repositories."
    },
    "v1ListRepositoriesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Repository"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListRepositoryBranchProtectionsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListRepositoryBranchProtectionsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list repository branch protections."
    },
    "v1ListRepositoryBranchProtectionsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1RepositoryBranchProtection"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListRepositoryCheckRunsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListRepositoryCheckRunsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list repository check runs."
    },
    "v1ListRepositoryCheckRunsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1RepositoryCheckRun"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListRepositoryCodeownersFileResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListRepositoryCodeownersFileResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list repository's codeowners file information."
    },
    "v1ListRepositoryCodeownersFileResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1RepositoryCodeownersFile"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListRepositoryCollaboratorsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListRepositoryCollaboratorsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list repository's collaborators."
    },
    "v1ListRepositoryCollaboratorsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1RepositoryCollaborators"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListRepositoryCommitsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListRepositoryCommitsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list repository commits."
    },
    "v1ListRepositoryCommitsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1RepositoryCommit"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListRepositoryDeploymentEnvConfigResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListRepositoryDeploymentEnvConfigResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list the repository's deployment environment configurations."
    },
    "v1ListRepositoryDeploymentEnvConfigResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1RepositoryDeploymentEnvConfig"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListRepositoryHooksResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListRepositoryHooksResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list repository hooks."
    },
    "v1ListRepositoryHooksResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1RepositoryHook"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListRepositoryIssuesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListRepositoryIssuesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list repository issues."
    },
    "v1ListRepositoryIssuesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1RepositoryIssue"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListRepositoryPullRequestsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListRepositoryPullRequestsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list repository pull requests."
    },
    "v1ListRepositoryPullRequestsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1RepositoryPullRequest"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListRepositoryReleasesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListRepositoryReleasesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list repository releases."
    },
    "v1ListRepositoryReleasesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1RepositoryRelease"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListRepositoryScanMetadataResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListRepositoryScanMetadataResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list repository scan metadata."
    },
    "v1ListRepositoryScanMetadataResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1RepositoryScanMetadata"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListRepositoryStatusesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListRepositoryStatusesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list repository statuses."
    },
    "v1ListRepositoryStatusesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1RepositoryStatus"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListRepositoryTagProtectionResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListRepositoryTagProtectionResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list repository's tag protections."
    },
    "v1ListRepositoryTagProtectionResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1RepositoryTagProtection"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListRepositoryVersionsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListRepositoryVersionsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list repository versions."
    },
    "v1ListRepositoryVersionsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1RepositoryVersion"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListRequestAssuredPackageVersionsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListRequestAssuredPackageVersionsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response for the request to list request assured package versions."
    },
    "v1ListRequestAssuredPackageVersionsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1RequestAssuredPackageVersion"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListResponse": {
      "type": "object",
      "properties": {
        "next_page_token": {
          "type": "integer",
          "format": "int32",
          "description": "Pagination token that can be used to retrieve the next page of results."
        },
        "next_page_id": {
          "type": "string",
          "description": "The UUID of last message retrieved."
        }
      },
      "description": "Response to a list request."
    },
    "v1ListRuleSetImportsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListRuleSetImportsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list."
    },
    "v1ListRuleSetImportsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ImportedRuleSet"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListSBOMImportsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListSBOMImportsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list SBOMs."
    },
    "v1ListSBOMImportsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ImportedSBOM"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListSBOMOrganizationalContactsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListSBOMOrganizationalContactsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      }
    },
    "v1ListSBOMOrganizationalContactsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SBOMOrganizationalContact"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListSCMAppResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListSCMAppResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list SCM app."
    },
    "v1ListSCMAppResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SCMApp"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListSCMCredentialsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListSCMCredentialsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list SCM credentials."
    },
    "v1ListSCMCredentialsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SCMCredential"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListSavedQueriesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListSavedQueriesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list saved queries."
    },
    "v1ListSavedQueriesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SavedQuery"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListScanCreditUsagesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListScanCreditUsagesResponseList",
          "description": "List of scan credit usage records."
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse",
          "description": "Count response."
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse",
          "description": "Group response."
        }
      },
      "description": "Response returned for requests to list ScanCreditUsage records.",
      "x-internal": true
    },
    "v1ListScanCreditUsagesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ScanCreditUsage"
          },
          "description": "List of scan credit usage records."
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse",
          "description": "List response metadata."
        }
      },
      "description": "List of scan credit usage records."
    },
    "v1ListScanProfilesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListScanProfilesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "ListScanProfilesResponse is used by ListScanProfiles."
    },
    "v1ListScanProfilesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ScanProfile"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListScanRequestsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListScanRequestsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list scan requests."
    },
    "v1ListScanRequestsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ScanRequest"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListScanResultsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListScanResultsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list scan results."
    },
    "v1ListScanResultsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ScanResult"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListScanWorkflowResultsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListScanWorkflowResultsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list scan workflow results."
    },
    "v1ListScanWorkflowResultsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ScanWorkflowResult"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListScanWorkflowsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListScanWorkflowsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list scan workflows."
    },
    "v1ListScanWorkflowsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ScanWorkflow"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListScopePoliciesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListScopePoliciesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list scope policies."
    },
    "v1ListScopePoliciesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ScopePolicy"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListSecretRulesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListSecretRulesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list secret rules."
    },
    "v1ListSecretRulesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SecretRule"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListSecurityReviewPullRequestsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListSecurityReviewPullRequestsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response returned for requests to list security review pull requests."
    },
    "v1ListSecurityReviewPullRequestsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SecurityReviewPullRequest"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListSemgrepRulesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListSemgrepRulesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list Semgrep rules."
    },
    "v1ListSemgrepRulesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SemgrepRule"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListServiceRequestsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListServiceRequestsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to return all the service requests for a given namespace.",
      "x-internal": true
    },
    "v1ListServiceRequestsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ServiceRequest"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListSupportedToolChainProfilesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListSupportedToolChainProfilesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "ListSupportedToolChainProfilesResponse is used by ListSupportedToolChainProfiles."
    },
    "v1ListSupportedToolChainProfilesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SupportedToolChainProfile"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListSupportedToolChainVersionsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListSupportedToolChainVersionsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "ListSupportedToolChainVersionsResponse is used by ListSupportedToolChainVersions.",
      "x-internal": true
    },
    "v1ListSupportedToolChainVersionsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SupportedToolChainVersion"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListSystemConfigResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListSystemConfigResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to request to list system configuration."
    },
    "v1ListSystemConfigResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SystemConfig"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListTableRowGroupsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListTableRowGroupsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list table row groups."
    },
    "v1ListTableRowGroupsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1TableRowGroup"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListTenantsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListTenantsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list tenants."
    },
    "v1ListTenantsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Tenant"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListToolPatternsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListToolPatternsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list tool patterns."
    },
    "v1ListToolPatternsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ToolPattern"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListUserTelemetriesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListUserTelemetriesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list user telemetries."
    },
    "v1ListUserTelemetriesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1UserTelemetry"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListUsersResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListUsersResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list users."
    },
    "v1ListUsersResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1User"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListVectorStoresResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListVectorStoresResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list available VectorStores.",
      "x-internal": true
    },
    "v1ListVectorStoresResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1VectorStore"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListVersionDiffsResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListVersionDiffsResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list version diffs."
    },
    "v1ListVersionDiffsResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1VersionDiff"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListVersionUpgradesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListVersionUpgradesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list version upgrades."
    },
    "v1ListVersionUpgradesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1VersionUpgrade"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1ListVulnerabilitiesResponse": {
      "type": "object",
      "properties": {
        "list": {
          "$ref": "#/definitions/v1ListVulnerabilitiesResponseList"
        },
        "count_response": {
          "$ref": "#/definitions/v1CountResponse"
        },
        "group_response": {
          "$ref": "#/definitions/v1GroupResponse"
        }
      },
      "description": "Response to the request to list vulnerabilities."
    },
    "v1ListVulnerabilitiesResponseList": {
      "type": "object",
      "properties": {
        "objects": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Vuln"
          }
        },
        "response": {
          "$ref": "#/definitions/v1ListResponse"
        }
      }
    },
    "v1LocationType": {
      "type": "string",
      "enum": [
        "LOCATION_TYPE_UNSPECIFIED",
        "LOCATION_TYPE_SOURCE",
        "LOCATION_TYPE_SINK",
        "LOCATION_TYPE_INTERMEDIATE",
        "LOCATION_TYPE_LOGICAL_BUG"
      ],
      "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."
    },
    "v1LocationWithName": {
      "type": "object",
      "properties": {
        "location": {
          "$ref": "#/definitions/v1SarifLocation",
          "description": "The location of the code in a file."
        },
        "name": {
          "type": "string",
          "description": "The (preferably) unique name of the code location.\nCould be a function ref or a module name."
        },
        "type": {
          "type": "string",
          "description": "The type of the code location."
        }
      },
      "description": "A code location with a name and type.",
      "required": [
        "location",
        "name"
      ]
    },
    "v1LogLevel": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "v1MCPServerLog": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an MCPServerLog.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "MCPServerLogs are associated with a tenant or are global."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1MCPServerLogSpec",
          "description": "The internal specification of the object."
        }
      },
      "description": "Represents the information captured from an MCPServerLog of endorctl.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "v1MCPServerLogSpec": {
      "type": "object",
      "properties": {
        "tool_name": {
          "type": "string",
          "description": "tool_name that is been called."
        },
        "parameters": {
          "type": "object",
          "description": "parameters that are been passed to the tool."
        },
        "has_error": {
          "type": "boolean",
          "description": "whether the tool call has an error."
        },
        "error_message": {
          "type": "string",
          "description": "the error message if any."
        },
        "endorctl_version": {
          "type": "string",
          "description": "endorctl_version is the endorctl version of the MCP server."
        }
      },
      "required": [
        "tool_name",
        "parameters",
        "has_error"
      ]
    },
    "v1MTLSAuth": {
      "type": "object",
      "properties": {
        "client_cert": {
          "type": "string",
          "description": "The client certificate in PEM format."
        },
        "client_key": {
          "type": "string",
          "description": "The client key in PEM format."
        },
        "server_cert": {
          "type": "string",
          "description": "The server certificate in PEM format."
        },
        "ca_cert": {
          "type": "string",
          "description": "The CA certificate in PEM format."
        }
      },
      "required": [
        "client_cert",
        "client_key"
      ]
    },
    "v1Malware": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a malware record.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta"
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1MalwareSpec"
        }
      },
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1MalwareAssessmentChangeLogEntry": {
      "type": "object",
      "properties": {
        "changed_at": {
          "type": "string",
          "format": "date-time",
          "description": "When this change occurred. Enables sorting the change log chronologically."
        },
        "result": {
          "$ref": "#/definitions/v1MalwareAssessmentResultType",
          "description": "The result at the time of this change."
        },
        "human_review": {
          "type": "boolean",
          "description": "Whether this change was made by a human reviewer."
        },
        "change_description": {
          "type": "string",
          "description": "Description of the change."
        }
      },
      "description": "MalwareAssessmentChangeLogEntry represents a single change log entry in an assessment."
    },
    "v1MalwareAssessmentError": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/v1MalwareAssessmentErrorStatus",
          "description": "Status of the error."
        },
        "stage": {
          "type": "string",
          "description": "Stage or signal that produced the error."
        },
        "target": {
          "type": "string",
          "description": "Archive, file, or package reference that triggered the error."
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of the error."
        }
      },
      "description": "MalwareAssessmentError records a single error encountered while producing a malware assessment."
    },
    "v1MalwareAssessmentErrorStatus": {
      "type": "string",
      "enum": [
        "STATUS_UNSPECIFIED",
        "STATUS_RULE_EVALUATION",
        "STATUS_DATA_UNAVAILABLE",
        "STATUS_TIMEOUT",
        "STATUS_LLM",
        "STATUS_INTERNAL",
        "STATUS_UNSUPPORTED"
      ],
      "default": "STATUS_UNSPECIFIED",
      "description": "Status categorizes the kind of error that occurred.\n\n - STATUS_UNSPECIFIED: No error type has been set.\n - STATUS_RULE_EVALUATION: A detection or analysis rule failed to evaluate.\n - STATUS_DATA_UNAVAILABLE: Required input data was missing or unavailable.\n - STATUS_TIMEOUT: The assessment exceeded its time budget.\n - STATUS_LLM: An LLM call failed.\n - STATUS_INTERNAL: An internal or system-level failure occurred.\n - STATUS_UNSUPPORTED: The package or target is not supported."
    },
    "v1MalwareAssessmentLLMCallStats": {
      "type": "object",
      "properties": {
        "model": {
          "type": "string",
          "description": "The model identifier."
        },
        "calls": {
          "type": "integer",
          "format": "int32",
          "description": "Number of calls made."
        },
        "total_cost": {
          "type": "number",
          "format": "double",
          "description": "Total cost in dollars."
        },
        "total_prompt_tokens": {
          "type": "string",
          "format": "int64",
          "description": "Total prompt tokens used."
        },
        "total_completion_tokens": {
          "type": "string",
          "format": "int64",
          "description": "Total completion tokens used."
        }
      },
      "description": "MalwareAssessmentLLMCallStats tracks LLM usage statistics for a specific model."
    },
    "v1MalwareAssessmentResultType": {
      "type": "string",
      "enum": [
        "MALWARE_ASSESSMENT_RESULT_TYPE_UNSPECIFIED",
        "MALWARE_ASSESSMENT_RESULT_TYPE_MALICIOUS",
        "MALWARE_ASSESSMENT_RESULT_TYPE_BENIGN",
        "MALWARE_ASSESSMENT_RESULT_TYPE_TELEMETRY"
      ],
      "default": "MALWARE_ASSESSMENT_RESULT_TYPE_UNSPECIFIED",
      "description": "MalwareAssessmentResultType represents the verdict of a malware assessment."
    },
    "v1MalwareAssessmentSource": {
      "type": "string",
      "enum": [
        "MALWARE_ASSESSMENT_SOURCE_UNSPECIFIED",
        "MALWARE_ASSESSMENT_SOURCE_ENDOR",
        "MALWARE_ASSESSMENT_SOURCE_TEST"
      ],
      "default": "MALWARE_ASSESSMENT_SOURCE_UNSPECIFIED",
      "description": "MalwareAssessmentSource identifies the data source for an assessment."
    },
    "v1MalwareCheckActivity": {
      "type": "object",
      "properties": {
        "ecosystems": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Ecosystems to check (e.g. \"npm\", \"pypi\", \"cargo\"). Empty means all ecosystems."
        }
      },
      "description": "MalwareCheckActivity runs Endor's malware lookup against the packages in a\npackage-install command (a cmd_line event). It carries no regex matchers:\nmatching the activity means running the check, and the block/allow verdict\ncomes from the malware feed (MALWARE-status, non-contested records), not from\nthe policy config."
    },
    "v1MalwareDetectionAccountSignal": {
      "type": "object",
      "description": "MalwareDetectionAccountSignal fetches publisher account information from the registry."
    },
    "v1MalwareDetectionAnalysisTask": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the analysis task record.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Tenant metadata for namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Common metadata for all Endor Labs resources."
        },
        "spec": {
          "$ref": "#/definitions/v1MalwareDetectionAnalysisTaskSpec",
          "description": "Domain-specific fields."
        }
      },
      "description": "MalwareDetectionAnalysisTask represents a pending or completed analysis task.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "v1MalwareDetectionAnalysisTaskSpec": {
      "type": "object",
      "properties": {
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "Package ecosystem."
        },
        "package_name": {
          "type": "string",
          "description": "Package name."
        },
        "version": {
          "type": "string",
          "description": "Package version."
        },
        "status": {
          "$ref": "#/definitions/v1TaskStatus",
          "description": "Current status."
        },
        "started_at": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when task started."
        },
        "completed_at": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when task completed."
        },
        "error": {
          "type": "string",
          "description": "Error message if failed."
        },
        "assessment_uuid": {
          "type": "string",
          "description": "Reference to the resulting assessment UUID."
        },
        "retry_count": {
          "type": "integer",
          "format": "int32",
          "description": "Number of retry attempts."
        },
        "max_retries": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum allowed retries."
        },
        "worker_id": {
          "type": "string",
          "description": "ID of the worker processing this task."
        },
        "live_scan": {
          "type": "boolean",
          "description": "Whether this task is a live scan."
        },
        "workflow_uuid": {
          "type": "string",
          "description": "UUID of the workflow definition to run for this task."
        }
      },
      "required": [
        "ecosystem",
        "package_name",
        "version"
      ]
    },
    "v1MalwareDetectionArtifactDownloadStatus": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the artifact download status record.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Tenant metadata for namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Common metadata for all Endor Labs resources."
        },
        "spec": {
          "$ref": "#/definitions/v1MalwareDetectionArtifactDownloadStatusSpec",
          "description": "Domain-specific fields."
        }
      },
      "description": "MalwareDetectionArtifactDownloadStatus tracks the download status of package artifacts.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "v1MalwareDetectionArtifactDownloadStatusSpec": {
      "type": "object",
      "properties": {
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "Package ecosystem."
        },
        "package_name": {
          "type": "string",
          "description": "Package name."
        },
        "version": {
          "type": "string",
          "description": "Package version."
        },
        "artifact_type": {
          "$ref": "#/definitions/v1ArtifactDownloadType",
          "description": "Type of artifact downloaded."
        },
        "checked_at": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when status was last checked."
        },
        "download_success": {
          "type": "boolean",
          "description": "Whether download was successful."
        },
        "downloaded_at": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp of successful download."
        },
        "downloads": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1DownloadInfo"
          },
          "description": "List of downloaded files."
        }
      },
      "required": [
        "ecosystem",
        "package_name",
        "version",
        "artifact_type"
      ]
    },
    "v1MalwareDetectionAssessment": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the assessment record.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Tenant metadata for namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Common metadata for all Endor Labs resources."
        },
        "spec": {
          "$ref": "#/definitions/v1MalwareDetectionAssessmentSpec",
          "description": "Domain-specific fields."
        }
      },
      "description": "MalwareDetectionAssessment represents a malware assessment record.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "v1MalwareDetectionAssessmentSpec": {
      "type": "object",
      "properties": {
        "source": {
          "$ref": "#/definitions/v1MalwareAssessmentSource",
          "description": "The data source."
        },
        "workflow_uuid": {
          "type": "string",
          "description": "UUID of the workflow that produced this assessment."
        },
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "Package ecosystem."
        },
        "package_name": {
          "type": "string",
          "description": "Package name."
        },
        "version": {
          "type": "string",
          "description": "Package version."
        },
        "assessment_duration": {
          "type": "number",
          "format": "double",
          "description": "Duration of the assessment process in seconds."
        },
        "change_log": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1MalwareAssessmentChangeLogEntry"
          },
          "description": "Change log entries, ordered by changed_at for sorting."
        },
        "review_required": {
          "type": "boolean",
          "description": "Whether manual review is required."
        },
        "human_reviewed": {
          "type": "boolean",
          "description": "Whether this has been reviewed by a human."
        },
        "reviewed_at": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp of human review."
        },
        "human_reviewed_reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Reasons provided when the assessment was human-reviewed."
        },
        "result": {
          "$ref": "#/definitions/v1MalwareAssessmentResultType",
          "description": "Assessment result."
        },
        "confidence": {
          "type": "integer",
          "format": "int32",
          "description": "Confidence level (0-100)."
        },
        "attack_vector": {
          "type": "string",
          "description": "Attack vector classification."
        },
        "impact": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Potential impacts."
        },
        "trigger": {
          "type": "string",
          "description": "Trigger condition."
        },
        "trigger_conditions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Trigger conditions."
        },
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Reasons for the verdict."
        },
        "targeted_platform": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Targeted platforms."
        },
        "obfuscation_used": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Obfuscation techniques."
        },
        "problematic_files": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Problematic files."
        },
        "llm_call_stats": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1MalwareAssessmentLLMCallStats"
          },
          "description": "LLM call statistics per model."
        },
        "total_llm_cost": {
          "type": "number",
          "format": "double",
          "description": "Total LLM cost."
        },
        "package_publication_date": {
          "type": "string",
          "format": "date-time",
          "description": "Package publication date from registry."
        },
        "archives_analyzed": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Archives that were analyzed."
        },
        "archives_skipped": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Archives that were skipped."
        },
        "prompt_compressed": {
          "type": "string",
          "description": "Compressed prompt (zlib+base64)."
        },
        "enable_export": {
          "type": "boolean",
          "description": "When true, assessment is eligible for advisory creation and external reporting (e.g. PyPI, OSV). Default true."
        },
        "accepted": {
          "type": "boolean",
          "description": "When true, a human reviewer has accepted this assessment verdict and promoted it to the internal malware feed."
        },
        "assessment_error": {
          "$ref": "#/definitions/v1MalwareAssessmentError",
          "description": "Error encountered while producing this assessment."
        },
        "iocs": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1MalwareIOCAttribute"
          },
          "description": "IoC's of the malware observed during the assessment."
        }
      },
      "required": [
        "workflow_uuid",
        "ecosystem",
        "package_name",
        "version",
        "result"
      ]
    },
    "v1MalwareDetectionBinaryStringsSignal": {
      "type": "object",
      "properties": {
        "min_string_length": {
          "type": "integer",
          "format": "int32",
          "description": "Minimum string length (in characters) to extract from binaries."
        },
        "max_binary_size_mb": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum binary file size in megabytes to analyze."
        },
        "strings_timeout": {
          "type": "integer",
          "format": "int32",
          "description": "Timeout in seconds for the strings extraction step."
        },
        "max_strings_to_llm": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum number of extracted strings to send to the LLM."
        },
        "max_tokens_to_llm": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum total tokens of extracted strings to send to the LLM per binary."
        },
        "max_binaries_per_package": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum number of binaries to analyze per package, prioritized by tier."
        },
        "ground_iocs": {
          "type": "boolean",
          "description": "When true, discovered IoCs are validated against the extracted string set."
        },
        "llm": {
          "$ref": "#/definitions/v1MalwareWorkflowLLMConfig",
          "description": "LLM configuration for binary string analysis."
        }
      },
      "description": "MalwareDetectionBinaryStringsSignal extracts strings from binary files and passes them to an LLM for analysis."
    },
    "v1MalwareDetectionCodeDiffPopularSignal": {
      "type": "object",
      "properties": {
        "max_file_size_for_diff": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum file size in bytes to include in the diff; -1 means unlimited."
        },
        "max_diff_line_length": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum character length per diff line before truncation."
        },
        "llm": {
          "$ref": "#/definitions/v1MalwareWorkflowLLMConfig",
          "description": "LLM configuration for diff analysis."
        }
      },
      "description": "MalwareDetectionCodeDiffPopularSignal produces an LLM-assisted diff analysis for popular packages with a wider baseline."
    },
    "v1MalwareDetectionCodeDiffSignal": {
      "type": "object",
      "properties": {
        "max_file_size_for_diff": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum file size in bytes to include in the diff; -1 means unlimited."
        },
        "max_diff_line_length": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum character length per diff line before truncation."
        },
        "max_diff_size_bytes": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum total diff size in bytes; -1 means unlimited."
        },
        "llm": {
          "$ref": "#/definitions/v1MalwareWorkflowLLMConfig",
          "description": "LLM configuration for diff analysis."
        }
      },
      "description": "MalwareDetectionCodeDiffSignal produces an LLM-assisted diff analysis against the previous package version."
    },
    "v1MalwareDetectionDependenciesSignal": {
      "type": "object",
      "description": "MalwareDetectionDependenciesSignal collects transitive dependency information for the package."
    },
    "v1MalwareDetectionDownloadStatsSignal": {
      "type": "object",
      "description": "MalwareDetectionDownloadStatsSignal fetches download statistics to assess package popularity."
    },
    "v1MalwareDetectionGitHubSignal": {
      "type": "object",
      "properties": {
        "max_releases": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum number of releases to include."
        },
        "max_commits": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum number of commits to include."
        },
        "max_contributors": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum number of contributors to include."
        },
        "llm": {
          "$ref": "#/definitions/v1MalwareWorkflowLLMConfig",
          "description": "LLM configuration for GitHub data analysis."
        }
      },
      "description": "MalwareDetectionGitHubSignal retrieves GitHub repository signals and analyzes them via an LLM."
    },
    "v1MalwareDetectionInstallHooksSignal": {
      "type": "object",
      "description": "MalwareDetectionInstallHooksSignal inspects package install hooks (preinstall, postinstall scripts)."
    },
    "v1MalwareDetectionIoC": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the IoC record.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Tenant metadata for namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Common metadata for all Endor Labs resources."
        },
        "spec": {
          "$ref": "#/definitions/v1MalwareDetectionIoCSpec",
          "description": "Domain-specific fields."
        }
      },
      "description": "MalwareDetectionIoC represents an Indicator of Compromise.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "v1MalwareDetectionIoCIngestorSignal": {
      "type": "object",
      "properties": {
        "yara_short_circuit_enabled": {
          "type": "boolean",
          "description": "When true, the signal exits early upon any YARA match."
        },
        "yara_short_circuit_rule_prefix": {
          "type": "string",
          "description": "Prefix used to identify short-circuit YARA rules, e.g. \"MAL_\"."
        }
      },
      "description": "MalwareDetectionIoCIngestorSignal runs IoC and YARA short-circuit checks before the full analysis."
    },
    "v1MalwareDetectionIoCSpec": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/v1IOCType",
          "description": "Type of IoC."
        },
        "value": {
          "type": "string",
          "description": "Value of the IoC."
        },
        "created_by": {
          "type": "string",
          "description": "Who created this IoC."
        },
        "status": {
          "$ref": "#/definitions/v1IOCStatus",
          "description": "Confirmation status."
        },
        "description": {
          "type": "string",
          "description": "Description of the IoC."
        },
        "confirmed_by": {
          "type": "string",
          "description": "Who confirmed the IoC."
        },
        "change_log": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Change log with ISO timestamp keys."
        }
      },
      "required": [
        "type",
        "value",
        "created_by"
      ]
    },
    "v1MalwareDetectionLLMFileSummarySignal": {
      "type": "object",
      "properties": {
        "llm": {
          "$ref": "#/definitions/v1MalwareWorkflowLLMConfig",
          "description": "LLM configuration for file summarization."
        },
        "llm_analysis_threshold": {
          "type": "integer",
          "format": "int32",
          "description": "Minimum number of files that must be present before LLM analysis is triggered."
        }
      },
      "description": "MalwareDetectionLLMFileSummarySignal uses an LLM to produce a per-file summary of package contents."
    },
    "v1MalwareDetectionLLMSignal": {
      "type": "object",
      "properties": {
        "llm": {
          "$ref": "#/definitions/v1MalwareWorkflowLLMConfig",
          "description": "LLM configuration for the signal."
        }
      },
      "description": "MalwareDetectionLLMSignal carries LLM configuration for signals that produce a verdict or critique using a language model.\nUsed for both the terminal decision signal (llm_decision) and the critique signal (critique)."
    },
    "v1MalwareDetectionMetadataSignal": {
      "type": "object",
      "properties": {
        "llm": {
          "$ref": "#/definitions/v1MalwareWorkflowLLMConfig",
          "description": "LLM configuration for metadata analysis."
        }
      },
      "description": "MalwareDetectionMetadataSignal extracts package registry metadata via an LLM."
    },
    "v1MalwareDetectionOpengrepDiffSignal": {
      "type": "object",
      "properties": {
        "opengrep_timeout": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum seconds to allow the opengrep scan to run."
        },
        "level_threshold": {
          "$ref": "#/definitions/v1OpengrepSeverityLevel",
          "description": "Minimum opengrep severity level to report."
        },
        "context_lines": {
          "type": "integer",
          "format": "int32",
          "description": "Number of context lines to include around each finding."
        },
        "max_line_length": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum character length per diff line before truncation."
        }
      },
      "description": "MalwareDetectionOpengrepDiffSignal diffs the package against its previous version using opengrep rules.\nUsed for both sensitive-API diff (sens_api_diff) and malware-focused diff (malware_diff) signals;\nthe rule set applied is determined by which oneof field is set in MalwareDetectionSignal."
    },
    "v1MalwareDetectionPackage": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the package record.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Tenant metadata for namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Common metadata for all Endor Labs resources."
        },
        "spec": {
          "$ref": "#/definitions/v1MalwareDetectionPackageSpec",
          "description": "Domain-specific fields."
        }
      },
      "description": "MalwareDetectionPackage represents a package in the malware detection system.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "v1MalwareDetectionPackageFilesSignal": {
      "type": "object",
      "properties": {
        "max_files": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum number of files to include from the archive."
        }
      },
      "description": "MalwareDetectionPackageFilesSignal reads and lists files from the package archive for downstream signals."
    },
    "v1MalwareDetectionPackageIoC": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the package-IoC relationship record.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Tenant metadata for namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Common metadata for all Endor Labs resources."
        },
        "spec": {
          "$ref": "#/definitions/v1MalwareDetectionPackageIoCSpec",
          "description": "Domain-specific fields."
        }
      },
      "description": "MalwareDetectionPackageIoC represents a relationship between a package and an IoC.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "v1MalwareDetectionPackageIoCSpec": {
      "type": "object",
      "properties": {
        "package_uuid": {
          "type": "string",
          "description": "Reference to the package UUID."
        },
        "ioc_uuid": {
          "type": "string",
          "description": "Reference to the IoC UUID."
        },
        "context": {
          "type": "string",
          "description": "Context describing the relationship."
        }
      },
      "required": [
        "package_uuid",
        "ioc_uuid"
      ]
    },
    "v1MalwareDetectionPackageSpec": {
      "type": "object",
      "properties": {
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "Package ecosystem."
        },
        "package_name": {
          "type": "string",
          "description": "Package name."
        },
        "version": {
          "type": "string",
          "description": "Package version."
        }
      },
      "required": [
        "ecosystem",
        "package_name",
        "version"
      ]
    },
    "v1MalwareDetectionPackageVersionsSignal": {
      "type": "object",
      "properties": {
        "max_versions_to_show": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum number of recent versions to include in the signal output."
        }
      },
      "description": "MalwareDetectionPackageVersionsSignal gathers version history of the package from the registry."
    },
    "v1MalwareDetectionSecondStageAnalysisSignal": {
      "type": "object",
      "properties": {
        "max_files_to_analyze": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum number of files to download and analyze."
        },
        "max_file_size_for_llm": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum file size in bytes to pass to the LLM."
        },
        "max_download_size": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum total download size in bytes across all second-stage files."
        },
        "download_timeout": {
          "type": "integer",
          "format": "int32",
          "description": "Timeout in seconds for each individual file download."
        },
        "enable_llm_cache": {
          "type": "boolean",
          "description": "When true, previously fetched LLM responses are reused to reduce cost."
        },
        "llm": {
          "$ref": "#/definitions/v1MalwareWorkflowLLMConfig",
          "description": "LLM configuration for second-stage analysis."
        }
      },
      "description": "MalwareDetectionSecondStageAnalysisSignal downloads and LLM-analyzes files referenced by suspicious code paths."
    },
    "v1MalwareDetectionSignal": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name that uniquely identifies this signal instance within the workflow.",
          "x-endor-name": "Signal Name"
        },
        "is_terminal": {
          "type": "boolean",
          "description": "When true, this signal produces the terminal verdict for the group.",
          "x-endor-name": "Is Terminal"
        },
        "keep_temp_files": {
          "type": "boolean",
          "description": "When true, temporary files written by this signal producer are not deleted after execution; useful for debugging.",
          "x-endor-name": "Keep Temp Files"
        },
        "depends_on": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of signals that must complete before this signal runs; execution order follows the declaration order of this list.",
          "x-endor-name": "Dependent Signals"
        },
        "capture_iocs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1IOCType"
          },
          "description": "IoC types this signal is expected to capture; order reflects capture priority.",
          "x-endor-name": "Expected IoCs"
        },
        "output_template": {
          "type": "string",
          "description": "Go template that overrides the default go output template for this signal.\nWhen set, the scanner uses this template instead of the built-in template to render\nthe signal's structured output into text before passing it to the LLM decision signal.\nTemplate variables must match the signal producer's output model; unrecognised variables\nare treated as empty strings.",
          "x-endor-name": "Output Template"
        },
        "package_files": {
          "$ref": "#/definitions/v1MalwareDetectionPackageFilesSignal",
          "description": "Package file listing signal."
        },
        "metadata": {
          "$ref": "#/definitions/v1MalwareDetectionMetadataSignal",
          "description": "Registry metadata signal."
        },
        "llm_file_summary": {
          "$ref": "#/definitions/v1MalwareDetectionLLMFileSummarySignal",
          "description": "LLM-based per-file summary signal."
        },
        "package_versions": {
          "$ref": "#/definitions/v1MalwareDetectionPackageVersionsSignal",
          "description": "Package version history signal."
        },
        "account": {
          "$ref": "#/definitions/v1MalwareDetectionAccountSignal",
          "description": "Publisher account signal."
        },
        "github": {
          "$ref": "#/definitions/v1MalwareDetectionGitHubSignal",
          "description": "GitHub repository signal."
        },
        "install_hooks": {
          "$ref": "#/definitions/v1MalwareDetectionInstallHooksSignal",
          "description": "Install hooks inspection signal."
        },
        "ioc_ingestor": {
          "$ref": "#/definitions/v1MalwareDetectionIoCIngestorSignal",
          "description": "IoC and YARA short-circuit signal."
        },
        "yara_malware_detection": {
          "$ref": "#/definitions/v1MalwareDetectionYaraSignal",
          "description": "YARA malware detection signal."
        },
        "download_stats": {
          "$ref": "#/definitions/v1MalwareDetectionDownloadStatsSignal",
          "description": "Download statistics signal."
        },
        "sens_api_diff": {
          "$ref": "#/definitions/v1MalwareDetectionOpengrepDiffSignal",
          "description": "Sensitive-API opengrep diff signal."
        },
        "malware_diff": {
          "$ref": "#/definitions/v1MalwareDetectionOpengrepDiffSignal",
          "description": "Malware-focused opengrep diff signal."
        },
        "code_diff": {
          "$ref": "#/definitions/v1MalwareDetectionCodeDiffSignal",
          "description": "LLM-assisted code diff signal."
        },
        "code_diff_popular": {
          "$ref": "#/definitions/v1MalwareDetectionCodeDiffPopularSignal",
          "description": "LLM-assisted code diff signal for popular packages."
        },
        "typosquatting": {
          "$ref": "#/definitions/v1MalwareDetectionTyposquattingSignal",
          "description": "Typosquatting detection signal."
        },
        "dependencies": {
          "$ref": "#/definitions/v1MalwareDetectionDependenciesSignal",
          "description": "Transitive dependency signal."
        },
        "second_stage_analysis": {
          "$ref": "#/definitions/v1MalwareDetectionSecondStageAnalysisSignal",
          "description": "Second-stage download and analysis signal."
        },
        "binary_strings": {
          "$ref": "#/definitions/v1MalwareDetectionBinaryStringsSignal",
          "description": "Binary strings LLM analysis signal."
        },
        "llm_decision": {
          "$ref": "#/definitions/v1MalwareDetectionLLMSignal",
          "description": "LLM terminal decision signal."
        },
        "critique": {
          "$ref": "#/definitions/v1MalwareDetectionLLMSignal",
          "description": "LLM critique signal."
        }
      },
      "description": "MalwareDetectionSignal defines a single analysis unit within a signal group."
    },
    "v1MalwareDetectionTyposquattingSignal": {
      "type": "object",
      "properties": {
        "similarity_threshold": {
          "type": "number",
          "format": "double",
          "description": "Minimum similarity score (0.0 – 1.0) to flag a package as a potential typosquat."
        }
      },
      "description": "MalwareDetectionTyposquattingSignal detects potential typosquatting by comparing the package name to known packages."
    },
    "v1MalwareDetectionWorkflow": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the workflow record.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Tenant metadata for namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Common metadata for all Endor Labs resources."
        },
        "spec": {
          "$ref": "#/definitions/v1MalwareDetectionWorkflowSpec",
          "description": "Domain-specific fields."
        }
      },
      "description": "MalwareDetectionWorkflow stores a named scan workflow configuration used by the malware detection pipeline.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "v1MalwareDetectionWorkflowSpec": {
      "type": "object",
      "properties": {
        "is_default": {
          "type": "boolean",
          "description": "When true, this workflow is selected by default when no explicit workflow is requested.",
          "x-endor-name": "Is Default"
        },
        "signal_groups": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1MalwareSignalGroup"
          },
          "description": "Execution order of signal groups; groups are run in the order they appear in this list.",
          "x-endor-name": "Signal Groups"
        },
        "infer_mal": {
          "type": "boolean",
          "description": "When true, only the primary registry mirror is checked and shortcut verdicts produce MALICIOUS;\nwhen false all mirrors are searched and shortcut verdicts produce UNKNOWN.",
          "x-endor-name": "Infer Mal"
        },
        "capture_iocs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1IOCType"
          },
          "description": "IoC types this workflow is expected to capture across all signal groups; acts as a workflow-level default.",
          "x-endor-name": "Capture IoCs"
        },
        "disabled": {
          "type": "boolean",
          "description": "When true, malware detection is disabled for this workflow.",
          "x-endor-name": "Disabled"
        }
      },
      "description": "MalwareDetectionWorkflow specifications."
    },
    "v1MalwareDetectionYaraSignal": {
      "type": "object",
      "properties": {
        "max_file_size_mb": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum file size in megabytes to pass through YARA scanning."
        },
        "show_code_snippets": {
          "type": "boolean",
          "description": "When true, matching code snippets are included in the signal output."
        },
        "context_lines": {
          "type": "integer",
          "format": "int32",
          "description": "Number of context lines to include around each YARA match."
        }
      },
      "description": "MalwareDetectionYaraSignal scans package files with YARA rules to identify malware patterns."
    },
    "v1MalwareExposure": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "UUID of the MalwareExposure object.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Tenant data."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1MalwareExposureSpec",
          "description": "Object specific data."
        }
      },
      "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\".",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1MalwareExposureSpec": {
      "type": "object",
      "properties": {
        "malware_uuid": {
          "type": "string",
          "description": "UUID of the Malware object."
        },
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "Ecosystem of the Malware object."
        }
      },
      "description": "Object specific data for MalwareExposure.",
      "required": [
        "malware_uuid",
        "ecosystem"
      ]
    },
    "v1MalwareIOCAttribute": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/v1IOCType",
          "description": "Type of the IOC attribute."
        },
        "value": {
          "type": "string",
          "description": "Value of the IOC attribute."
        }
      },
      "description": "MalwareIOC represents a particular Indicator of Compromise.\nUse it to embed the IOC attributes in other messages.",
      "required": [
        "type",
        "value"
      ]
    },
    "v1MalwareMatch": {
      "type": "object",
      "properties": {
        "package_name": {
          "type": "string",
          "description": "Package name (e.g. \"reftest-helper-for-ae1x\")."
        },
        "version": {
          "type": "string",
          "description": "Version from the install command, when it was pinned; empty for an unpinned install."
        },
        "ecosystem": {
          "type": "string",
          "description": "Ecosystem the package belongs to (e.g. \"npm\", \"pypi\")."
        },
        "message": {
          "type": "string",
          "description": "Human-readable explanation of what fired."
        },
        "summary": {
          "type": "string",
          "description": "Short title from the malware feed (e.g. \"Malicious code in \u003cpkg\u003e (npm)\")."
        },
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Why the package is flagged — indicators reported by the malware feed."
        },
        "source": {
          "type": "string",
          "description": "Feed that flagged it, as the MalwareSource enum name (e.g. \"MALWARE_SOURCE_AMF\")."
        }
      },
      "description": "MalwareMatch describes a package flagged by the malware check. The verdict\ncomes from a MALWARE-status, non-contested record in Endor's malware feed."
    },
    "v1MalwareSignalGroup": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name that uniquely identifies this group within the workflow.",
          "x-endor-name": "Signal Group Name"
        },
        "signals": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1MalwareDetectionSignal"
          },
          "description": "Ordered list of signals in this group."
        }
      },
      "description": "MalwareSignalGroup is an ordered collection of signals that execute together."
    },
    "v1MalwareSpec": {
      "type": "object",
      "properties": {
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "The ecosystem of the malware record."
        },
        "package_name": {
          "type": "string",
          "description": "Name of malicious package."
        },
        "ranges": {
          "$ref": "#/definitions/SpecMalwareRanges"
        },
        "version": {
          "$ref": "#/definitions/SpecMalwareVersion"
        },
        "status": {
          "type": "string",
          "description": "Status of the malware record."
        },
        "pkg_release_date": {
          "type": "string",
          "format": "date-time",
          "description": "Release date of the package version."
        },
        "malware_detected_on": {
          "type": "string",
          "format": "date-time",
          "description": "Date when the malware was detected."
        },
        "advisory_published": {
          "type": "string",
          "format": "date-time",
          "description": "Date when the advisory published the malware record."
        },
        "advisory_last_updated": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp of the last update of the malware record by the advisory."
        },
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Reasons for flagging the package as malicious."
        },
        "purl": {
          "type": "string",
          "description": "PURL of the package without the version component."
        },
        "summary": {
          "type": "string",
          "description": "Summary of the malware record."
        },
        "contested": {
          "type": "boolean",
          "description": "Has the malware record been contested."
        },
        "contested_reason": {
          "type": "string",
          "description": "Reason for the malware record being contested."
        },
        "contested_date": {
          "type": "string",
          "format": "date-time",
          "description": "Date when the malware record was contested.",
          "readOnly": true
        },
        "source": {
          "$ref": "#/definitions/SpecMalwareSource",
          "description": "Source of the malware record."
        },
        "contributing_feeds": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SpecMalwareSource"
          },
          "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.",
          "readOnly": true
        },
        "aliases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Aliases of the malware record."
        },
        "references": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/VulnSpecReference"
          },
          "description": "Reference URLs for the malware record."
        },
        "upsert_key": {
          "type": "string",
          "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.",
          "x-internal": true
        },
        "package_version": {
          "$ref": "#/definitions/v1PackageVersion"
        },
        "additional_notes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional notes for the malware record."
        },
        "cwe_id": {
          "type": "string",
          "description": "The CWE ID for the malware record."
        },
        "deletion_exempt": {
          "type": "boolean",
          "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."
        },
        "iocs": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1MalwareIOCAttribute"
          },
          "description": "IOC attributes of the malware found during the analysis."
        }
      },
      "required": [
        "ecosystem",
        "package_name"
      ]
    },
    "v1MalwareWorkflowLLMConfig": {
      "type": "object",
      "properties": {
        "model": {
          "type": "string",
          "description": "Model identifier used for inference, e.g. \"vertex_ai/gemini-2.0-flash\"."
        },
        "prompt_template": {
          "type": "string",
          "description": "Go template name to render the prompt; defaults to the signal class default when absent."
        },
        "temperature": {
          "type": "number",
          "format": "double",
          "description": "Sampling temperature controlling output randomness (0.0 – 2.0)."
        },
        "max_tokens": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum number of output tokens the model may generate."
        },
        "thinking_level": {
          "$ref": "#/definitions/v1MalwareWorkflowLLMConfigThinkingLevel",
          "description": "Depth of reasoning the model applies before producing a response."
        },
        "save_prompt": {
          "type": "boolean",
          "description": "When true, the rendered prompt is persisted alongside the assessment for audit and replay."
        }
      },
      "description": "MalwareWorkflowLLMConfig carries the LLM-specific settings for a signal that is backed by a language model."
    },
    "v1MalwareWorkflowLLMConfigThinkingLevel": {
      "type": "string",
      "enum": [
        "THINKING_LEVEL_UNSPECIFIED",
        "THINKING_LEVEL_AUTO",
        "THINKING_LEVEL_LOW",
        "THINKING_LEVEL_MEDIUM",
        "THINKING_LEVEL_HIGH"
      ],
      "default": "THINKING_LEVEL_UNSPECIFIED",
      "description": "ThinkingLevel controls the depth of reasoning a model applies before producing a response.\n\n - THINKING_LEVEL_UNSPECIFIED: No thinking level has been set; the model uses its default behavior.\n - THINKING_LEVEL_AUTO: The model selects the appropriate thinking depth automatically.\n - THINKING_LEVEL_LOW: Minimal reasoning; faster and cheaper, suited for straightforward signals.\n - THINKING_LEVEL_MEDIUM: Moderate reasoning; balanced between quality and cost.\n - THINKING_LEVEL_HIGH: Maximum reasoning; slower and more expensive, suited for complex verdicts."
    },
    "v1MavenSpec": {
      "type": "object",
      "properties": {
        "priority": {
          "type": "integer",
          "format": "int32",
          "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."
        },
        "url": {
          "type": "string",
          "description": "The URL of the registry that the Maven package manager must use."
        },
        "user": {
          "type": "string",
          "description": "The user name to use to access this repo."
        },
        "password": {
          "type": "string",
          "title": "An encrypted password that must be provided by the repository owner.\nhttps://maven.apache.org/guides/mini/guide-encryption.html"
        },
        "id": {
          "type": "string",
          "description": "A string that uniquely identifies this proxy/server. This is the\nUUID of the object if not provided."
        },
        "name": {
          "type": "string",
          "description": "User identifiable name for the repository. This is the name\nof the package manager if not provided."
        },
        "snapshots": {
          "type": "boolean",
          "description": "Indicates whether the repository can contain snapshot versions."
        },
        "is_plugin_repository": {
          "type": "boolean",
          "description": "Indicates whether the repository is a plugin or binary repository."
        },
        "region": {
          "type": "string",
          "title": "Region to be used for cloud storage integration"
        },
        "public_repository": {
          "type": "boolean",
          "description": "Indicates if cloud storage is accessible publicly."
        },
        "mtls": {
          "$ref": "#/definitions/v1MTLSAuth",
          "description": "MTLS authentication for the Maven package manager."
        }
      },
      "description": "MavenSpec represents a configuration for the Maven package manager.",
      "required": [
        "priority"
      ]
    },
    "v1McpDimensionThresholds": {
      "type": "object",
      "properties": {
        "supply_chain_provenance": {
          "type": "number",
          "format": "float",
          "description": "Threshold for supply chain \u0026 provenance (malicious packages, CVEs,\nunverified publishers, unpinned deps)."
        },
        "authentication_authorization": {
          "type": "number",
          "format": "float",
          "description": "Threshold for authentication \u0026 authorization (credential-less network\naccess, hardcoded secrets)."
        },
        "operational_hygiene": {
          "type": "number",
          "format": "float",
          "description": "Threshold for operational hygiene (spec conformance, destructive tool\nlabeling)."
        },
        "input_validation_injection": {
          "type": "number",
          "format": "float",
          "description": "Threshold for input validation \u0026 injection (shell/SQL/code injection,\nprompt-poisoning patterns)."
        }
      },
      "description": "McpDimensionThresholds holds per-dimension score thresholds for\nMcpServerActivity. Each field is optional; an unset dimension is ignored.\nSet dimensions are OR'd among themselves and with score_at_or_below:\nany single dimension at or below its threshold fires the predicate.\nDimension names mirror AgenticInventory.McpScoreDimensions."
    },
    "v1McpServerActivity": {
      "type": "object",
      "properties": {
        "server_name_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Regex matchers for MCP server name (e.g. \"untrusted-.*\", \"remote-.*\").\nAND'd with the score-predicate branch when both are configured."
        },
        "score_at_or_below": {
          "type": "number",
          "format": "float",
          "description": "Match when the overall score is at or below this threshold\n(scores are 1-10, higher = safer). OR'd with dimension_at_or_below."
        },
        "dimension_at_or_below": {
          "$ref": "#/definitions/v1McpDimensionThresholds",
          "description": "Per-dimension score thresholds. OR'd among themselves and with\nscore_at_or_below."
        }
      },
      "description": "McpServerActivity matches MCP servers by name patterns and/or score\nthresholds. Match logic: configured branches are AND'd — when both\nserver_name_matchers and score predicates are set, both must hold;\nwhen only one is set, only that one must hold; if neither is set,\nthe activity never matches. Within the score branch, score_at_or_below\nand every set field of dimension_at_or_below are OR'd: any single\nsatisfied threshold fires the branch. This is server-level matching;\nfor per-tool-call matching, use McpToolCallActivity."
    },
    "v1McpServerMatch": {
      "type": "object",
      "properties": {
        "mcp_server_name": {
          "type": "string",
          "description": "Name of the MCP server that matched."
        },
        "message": {
          "type": "string",
          "description": "Describes what exactly matched (e.g. \"score at or below threshold 5\",\n\"supply_chain_provenance at or below 4\")."
        }
      },
      "description": "McpServerMatch describes an MCP server that matched a policy. Carries\nonly the matched server's name; consumers can fetch the full McpMeta\nfrom AgenticInventory if more detail is needed. Server-level match;\nfor individual tool calls, see McpToolMatch."
    },
    "v1McpToolCallActivity": {
      "type": "object",
      "properties": {
        "mcp_server_name": {
          "type": "string",
          "description": "MCP server name (e.g. \"jira\")."
        },
        "tool_name": {
          "type": "string",
          "description": "Tool name (e.g. \"open bug\")."
        },
        "server_name_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional regex matchers for MCP server name."
        },
        "tool_name_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional regex matchers for tool name."
        },
        "tool_input_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional regex matchers for tool input (e.g. \".*AI.*\")."
        }
      },
      "description": "McpToolCallActivity matches tool calls to a specific MCP server and tool."
    },
    "v1McpToolHook": {
      "type": "object",
      "properties": {
        "tool_name": {
          "type": "string",
          "description": "Name of the tool (e.g. \"Bash\", \"Glob\", \"AskUserQuestion\", \"Skill\")."
        },
        "tool_input": {
          "type": "object",
          "description": "Tool invocation input; structure is tool-specific (use Struct for JSON)."
        },
        "tool_response": {
          "type": "object",
          "description": "Tool result; structure is tool-specific (e.g. stdout/stderr or filenames)."
        },
        "server_name": {
          "type": "string",
          "description": "Name of the server (e.g. \"filesystem\", \"postgres-mcp\", \"github-mcp\", \"enfor-cli-tools\")."
        },
        "server_type": {
          "$ref": "#/definitions/v1ServerType",
          "description": "Whether the server runs locally or remotely."
        },
        "server_host": {
          "type": "string",
          "description": "Host or URL of the server (e.g. \"localhost\", \"https://api.example.com\")."
        }
      },
      "description": "McpToolHook contains payload for MCP tool-related hooks."
    },
    "v1McpToolMatch": {
      "type": "object",
      "properties": {
        "mcp_server_name": {
          "type": "string",
          "description": "MCP server name (e.g. \"jira\")."
        },
        "tool_name": {
          "type": "string",
          "description": "Tool name (e.g. \"open bug\")."
        },
        "matched_server_name_pattern": {
          "type": "string",
          "description": "Matched server name pattern."
        },
        "matched_tool_name_pattern": {
          "type": "string",
          "description": "Matched tool name pattern."
        },
        "matched_tool_input_pattern": {
          "type": "string",
          "description": "Tool input pattern that matched."
        },
        "message": {
          "type": "string",
          "description": "Describes what exactly matched."
        }
      },
      "description": "McpToolMatch describes a tool call that matched a policy."
    },
    "v1Meta": {
      "type": "object",
      "properties": {
        "create_time": {
          "type": "string",
          "format": "date-time",
          "description": "Time the resource was created.\n\nFormat: 2017-01-15T01:30:15.01Z\nRFC 3339: https://www.ietf.org/rfc/rfc3339.txt.",
          "readOnly": true
        },
        "update_time": {
          "type": "string",
          "format": "date-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.",
          "readOnly": true
        },
        "upsert_time": {
          "type": "string",
          "format": "date-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.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Resource name. Must be 63 characters or less.",
          "x-endor-name": "Name"
        },
        "kind": {
          "type": "string",
          "description": "Resource kind, for example, HelloResponse.\nAuto-generated using the protobuf message proto.MessageName().Name().",
          "readOnly": true
        },
        "version": {
          "type": "string",
          "description": "Message version.",
          "readOnly": true
        },
        "description": {
          "type": "string",
          "description": "Resource description. Must be less than 1024 bytes."
        },
        "parent_uuid": {
          "type": "string",
          "description": "Parent object UUID.",
          "x-endor-name": "Parent UUID"
        },
        "parent_kind": {
          "type": "string",
          "description": "Parent object resource kind, for example, Project.",
          "x-endor-name": "Parent Resource"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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.",
          "x-endor-name": "Custom Tags"
        },
        "annotations": {
          "type": "object",
          "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."
        },
        "created_by": {
          "type": "string",
          "description": "Name and authentication source of the user who created the object,\nfor example, ewok@endor.ai@google@api-key.",
          "readOnly": true
        },
        "updated_by": {
          "type": "string",
          "description": "Name and authentication source of the last user who updated the object,\nfor example, vulnerabilityingestor@endor.ai@x509.",
          "readOnly": true
        },
        "references": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/googleprotobufAny"
          },
          "description": "Map of objects referenced in a query API.",
          "readOnly": true
        },
        "index_data": {
          "$ref": "#/definitions/v1IndexData",
          "description": "Index data for the object.",
          "readOnly": true
        }
      },
      "description": "Common fields for all Endor Labs resources.",
      "required": [
        "name"
      ]
    },
    "v1Method": {
      "type": "string",
      "enum": [
        "METHOD_UNSPECIFIED",
        "METHOD_READ",
        "METHOD_CREATE",
        "METHOD_UPDATE",
        "METHOD_DELETE",
        "METHOD_ALL"
      ],
      "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 *)"
    },
    "v1MetricConfiguration": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the metric.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Metrics are associated with a tenant and tenant information must be provided."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "The metadata about the metric configuration."
        },
        "spec": {
          "$ref": "#/definitions/v1MetricConfigurationSpec",
          "description": "The nternal specification of a metric configuration."
        }
      },
      "description": "This message contains the definition all metrics configurations.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "v1MetricConfigurationSpec": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "description": "Type is the kind of metric available."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether this metric is enabled in the current configuration or not."
        },
        "category": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The categories of metrics available for this kind."
        },
        "options": {
          "type": "object",
          "description": "The parameteres used for the calculations. This is\na read only object at this time.",
          "readOnly": true
        }
      },
      "description": "The internal specification of the metric configuration."
    },
    "v1MetricSpec": {
      "type": "object",
      "properties": {
        "analytic": {
          "type": "string",
          "description": "The name of the analytic used to generate this specific metric.",
          "x-endor-name": "Analytic Name"
        },
        "project_uuid": {
          "type": "string",
          "description": "The UUID of the project to which this metric relates."
        },
        "metric_values": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1MetricValue"
          },
          "description": "A map of metric values.\nThese values include scores and score factors."
        },
        "raw": {
          "type": "object",
          "description": "This is a superset of the information included in the specification."
        }
      },
      "required": [
        "analytic",
        "project_uuid",
        "metric_values"
      ]
    },
    "v1MetricValue": {
      "type": "object",
      "properties": {
        "category": {
          "type": "string",
          "description": "Meteric value categories.",
          "x-endor-name": "Metric Value"
        },
        "description": {
          "type": "string",
          "description": "Description of the metric value.",
          "x-endor-name": "Metric Description"
        },
        "int32_value": {
          "type": "integer",
          "format": "int32"
        },
        "int64_value": {
          "type": "string",
          "format": "int64"
        },
        "string_value": {
          "type": "string"
        },
        "float_value": {
          "type": "number",
          "format": "float"
        },
        "score_card": {
          "$ref": "#/definitions/v1ScoreCard"
        },
        "score_factor_list": {
          "$ref": "#/definitions/v1ScoreFactorList"
        },
        "time_tracker": {
          "$ref": "#/definitions/v1TimeTracker"
        },
        "file_stats": {
          "$ref": "#/definitions/v1FileStats"
        },
        "vulnerability_stats": {
          "$ref": "#/definitions/v1VulnerabilityStats"
        },
        "dependency_stats": {
          "$ref": "#/definitions/v1DependencyStats"
        },
        "tag_counts": {
          "$ref": "#/definitions/v1TagCounts"
        },
        "cis_scorecard": {
          "$ref": "#/definitions/v1CisScorecard"
        },
        "scpm_data": {
          "$ref": "#/definitions/v1ScpmData"
        },
        "linter_stats": {
          "$ref": "#/definitions/v1LinterStats"
        },
        "license_info": {
          "$ref": "#/definitions/v1LicenseData"
        },
        "secret_stats": {
          "$ref": "#/definitions/v1SecretStats"
        },
        "ci_cd_tools": {
          "$ref": "#/definitions/v1CiCdTools"
        },
        "github_workflows": {
          "$ref": "#/definitions/v1GitHubWorkflows"
        },
        "pr_security_review_result_info": {
          "$ref": "#/definitions/v1PullRequestSecurityReviewResultInfo"
        }
      },
      "description": "The value of the metric and the associated category.",
      "required": [
        "description"
      ]
    },
    "v1ModelSpec": {
      "type": "object",
      "properties": {
        "full_name": {
          "type": "string",
          "description": "The author and model name.\nFor example, author/model_name."
        },
        "http_clone_url": {
          "type": "string",
          "description": "The HTTP clone URL of the project.\nFor example, https://huggingface.co/openai-community/gpt2.",
          "x-endor-name": "Project HTTP Clone URL"
        },
        "provider": {
          "$ref": "#/definitions/v1AIModelProvider",
          "description": "The provider the model comes from."
        },
        "external_installation_id": {
          "type": "string",
          "description": "Endor Labs Hugging Face installation ID of this project.\nOptional and only available if the project is created through an installation."
        }
      },
      "required": [
        "full_name"
      ]
    },
    "v1ModifierChangeType": {
      "type": "string",
      "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"
      ],
      "default": "MODIFIER_CHANGE_TYPE_UNSPECIFIED",
      "description": "Protobuf definition for ModifierChangeType."
    },
    "v1NPMSpec": {
      "type": "object",
      "properties": {
        "priority": {
          "type": "integer",
          "format": "int32",
          "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."
        },
        "url": {
          "type": "string",
          "description": "The URL of the registry that NPM must use."
        },
        "token": {
          "type": "string",
          "description": "A base64 encoded user name and password as token."
        },
        "scope": {
          "type": "string",
          "title": "A private registry scope.\nEx: @myorg/pkg\nmyorg is the scope"
        },
        "auth_token": {
          "type": "string",
          "description": "An auth token that cloud providers typically provide to connect to the\nregistry."
        },
        "mtls": {
          "$ref": "#/definitions/v1MTLSAuth",
          "description": "MTLS authentication for the NPM package manager."
        }
      },
      "description": "NPMSpec represents a configuration for the Node package manager.",
      "required": [
        "priority"
      ]
    },
    "v1NVDAttackComplexity": {
      "type": "string",
      "enum": [
        "NVD_ATTACK_COMPLEXITY_UNSPECIFIED",
        "NVD_ATTACK_COMPLEXITY_HIGH",
        "NVD_ATTACK_COMPLEXITY_LOW"
      ],
      "default": "NVD_ATTACK_COMPLEXITY_UNSPECIFIED"
    },
    "v1NVDAttackVector": {
      "type": "string",
      "enum": [
        "NVD_ATTACK_VECTOR_UNSPECIFIED",
        "NVD_ATTACK_VECTOR_NETWORK",
        "NVD_ATTACK_VECTOR_ADJACENT_NETWORK",
        "NVD_ATTACK_VECTOR_LOCAL",
        "NVD_ATTACK_VECTOR_PHYSICAL"
      ],
      "default": "NVD_ATTACK_VECTOR_UNSPECIFIED"
    },
    "v1NVDExploitCodeMaturity": {
      "type": "string",
      "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"
      ],
      "default": "NVD_EXPLOIT_CODE_MATURITY_UNSPECIFIED"
    },
    "v1NVDImpact": {
      "type": "string",
      "enum": [
        "NVD_IMPACT_UNSPECIFIED",
        "NVD_IMPACT_NONE",
        "NVD_IMPACT_LOW",
        "NVD_IMPACT_HIGH"
      ],
      "default": "NVD_IMPACT_UNSPECIFIED"
    },
    "v1NVDMetricType": {
      "type": "string",
      "enum": [
        "NVD_METRIC_TYPE_UNSPECIFIED",
        "NVD_METRIC_TYPE_PRIMARY",
        "NVD_METRIC_TYPE_SECONDARY"
      ],
      "default": "NVD_METRIC_TYPE_UNSPECIFIED"
    },
    "v1NVDModifiedAttackComplexity": {
      "type": "string",
      "enum": [
        "NVD_MODIFIED_ATTACK_COMPLEXITY_UNSPECIFIED",
        "NVD_MODIFIED_ATTACK_COMPLEXITY_HIGH",
        "NVD_MODIFIED_ATTACK_COMPLEXITY_LOW",
        "NVD_MODIFIED_ATTACK_COMPLEXITY_NOT_DEFINED"
      ],
      "default": "NVD_MODIFIED_ATTACK_COMPLEXITY_UNSPECIFIED"
    },
    "v1NVDModifiedAttackVector": {
      "type": "string",
      "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"
      ],
      "default": "NVD_MODIFIED_ATTACK_VECTOR_UNSPECIFIED"
    },
    "v1NVDModifiedImpact": {
      "type": "string",
      "enum": [
        "NVD_MODIFIED_IMPACT_UNSPECIFIED",
        "NVD_MODIFIED_IMPACT_NONE",
        "NVD_MODIFIED_IMPACT_LOW",
        "NVD_MODIFIED_IMPACT_HIGH",
        "NVD_MODIFIED_IMPACT_NOT_DEFINED"
      ],
      "default": "NVD_MODIFIED_IMPACT_UNSPECIFIED"
    },
    "v1NVDModifiedPrivilegesRequired": {
      "type": "string",
      "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"
      ],
      "default": "NVD_MODIFIED_PRIVILEGES_REQUIRED_UNSPECIFIED"
    },
    "v1NVDModifiedScope": {
      "type": "string",
      "enum": [
        "NVD_MODIFIED_SCOPE_UNSPECIFIED",
        "NVD_MODIFIED_SCOPE_UNCHANGED",
        "NVD_MODIFIED_SCOPE_CHANGED",
        "NVD_MODIFIED_SCOPE_NOT_DEFINED"
      ],
      "default": "NVD_MODIFIED_SCOPE_UNSPECIFIED"
    },
    "v1NVDModifiedUserInteraction": {
      "type": "string",
      "enum": [
        "NVD_MODIFIED_USER_INTERACTION_UNSPECIFIED",
        "NVD_MODIFIED_USER_INTERACTION_NONE",
        "NVD_MODIFIED_USER_INTERACTION_REQUIRED",
        "NVD_MODIFIED_USER_INTERACTION_NOT_DEFINED"
      ],
      "default": "NVD_MODIFIED_USER_INTERACTION_UNSPECIFIED"
    },
    "v1NVDPrivilegesRequired": {
      "type": "string",
      "enum": [
        "NVD_PRIVILEGES_REQUIRED_UNSPECIFIED",
        "NVD_PRIVILEGES_REQUIRED_HIGH",
        "NVD_PRIVILEGES_REQUIRED_LOW",
        "NVD_PRIVILEGES_REQUIRED_NONE"
      ],
      "default": "NVD_PRIVILEGES_REQUIRED_UNSPECIFIED"
    },
    "v1NVDRemediationLevel": {
      "type": "string",
      "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"
      ],
      "default": "NVD_REMEDIATION_LEVEL_UNSPECIFIED"
    },
    "v1NVDReportConfidence": {
      "type": "string",
      "enum": [
        "NVD_REPORT_CONFIDENCE_UNSPECIFIED",
        "NVD_REPORT_CONFIDENCE_UNKNOWN",
        "NVD_REPORT_CONFIDENCE_REASONABLE",
        "NVD_REPORT_CONFIDENCE_CONFIRMED",
        "NVD_REPORT_CONFIDENCE_NOT_DEFINED"
      ],
      "default": "NVD_REPORT_CONFIDENCE_UNSPECIFIED"
    },
    "v1NVDRequirement": {
      "type": "string",
      "enum": [
        "NVD_REQUIREMENT_UNSPECIFIED",
        "NVD_REQUIREMENT_LOW",
        "NVD_REQUIREMENT_MEDIUM",
        "NVD_REQUIREMENT_HIGH",
        "NVD_REQUIREMENT_NOT_DEFINED"
      ],
      "default": "NVD_REQUIREMENT_UNSPECIFIED"
    },
    "v1NVDScope": {
      "type": "string",
      "enum": [
        "NVD_SCOPE_UNSPECIFIED",
        "NVD_SCOPE_UNCHANGED",
        "NVD_SCOPE_CHANGED"
      ],
      "default": "NVD_SCOPE_UNSPECIFIED"
    },
    "v1NVDSeverity": {
      "type": "string",
      "enum": [
        "NVD_SEVERITY_UNSPECIFIED",
        "NVD_SEVERITY_NONE",
        "NVD_SEVERITY_LOW",
        "NVD_SEVERITY_MEDIUM",
        "NVD_SEVERITY_HIGH",
        "NVD_SEVERITY_CRITICAL"
      ],
      "default": "NVD_SEVERITY_UNSPECIFIED"
    },
    "v1NVDStatus": {
      "type": "string",
      "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"
      ],
      "default": "NVD_STATUS_UNSPECIFIED"
    },
    "v1NVDUserInteraction": {
      "type": "string",
      "enum": [
        "NVD_USER_INTERACTION_UNSPECIFIED",
        "NVD_USER_INTERACTION_NONE",
        "NVD_USER_INTERACTION_REQUIRED"
      ],
      "default": "NVD_USER_INTERACTION_UNSPECIFIED"
    },
    "v1NVDV40AttackComplexity": {
      "type": "string",
      "enum": [
        "NVDV40_ATTACK_COMPLEXITY_UNSPECIFIED",
        "NVDV40_ATTACK_COMPLEXITY_HIGH",
        "NVDV40_ATTACK_COMPLEXITY_LOW"
      ],
      "default": "NVDV40_ATTACK_COMPLEXITY_UNSPECIFIED"
    },
    "v1NVDV40AttackRequirements": {
      "type": "string",
      "enum": [
        "NVDV40_ATTACK_REQUIREMENTS_UNSPECIFIED",
        "NVDV40_ATTACK_REQUIREMENTS_NONE",
        "NVDV40_ATTACK_REQUIREMENTS_PRESENT"
      ],
      "default": "NVDV40_ATTACK_REQUIREMENTS_UNSPECIFIED"
    },
    "v1NVDV40AttackVector": {
      "type": "string",
      "enum": [
        "NVDV40_ATTACK_VECTOR_UNSPECIFIED",
        "NVDV40_ATTACK_VECTOR_NETWORK",
        "NVDV40_ATTACK_VECTOR_ADJACENT",
        "NVDV40_ATTACK_VECTOR_LOCAL",
        "NVDV40_ATTACK_VECTOR_PHYSICAL"
      ],
      "default": "NVDV40_ATTACK_VECTOR_UNSPECIFIED"
    },
    "v1NVDV40Automatable": {
      "type": "string",
      "enum": [
        "NVDV40_AUTOMATABLE_UNSPECIFIED",
        "NVDV40_AUTOMATABLE_NO",
        "NVDV40_AUTOMATABLE_YES",
        "NVDV40_AUTOMATABLE_NOT_DEFINED"
      ],
      "default": "NVDV40_AUTOMATABLE_UNSPECIFIED"
    },
    "v1NVDV40ExploitMaturity": {
      "type": "string",
      "enum": [
        "NVDV40_EXPLOIT_MATURITY_UNSPECIFIED",
        "NVDV40_EXPLOIT_MATURITY_UNREPORTED",
        "NVDV40_EXPLOIT_MATURITY_PROOF_OF_CONCEPT",
        "NVDV40_EXPLOIT_MATURITY_ATTACKED",
        "NVDV40_EXPLOIT_MATURITY_NOT_DEFINED"
      ],
      "default": "NVDV40_EXPLOIT_MATURITY_UNSPECIFIED"
    },
    "v1NVDV40Impact": {
      "type": "string",
      "enum": [
        "NVDV40_IMPACT_UNSPECIFIED",
        "NVDV40_IMPACT_NONE",
        "NVDV40_IMPACT_LOW",
        "NVDV40_IMPACT_HIGH"
      ],
      "default": "NVDV40_IMPACT_UNSPECIFIED"
    },
    "v1NVDV40ModifiedAttackComplexity": {
      "type": "string",
      "enum": [
        "NVDV40_MODIFIED_ATTACK_COMPLEXITY_UNSPECIFIED",
        "NVDV40_MODIFIED_ATTACK_COMPLEXITY_HIGH",
        "NVDV40_MODIFIED_ATTACK_COMPLEXITY_LOW",
        "NVDV40_MODIFIED_ATTACK_COMPLEXITY_NOT_DEFINED"
      ],
      "default": "NVDV40_MODIFIED_ATTACK_COMPLEXITY_UNSPECIFIED"
    },
    "v1NVDV40ModifiedAttackRequirements": {
      "type": "string",
      "enum": [
        "NVDV40_MODIFIED_ATTACK_REQUIREMENTS_UNSPECIFIED",
        "NVDV40_MODIFIED_ATTACK_REQUIREMENTS_NONE",
        "NVDV40_MODIFIED_ATTACK_REQUIREMENTS_PRESENT",
        "NVDV40_MODIFIED_ATTACK_REQUIREMENTS_NOT_DEFINED"
      ],
      "default": "NVDV40_MODIFIED_ATTACK_REQUIREMENTS_UNSPECIFIED"
    },
    "v1NVDV40ModifiedAttackVector": {
      "type": "string",
      "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"
      ],
      "default": "NVDV40_MODIFIED_ATTACK_VECTOR_UNSPECIFIED"
    },
    "v1NVDV40ModifiedImpact": {
      "type": "string",
      "enum": [
        "NVDV40_MODIFIED_IMPACT_UNSPECIFIED",
        "NVDV40_MODIFIED_IMPACT_NONE",
        "NVDV40_MODIFIED_IMPACT_LOW",
        "NVDV40_MODIFIED_IMPACT_HIGH",
        "NVDV40_MODIFIED_IMPACT_NOT_DEFINED"
      ],
      "default": "NVDV40_MODIFIED_IMPACT_UNSPECIFIED"
    },
    "v1NVDV40ModifiedPrivilegesRequired": {
      "type": "string",
      "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"
      ],
      "default": "NVDV40_MODIFIED_PRIVILEGES_REQUIRED_UNSPECIFIED"
    },
    "v1NVDV40ModifiedSubImpact": {
      "type": "string",
      "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"
      ],
      "default": "NVDV40_MODIFIED_SUB_IMPACT_UNSPECIFIED"
    },
    "v1NVDV40ModifiedUserInteraction": {
      "type": "string",
      "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"
      ],
      "default": "NVDV40_MODIFIED_USER_INTERACTION_UNSPECIFIED"
    },
    "v1NVDV40PrivilegesRequired": {
      "type": "string",
      "enum": [
        "NVDV40_PRIVILEGES_REQUIRED_UNSPECIFIED",
        "NVDV40_PRIVILEGES_REQUIRED_HIGH",
        "NVDV40_PRIVILEGES_REQUIRED_LOW",
        "NVDV40_PRIVILEGES_REQUIRED_NONE"
      ],
      "default": "NVDV40_PRIVILEGES_REQUIRED_UNSPECIFIED"
    },
    "v1NVDV40ProviderUrgency": {
      "type": "string",
      "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"
      ],
      "default": "NVDV40_PROVIDER_URGENCY_UNSPECIFIED"
    },
    "v1NVDV40Recovery": {
      "type": "string",
      "enum": [
        "NVDV40_RECOVERY_UNSPECIFIED",
        "NVDV40_RECOVERY_AUTOMATIC",
        "NVDV40_RECOVERY_USER",
        "NVDV40_RECOVERY_IRRECOVERABLE",
        "NVDV40_RECOVERY_NOT_DEFINED"
      ],
      "default": "NVDV40_RECOVERY_UNSPECIFIED"
    },
    "v1NVDV40Requirement": {
      "type": "string",
      "enum": [
        "NVDV40_REQUIREMENT_UNSPECIFIED",
        "NVDV40_REQUIREMENT_LOW",
        "NVDV40_REQUIREMENT_MEDIUM",
        "NVDV40_REQUIREMENT_HIGH",
        "NVDV40_REQUIREMENT_NOT_DEFINED"
      ],
      "default": "NVDV40_REQUIREMENT_UNSPECIFIED"
    },
    "v1NVDV40Safety": {
      "type": "string",
      "enum": [
        "NVDV40_SAFETY_UNSPECIFIED",
        "NVDV40_SAFETY_NEGLIGIBLE",
        "NVDV40_SAFETY_PRESENT",
        "NVDV40_SAFETY_NOT_DEFINED"
      ],
      "default": "NVDV40_SAFETY_UNSPECIFIED"
    },
    "v1NVDV40UserInteraction": {
      "type": "string",
      "enum": [
        "NVDV40_USER_INTERACTION_UNSPECIFIED",
        "NVDV40_USER_INTERACTION_NONE",
        "NVDV40_USER_INTERACTION_PASSIVE",
        "NVDV40_USER_INTERACTION_ACTIVE"
      ],
      "default": "NVDV40_USER_INTERACTION_UNSPECIFIED"
    },
    "v1NVDV40ValueDensity": {
      "type": "string",
      "enum": [
        "NVDV40_VALUE_DENSITY_UNSPECIFIED",
        "NVDV40_VALUE_DENSITY_DIFFUSE",
        "NVDV40_VALUE_DENSITY_CONCENTRATED",
        "NVDV40_VALUE_DENSITY_NOT_DEFINED"
      ],
      "default": "NVDV40_VALUE_DENSITY_UNSPECIFIED"
    },
    "v1NVDV40VulnerabilityResponseEffort": {
      "type": "string",
      "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"
      ],
      "default": "NVDV40_VULNERABILITY_RESPONSE_EFFORT_UNSPECIFIED"
    },
    "v1NVDVulnerability": {
      "type": "object",
      "properties": {
        "cve": {
          "$ref": "#/definitions/NVDVulnerabilityRootCve"
        }
      },
      "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."
    },
    "v1Namespace": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a namespace.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespaces are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1NamespaceSpec"
        }
      },
      "description": "Namespace provides a mechanism for isolating groups of resources.\nNamespaces may be defined in a parent child hierarchy.",
      "required": [
        "meta"
      ]
    },
    "v1NamespaceSpec": {
      "type": "object",
      "properties": {
        "full_name": {
          "type": "string",
          "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
        },
        "managed": {
          "type": "boolean",
          "description": "Managed indicates that the object is managed by the system."
        }
      }
    },
    "v1Notification": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a notification.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Notifications are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1NotificationSpec"
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Notification context originates from the results of an endorctl scan.\nIt may include details such as CI run ID or project reference."
        }
      },
      "description": "The record created when there is a policy violation.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1NotificationActionData": {
      "type": "object",
      "properties": {
        "open_action_complete": {
          "type": "boolean",
          "description": "The value is true when action related to opening a new notification action is successfully executed."
        },
        "update_action_complete": {
          "type": "boolean",
          "description": "The value is true when action related to updating an existing notification is successfully executed."
        },
        "resolve_action_complete": {
          "type": "boolean",
          "description": "The value is true when action related to resolving an notification is successfully executed."
        },
        "metadata": {
          "$ref": "#/definitions/v1NotificationActionDataMetadata",
          "description": "Stores notification target specific data.\nFor example, the JIRA issue or task ID raised for the notification."
        },
        "error_status": {
          "type": "string",
          "description": "Error provided by the notification action."
        },
        "is_ignored": {
          "type": "boolean",
          "description": "Is the notification ignored by the plugin."
        },
        "notification_target_type": {
          "$ref": "#/definitions/NotificationTargetActionActionType",
          "description": "Defines the type of notification target."
        },
        "retry_count": {
          "type": "integer",
          "format": "int64",
          "description": "Number of times the action has been retried after failure."
        },
        "last_failed_at": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp of the last failed action attempt, used for exponential backoff."
        }
      }
    },
    "v1NotificationActionDataMetadata": {
      "type": "object",
      "properties": {
        "data": {
          "$ref": "#/definitions/googleprotobufAny"
        }
      }
    },
    "v1NotificationActionResponse": {
      "type": "object",
      "properties": {
        "result": {
          "$ref": "#/definitions/v1NotificationActionDataMetadata"
        }
      }
    },
    "v1NotificationActionSpec": {
      "type": "object",
      "properties": {
        "notification": {
          "$ref": "#/definitions/v1Notification",
          "description": "The information about the violation."
        },
        "notification_target_uuid": {
          "type": "string",
          "description": "The UUID of the notification target which contains the action to be performed for the notification."
        },
        "operation": {
          "$ref": "#/definitions/v1NotificationPluginOperation",
          "description": "Operation can be OPEN, UPDATE or RESOLVE."
        }
      },
      "required": [
        "notification",
        "notification_target_uuid",
        "operation"
      ]
    },
    "v1NotificationDiff": {
      "type": "object",
      "properties": {
        "new_finding_uuids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "resolved_finding_uuids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "v1NotificationPayload": {
      "type": "object",
      "properties": {
        "policy_output": {
          "$ref": "#/definitions/v1PolicyOutput",
          "description": "policy_output is the output from policy evaluation."
        }
      }
    },
    "v1NotificationPluginOperation": {
      "type": "string",
      "enum": [
        "NOTIFICATION_PLUGIN_OPERATION_UNSPECIFIED",
        "NOTIFICATION_PLUGIN_OPERATION_OPEN",
        "NOTIFICATION_PLUGIN_OPERATION_UPDATE",
        "NOTIFICATION_PLUGIN_OPERATION_RESOLVE"
      ],
      "default": "NOTIFICATION_PLUGIN_OPERATION_UNSPECIFIED",
      "description": " - NOTIFICATION_PLUGIN_OPERATION_OPEN: Corresponds to creating a new notification.\n - NOTIFICATION_PLUGIN_OPERATION_UPDATE: Corresponds to updating an existing notification.\n - NOTIFICATION_PLUGIN_OPERATION_RESOLVE: Corresponds to resolving a notification."
    },
    "v1NotificationSpec": {
      "type": "object",
      "properties": {
        "state": {
          "$ref": "#/definitions/SpecNotificationState",
          "description": "Defines the current notification status."
        },
        "project_uuid": {
          "type": "string",
          "description": "The UUID of the project to which this notification belongs."
        },
        "policy_uuid": {
          "type": "string",
          "description": "The UUID of the policy to which this notification belongs.\nOptional.\nNotifications created directly from findings do not have policy_uuid."
        },
        "payload": {
          "$ref": "#/definitions/v1NotificationPayload",
          "description": "The notification payload. It is the output of policy evaluation."
        },
        "notification_action_data": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/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."
        },
        "hashsum": {
          "type": "string",
          "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
        },
        "last_seen_at": {
          "type": "string",
          "format": "date-time",
          "description": "The time when the notification was last raised."
        },
        "resolved_at": {
          "type": "string",
          "format": "date-time",
          "description": "The time when the notification was marked resolved."
        },
        "dismiss": {
          "$ref": "#/definitions/SpecNotificationDismiss"
        },
        "aggregation_details": {
          "$ref": "#/definitions/SpecAggregationDetails"
        },
        "diff": {
          "$ref": "#/definitions/v1NotificationDiff",
          "description": "The diff of the findings as compared to the previous state of the notification.\nRequired only for the UPDATE operation."
        },
        "policy_type": {
          "$ref": "#/definitions/PolicyPolicyType",
          "description": "The type of the policy that raised the notification."
        },
        "remediation_parameters": {
          "$ref": "#/definitions/v1RemediationParameters",
          "description": "The remediation parameters for the notification."
        },
        "finding_details": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/SpecFindingDetails"
          },
          "description": "The map of finding UUID to finding object."
        },
        "repository_version_uuid": {
          "type": "string",
          "description": "The UUID of the repository version to which this notification belongs."
        },
        "notification_external_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ids/keys of the tickets created by notification."
        }
      },
      "required": [
        "state",
        "project_uuid"
      ]
    },
    "v1NotificationTarget": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the notification target.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Notification Targets are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1NotificationTargetSpec",
          "description": "The project specification."
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates whether the object should be visible in the child namespaces or not."
        }
      },
      "description": "Indicates actions taken when a corresponding notification is raised.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1NotificationTargetSpec": {
      "type": "object",
      "properties": {
        "action": {
          "$ref": "#/definitions/NotificationTargetNotificationTargetAction"
        },
        "custom_template": {
          "$ref": "#/definitions/v1CustomTemplate",
          "description": "The custom template to be used for the notification.\nIf not available, the default template is used."
        }
      },
      "required": [
        "action"
      ]
    },
    "v1NugetSpec": {
      "type": "object",
      "properties": {
        "priority": {
          "type": "integer",
          "format": "int32",
          "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."
        },
        "url": {
          "type": "string",
          "description": "The URL of the registry that the NuGet package manager must use."
        },
        "user": {
          "type": "string",
          "description": "The username to use to access this repository."
        },
        "password": {
          "type": "string",
          "description": "An encrypted password that must be provided by the repository owner."
        }
      },
      "description": "NugetSpec represents a configuration for the NuGet package manager.",
      "required": [
        "priority"
      ]
    },
    "v1OAuthClientCredentialsAuthConfig": {
      "type": "object",
      "properties": {
        "auth_endpoint_url": {
          "type": "string",
          "description": "auth_endpoint_url is the OAuth token endpoint URL.\nIf not specified, defaults may be vendor-specific."
        },
        "client_id": {
          "type": "string",
          "description": "client_id is the OAuth client ID for authentication."
        },
        "client_secret": {
          "type": "string",
          "description": "client_secret is the OAuth client secret for authentication.\nThis field is handled securely and stored encrypted."
        }
      },
      "description": "OAuthClientCredentialsAuthConfig configures OAuth 2.0 client credentials authentication.",
      "required": [
        "client_id",
        "client_secret"
      ]
    },
    "v1OSSDependencyRequest": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the SBOM.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "SBOM are associated with a tenant and the tenant information must be provided."
        },
        "spec": {
          "$ref": "#/definitions/v1OSSDependencyRequestSpec",
          "description": "The specification of the project."
        }
      },
      "description": "Represents a request to create OSS dependencies in the system.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1OSSDependencyRequestSpec": {
      "type": "object",
      "properties": {
        "dependencies": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/BomDependency"
          },
          "description": "The list of dependencies to be created as OSS dependencies."
        }
      }
    },
    "v1OnPremScheduler": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the onprem scheduler.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Contains the namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OnPremSchedulerSpec",
          "description": "Spec is the internal specification of the object."
        }
      },
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "v1OnPremSchedulerSpec": {
      "type": "object",
      "properties": {
        "scheduler_config": {
          "$ref": "#/definitions/SpecSchedulerConfig",
          "description": "Scheduler config contains scheduler configuration."
        },
        "endorctl_config": {
          "$ref": "#/definitions/SpecEndorctlConfig",
          "description": "EndorctlConfig config contains endorctl configuration."
        },
        "api_credentials": {
          "$ref": "#/definitions/v1AuthMethodAPICredentials"
        },
        "gcp": {
          "$ref": "#/definitions/v1AuthMethodGCP"
        },
        "azure": {
          "$ref": "#/definitions/v1AuthMethodAzure"
        },
        "use_bazel_cache": {
          "type": "boolean",
          "description": "Enables bazel remote cache."
        },
        "connection_status": {
          "$ref": "#/definitions/SpecConnectionStatus",
          "description": "Contains the connection status to onprem cluster."
        },
        "helm_values": {
          "type": "string",
          "description": "Contains the base64 encoded helm values.yaml file.",
          "readOnly": true
        },
        "scheduler_version": {
          "type": "string",
          "description": "Contains the version of the scheduler."
        }
      }
    },
    "v1Onboard": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the resource.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OnboardSpec"
        }
      },
      "description": "Onboard initiates the onboarding of a new tenant in the system.",
      "required": [
        "spec"
      ]
    },
    "v1OnboardSpec": {
      "type": "object",
      "properties": {
        "tenant": {
          "$ref": "#/definitions/v1Tenant",
          "description": "Tenant information for the new tenant that needs to be created."
        },
        "user": {
          "$ref": "#/definitions/v1User",
          "description": "User information will be auto-populated from the authorization\ninformation. Users can always update their information later,\nif needed.",
          "readOnly": true
        },
        "invitation_uuid": {
          "type": "string",
          "description": "The UUID of an invitation.\nIn this case, a new tenant is not created, but the user joins\nthe tenant referred by the invitation."
        },
        "sr_created_by": {
          "type": "string",
          "description": "The email address of the person who created the service request.",
          "x-internal": true
        }
      }
    },
    "v1OpengrepSeverityLevel": {
      "type": "string",
      "enum": [
        "OPENGREP_SEVERITY_LEVEL_UNSPECIFIED",
        "OPENGREP_SEVERITY_LEVEL_INFO",
        "OPENGREP_SEVERITY_LEVEL_WARNING",
        "OPENGREP_SEVERITY_LEVEL_ERROR"
      ],
      "default": "OPENGREP_SEVERITY_LEVEL_UNSPECIFIED",
      "description": "OpengrepSeverityLevel is the minimum rule severity threshold for diff-based signals.\n\n - OPENGREP_SEVERITY_LEVEL_UNSPECIFIED: No severity level has been set; the signal uses its default threshold.\n - OPENGREP_SEVERITY_LEVEL_INFO: Report informational findings and above.\n - OPENGREP_SEVERITY_LEVEL_WARNING: Report warning findings and above.\n - OPENGREP_SEVERITY_LEVEL_ERROR: Report only error-level findings."
    },
    "v1OptimizedQuery": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The Tenant Metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata identifies the object."
        },
        "spec": {
          "$ref": "#/definitions/v1OptimizedQuerySpec"
        }
      },
      "description": "OptimizedQuery attempts to break queries into smaller queries\nbased on child namespaces so as to not hit mongodb limits.",
      "required": [
        "tenant_meta",
        "meta"
      ],
      "x-internal": true
    },
    "v1OptimizedQuerySpec": {
      "type": "object",
      "properties": {
        "query": {
          "$ref": "#/definitions/OptimizedQueryOptimizedQuerySpec",
          "description": "The actual query."
        },
        "query_response": {
          "$ref": "#/definitions/googleprotobufAny",
          "description": "Aggregates the results of the query.",
          "readOnly": true
        }
      }
    },
    "v1Organization": {
      "type": "object",
      "properties": {
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested organization object."
        }
      },
      "description": "The ingested information about an organization.",
      "required": [
        "ingested_object"
      ]
    },
    "v1OrganizationAccess": {
      "type": "object",
      "properties": {
        "verified": {
          "type": "boolean",
          "description": "Organization is verified."
        },
        "mfa_external": {
          "type": "boolean",
          "description": "Multi-factor authentication is required for external contributors."
        },
        "mfa_internal": {
          "type": "boolean",
          "description": "Multi-factor authentication is required for internal contributors."
        },
        "allow_public_repo_create": {
          "type": "boolean",
          "description": "Allows members to create public repositories."
        },
        "allow_private_repo_create": {
          "type": "boolean",
          "description": "Allows members to create private repositories."
        },
        "allow_internal_repo_create": {
          "type": "boolean",
          "description": "Allows members to create internal repositories."
        },
        "allow_private_repo_fork": {
          "type": "boolean",
          "description": "Allows members to fork private repositories."
        },
        "repo_get_permission": {
          "type": "string",
          "description": "Default permission required to run GET queries on repository.\nCan be one of: \"read\", \"write\", \"admin\", \"none\"."
        },
        "repo_edit_permission": {
          "type": "string",
          "description": "Default permission required to execute EDIT commands on repository.\nCan be one of: \"read\", \"write\", \"admin\", \"none\"."
        },
        "admins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of all organization administrator usernames."
        },
        "webhooks": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ScpmDataWebhook"
          },
          "description": "List of all organization webhooks."
        },
        "workflows_can_approve_prs": {
          "type": "boolean",
          "description": "Allows workflows to approve pull request reviews."
        },
        "default_workflow_permissions": {
          "type": "string",
          "description": "Default GITHUB_TOKEN permissions for workflows.\nCan be one of: \"read\", \"write\"."
        },
        "runner_group": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ScpmDataRunner"
          },
          "description": "List of all organization runners."
        },
        "action_policies": {
          "$ref": "#/definitions/v1ActionPolicies",
          "description": "List of all action policies."
        }
      },
      "description": "OrganizationAccess contains normalized organization access settings."
    },
    "v1OrganizationAllowedWorkflows": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an organization allowed workflows object.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "OrganizationAllowedWorkflows are associated to a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationAllowedWorkflowsSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw object ingested for the allowed workflows."
        }
      },
      "description": "Represents the information of allowed workflows of an organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1OrganizationAllowedWorkflowsSpec": {
      "type": "object"
    },
    "v1OrganizationBlockList": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an organization's block list.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Organization's block list is associated to a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationBlockListSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "Represents the information about the blocked user list of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1OrganizationBlockListSpec": {
      "type": "object"
    },
    "v1OrganizationCICDPermissions": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the CI/CD permissions object in a platform organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "OrganizationCICDPermissions is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationCICDPermissionsSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "Capture the permissions policy configuration for repositories.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1OrganizationCICDPermissionsSpec": {
      "type": "object"
    },
    "v1OrganizationCustomPermissionList": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the organization custom permission list.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Organization custom permission list is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationCustomPermissionListSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "Represents the ingested information about the custom fine grained permissions of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1OrganizationCustomPermissionListSpec": {
      "type": "object"
    },
    "v1OrganizationCustomRoleList": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a custom role list in an organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "OrganizationCustomRoleList is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationCustomRoleListSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "OrganizationCustomRoleList represents the information about a platform organization's custom roles.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1OrganizationCustomRoleListSpec": {
      "type": "object"
    },
    "v1OrganizationHook": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an organizatio hook.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Organization hooks are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationHookSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw object ingested from the webhook."
        }
      },
      "description": "OrganizationHook represents the information of hooks created for an organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1OrganizationHookSpec": {
      "type": "object",
      "properties": {
        "external_id": {
          "type": "string"
        }
      },
      "required": [
        "external_id"
      ]
    },
    "v1OrganizationInstallationList": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the installation informatoin of a platform organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "OrganizationInstallationList is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationInstallationListSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "OrganizationInstallationList represents the ingested information about the installation information of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1OrganizationInstallationListSpec": {
      "type": "object"
    },
    "v1OrganizationInvitationList": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an invitation list of a platform organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "OrganizationInvitationList is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationInvitationListSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "OrganizationInvitationList represents the ingested information about invitations of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1OrganizationInvitationListSpec": {
      "type": "object"
    },
    "v1OrganizationMemberList": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the member list of an organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "OrganizationMemberList is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationMemberListSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "OrganizationMemberList represents the ingested information about members of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1OrganizationMemberListSpec": {
      "type": "object"
    },
    "v1OrganizationOutsideCollaboratorList": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the outside collaborators list of a platform organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "OrganizationOutsideCollaboratorList is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationOutsideCollaboratorListSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "OrganizationOutsideCollaboratorList represents the ingested information about outside collaborators of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1OrganizationOutsideCollaboratorListSpec": {
      "type": "object"
    },
    "v1OrganizationRunnerGroupConfig": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the runner group configuration of a platform organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "OrganizationRunnerGroupConfig is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Meta required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationRunnerGroupConfigSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "OrganizationRunnerGroupConfig represents the ingested information about a self-hosted runner group configuration of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1OrganizationRunnerGroupConfigSpec": {
      "type": "object"
    },
    "v1OrganizationSecurityManagerList": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the security managers list of a platform organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "OrganizationSecurityManagerList is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationSecurityManagerListSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "OrganizationSecurityManagerList represents the ingested information about security managers of a platform organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1OrganizationSecurityManagerListSpec": {
      "type": "object"
    },
    "v1OrganizationWorkflowPermissions": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the workflow permissions of an organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "OrganizationWorkflowPermissions are associated wtih a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1OrganizationWorkflowPermissionsSpec",
          "description": "The internal specification of the object."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw object ingested for the workflow permissions."
        }
      },
      "description": "OrganizationWorkflowPermissions represents the information of workflow permissions for an organization.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1OrganizationWorkflowPermissionsSpec": {
      "type": "object"
    },
    "v1PHPToolChain": {
      "type": "object",
      "properties": {
        "version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        },
        "composer_version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        }
      },
      "required": [
        "version"
      ]
    },
    "v1PRCommentConfig": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a PR comment configuration.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "PR comment configurations are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "spec": {
          "$ref": "#/definitions/v1PRCommentConfigSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Whether the object should be visible in child namespaces or not."
        }
      },
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1PRCommentConfigSpec": {
      "type": "object",
      "properties": {
        "template": {
          "$ref": "#/definitions/v1PRCommentsTemplate",
          "description": "The Go template in text format to be used for the PR comments."
        },
        "platform_type": {
          "$ref": "#/definitions/v1PlatformSource",
          "description": "The platform type for this configuration (for example, GitHub or GitLab)."
        }
      },
      "required": [
        "template"
      ]
    },
    "v1PRCommentsTemplate": {
      "type": "object",
      "properties": {
        "findings_summary_template": {
          "type": "string",
          "description": "The template for the PR comment for summary of findings."
        }
      },
      "required": [
        "findings_summary_template"
      ]
    },
    "v1PackageFirewallAction": {
      "type": "string",
      "enum": [
        "PACKAGE_FIREWALL_ACTION_UNSPECIFIED",
        "PACKAGE_FIREWALL_ACTION_BLOCK",
        "PACKAGE_FIREWALL_ACTION_WARN",
        "PACKAGE_FIREWALL_ACTION_CURATED"
      ],
      "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."
    },
    "v1PackageFirewallLog": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the package firewall log.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace of the package firewall log."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageFirewallLogSpec",
          "description": "Resource kind specific data."
        }
      },
      "description": "PackageFirewallLog represents a package firewall audit event recording the\naction taken and the reason that triggered it.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1PackageFirewallLogSpec": {
      "type": "object",
      "properties": {
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "Ecosystem of the blocked package (npm, pypi, etc.)."
        },
        "package_name": {
          "type": "string",
          "description": "Name of the blocked package."
        },
        "package_version": {
          "type": "string",
          "description": "Version of the blocked package (if available)."
        },
        "request_type": {
          "type": "string",
          "description": "Type of request that was blocked (metadata, download, etc.)."
        },
        "block_reason": {
          "$ref": "#/definitions/v1BlockReason",
          "description": "Deprecated: use reason instead."
        },
        "malware_uuid": {
          "type": "string",
          "description": "UUID of detected malware (populated only when reason is MALWARE_DETECTED)."
        },
        "api_key_id": {
          "type": "string",
          "description": "API key ID used for the request (for audit purposes)."
        },
        "remote_address": {
          "type": "string",
          "description": "The remote IP address that made the request."
        },
        "request_uri": {
          "type": "string",
          "description": "URI of the request that was blocked."
        },
        "blocked_at": {
          "type": "string",
          "format": "date-time",
          "description": "Deprecated: use action_at instead."
        },
        "package_age_hours": {
          "type": "integer",
          "format": "int32",
          "description": "Age of package in hours (populated only when reason is MIN_AGE_NOT_MET)."
        },
        "reason": {
          "$ref": "#/definitions/v1PackageFirewallReason",
          "description": "Reason for the package firewall action (replaces block_reason)."
        },
        "action": {
          "$ref": "#/definitions/v1PackageFirewallAction",
          "description": "Action taken on the package (block or warn)."
        },
        "package_license": {
          "type": "string",
          "description": "License of the package (populated only when reason is RESTRICTED_LICENSE)."
        },
        "action_at": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when the firewall action (block or warn) occurred."
        },
        "cvss_severity_level": {
          "$ref": "#/definitions/SpecCVSSSeverityLevel",
          "description": "CVSS severity level of the detected vulnerability (populated only when reason is CVSS_SEVERITY_DETECTED)."
        },
        "cvss_vuln_uuid": {
          "type": "string",
          "description": "UUID of the Vuln object for the highest-severity vulnerability detected (populated only when reason is CVSS_SEVERITY_DETECTED)."
        },
        "api_key_name": {
          "type": "string",
          "title": "Human-readable name of the API key (APIKey.meta.name) used for the request"
        },
        "user": {
          "type": "string",
          "description": "Client-supplied user attribution decoded from the Basic-auth username (e.g. user/machine); free-form and unverified."
        },
        "filtered_versions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/PackageFirewallLogFilteredVersion"
          },
          "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."
        }
      },
      "required": [
        "ecosystem",
        "package_name"
      ]
    },
    "v1PackageFirewallReason": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "v1PackageLicense": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the package license.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The tenant metadata of the package license."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "The metadata of the package license."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageLicenseSpec",
          "description": "The specification of the package license."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Contexts keep objects from different scans separated."
        }
      },
      "required": [
        "tenant_meta",
        "meta",
        "spec",
        "context"
      ]
    },
    "v1PackageLicenseInfo": {
      "type": "object",
      "properties": {
        "license_description": {
          "type": "string",
          "description": "Raw license description as found, for example in package managers.\nIt is free form text that may not contain a valid SPDX ID."
        },
        "spdx_id": {
          "type": "string",
          "description": "Normalized SPDX id if known."
        },
        "mapping_info": {
          "$ref": "#/definitions/PackageLicenseInfoLicenseInfoMapping",
          "description": "Additional context about the raw license description."
        },
        "type": {
          "type": "string",
          "description": "License classification (based on licenseclassifier by Google)."
        },
        "url": {
          "type": "string",
          "description": "The URL that points to the license description."
        },
        "file_name": {
          "type": "string",
          "description": "The name of the file where the license was found."
        },
        "file_location": {
          "type": "integer",
          "format": "int32",
          "description": "The line in the file where the license text begins."
        },
        "matched_text": {
          "type": "string",
          "description": "The license text that was matched."
        },
        "spdx_expr": {
          "type": "string",
          "description": "SPDX expression for the license."
        },
        "notices_file": {
          "type": "boolean",
          "description": "True if it is a notices file identified by name."
        },
        "confidence": {
          "type": "number",
          "format": "float",
          "description": "The confidence in the license match."
        },
        "llm": {
          "type": "string",
          "description": "The LLM used to identify the license, if applicable.\nIf no LLM was used, then this will be empty."
        },
        "copyrights": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Copyrights within the license text."
        },
        "hash": {
          "type": "string",
          "description": "Hash should only be set if matched_text is empty."
        },
        "additional_files": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "Other files that contain the same license, mapped to line number."
        }
      },
      "required": [
        "license_description"
      ]
    },
    "v1PackageLicenseOverride": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the package license override.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Tenant metadata."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageLicenseOverrideSpec",
          "description": "The specification of the package license override."
        },
        "propagate": {
          "type": "boolean",
          "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)."
        }
      },
      "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.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "v1PackageLicenseOverrideSpec": {
      "type": "object",
      "properties": {
        "license_overrides": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/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)."
        },
        "copyright_overrides": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/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-\"."
        },
        "notice_overrides": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/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-\""
        },
        "deselected_licenses": {
          "type": "object",
          "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)."
        },
        "deselected_copyrights": {
          "type": "object",
          "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)."
        },
        "deselected_notices": {
          "type": "object",
          "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)."
        },
        "package_version_uuid": {
          "type": "string",
          "description": "The UUID of the package version this override is for."
        }
      },
      "required": [
        "package_version_uuid"
      ]
    },
    "v1PackageLicenseQuery": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The uuid of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "title": "tenant metadata"
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "title": "metadata"
        },
        "spec": {
          "$ref": "#/definitions/v1PackageLicenseQuerySpec"
        }
      },
      "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."
    },
    "v1PackageLicenseQuerySpec": {
      "type": "object",
      "properties": {
        "package_version_uuid": {
          "type": "string",
          "description": "UUID of the package version this data is for."
        },
        "licenses": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/PackageLicenseQueryMergedLicenseEntry"
          },
          "description": "Merged license entries (combines original + overrides).\nEach entry includes the license data, selection state, and edit status.",
          "readOnly": true
        },
        "copyrights": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/PackageLicenseQueryMergedCopyrightEntry"
          },
          "description": "Merged copyright entries (combines original + overrides).\nEach entry includes the copyright text, selection state, and edit status.",
          "readOnly": true
        },
        "notices": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/PackageLicenseQueryMergedNoticeEntry"
          },
          "description": "Merged notice entries (combines original + overrides).\nEach entry includes the notice text, selection state, and edit status.",
          "readOnly": true
        },
        "applied_overrides": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/PackageLicenseQueryAppliedOverride"
          },
          "readOnly": true
        },
        "package_license_name": {
          "type": "string",
          "description": "Name of the base PackageLicense to use. If not given, then we use package_version_uuid."
        }
      },
      "required": [
        "package_version_uuid"
      ]
    },
    "v1PackageLicenseSpec": {
      "type": "object",
      "properties": {
        "code_licenses": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PackageLicenseInfo"
          },
          "description": "The discovered licenses found in the source code."
        },
        "package_manager_licenses": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PackageLicenseInfo"
          },
          "description": "The licenses from the package manager."
        },
        "copyrights": {
          "type": "object",
          "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."
        },
        "declared_code_licenses": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PackageLicenseInfo"
          },
          "description": "The declared licenses found in the source code."
        },
        "license_text": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of sha256 to license text."
        },
        "all_licenses": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PackageLicenseInfo"
          },
          "description": "All the licenses found by Endor Labs."
        },
        "project_uuid": {
          "type": "string",
          "description": "UUID of the project that the package license relates to."
        },
        "version": {
          "$ref": "#/definitions/v1Version",
          "description": "The ref of the source code repository from which this package license\nwas created."
        }
      }
    },
    "v1PackageManager": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the package manager.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Git repositories are associated tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageManagerSpec",
          "description": "Specification of the package manager."
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagate indicates that the object should be visible in child namespaces."
        }
      },
      "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.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1PackageManagerSpec": {
      "type": "object",
      "properties": {
        "auth_provider": {
          "$ref": "#/definitions/PackageManagerAuthProvider",
          "description": "AuthProvider is the authentication provider for the package manager\nthat must be used."
        },
        "npm": {
          "$ref": "#/definitions/v1NPMSpec"
        },
        "mvn": {
          "$ref": "#/definitions/v1MavenSpec"
        },
        "cargo": {
          "$ref": "#/definitions/v1CargoSpec"
        },
        "pypi": {
          "$ref": "#/definitions/v1PypiSpec"
        },
        "gem": {
          "$ref": "#/definitions/v1GemSpec"
        },
        "nuget": {
          "$ref": "#/definitions/v1NugetSpec"
        },
        "packagist": {
          "$ref": "#/definitions/v1PackagistSpec"
        },
        "gradle": {
          "$ref": "#/definitions/v1GradleSpec"
        },
        "cocoapod": {
          "$ref": "#/definitions/v1CocoapodSpec"
        },
        "swift": {
          "$ref": "#/definitions/v1SwiftSpec"
        },
        "conan": {
          "$ref": "#/definitions/v1ConanSpec"
        },
        "package_manager_status": {
          "$ref": "#/definitions/SpecPackageManagerStatus"
        }
      }
    },
    "v1PackageSpec": {
      "type": "object",
      "properties": {
        "registry_url": {
          "type": "string",
          "description": "The URL to the registry of the package.\nFor example, for Maven central, https://repo.maven.apache.org/maven2.\nFor a local repository, https://myrepo.\nWhen not provided, we assume the default public repository for each\npackage manager.",
          "x-endor-name": "Package Repository URL"
        },
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "Dependency ecosystem.",
          "readOnly": true,
          "x-endor-name": "Ecosystem"
        }
      }
    },
    "v1PackageVersion": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the package version resource.",
          "readOnly": true,
          "x-endor-name": "Package Version UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "PackageVersions are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageVersionSpec"
        },
        "processing_status": {
          "$ref": "#/definitions/v1ProcessingStatus"
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "PackageVersion represents a version of a package.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "v1PackageVersionDependency": {
      "type": "object",
      "properties": {
        "maven": {
          "$ref": "#/definitions/PackageVersionDependencyMavenDependencySpec"
        },
        "go": {
          "$ref": "#/definitions/PackageVersionDependencyGoDependencySpec"
        },
        "cargo": {
          "$ref": "#/definitions/PackageVersionDependencyCargoDependencySpec"
        },
        "pypi": {
          "$ref": "#/definitions/PackageVersionDependencyPypiDependencySpec"
        },
        "npm": {
          "$ref": "#/definitions/PackageVersionDependencyNpmDependencySpec"
        },
        "gem": {
          "$ref": "#/definitions/PackageVersionDependencyGemDependencySpec"
        },
        "nuget": {
          "$ref": "#/definitions/PackageVersionDependencyNugetDependencySpec"
        },
        "packagist": {
          "$ref": "#/definitions/PackageVersionDependencyPackagistDependencySpec"
        },
        "githubaction": {
          "$ref": "#/definitions/PackageVersionDependencyGitHubActionDependencySpec"
        },
        "cocoapod": {
          "$ref": "#/definitions/PackageVersionDependencyCocoapodDependencySpec"
        },
        "hugging_face": {
          "$ref": "#/definitions/PackageVersionDependencyHuggingFaceDependencySpec"
        },
        "c": {
          "$ref": "#/definitions/PackageVersionDependencyUnresolvedDependencySpec"
        },
        "swift": {
          "$ref": "#/definitions/PackageVersionDependencySwiftDependencySpec"
        },
        "conan": {
          "$ref": "#/definitions/PackageVersionDependencyConanDependencySpec"
        }
      },
      "description": "PackageVersionDependency is a dependency of a package version."
    },
    "v1PackageVersionLicenseQuery": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the query and makes the object compatible with the system.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Package version license is associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageVersionLicenseQuerySpec"
        }
      },
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1PackageVersionLicenseQueryRequest": {
      "type": "object",
      "properties": {
        "package_version_name": {
          "type": "string",
          "description": "The fully qualified package name must be always provided."
        },
        "license_source": {
          "$ref": "#/definitions/v1LicenseSource",
          "description": "Indicates that license for this package version were found.",
          "readOnly": true
        },
        "license_data": {
          "$ref": "#/definitions/v1LicenseData",
          "description": "It has the information about the license for the package version from the metrics collection and package version metadata.",
          "readOnly": true
        }
      },
      "required": [
        "package_version_name"
      ]
    },
    "v1PackageVersionLicenseQuerySpec": {
      "type": "object",
      "properties": {
        "requests": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PackageVersionLicenseQueryRequest"
          },
          "description": "Caller can issue multiple requests (up to 32)."
        }
      },
      "required": [
        "requests"
      ]
    },
    "v1PackageVersionMetadata": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the package version metadata.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "PackageVersions are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageVersionMetadataSpec"
        }
      },
      "description": "PackageVersionMetadata represents a metadata for a package version.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1PackageVersionMetadataQuery": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the query and makes the object compatible with the system.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Queries are supported only in the open source ecosystem."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageVersionMetadataQuerySpec"
        }
      },
      "description": "PackageVersionMetadataQuery identifies the origin and metadata\nof a package or package version from the OSS ecosystems.\nThe query accepts as input the name of the package with an optional\nversion and identifies whether the package can be found in the open\nsource ecosystem, the associated versions and release dates and\nsource code references.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1PackageVersionMetadataQueryRequest": {
      "type": "object",
      "properties": {
        "package_name": {
          "type": "string",
          "description": "The package name must be always provided."
        },
        "version": {
          "type": "string",
          "description": "If a version is provided, the query returns the details\nof the specific version (including source code reference and release date).\nIf the version is not provided, the query will return a list\nof all versions known."
        },
        "found": {
          "type": "boolean",
          "description": "Indicates that details for this package version were found.",
          "readOnly": true
        },
        "version_metadata": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/endorv1VersionMetadata"
          },
          "description": "The version metadata output.",
          "readOnly": true
        }
      },
      "required": [
        "package_name"
      ]
    },
    "v1PackageVersionMetadataQuerySpec": {
      "type": "object",
      "properties": {
        "requests": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PackageVersionMetadataQueryRequest"
          },
          "description": "Caller can issue multiple requests (up to 32)."
        }
      },
      "required": [
        "requests"
      ]
    },
    "v1PackageVersionMetadataSpec": {
      "type": "object",
      "properties": {
        "versions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/endorv1VersionMetadata"
          }
        },
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "Dependency ecosystem."
        },
        "last_updated": {
          "type": "string",
          "format": "date-time",
          "description": "The last time that this entry was updated."
        }
      },
      "required": [
        "versions",
        "ecosystem"
      ]
    },
    "v1PackageVersionSourceMetadata": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the package version source metadata.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "PackageVersionSourceMetadata are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects.\nmeta.name is the package version name.\nFor example, for the Java ecosystem, it is mvn://com.google.guava:guava@30.1-jre.\nParent kind is empty for PackageVersionSourceMetadata."
        },
        "spec": {
          "$ref": "#/definitions/v1PackageVersionSourceMetadataSpec"
        }
      },
      "description": "PackageVersionSourceMetadata contains source code information for a PackageVersion.\nFor example, for the Java ecosystem this contains details such as checksum values of the artifact,\nlist of class files, and their corresponding checksums and import statements found.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1PackageVersionSourceMetadataSpec": {
      "type": "object",
      "properties": {
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem"
        },
        "artifact": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Artifact"
          },
          "description": "Name and checksum of the artifact for the package version, used to verify data integrity.\nFor the same package version, certain ecosystems may chose to publish multiple types of\nartifact. For example, for Java we can have jar and war."
        },
        "jvm": {
          "$ref": "#/definitions/v1JVMSourceMeta",
          "description": "For now only maintained for Java resources."
        },
        "last_modified_time": {
          "type": "string",
          "format": "date-time",
          "description": "time when artifact was uploaded."
        },
        "is_reconciled": {
          "type": "boolean",
          "description": "True indicates the GAV package data has been reconciled to distinguish rebundled vs application code."
        }
      },
      "required": [
        "ecosystem",
        "artifact"
      ]
    },
    "v1PackageVersionSpec": {
      "type": "object",
      "properties": {
        "project_uuid": {
          "type": "string",
          "description": "The UUID of the project to which this package version belongs.",
          "x-endor-name": "Project UUID"
        },
        "source_code_reference": {
          "$ref": "#/definitions/PackageVersionSourceCodeReference",
          "description": "The ref information of the source code repository from which this package\nwas created.",
          "x-endor-name": "Package Version Ref"
        },
        "release_timestamp": {
          "type": "string",
          "format": "date-time",
          "description": "The release timestamp corresponding to the time a particular package\nversion was released.",
          "x-endor-name": "Release Time"
        },
        "unresolved_dependencies": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PackageVersionDependency"
          },
          "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."
        },
        "resolved_dependencies": {
          "$ref": "#/definitions/v1Bom",
          "description": "A graph of resolved dependencies.\nA resolution takes as input the dependencies in a package manager\ndescriptor and resolves the latest version satisfying version and other\nconstraints."
        },
        "resolution_errors": {
          "$ref": "#/definitions/PackageVersionResolutionErrors",
          "description": "Captures any errors during dependency resolution.\nSee also call_graph_available."
        },
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "Dependency ecosystem.",
          "readOnly": true,
          "x-endor-name": "Ecosystem"
        },
        "package_name": {
          "type": "string",
          "description": "The name of the package of this package version. It is\ncalculated automatically from the package version name.",
          "readOnly": true
        },
        "language": {
          "$ref": "#/definitions/v1Language",
          "description": "Language of the package_version."
        },
        "relative_path": {
          "type": "string",
          "description": "Relative path of the package from where the package was discovered\nrelative to the workspace root."
        },
        "container_metadata": {
          "$ref": "#/definitions/v1ContainerMetadata",
          "description": "The metadata of the container image."
        },
        "bazel_metadata": {
          "$ref": "#/definitions/v1BazelMetadata",
          "description": "The metadata of the bazel target."
        },
        "code_owners": {
          "$ref": "#/definitions/v1CodeOwnerData",
          "description": "Code owner data for the package. See also relative_path."
        },
        "call_graph_available": {
          "type": "boolean",
          "description": "Set to true if a call graph was successfully created by the latest scan."
        },
        "internal_reference_key": {
          "type": "string",
          "description": "Unique key for the package generated by Endor Labs to simplify lookups.",
          "readOnly": true
        },
        "precomputed_call_graph_state": {
          "$ref": "#/definitions/v1PrecomputedState",
          "description": "The state of the precomputed callgraph."
        }
      },
      "required": [
        "project_uuid"
      ]
    },
    "v1PackagistSpec": {
      "type": "object",
      "properties": {
        "auth_kind": {
          "$ref": "#/definitions/PackagistSpecAuthKind"
        },
        "host": {
          "type": "string",
          "description": "The host name of the registry or repository where the PHP packages are\nhosted."
        },
        "user": {
          "type": "string",
          "description": "The user name to use to access the given host."
        },
        "password": {
          "type": "string",
          "description": "An encrypted password that must be provided by the repository owner."
        }
      },
      "description": "Represents a configuration for the Packagist(PHP) package manager.",
      "required": [
        "auth_kind"
      ]
    },
    "v1PatRequiredOrg": {
      "type": "object",
      "properties": {
        "host_url": {
          "type": "string",
          "description": "The org/scope-level host URL produced by DeriveOrgHostURL — treat as an\nopaque URL, not a bare org identifier."
        },
        "platform_source": {
          "$ref": "#/definitions/v1PlatformSource",
          "description": "The SCM platform that owns this org."
        }
      },
      "description": "PatRequiredOrg identifies a source-code-host org that still needs a PAT-based\ncontributor scan, together with the SCM platform that owns it. The platform\nsource cannot be inferred from host_url alone for on-prem instances (e.g. a\nself-hosted host could be GitLab, Bitbucket Data Center, or a generic git\nserver), so consumers receive it explicitly here.",
      "required": [
        "host_url",
        "platform_source"
      ]
    },
    "v1Permissions": {
      "type": "object",
      "properties": {
        "rules": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/PermissionsMethods"
          },
          "title": "For message (or resource) repository, I want to provide permissions READ\nonly. This will create map[\"repository\"] = []{READ}"
        },
        "roles": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1SystemRole"
          }
        },
        "except_resources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of resources that should not be accounted in any * resource rules."
        }
      },
      "description": "Holds a map associating each resource kind with the\n set of methods that are allowed for this kind.\n\n For example:"
    },
    "v1PlatformAccount": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a platform account.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Platform accounts are associated with a tenant.\nPublic accounts will be under a public tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PlatformAccountSpec",
          "description": "The details of the platform account."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "PlatformAccount represents an account of a user to third-party site like GitHub/Gitlab or some package platform.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1PlatformAccountSpec": {
      "type": "object",
      "properties": {
        "platform_source": {
          "$ref": "#/definitions/v1PlatformSource",
          "description": "The platform where this platform account was discovered."
        },
        "external_id": {
          "type": "string",
          "description": "The ID of the platform account in the orginal platform."
        },
        "name": {
          "type": "string",
          "description": "The name of the platform account."
        },
        "email": {
          "type": "string",
          "description": "The email of the platform account."
        },
        "create_time": {
          "type": "string",
          "format": "date-time",
          "description": "Create time of the platform account."
        },
        "update_time": {
          "type": "string",
          "format": "date-time",
          "description": "Update time of the platform account."
        }
      },
      "required": [
        "platform_source",
        "external_id"
      ]
    },
    "v1PlatformOrganization": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the platform organization.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Platform organizations are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PlatformOrganizationSpec",
          "description": "The specification of the platform organization."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "PlatformOrganization represents an organization on a third party site like Github/Gitlab or some package platform.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1PlatformOrganizationSpec": {
      "type": "object",
      "properties": {
        "platform_source": {
          "$ref": "#/definitions/v1PlatformSource",
          "description": "The platform where this platform organization was discovered."
        },
        "external_id": {
          "type": "string",
          "description": "The ID of the platform organization in the orginal platform."
        },
        "name": {
          "type": "string",
          "description": "The name of the platform organization."
        },
        "email": {
          "type": "string",
          "description": "The email of the platform organization."
        },
        "create_time": {
          "type": "string",
          "format": "date-time",
          "description": "Create time of the platform organization."
        },
        "update_time": {
          "type": "string",
          "format": "date-time",
          "description": "Update time of the platform organization."
        }
      },
      "required": [
        "platform_source",
        "external_id"
      ]
    },
    "v1PlatformSource": {
      "type": "string",
      "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"
      ],
      "default": "PLATFORM_SOURCE_UNSPECIFIED",
      "description": "Type of source control platform a resource was discovered on."
    },
    "v1PluginBinary": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the plugin binary.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PluginBinarySpec"
        }
      },
      "required": [
        "meta"
      ]
    },
    "v1PluginBinarySpec": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string",
          "description": "The version of the plugin binary."
        },
        "binary_type": {
          "$ref": "#/definitions/SpecBinaryType",
          "description": "The type of the binary."
        },
        "arch_type": {
          "$ref": "#/definitions/SpecArchType",
          "description": "The architecture suitable for the binary."
        },
        "url": {
          "type": "string",
          "description": "The URL from which the binary is retrieved."
        },
        "checksum": {
          "type": "string",
          "description": "Checksum of the plugin binary."
        },
        "published_date": {
          "type": "string",
          "format": "date-time",
          "description": "The date when this binary was published."
        },
        "unsupported": {
          "type": "boolean",
          "description": "Unsupported identifies this binary as not officially supported by Endor\nLabs."
        },
        "compatibility_matrix": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1Constraint"
          },
          "description": "Compatibility matrix containing the min/max supported values for runtime\ntools."
        }
      }
    },
    "v1Policy": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the policy.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Policies can be issued per namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PolicySpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Whether the object should be visible in child namespaces or not."
        }
      },
      "description": "Policy represents a policy in the system.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1PolicyNotificationAction": {
      "type": "object",
      "properties": {
        "notification_target_uuids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of UUIDs of the notification targets that are configured for\nthis policy."
        },
        "aggregation_type": {
          "$ref": "#/definitions/NotificationActionAggregationType",
          "title": "The findings are aggregated based on the aggregation type and\nnotifications are sent accordingly"
        },
        "bypass_exceptions": {
          "type": "boolean",
          "description": "Set to true if exception policies should be ignored for findings\nmatching this policy."
        }
      }
    },
    "v1PolicyOutput": {
      "type": "object",
      "properties": {
        "violating_resources": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1ResourceUuids"
          },
          "description": "Lists of UUIDs of resources that violate the policy,\nif applicable, indexed by resource name."
        },
        "raw": {
          "type": "array",
          "items": {
            "type": "object"
          },
          "description": "Raw policy output."
        },
        "allow": {
          "type": "boolean",
          "description": "True if input data is accepted by policy.\nFalse if input data violates the expected state."
        }
      }
    },
    "v1PolicySpec": {
      "type": "object",
      "properties": {
        "policy_type": {
          "$ref": "#/definitions/PolicyPolicyType",
          "description": "The policy type.\nDepending on the policy type different actions might be allowed.",
          "x-endor-name": "Policy Type"
        },
        "rule": {
          "type": "string",
          "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}",
          "x-endor-name": "Rule"
        },
        "project_selector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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.",
          "x-endor-name": "Project Selector"
        },
        "project_exceptions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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.",
          "x-endor-name": "Project Exceptions"
        },
        "resource_kinds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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.",
          "x-endor-name": "Resource Kinds"
        },
        "disable": {
          "type": "boolean",
          "description": "Disables a policy without deleting it.",
          "x-endor-name": "Policy Disable"
        },
        "query_statements": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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."
        },
        "template_uuid": {
          "type": "string",
          "description": "Indicates that the policy is created from a template."
        },
        "template_values": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/PolicyTemplateParameterValues"
          },
          "description": "The map of key-value pairs for parameters used to customize the template."
        },
        "template_version": {
          "type": "string",
          "description": "Template version."
        },
        "template_parameters": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/PolicyTemplateParameter"
          },
          "description": "Template parameter metadata for this template version."
        },
        "finding_level": {
          "$ref": "#/definitions/SpecFindingLevel",
          "description": "Corresponding finding severity level if applicable.\nThis field can be used to filter and/or sort policies records.\nIt is populated automatically by the system for all policy types\nand is not used to set the severity of any findings generated\nfrom the policy. To change the finding severity level update\nthe level field in the finding action message below."
        },
        "group_by_fields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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."
        },
        "finding_categories": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1FindingCategory"
          },
          "description": "List of finding categories that the policy creates or acts on findings\nfor. This field can be used to group policies."
        },
        "admission": {
          "$ref": "#/definitions/PolicyAdmissionAction"
        },
        "finding": {
          "$ref": "#/definitions/PolicyFindingAction"
        },
        "notification": {
          "$ref": "#/definitions/v1PolicyNotificationAction"
        },
        "exception": {
          "$ref": "#/definitions/PolicyExceptionAction"
        }
      },
      "required": [
        "policy_type"
      ]
    },
    "v1PolicyTemplate": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the policy template.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "PolicyTemplates can be issued per namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1PolicyTemplateSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Whether the object should be visible in child namespaces or not."
        }
      },
      "description": "PolicyTemplate represents a policy system in the system. Policy\ntemplates can be used to create policies from these templates.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1PolicyTemplateSpec": {
      "type": "object",
      "properties": {
        "rule": {
          "type": "string",
          "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}"
        },
        "template_parameters": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/PolicyTemplateParameter"
          },
          "description": "The list of values to customize the template. In the example above,\nValue1 and Value2."
        },
        "resource_kinds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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."
        },
        "query_statements": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of OPA query statements that must be executed to evaluate the\nresulting policy. For example, [ \"data.packagename.allow\" ]."
        },
        "policy_type": {
          "$ref": "#/definitions/PolicyPolicyType",
          "description": "The type of policy that will be created.\nDepending on the policy type different actions might be allowed."
        },
        "default_enabled": {
          "type": "boolean",
          "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."
        },
        "version": {
          "type": "string",
          "title": "Template version (for example, \"1.0.0\")"
        },
        "finding_level": {
          "$ref": "#/definitions/SpecFindingLevel",
          "description": "Corresponding finding severity level if applicable.\nUsed to filter and/or sort policy templates.\nIt is populated automatically by the system for all policy types\nand is not used to set the severity of any findings generated\nfrom the policies. To change the finding severity level\nupdate the level field in the finding action message below."
        },
        "group_by_fields": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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."
        },
        "release_notes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Release notes indexed by template version."
        },
        "deprecated": {
          "type": "boolean",
          "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."
        },
        "finding_categories": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1FindingCategory"
          },
          "description": "List of finding categories that the policy creates or acts on findings\nfor. This field can be used to group policy templates."
        },
        "admission": {
          "$ref": "#/definitions/PolicyAdmissionAction"
        },
        "finding": {
          "$ref": "#/definitions/PolicyFindingAction"
        }
      },
      "required": [
        "rule",
        "query_statements",
        "policy_type",
        "version"
      ]
    },
    "v1PolicyValidation": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The tenant metadata restrict access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for the object."
        },
        "spec": {
          "$ref": "#/definitions/v1PolicyValidationSpec"
        }
      },
      "description": "PolicyValidation represents a policy validation request and response.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "v1PolicyValidationRequest": {
      "type": "object",
      "properties": {
        "project_uuid": {
          "type": "string",
          "description": "The UUID of project to load data from [optional]."
        },
        "query_statements": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of OPA query statements that must be executed to\nevaluate the policy (for example, \"data.packagename.allow\")."
        },
        "rule": {
          "type": "string",
          "description": "Policy Rego rule in text format."
        },
        "template_values": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/PolicyTemplateParameterValues"
          },
          "description": "The map of key-value pairs for parameters used to customize the policy Rego rule."
        },
        "template_uuid": {
          "type": "string",
          "description": "The UUID of policy template from which the policy will be created."
        },
        "project_selector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "The set of tags that projects must have for the policy to be executed against. If left empty, the policy\napplies to all projects of the namespace. The items in the array\ncorrespond to an OR operator. (ie any project with a tag that matches any\nof the project_selector values will be matched.)"
        },
        "project_exceptions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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."
        },
        "resource_kinds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Identifies all resources that a policy requires.\nFor example, \"Project\", \"Repository\", \"RepositoryVersion\", \"PackageVersion\", \"DependencyMetadata\", \"Metric\", \"LinterResult\", \"Finding\", etc.\nFor the \"Metric\" resource you must also specify the corresponding parent resource kind."
        },
        "target_kind": {
          "type": "string",
          "description": "Repository, RepositoryVersion, or PackageVersion.\nThis is usually the same as the finding parent kind.\nOnly applicable to SYSTEM and USER_FINDING policies."
        },
        "policy_type": {
          "$ref": "#/definitions/PolicyPolicyType",
          "description": "Policy type."
        },
        "disable_preview": {
          "type": "boolean",
          "description": "Set to true to validate the policy without project data."
        }
      },
      "description": "PolicyValidationRequest represents a policy validation request.\nIf no project is specified the policy is validated against all projects."
    },
    "v1PolicyValidationSpec": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1PolicyValidationRequest",
          "description": "Policy validation request."
        },
        "result": {
          "$ref": "#/definitions/PolicyValidationResult",
          "description": "Policy validation response.",
          "readOnly": true
        }
      },
      "required": [
        "request"
      ]
    },
    "v1PrecomputedState": {
      "type": "string",
      "enum": [
        "PRECOMPUTED_STATE_UNSPECIFIED",
        "PRECOMPUTED_STATE_SUCCESS",
        "PRECOMPUTED_STATE_FAILURE"
      ],
      "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."
    },
    "v1PrioritizationConfig": {
      "type": "object",
      "properties": {
        "factors": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1PrioritizationFactorConfig"
          }
        }
      },
      "description": "Configuration of the factors that control the prioritization of artifacts."
    },
    "v1PrioritizationFactorConfig": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "External name for the factor."
        },
        "description": {
          "type": "string",
          "description": "Brief description of the factor."
        },
        "category": {
          "$ref": "#/definitions/v1FactorCategory",
          "description": "Factor's category."
        },
        "impact": {
          "$ref": "#/definitions/v1FactorImpact",
          "description": "Factor's impact."
        }
      }
    },
    "v1ProcessingResult": {
      "type": "string",
      "enum": [
        "PROCESSING_RESULT_UNSPECIFIED",
        "PROCESSING_RESULT_COMPLETED",
        "PROCESSING_RESULT_FAILED"
      ],
      "default": "PROCESSING_RESULT_UNSPECIFIED",
      "description": "ProcessingResult indicates the downstream processing result of an event."
    },
    "v1ProcessingStatus": {
      "type": "object",
      "properties": {
        "scan_state": {
          "$ref": "#/definitions/v1ScanState",
          "description": "Ingestion state."
        },
        "scan_time": {
          "type": "string",
          "format": "date-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",
          "x-endor-name": "Last Scan Time"
        },
        "analytic_time": {
          "type": "string",
          "format": "date-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."
        },
        "queue_time": {
          "type": "string",
          "format": "date-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."
        },
        "disable_automated_scan": {
          "type": "boolean",
          "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."
        },
        "metadata": {
          "$ref": "#/definitions/v1ProcessingStatusMetadata",
          "description": "Additional information about scans."
        },
        "deactivated": {
          "type": "boolean",
          "description": "Indicates whether the project is deactivated.\nDeactivated projects are not scanned and are not visible to users in the UI by default."
        }
      }
    },
    "v1ProcessingStatusMetadata": {
      "type": "object",
      "properties": {
        "full_history_scan_time": {
          "type": "string",
          "format": "date-time",
          "title": "Last time a project was scanned with deep secrets scanning"
        }
      }
    },
    "v1Project": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The unique identifier of the project.",
          "readOnly": true,
          "x-endor-name": "Project UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The tenant to which the project belongs."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ProjectSpec",
          "description": "Project specifications."
        },
        "processing_status": {
          "$ref": "#/definitions/v1ProcessingStatus"
        }
      },
      "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.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1ProjectSpec": {
      "type": "object",
      "properties": {
        "platform_source": {
          "$ref": "#/definitions/v1PlatformSource",
          "description": "The platform where the source code of the project is located.",
          "x-endor-name": "Project Platform Source"
        },
        "internal_reference_key": {
          "type": "string",
          "description": "Unique key for the project generated by Endor Labs to simplify lookups.",
          "readOnly": true
        },
        "git": {
          "$ref": "#/definitions/v1GitSpec"
        },
        "unsupported": {
          "$ref": "#/definitions/v1UnsupportedSpec"
        },
        "sbom": {
          "$ref": "#/definitions/v1SBOMSpec"
        },
        "model": {
          "$ref": "#/definitions/v1ModelSpec"
        },
        "ingestion_token": {
          "type": "string",
          "description": "Third-party API authentication token to read project related information.",
          "readOnly": true
        },
        "toolchain_profile_uuid": {
          "type": "string",
          "description": "The toolchain required to build and scan the project."
        },
        "scan_profile_uuid": {
          "type": "string"
        },
        "is_archived": {
          "type": "boolean",
          "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."
        }
      },
      "required": [
        "platform_source"
      ]
    },
    "v1ProjectSummary": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the for the project summary.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Project Summary are associated with a  tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ProjectSummarySpec",
          "description": "Project Summary specification."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "ProjectSummary is an internal API to accelerate the UI operations.",
      "required": [
        "meta",
        "context"
      ],
      "x-internal": true
    },
    "v1ProjectSummarySpec": {
      "type": "object",
      "properties": {
        "automated_scan_enabled": {
          "type": "boolean",
          "description": "Set to true if automated scans are enabled for the project.\nThis only applies to projects scanned by the GitHub App.\nIt does not prevent the daily analytics-only scans from running."
        },
        "last_scanned": {
          "type": "string",
          "format": "date-time",
          "description": "The last time the project was scanned by the Endor Labs scheduler.\nThis is the same as the update time of this object."
        },
        "package_coverage": {
          "$ref": "#/definitions/SpecPackageCoverage",
          "description": "Package coverage and success rates for the default branch of the project."
        },
        "finding_counts": {
          "$ref": "#/definitions/ProjectSummarySpecFindingCounts",
          "description": "Finding statistics for the default branch of the project."
        },
        "platform_source": {
          "$ref": "#/definitions/v1PlatformSource",
          "description": "The platform where the source code of the project is located."
        },
        "vulnerability_counts": {
          "$ref": "#/definitions/ProjectSummarySpecVulnerabilityCounts",
          "description": "Overall vulnerability counts for the project."
        },
        "dependency_counts": {
          "$ref": "#/definitions/ProjectSummarySpecDependencyCounts",
          "description": "Overall dependency counts for the project."
        },
        "top_packages": {
          "$ref": "#/definitions/ProjectSummarySpecTopPackages",
          "description": "Top packages in various categories."
        },
        "top_dependencies": {
          "$ref": "#/definitions/ProjectSummarySpecTopDependencies",
          "description": "Top dependencies in various categories."
        }
      },
      "required": [
        "automated_scan_enabled",
        "last_scanned",
        "package_coverage",
        "finding_counts",
        "platform_source"
      ]
    },
    "v1ProvisioningResult": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "UUID is a universally unique identifier for the provisioning result.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Information about the tenant and namespace of the provisioning result."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Meta identifies the tool chain object."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Context provides the branch information of the repository on which the scan is run."
        },
        "spec": {
          "$ref": "#/definitions/v1ProvisioningResultSpec",
          "description": "Resource kind specific data."
        }
      },
      "description": "ProvisioningResult represents the versions that are maintained\nby Endor Labs.",
      "required": [
        "tenant_meta",
        "meta",
        "context",
        "spec"
      ]
    },
    "v1ProvisioningResultSpec": {
      "type": "object",
      "properties": {
        "os": {
          "type": "string",
          "description": "The OS where the provisioning occurred."
        },
        "arch": {
          "type": "string",
          "description": "The OS architecture where the provisioning occurred."
        },
        "exit_code": {
          "type": "integer",
          "format": "int32",
          "description": "Provisioning exit code."
        },
        "error": {
          "type": "string",
          "description": "Provisioning error message."
        },
        "languages_detected": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Languages detected."
        },
        "provisioning_config": {
          "$ref": "#/definitions/SpecProvisioningConfig",
          "description": "Provisioning configuration."
        },
        "sandbox_config": {
          "$ref": "#/definitions/SpecSandboxConfig",
          "description": "Sandbox configuration."
        },
        "auto_detect_result": {
          "$ref": "#/definitions/v1AutoDetectResult",
          "description": "Auto detect result."
        },
        "tool_chains_source": {
          "$ref": "#/definitions/v1ToolChainsSource",
          "description": "Source of the Toolchains for example auto detect, file, api or namespace default."
        },
        "tool_chains": {
          "$ref": "#/definitions/v1ToolChains",
          "description": "Toolchains installed."
        },
        "project_url": {
          "type": "string",
          "description": "Repository URL of the project for which the scan is run."
        },
        "automated_scan_parameters_source": {
          "$ref": "#/definitions/v1AutomatedScanParametersSource",
          "description": "Automated scan parameter source."
        },
        "automated_scan_parameters_config": {
          "$ref": "#/definitions/v1AutomatedScanParametersConfig",
          "description": "Automated scan parameter configuration."
        },
        "scan_profile": {
          "$ref": "#/definitions/v1ScanProfile",
          "description": "Scan profile used for provisioning."
        }
      },
      "description": "Spec is the internal specification of the object.",
      "required": [
        "os",
        "arch",
        "exit_code",
        "project_url"
      ]
    },
    "v1PullRequestSecurityReviewResultInfo": {
      "type": "object",
      "properties": {
        "llm_context": {
          "$ref": "#/definitions/v1LLMContext",
          "description": "Context information about the LLM (Language Learning Model) used for the security review."
        },
        "file_changes": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/PullRequestSecurityReviewResultInfoFileChanges"
          },
          "description": "Comprehensive information about all file changes in the pull request.\nThe map key is the file path."
        },
        "changes_description": {
          "type": "string",
          "title": "High-level description of all changes"
        },
        "security_metrics": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/PullRequestSecurityReviewResultInfoSecurityAspectMetric"
          },
          "title": "Security review findings and metrics\nDetailed security metrics and findings"
        },
        "security_description": {
          "type": "string",
          "title": "Overall security assessment description"
        }
      },
      "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."
    },
    "v1PypiSpec": {
      "type": "object",
      "properties": {
        "priority": {
          "type": "integer",
          "format": "int32",
          "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."
        },
        "url": {
          "type": "string",
          "description": "The URL of the registry that the Python package manager must use."
        },
        "user": {
          "type": "string",
          "description": "The user name to use to access this repository."
        },
        "password": {
          "type": "string",
          "description": "An encrypted password that must be provided by the repository owner."
        },
        "mtls": {
          "$ref": "#/definitions/v1MTLSAuth",
          "description": "MTLS authentication for the Python package manager."
        }
      },
      "description": "PypiSpec represents a configuration for the Python package manager.",
      "required": [
        "priority"
      ]
    },
    "v1PythonToolChain": {
      "type": "object",
      "properties": {
        "version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        },
        "poetry_version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        },
        "pip_packages": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1ToolChainVersion"
          },
          "description": "the key is the package name to install through pip."
        }
      },
      "required": [
        "version"
      ]
    },
    "v1Query": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The Tenant Metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata identifies the object."
        },
        "spec": {
          "$ref": "#/definitions/v1QuerySpec",
          "description": "{\n    \"meta\": {\n        \"name\": \"my first query\"\n    },\n    \"spec\": {\n        \"query_spec\": {\n            \"kind\": \"Project\",\n            \"list_parameters\": {\n                \"page_size\": 1,\n                \"mask\": \"uuid,meta.name,processing_status\"\n            },\n            \"references\": [\n                {\n                    \"connect_from\": \"uuid\",\n                    \"connect_to\": \"meta.parent_uuid\",\n                    \"query_spec\": {\n                        \"kind\": \"RepositoryVersion\",\n                        \"list_parameters\": {\n                            \"filter\": \"context.type==CONTEXT_TYPE_MAIN\",\n                            \"mask\": \"uuid,meta.name,spec\"\n                        },\n                        \"references\": [\n                           {\n                            \"connect_to\": \"meta.parent_uuid\",\n                            \"connect_from\": \"uuid\",\n                            \"query_spec\": {\n                                \"kind\": \"Metric\",\n                                \"list_parameters\": {\n                                    \"filter\": \"meta.name==repo_scorecard\",\n                                    \"mask\": \"meta,spec\"\n                                }\n                            }\n                        }]\n                    }\n                },\n                {\n                    \"connect_from\": \"uuid\",\n                    \"connect_to\": \"spec.project_uuid\",\n                    \"query_spec\": {\n                        \"kind\": \"PackageVersion\",\n                        \"list_parameters\": {\n                            \"filter\": \"context.type==CONTEXT_TYPE_MAIN\",\n                            \"page_size\": 1,\n                            \"mask\": \"uuid,meta,spec\"\n                        }\n                    }\n                }\n            ]\n        }\n    }\n}",
          "title": "A query spec allows an aggregation against various objects\nin the database. Assume for example:\nList all projects and their processing status.\nFor each project list all repository versions that correspond to the default branch\nFor each repository version derive some metrics\nFor each project, also list all the package versions that this project implements\nThe query in json format looks like below:"
        }
      },
      "description": "Query implements the metric query requests.",
      "required": [
        "tenant_meta",
        "meta"
      ]
    },
    "v1QueryMalware": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta"
        },
        "spec": {
          "$ref": "#/definitions/v1QueryMalwareSpec"
        },
        "responses": {
          "$ref": "#/definitions/v1QueryMalwareResponseMap"
        },
        "response": {
          "$ref": "#/definitions/v1ListMalwareResponse"
        }
      },
      "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."
    },
    "v1QueryMalwarePackageVersionNames": {
      "type": "object",
      "properties": {
        "names": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "v1QueryMalwareResponseMap": {
      "type": "object",
      "properties": {
        "values": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1ListMalwareResponse"
          }
        }
      }
    },
    "v1QueryMalwareSpec": {
      "type": "object",
      "properties": {
        "package_version_name": {
          "type": "string"
        },
        "package_version_names": {
          "$ref": "#/definitions/v1QueryMalwarePackageVersionNames",
          "description": "Allows the caller to provide multiple packages for each request."
        },
        "package_names": {
          "$ref": "#/definitions/v1QueryMalwarePackageVersionNames",
          "description": "Version-less package names (ecosystem://name) to look up. Unlike\npackage_version_name(s), each entry returns ALL malware records for the\npackage across every malicious version and range, rather than a single\nversion match. Used to detect packages that are (potentially) impacted\nregardless of the resolved version, e.g. unpinned dependencies."
        },
        "purls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "a list of PURLs to lookup.\nUsing a PURL for the lookup allows the caller to provide additional\nmetadata."
        },
        "mask": {
          "type": "string",
          "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."
        }
      }
    },
    "v1QueryReference": {
      "type": "object",
      "properties": {
        "connect_to": {
          "type": "string",
          "description": "The child field to connect to. If empty, it is parent_uuid."
        },
        "connect_from": {
          "type": "string",
          "description": "The parent field from which we are connecting. If emtpy, it is UUID."
        },
        "connect_operator": {
          "type": "string",
          "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."
        },
        "query_spec": {
          "$ref": "#/definitions/QueryQuerySpec"
        }
      }
    },
    "v1QuerySimilarPackages": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The tenant metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata identifies the object."
        },
        "spec": {
          "$ref": "#/definitions/v1QuerySimilarPackagesSpec"
        },
        "query_response": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/QuerySimilarPackagesQueryResponse"
          },
          "description": "Aggregates the results of the query.",
          "readOnly": true
        }
      },
      "description": "QuerySimilarPackages implements the similar packages query requests.",
      "required": [
        "tenant_meta",
        "meta"
      ]
    },
    "v1QuerySimilarPackagesSpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the package for which similar packaged are being queried."
        },
        "edit_distance": {
          "type": "integer",
          "format": "int32"
        },
        "repo": {
          "$ref": "#/definitions/v1Ecosystem"
        },
        "exact_match": {
          "type": "boolean"
        }
      },
      "required": [
        "name"
      ]
    },
    "v1QuerySpec": {
      "type": "object",
      "properties": {
        "query_spec": {
          "$ref": "#/definitions/QueryQuerySpec",
          "description": "The actual query."
        },
        "query_response": {
          "$ref": "#/definitions/googleprotobufAny",
          "description": "Aggregates the results of the query.",
          "readOnly": true
        }
      }
    },
    "v1QueryVulnerability": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta"
        },
        "spec": {
          "$ref": "#/definitions/v1QueryVulnerabilitySpec"
        },
        "responses": {
          "$ref": "#/definitions/v1QueryVulnerabilityResponseMap"
        },
        "response": {
          "$ref": "#/definitions/v1ListVulnerabilitiesResponse"
        }
      },
      "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."
    },
    "v1QueryVulnerabilityPackageVersionNames": {
      "type": "object",
      "properties": {
        "names": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "v1QueryVulnerabilityResponseMap": {
      "type": "object",
      "properties": {
        "values": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1ListVulnerabilitiesResponse"
          }
        }
      }
    },
    "v1QueryVulnerabilitySpec": {
      "type": "object",
      "properties": {
        "package_version_name": {
          "type": "string"
        },
        "package_version_names": {
          "$ref": "#/definitions/v1QueryVulnerabilityPackageVersionNames",
          "description": "Allows the caller to provide multiple packages for each request."
        },
        "vulnerability_name_query": {
          "$ref": "#/definitions/QueryVulnerabilityVulnerabilityNameQuery"
        },
        "purls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "a list of PURLs to lookup.\nUsing a PURL for the lookup allows the caller to provide additional\nmetadata."
        },
        "mask": {
          "type": "string",
          "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."
        },
        "vulnerability_type": {
          "$ref": "#/definitions/SpecVulnerabilityType"
        }
      }
    },
    "v1ReadmeAIQuery": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "description": "Prompt to query AI."
        },
        "raw_response": {
          "type": "string",
          "description": "Raw response received from the query."
        },
        "exists": {
          "type": "boolean",
          "description": "Extracted boolean whether or not specified field in prompt exists."
        },
        "answer": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Extracted string answer from the raw response."
        },
        "evidence": {
          "type": "string",
          "description": "Extracted evidence supporting answer from the raw response."
        }
      }
    },
    "v1ReadmeMetadata": {
      "type": "object",
      "properties": {
        "example_code": {
          "$ref": "#/definitions/v1ReadmeAIQuery",
          "description": "Does the README contain example code on how to use the model."
        },
        "base_model": {
          "$ref": "#/definitions/v1ReadmeAIQuery",
          "description": "Does the README specify if this model has a base model (or base models)."
        },
        "training_data": {
          "$ref": "#/definitions/v1ReadmeAIQuery",
          "description": "Does the README specify if this model has training data."
        },
        "fine_tuned": {
          "$ref": "#/definitions/v1ReadmeAIQuery",
          "description": "Does the README specify if this model was fine-tuned."
        },
        "alignment_trained": {
          "$ref": "#/definitions/v1ReadmeAIQuery",
          "description": "Does the README specify if this model was alignment trained."
        },
        "linked_github": {
          "$ref": "#/definitions/v1ReadmeAIQuery",
          "description": "Does the README contain a linked GitHub repository."
        },
        "evaluation_results": {
          "$ref": "#/definitions/v1ReadmeAIQuery",
          "description": "Does the README specify if this model has evaluation/ performance results."
        }
      }
    },
    "v1RegistryIngestionCheckpoint": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the registry ingestion checkpoint.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "RegistryIngestionCheckpoint is associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RegistryIngestionCheckpointSpec",
          "description": "Ingestion state per ecosystem/registry."
        }
      },
      "description": "RegistryIngestionCheckpoint represents ingestion progress checkpoints per ecosystem/registry.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1RegistryIngestionCheckpointSpec": {
      "type": "object",
      "properties": {
        "npm": {
          "$ref": "#/definitions/SpecNpm"
        },
        "pypi": {
          "$ref": "#/definitions/SpecPypi"
        },
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "description": "The ecosystem this checkpoint tracks."
        }
      },
      "description": "Spec contains ingestion state per ecosystem.",
      "required": [
        "ecosystem"
      ]
    },
    "v1ReleaseUpgradeConfiguration": {
      "type": "object",
      "properties": {
        "upgrade_if_better_scores": {
          "type": "boolean",
          "description": "Whether to consider a version upgrade just to improve the Endor scores or not."
        },
        "score_improvement_threshold": {
          "type": "integer",
          "format": "int32",
          "description": "Score improvement to consider an upgrade."
        },
        "avoid_pre_releases": {
          "type": "boolean",
          "description": "Avoid prereleases."
        },
        "prefer_minor_version_upgrades": {
          "type": "boolean",
          "description": "Give higher priority to upgrades to versions with the same major version since these are more likely to be compatible."
        },
        "upgrade_if_operational_findings": {
          "type": "string",
          "description": "Whether to consider a version upgrade if the current version has only operational findings or not."
        },
        "upgrade_if_vulnerability_findings": {
          "type": "string",
          "description": "Whether to consider a version upgrade if the current version has vulnerability findings or not."
        },
        "no_upgrade_package_set": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "These packages can not be upgraded and will be skipped."
        },
        "use_cia": {
          "type": "boolean",
          "description": "Whether using change impact analysis or not."
        },
        "skip_test": {
          "type": "boolean",
          "description": "If true, ignores all the direct dependencies that are marked as TEST/BUILD."
        },
        "reachable_findings_only": {
          "type": "boolean",
          "description": "Only consider reachable findings."
        },
        "top_only": {
          "type": "integer",
          "format": "int32",
          "description": "Only show the top N dependency upgrades."
        },
        "target_dependency": {
          "type": "string",
          "description": "Only analyze this direct dependency and ignore the others."
        }
      }
    },
    "v1ReleaseUpgradeInfo": {
      "type": "object",
      "properties": {
        "project": {
          "type": "string",
          "description": "The name of the project."
        },
        "root_package_version": {
          "type": "string",
          "description": "The project package that imports this dependency."
        },
        "root_pkg_version_uuid": {
          "type": "string",
          "description": "The UUID of the root package version."
        },
        "direct_dependency_package": {
          "type": "string",
          "description": "The package being upgraded."
        },
        "from_version": {
          "type": "string",
          "description": "The current version of the dependency."
        },
        "from_pkg_version_uuid": {
          "type": "string",
          "description": "The UUID of the package version of the current dependency version."
        },
        "to_version": {
          "type": "string",
          "description": "The version to which the package is to be upgraded."
        },
        "to_pkg_version_uuid": {
          "type": "string",
          "description": "The UUID of the package version of the dependency version to which we upgrade."
        },
        "current_conflicts": {
          "type": "integer",
          "format": "int32",
          "description": "The count of conflicts with even the current version."
        },
        "conflicts": {
          "type": "integer",
          "format": "int32",
          "description": "The number of conflicts between the dependencies of the two versions."
        },
        "conflicts_map": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1Conflict"
          },
          "description": "The list of conflicting direct dependency packages."
        },
        "minor_conflicts": {
          "type": "integer",
          "format": "int32",
          "description": "The number of minor (same major version) conflicts between the dependencies of the two versions."
        },
        "minor_conflicts_map": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1Conflict"
          },
          "description": "The list of minor (same major version) conflicts."
        },
        "deps_added": {
          "type": "integer",
          "format": "int32",
          "description": "The number of new dependencies added in the upgrade."
        },
        "deps_removed": {
          "type": "integer",
          "format": "int32",
          "description": "The number of dependencies removed in the upgrade."
        },
        "cur_dep_count": {
          "type": "integer",
          "format": "int32",
          "description": "The number of dependencies in the current version."
        },
        "update_dep_count": {
          "type": "integer",
          "format": "int32",
          "description": "The number of dependencies in the upgrade."
        },
        "score": {
          "type": "integer",
          "format": "int32",
          "description": "The internal score for this upgrade."
        },
        "score_explanation": {
          "type": "string",
          "description": "The reasons for the score."
        },
        "worth_it": {
          "type": "boolean",
          "description": "Whether the upgrade worth it or not."
        },
        "is_latest": {
          "type": "boolean",
          "description": "Whether this an upgrade to the latest version or not."
        },
        "is_best": {
          "type": "boolean",
          "description": "Whether this the best upgrade according to our analysis or not."
        },
        "endor_scores_improvement": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "title": "The breakdown of the Endor score improvements in the upgrade"
        },
        "vuln_finding_info": {
          "$ref": "#/definitions/v1FindingUpgradeBreakdown",
          "description": "The breakdown of vulnerability finding changes."
        },
        "other_finding_info": {
          "$ref": "#/definitions/v1FindingUpgradeBreakdown",
          "description": "The breakdown of non-vulnerability finding changes."
        },
        "package_count": {
          "type": "integer",
          "format": "int32",
          "description": "The number of packages affected by the upgrade."
        },
        "cia_status": {
          "type": "string",
          "description": "The status of the CIA analysis, including errors."
        },
        "from_version_age_in_days": {
          "type": "integer",
          "format": "int32",
          "description": "Deprecated."
        },
        "to_version_age_in_days": {
          "type": "integer",
          "format": "int32",
          "description": "Deprecated."
        },
        "cia_results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1VersionDiffResult"
          },
          "description": "Details from the CIA analysis."
        },
        "upgrade_risk": {
          "type": "string",
          "description": "Upgrade risk."
        },
        "from_version_publish_time": {
          "type": "string",
          "format": "date-time",
          "description": "Publish time of the from version."
        },
        "to_version_publish_time": {
          "type": "string",
          "format": "date-time",
          "description": "Publish time of the to version."
        },
        "direct_dependency_manifest_files": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Manifest file information for the direct dependency being upgraded."
        },
        "total_findings_fixed": {
          "type": "integer",
          "format": "int32",
          "description": "Count of findings (all types and severity levels) fixed by the upgrade."
        },
        "total_findings_introduced": {
          "type": "integer",
          "format": "int32",
          "description": "Count of findings (all types and severity levels) introduced by the upgrade."
        },
        "is_endor_patch": {
          "type": "boolean",
          "description": "True if this is an Endor Labs Assured package version."
        }
      },
      "description": "Protobuf definition for ReleaseUpgradeInfo."
    },
    "v1ReleaseUpgradeStats": {
      "type": "object",
      "properties": {
        "namespace": {
          "type": "string",
          "description": "Namespace."
        },
        "project_uuid": {
          "type": "string",
          "description": "Project UUID."
        },
        "project_name": {
          "type": "string",
          "description": "Project Name."
        },
        "package_count": {
          "type": "integer",
          "format": "int32",
          "description": "Package Count."
        },
        "package_manager_version_count": {
          "type": "integer",
          "format": "int32",
          "description": "The number of versions for direct dependencies that we found in the package manager."
        },
        "database_version_count": {
          "type": "integer",
          "format": "int32",
          "description": "The number of versions for direct dependencies we found in our database."
        },
        "missing_version_count": {
          "type": "integer",
          "format": "int32",
          "description": "The number of direct dependency versions we miss from our database."
        },
        "dep_meta_count": {
          "type": "integer",
          "format": "int32",
          "description": "Dependency meta Count."
        },
        "direct_deps_package_count": {
          "type": "integer",
          "format": "int32",
          "description": "Direct dependencies package count."
        },
        "direct_deps_count": {
          "type": "integer",
          "format": "int32",
          "description": "Direct cependencies count."
        },
        "dep_uuids": {
          "type": "integer",
          "format": "int32",
          "description": "Dependency UUIDs."
        },
        "findings_read": {
          "type": "integer",
          "format": "int32",
          "description": "Findings read."
        },
        "findings_after_filtering": {
          "type": "integer",
          "format": "int32",
          "description": "Findings after filtering."
        },
        "scores_read": {
          "type": "integer",
          "format": "int32",
          "description": "Scores read."
        },
        "data_load_time": {
          "type": "number",
          "format": "float",
          "description": "Data load time."
        },
        "compute_time": {
          "type": "number",
          "format": "float",
          "description": "Compute time."
        },
        "upgrades_reviewed": {
          "type": "integer",
          "format": "int32",
          "description": "Upgrades reviewed."
        },
        "upgrades_skipped": {
          "type": "integer",
          "format": "int32",
          "description": "Upgrades skipped."
        },
        "upgrades_proposed": {
          "type": "integer",
          "format": "int32",
          "description": "Upgrades proposed."
        },
        "zero_conflict_upgrades_proposed": {
          "type": "integer",
          "format": "int32",
          "description": "Zero conflict upgrades proposed."
        },
        "score_breakdown": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "Score breakdown."
        },
        "direct_dependency_count": {
          "type": "integer",
          "format": "int32",
          "description": "Direct dependency count."
        },
        "incomplete_releases": {
          "type": "integer",
          "format": "int32",
          "description": "Releases not considered because of lack of information."
        },
        "pre_upgrade_findings_count": {
          "type": "integer",
          "format": "int32",
          "description": "Pre-upgrade Findings Count."
        },
        "findings_fixed_by_upgrade_count": {
          "type": "integer",
          "format": "int32",
          "description": "Findings Fixed By Upgrade Count."
        },
        "max_releases_behind": {
          "type": "integer",
          "format": "int32",
          "description": "Max Releases Behind."
        },
        "cia_invocations": {
          "type": "integer",
          "format": "int32",
          "description": "CIA Invocations."
        },
        "skipped_due_to_cia": {
          "type": "integer",
          "format": "int32",
          "description": "Skipped due To CIA."
        }
      }
    },
    "v1RemediationParameters": {
      "type": "object",
      "properties": {
        "automated_pr_parameters": {
          "$ref": "#/definitions/RemediationParametersAutomatedPRParameters",
          "description": "Parameters for automated pull requests."
        }
      },
      "description": "RemediationParameters holds the settings for remediation actions."
    },
    "v1Repository": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the source control repository.",
          "readOnly": true,
          "x-endor-name": "Repository UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Repositories are associated with a tenant.\nPublic repositories are created as repositories under a public tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositorySpec",
          "description": "Repository specifications."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested 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.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1RepositoryAccess": {
      "type": "object",
      "properties": {
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        },
        "archived": {
          "type": "boolean",
          "description": "Repository is archived."
        },
        "disabled": {
          "type": "boolean",
          "description": "Repository is disabled."
        },
        "private": {
          "type": "boolean",
          "description": "Repository is private."
        },
        "allow_fork": {
          "type": "boolean",
          "description": "Repository allows forking."
        },
        "allow_squash_merge": {
          "type": "boolean",
          "description": "Repository allows squash merging pull-requests."
        },
        "allow_merge_commit": {
          "type": "boolean",
          "description": "Repository allows merging pull requests with a merge commit."
        },
        "allow_rebase_merge": {
          "type": "boolean",
          "description": "Repository allows rebase-merging pull requests."
        },
        "allow_auto_merge": {
          "type": "boolean",
          "description": "Repository allows auto-merge on pull requests."
        },
        "require_web_commit_signoff": {
          "type": "boolean",
          "description": "Require developers to sign off on commits made through a web interface."
        },
        "advanced_security_enabled": {
          "type": "boolean",
          "description": "Advanced security is automatically enabled for new repositories."
        },
        "admins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of all repository administrator usernames."
        },
        "default_branch_protection_status": {
          "type": "boolean",
          "description": "Branch protection status of default branch."
        },
        "webhooks": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ScpmDataWebhook"
          },
          "description": "List of all repository webhooks."
        },
        "pushed_at": {
          "type": "string",
          "format": "date-time",
          "description": "Time of the most recent commit to the repository."
        }
      },
      "description": "RepositoryAccess contains normalized repository access settings.",
      "required": [
        "ingested_object"
      ]
    },
    "v1RepositoryBranchProtection": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the repository branch protection.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Repository branch protections are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryBranchProtectionSpec",
          "description": "Repository branch protection specification."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested repository branch protection object."
        }
      },
      "description": "Branch protection information of a single branch.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1RepositoryBranchProtectionSpec": {
      "type": "object",
      "properties": {
        "branch_name": {
          "type": "string",
          "description": "The name of the branch to which the branch protections applies."
        }
      },
      "required": [
        "branch_name"
      ]
    },
    "v1RepositoryCheckRun": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the repository check run.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Repository check runs are associated with a tenant.\nPublic repository check runs are formed under a public tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryCheckRunSpec",
          "description": "Repository check run specifications."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "RepositoryCheckRun represents the information about a repository check run.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1RepositoryCheckRunSpec": {
      "type": "object",
      "properties": {
        "commit_sha": {
          "type": "string",
          "description": "The SHA to which the check run is attached."
        }
      },
      "required": [
        "commit_sha"
      ]
    },
    "v1RepositoryCodeownersFile": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the repository's codeowners file information.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Metadata required for the tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryCodeownersFileSpec",
          "description": "Repository's codeowners file information specifications."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "The information about a repository's codeowners file.\nIt does not contain the actual file contents.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1RepositoryCodeownersFileSpec": {
      "type": "object"
    },
    "v1RepositoryCollaborators": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID fir repository's collaborators information.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta"
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryCollaboratorsSpec",
          "description": "The repository's collaborators information specification."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "The ingested information about a repository's collaborators.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1RepositoryCollaboratorsSpec": {
      "type": "object",
      "properties": {
        "user_name": {
          "type": "string",
          "description": "Collaborator user name."
        },
        "role_name": {
          "type": "string",
          "description": "Collaborator role name."
        },
        "is_admin": {
          "type": "boolean",
          "description": "Whether the collaborator has admin permissions or not."
        }
      }
    },
    "v1RepositoryCommit": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the repository commit.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Repository commits are associated with a tenant.\nPublic repository commits are formed under a public tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryCommitSpec",
          "description": "Repository commit specifications."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "Represents the ingested information about a repository commit.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1RepositoryCommitSpec": {
      "type": "object",
      "properties": {
        "author": {
          "$ref": "#/definitions/v1PlatformAccount",
          "description": "The original author of the commit."
        },
        "commiter": {
          "$ref": "#/definitions/v1PlatformAccount",
          "description": "Committer performs the commit. Might be different from Author."
        },
        "hash": {
          "type": "string",
          "description": "Hash of the commit object."
        },
        "tree_hash": {
          "type": "string",
          "description": "The hash of the root tree of the commit."
        },
        "parent_hashes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The hashes of the parent commits of the commit."
        }
      }
    },
    "v1RepositoryDeploymentEnvConfig": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the repository's deployment environment configuration.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Repository's deployment environment configurations are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryDeploymentEnvConfigSpec",
          "description": "Repository's deployment environment configuration specification."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "The ingested information about a repository's deployment environment configurations.\nhttps://docs.github.com/en/rest/deployments/environments?apiVersion=2022-11-28#list-environments.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1RepositoryDeploymentEnvConfigSpec": {
      "type": "object"
    },
    "v1RepositoryHook": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the for the repository hook.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Repository hooks are associated with a  tenant.\nPublic repository hooks are formed under a public tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryHookSpec",
          "description": "Repository hook specification."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw object ingested from the webhook."
        }
      },
      "description": "The information about hooks created for a repository.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1RepositoryHookSpec": {
      "type": "object",
      "properties": {
        "external_id": {
          "type": "string"
        }
      },
      "required": [
        "external_id"
      ]
    },
    "v1RepositoryIssue": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a repository issue.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Repository issues are associated with a tenant.\nPublic repository issues are formed under a public tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryIssueSpec",
          "description": "Repository issue specification."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "The ingested information about a repository issue.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1RepositoryIssueSpec": {
      "type": "object",
      "properties": {
        "external_id": {
          "type": "string",
          "description": "The ID of the object in the platform from which the issue was ingested."
        },
        "contributor": {
          "$ref": "#/definitions/v1PlatformAccount",
          "description": "Contributor that opened the issue."
        },
        "assignee": {
          "$ref": "#/definitions/v1PlatformAccount",
          "description": "User to whom this issue is assigned."
        },
        "create_time": {
          "type": "string",
          "format": "date-time",
          "description": "Create time of the repository issue in the platform."
        },
        "update_time": {
          "type": "string",
          "format": "date-time",
          "description": "Update time of the repository issue in the platform."
        },
        "close_time": {
          "type": "string",
          "format": "date-time",
          "description": "Close time of the repository issue in the platform."
        }
      },
      "required": [
        "external_id"
      ]
    },
    "v1RepositoryLicense": {
      "type": "object",
      "properties": {
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested repository software licence object."
        },
        "name": {
          "type": "string",
          "description": "Name of the source control repository software license.",
          "x-endor-name": "License Name"
        }
      },
      "description": "Contains information related to a source control repository software license.",
      "required": [
        "ingested_object"
      ]
    },
    "v1RepositoryPullRequest": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a repository pull request.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Repository pull request are associated with a tenant.\nPublic repository pull requests are formed under a public tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryPullRequestSpec",
          "description": "Repository pull request specification."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "The ingested information about a repository pull request.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1RepositoryPullRequestSpec": {
      "type": "object",
      "properties": {
        "external_id": {
          "type": "string",
          "description": "The pull request ID in the platform from which it was ingested."
        },
        "number": {
          "type": "integer",
          "format": "int32",
          "description": "The pull request number."
        },
        "state": {
          "type": "string",
          "description": "State of the pull request."
        },
        "contributor": {
          "$ref": "#/definitions/v1PlatformAccount",
          "description": "User that opened the pull request."
        },
        "merged_by_user": {
          "$ref": "#/definitions/v1PlatformAccount",
          "description": "The user that merged the pull request."
        },
        "merged": {
          "type": "boolean",
          "description": "Whether the PR is merged or not."
        },
        "create_time": {
          "type": "string",
          "format": "date-time",
          "description": "Time that the pull request was created."
        },
        "update_time": {
          "type": "string",
          "format": "date-time",
          "description": "Time that the pull request was updated."
        },
        "close_time": {
          "type": "string",
          "format": "date-time",
          "description": "Time that the pull request was closed."
        },
        "merge_time": {
          "type": "string",
          "format": "date-time",
          "description": "Time that the pull request was merged."
        },
        "requested_reviewers": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PlatformAccount"
          },
          "description": "The reviewers of the pull request."
        },
        "head_commit_hash": {
          "type": "string",
          "description": "The head commit hash of the pull request."
        },
        "merge_commit_hash": {
          "type": "string",
          "description": "The merge commit hash of the pull request."
        },
        "corrected_merge_commit_hash": {
          "type": "string",
          "description": "The corrected merge commit hash of the pull request.\n\nThis field is populated if the original merge_commit_hash is found to be incorrect while fetching check runs.\nIt is calculated by take the commit_id from the \"merged\" event."
        },
        "base_commit_hash": {
          "type": "string",
          "description": "The base commit hash of the pull request."
        },
        "name": {
          "type": "string",
          "description": "The name of the pull request."
        },
        "summary": {
          "type": "string",
          "description": "The summary of the pull request."
        },
        "is_draft": {
          "type": "boolean",
          "description": "Whether the pull request is a draft."
        }
      },
      "required": [
        "external_id"
      ]
    },
    "v1RepositoryRelease": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a repository release.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Repository releases are associated with a tenant.\nPublic repository releases are formed under a public tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryReleaseSpec",
          "description": "Repository release specification."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "The ingested information about a repository release.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1RepositoryReleaseSpec": {
      "type": "object",
      "properties": {
        "external_id": {
          "type": "string",
          "description": "The ID of the repository release in the platform from which the release was ingested."
        },
        "contributor": {
          "$ref": "#/definitions/v1PlatformAccount",
          "description": "Contributor that created the release."
        },
        "tag_name": {
          "type": "string",
          "description": "Tag name of the release."
        },
        "target_commitish": {
          "type": "string",
          "description": "The commitish value that determines where the Git tag is created from.\nCan be any branch or commit SHA. Unused if the Git tag already exists."
        },
        "create_time": {
          "type": "string",
          "format": "date-time",
          "description": "Create time of the release in the platform."
        },
        "publish_time": {
          "type": "string",
          "format": "date-time",
          "description": "Publish time of the release in the platform."
        },
        "head_commit_hash": {
          "type": "string",
          "description": "The head commit hash of the release."
        }
      },
      "required": [
        "external_id"
      ]
    },
    "v1RepositoryScanMetadata": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the repository scan metadata.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Metrics are associated with a tenant and the tenant information must be provided."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryScanMetadataSpec",
          "description": "Project scan metadata specification."
        }
      },
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "v1RepositoryScanMetadataSpec": {
      "type": "object",
      "properties": {
        "etags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The etags of the repository.\n\nThe key is the name of the etag, for example, repository.issues.etag.\nThe value is the etag value."
        },
        "github_versions_to_scan": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/RepositoryScanMetadataSpecVersionMetadata"
          },
          "description": "GitHub versions to scan are new version SHAs seen through the Git scanner that need more information to be scanned by the GitHub scanner."
        }
      },
      "description": "Repository scan metadata specification."
    },
    "v1RepositorySpec": {
      "type": "object",
      "properties": {
        "platform_source": {
          "$ref": "#/definitions/v1PlatformSource",
          "description": "The source control platform to which the platform account belongs.",
          "x-endor-name": "Source Control Platform"
        },
        "external_id": {
          "type": "string",
          "description": "The unique identifier of the repository in the source platform before ingestion."
        },
        "http_clone_url": {
          "type": "string",
          "description": "The HTTP clone URL of the project.\nFor example, https://github.com/yarpc/yarpc-go.git.",
          "x-endor-name": "Git Clone URL"
        },
        "owner": {
          "$ref": "#/definitions/v1PlatformAccount",
          "description": "Determines the owner of the repository."
        },
        "create_time": {
          "type": "string",
          "format": "date-time",
          "description": "Create time of the repository in the platform."
        },
        "update_time": {
          "type": "string",
          "format": "date-time",
          "description": "Update time of the repository in the platform."
        },
        "contributors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Contributors represents all account external_ids that have been seen throughout the ingestion."
        },
        "commit_hashes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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."
        },
        "languages": {
          "$ref": "#/definitions/v1Languages",
          "description": "The languages of the repository."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/endorv1Tag"
          },
          "description": "The tags of the repository."
        },
        "branch_protections": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1BranchProtection"
          },
          "description": "Branch protections is a map of branch name to its github branch protection rules."
        },
        "vulnerability_alerts_enabled": {
          "type": "boolean",
          "description": "Denotes whether vulnerability alerts have been enabled on the source control repository.",
          "x-endor-name": "Vulnerability Subscriber"
        },
        "default_branch": {
          "type": "string",
          "description": "The default branch of the source control repository.",
          "x-endor-name": "Default Branch"
        },
        "org": {
          "$ref": "#/definitions/v1Organization",
          "description": "Org contains the github organization information available for this repository."
        },
        "repository_license": {
          "$ref": "#/definitions/v1RepositoryLicense",
          "description": "The license of the repository."
        }
      },
      "required": [
        "platform_source",
        "http_clone_url",
        "default_branch"
      ]
    },
    "v1RepositoryStatus": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a repository status.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Repository status are associated with a tenant.\nPublic repository statuses are formed under a public tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryStatusSpec",
          "description": "Repository status specification."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "The ingested information about a repository status.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1RepositoryStatusSpec": {
      "type": "object",
      "properties": {
        "commit_sha": {
          "type": "string",
          "description": "The SHA attached to the repository status."
        }
      },
      "required": [
        "commit_sha"
      ]
    },
    "v1RepositoryTagProtection": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the repository's tag protection.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Repository's tag protections are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryTagProtectionSpec",
          "description": "Repository's tag protection specification."
        },
        "ingested_object": {
          "$ref": "#/definitions/v1IngestedObject",
          "description": "Raw ingested object."
        }
      },
      "description": "The repository's tag protections.",
      "required": [
        "meta",
        "ingested_object"
      ]
    },
    "v1RepositoryTagProtectionSpec": {
      "type": "object"
    },
    "v1RepositoryVersion": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the repository version.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Repository versions are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1RepositoryVersionSpec",
          "description": "Repository version specifications."
        },
        "scan_object": {
          "$ref": "#/definitions/RepositoryVersionScanObject"
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Context for the repository version will be automatically updated\nto that of the version, unless if it is a CI run."
        }
      },
      "description": "The ingested information about a repository version.",
      "required": [
        "meta",
        "context"
      ]
    },
    "v1RepositoryVersionSpec": {
      "type": "object",
      "properties": {
        "version": {
          "$ref": "#/definitions/v1Version"
        },
        "last_commit_date": {
          "type": "string",
          "format": "date-time",
          "description": "The last known time when the repository version was updated."
        }
      }
    },
    "v1RequestAssuredPackageVersion": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the requested assured package version.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Git repositories are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata are generic for any object."
        },
        "spec": {
          "$ref": "#/definitions/v1RequestAssuredPackageVersionSpec",
          "description": "Specification of the request assured package version."
        }
      },
      "description": "RequestAssuredPackageVersion is a request to have an assured package version patchd..",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1RequestAssuredPackageVersionSpec": {
      "type": "object",
      "properties": {
        "severity_level": {
          "$ref": "#/definitions/v1RequestAssuredPackageVersionSpecSeverityLevel"
        },
        "contacts": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "state": {
          "$ref": "#/definitions/RequestAssuredPackageVersionSpecState"
        },
        "package_version_name": {
          "type": "string"
        },
        "package_version_uuid": {
          "type": "string"
        },
        "package_name": {
          "type": "string",
          "readOnly": true
        },
        "ecosystem": {
          "$ref": "#/definitions/v1Ecosystem",
          "readOnly": true
        },
        "type": {
          "$ref": "#/definitions/SpecPatchType"
        }
      },
      "required": [
        "severity_level",
        "contacts",
        "state",
        "package_version_name"
      ]
    },
    "v1RequestAssuredPackageVersionSpecSeverityLevel": {
      "type": "string",
      "enum": [
        "SEVERITY_LEVEL_UNSPECIFIED",
        "SEVERITY_LEVEL_LOW",
        "SEVERITY_LEVEL_MEDIUM",
        "SEVERITY_LEVEL_HIGH",
        "SEVERITY_LEVEL_CRITICAL"
      ],
      "default": "SEVERITY_LEVEL_UNSPECIFIED"
    },
    "v1RequestStatus": {
      "type": "string",
      "enum": [
        "REQUEST_STATUS_UNSPECIFIED",
        "REQUEST_STATUS_APPROVED",
        "REQUEST_STATUS_DENIED",
        "REQUEST_STATUS_COMPLETED",
        "REQUEST_STATUS_FAILED"
      ],
      "default": "REQUEST_STATUS_UNSPECIFIED",
      "description": "RequestStatus defines the possible requst statuses."
    },
    "v1ResolutionStatus": {
      "type": "object",
      "properties": {
        "status_error": {
          "$ref": "#/definitions/ResolutionStatusStatusError",
          "description": "status_error is the error encountered."
        },
        "target": {
          "type": "string",
          "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."
        },
        "description": {
          "type": "string",
          "description": "A description of the error. Plugins should use proper descriptions that\nwill be helpful to users or operations."
        },
        "operation": {
          "type": "string",
          "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."
        },
        "error_analysis": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ResolutionStatusErrorAnalysis"
          },
          "description": "The analysis of the error based on the error parsing rules\nthat can provide additional context on possible fixes."
        },
        "error_analysis_best_match": {
          "$ref": "#/definitions/ResolutionStatusErrorAnalysis",
          "description": "The best error analysis match ordered by rule priority."
        },
        "target_files": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The content of manifest files or the list of files based on the operation."
        }
      },
      "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."
    },
    "v1ResourceUuids": {
      "type": "object",
      "properties": {
        "uuids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of resource UUIDs."
        }
      }
    },
    "v1RubyToolChain": {
      "type": "object",
      "properties": {
        "version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        },
        "dependabot_version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        },
        "ruby_gems": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1ToolChainVersion"
          }
        }
      },
      "required": [
        "version"
      ]
    },
    "v1RuleSourceType": {
      "type": "string",
      "enum": [
        "RULE_SOURCE_TYPE_UNSPECIFIED",
        "RULE_SOURCE_TYPE_ZIP",
        "RULE_SOURCE_TYPE_TAR",
        "RULE_SOURCE_TYPE_ZSTD",
        "RULE_SOURCE_TYPE_GZIP"
      ],
      "default": "RULE_SOURCE_TYPE_UNSPECIFIED",
      "description": "The source type of the rule set."
    },
    "v1RuleType": {
      "type": "string",
      "enum": [
        "RULE_TYPE_UNSPECIFIED",
        "RULE_TYPE_SEMGREP",
        "RULE_TYPE_SAST"
      ],
      "default": "RULE_TYPE_UNSPECIFIED"
    },
    "v1RustToolChain": {
      "type": "object",
      "properties": {
        "version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        },
        "rustup_version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        },
        "mirai_version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        }
      },
      "required": [
        "version",
        "rustup_version"
      ]
    },
    "v1SAMLProvider": {
      "type": "object",
      "properties": {
        "provider_metadata_url": {
          "type": "string",
          "description": "The SAML metadata URL."
        },
        "sso_url": {
          "type": "string",
          "description": "Single Sign On URL of the identity provider."
        },
        "issuer": {
          "type": "string",
          "title": "Issuer of the identity provider"
        },
        "certificates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Certificate of the identity provider."
        },
        "attribute_names": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Attributes that must be mapped to the Endor identity."
        }
      }
    },
    "v1SBOMKind": {
      "type": "string",
      "enum": [
        "SBOM_KIND_UNSPECIFIED",
        "SBOM_KIND_CYCLONEDX",
        "SBOM_KIND_SPDX"
      ],
      "default": "SBOM_KIND_UNSPECIFIED",
      "description": "SBOM type."
    },
    "v1SBOMOrganizationalContact": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an SBOM organizational contact.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for the object."
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "SBOM organizational contacts are associated with a tenant and tenant information must be provided."
        },
        "spec": {
          "$ref": "#/definitions/v1SBOMOrganizationalContactSpec"
        }
      },
      "required": [
        "spec"
      ]
    },
    "v1SBOMOrganizationalContactSpec": {
      "type": "object",
      "properties": {
        "organizational_entity_name": {
          "type": "string",
          "description": "The name of the organization to be used as the supplier for the SBOM.\nAlthough this is not a required field, this will be validated when trying to export an SBOM."
        },
        "organizational_contacts": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SBOMOrganizationalContactSpecOrganizationalContact"
          },
          "description": "The list of contact to be put as the contact in the SBOM export supplier information."
        },
        "organization_urls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of URLs associated with the given organization, which can be included in the supplier SBOM information."
        }
      },
      "description": "The internal specification of the object.",
      "required": [
        "organizational_entity_name"
      ]
    },
    "v1SBOMOrganizationalContactSpecOrganizationalContact": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        }
      },
      "required": [
        "name"
      ]
    },
    "v1SBOMSpec": {
      "type": "object",
      "properties": {
        "main_component_purl": {
          "type": "string",
          "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."
        },
        "kind": {
          "$ref": "#/definitions/v1SBOMKind"
        }
      },
      "required": [
        "main_component_purl",
        "kind"
      ]
    },
    "v1SCMApp": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the SCM app.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespaces are associated with a tenant."
        },
        "spec": {
          "$ref": "#/definitions/v1SCMAppSpec",
          "description": "The spec of the SCM app."
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates whether the object should be visible in the child namespaces or not."
        }
      },
      "required": [
        "meta",
        "tenant_meta",
        "spec"
      ]
    },
    "v1SCMAppSpec": {
      "type": "object",
      "properties": {
        "app_type": {
          "$ref": "#/definitions/SpecAppType",
          "description": "The type of the app."
        },
        "api_base_url": {
          "type": "string",
          "description": "The base API URL of the app."
        },
        "app_id": {
          "type": "string",
          "description": "The ID of the SCM app."
        },
        "github_app": {
          "$ref": "#/definitions/v1GithubApp"
        }
      },
      "required": [
        "app_type",
        "api_base_url",
        "app_id"
      ]
    },
    "v1SCMCredential": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the SCM credential.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespaces are associated with a tenant."
        },
        "spec": {
          "$ref": "#/definitions/v1SCMCredentialSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagate indicates that the object should be visible in child namespaces."
        }
      },
      "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.",
      "required": [
        "meta",
        "tenant_meta",
        "spec"
      ]
    },
    "v1SCMCredentialSpec": {
      "type": "object",
      "properties": {
        "platform_source": {
          "$ref": "#/definitions/v1PlatformSource",
          "description": "The SCM platform type (GitHub, GitLab, Bitbucket, Azure, etc.)."
        },
        "target_url": {
          "type": "string",
          "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."
        },
        "access_token": {
          "type": "string",
          "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."
        },
        "description": {
          "type": "string",
          "title": "Optional human-readable description for this credential"
        },
        "scm_credential_status": {
          "$ref": "#/definitions/SpecSCMCredentialStatus"
        }
      },
      "required": [
        "platform_source",
        "target_url",
        "access_token"
      ]
    },
    "v1SCMWebhookEvent": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1SCMWebhookEventSpec",
          "description": "SCMWebhookEvent specifications."
        }
      },
      "description": "SCMWebhookEvent represents SCM webhook events that are processed by the system.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "v1SCMWebhookEventSpec": {
      "type": "object",
      "properties": {
        "platform_source": {
          "$ref": "#/definitions/v1PlatformSource",
          "description": "Platform source that the event belongs to."
        },
        "payload": {
          "type": "string",
          "format": "byte",
          "description": "Payload of the event."
        },
        "github_event": {
          "$ref": "#/definitions/v1GitHubEvent"
        },
        "gitlab_event": {
          "$ref": "#/definitions/v1GitLabEvent"
        },
        "bitbucket_event": {
          "$ref": "#/definitions/v1BitbucketEvent"
        },
        "azure_event": {
          "$ref": "#/definitions/v1AzureEvent"
        }
      },
      "required": [
        "platform_source",
        "payload"
      ]
    },
    "v1SarifArtifactContent": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string",
          "title": "UTF-8 encoded content"
        },
        "binary": {
          "type": "string",
          "title": "Base64-encoded content"
        },
        "rendered": {
          "$ref": "#/definitions/v1SarifText",
          "title": "A rendered representation of the content"
        }
      },
      "description": "Represents content of an artifact."
    },
    "v1SarifArtifactLocation": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": "URI of the artifact (file)"
        },
        "uri_base_id": {
          "type": "string",
          "title": "Base URI identifier for resolving relative paths"
        }
      }
    },
    "v1SarifCodeFlow": {
      "type": "object",
      "properties": {
        "message": {
          "$ref": "#/definitions/v1SarifText",
          "title": "A message relevant to the code flow"
        },
        "thread_flows": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SarifThreadFlow"
          },
          "title": "An array of one or more unique threadFlow objects"
        }
      },
      "description": "Code flow object representing a sequence of code locations that specify a data flow path."
    },
    "v1SarifFingerprint": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "title": "Unique identifier based on matching criteria"
        },
        "hash": {
          "type": "string",
          "title": "Hash of the primary location line for deduplication"
        },
        "commit_sha": {
          "type": "string",
          "title": "Git commit SHA where the finding was detected"
        },
        "email": {
          "type": "string",
          "title": "Email of the commit author"
        },
        "author": {
          "type": "string",
          "title": "Name of the commit author"
        },
        "date": {
          "type": "string",
          "title": "Date of the commit"
        },
        "commit_message": {
          "type": "string",
          "title": "Commit message associated with the change"
        }
      }
    },
    "v1SarifLocation": {
      "type": "object",
      "properties": {
        "physical_location": {
          "$ref": "#/definitions/SarifLocationPhysicalLocation",
          "title": "Physical location information for the finding"
        },
        "id": {
          "type": "integer",
          "format": "int32",
          "description": "A unique identifier for this location object."
        },
        "logical_locations": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SarifLogicalLocation"
          },
          "description": "The logical locations associated with a physical location."
        },
        "message": {
          "$ref": "#/definitions/v1SarifText",
          "title": "A message relevant to the location"
        },
        "annotations": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SarifRegion"
          },
          "title": "An array of regions that describe regions within the artifact specified by the location object that is relevant to the location"
        },
        "relationships": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SarifRelationship"
          },
          "description": "An array of relationships between this location and other locations."
        }
      }
    },
    "v1SarifLogicalLocation": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the logical location."
        },
        "index": {
          "type": "integer",
          "format": "int32",
          "description": "The 0-based index of this logical location in an array of logical locations."
        },
        "fully_qualified_name": {
          "type": "string",
          "description": "The fully qualified name of the logical location."
        },
        "decorated_name": {
          "type": "string",
          "description": "The name of the decorated logical location."
        },
        "parent_index": {
          "type": "integer",
          "format": "int32",
          "description": "The name of the parent of this logical location."
        },
        "kind": {
          "type": "string",
          "description": "The kind of logical location."
        },
        "properties": {
          "type": "object",
          "description": "Key/value pairs that provide additional information."
        }
      },
      "description": "A logical location that can be used to locate an artifact."
    },
    "v1SarifRegion": {
      "type": "object",
      "properties": {
        "start_column": {
          "type": "integer",
          "format": "int32",
          "title": "Starting column number in the file"
        },
        "end_column": {
          "type": "integer",
          "format": "int32",
          "title": "Ending column number in the file"
        },
        "start_line": {
          "type": "integer",
          "format": "int32",
          "title": "Starting line number in the file"
        },
        "end_line": {
          "type": "integer",
          "format": "int32",
          "title": "Ending line number in the file"
        },
        "snippet": {
          "$ref": "#/definitions/v1SarifText",
          "title": "Code snippet containing the region"
        }
      }
    },
    "v1SarifRelationship": {
      "type": "object",
      "properties": {
        "target": {
          "type": "integer",
          "format": "int32",
          "description": "The id of the location that is the target of the relationship."
        },
        "kinds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A set of strings that describe the relationship."
        },
        "description": {
          "$ref": "#/definitions/v1SarifText",
          "description": "A description of the relationship."
        },
        "properties": {
          "type": "object",
          "description": "Key/value pairs that provide additional information about the relationship."
        }
      },
      "description": "A relationship between two locations."
    },
    "v1SarifReportingDescriptorReference": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The id of the referenced reporting descriptor."
        },
        "index": {
          "type": "integer",
          "format": "int32",
          "description": "The index of the referenced reporting descriptor in the toolComponent.rules array."
        },
        "guid": {
          "type": "string",
          "description": "The globally unique identifier for the referenced reporting descriptor."
        },
        "tool_component": {
          "$ref": "#/definitions/v1SarifToolComponentReference",
          "description": "A reference to the tool component that contains the referenced reporting descriptor."
        }
      },
      "description": "A reference to a reporting descriptor."
    },
    "v1SarifResult": {
      "type": "object",
      "properties": {
        "rule_id": {
          "type": "string",
          "title": "Unique identifier of the rule that triggered this result"
        },
        "message": {
          "$ref": "#/definitions/v1SarifText",
          "title": "Human-readable description of the finding"
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SarifLocation"
          },
          "title": "List of locations in the code where the finding was detected"
        },
        "fingerprints": {
          "$ref": "#/definitions/v1SarifFingerprint",
          "title": "Complete fingerprint of the finding, used for deduplication"
        },
        "partial_fingerprints": {
          "$ref": "#/definitions/v1SarifFingerprint",
          "title": "Partial fingerprint of the finding, used for approximate matching"
        },
        "properties": {
          "$ref": "#/definitions/v1SarifResultProperty"
        },
        "suppressions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SarifSuppression"
          }
        },
        "level": {
          "type": "string",
          "title": "Severity level of the notification (e.g., \"error\", \"warning\")"
        },
        "code_flows": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SarifCodeFlow"
          },
          "description": "Code flow object representing a sequence of code locations that specify a data flow path."
        }
      }
    },
    "v1SarifResultProperty": {
      "type": "object",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "List of tags associated with the finding, used for categorization and filtering"
        },
        "cvss_score": {
          "type": "number",
          "format": "float",
          "title": "Common Vulnerability Scoring System (CVSS) score, ranging from 0.0 to 10.0"
        },
        "epss_probability_score": {
          "type": "number",
          "format": "double",
          "title": "Exploit Prediction Scoring System (EPSS) probability score, indicating likelihood of exploitation"
        },
        "epss_percentile_score": {
          "type": "number",
          "format": "double",
          "title": "EPSS percentile score, showing how severe the vulnerability is compared to others"
        },
        "finding_uuid": {
          "type": "string",
          "title": "Unique identifier for the finding"
        },
        "project_uuid": {
          "type": "string",
          "title": "Unique identifier for the project where the finding was discovered"
        },
        "finding_url": {
          "type": "string",
          "title": "URL to view the finding in the Endor platform"
        },
        "action_policies_triggered": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "List of action policies that were triggered by this finding"
        },
        "cvss_vector": {
          "type": "string",
          "title": "CVSS vector string describing the characteristics of the vulnerability"
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "List of categories the finding belongs to"
        },
        "impact_score": {
          "type": "number",
          "format": "float",
          "title": "Custom impact score assigned to the finding based on business context"
        },
        "explanation": {
          "type": "string",
          "title": "Detailed explanation of the finding and its implications"
        },
        "remediation": {
          "type": "string",
          "title": "Recommended steps to fix or mitigate the finding"
        },
        "cvss_version": {
          "$ref": "#/definitions/SpecCVSSVersion",
          "title": "The version of the CVSS score used"
        }
      }
    },
    "v1SarifStack": {
      "type": "object",
      "properties": {
        "message": {
          "$ref": "#/definitions/v1SarifText",
          "title": "A message relevant to this call stack"
        },
        "frames": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SarifStackFrame"
          },
          "title": "An array of stack frames"
        }
      },
      "description": "Represents a call stack.",
      "required": [
        "frames"
      ]
    },
    "v1SarifStackFrame": {
      "type": "object",
      "properties": {
        "location": {
          "$ref": "#/definitions/v1SarifLocation",
          "title": "The location of the stack frame"
        },
        "module": {
          "type": "string",
          "title": "The name of the module that contains the location to which this stack frame refers"
        },
        "thread_id": {
          "type": "integer",
          "format": "int32",
          "title": "The thread identifier"
        },
        "parameters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "The parameters passed to the function"
        }
      },
      "description": "A single stack frame."
    },
    "v1SarifSuppression": {
      "type": "object",
      "properties": {
        "kind": {
          "$ref": "#/definitions/SarifSuppressionKind",
          "description": "Type of suppression."
        }
      }
    },
    "v1SarifText": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string",
          "title": "The actual text content"
        },
        "markdown": {
          "type": "string",
          "description": "Markdown representation of the content."
        }
      }
    },
    "v1SarifThreadFlow": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "title": "A unique identifier for the thread flow within the code flow"
        },
        "message": {
          "$ref": "#/definitions/v1SarifText",
          "title": "A message relevant to the thread flow"
        },
        "initial_state": {
          "type": "object",
          "title": "Values of relevant expressions at the start of the thread flow"
        },
        "immutable_state": {
          "type": "object",
          "title": "Values of relevant expressions at the start of the thread flow that remain constant"
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SarifThreadFlowLocation"
          },
          "title": "The locations that were executed during this thread flow"
        }
      },
      "description": "Thread flow object representing a sequence of code locations executed by a single thread.",
      "required": [
        "locations"
      ]
    },
    "v1SarifThreadFlowLocation": {
      "type": "object",
      "properties": {
        "index": {
          "type": "integer",
          "format": "int32",
          "title": "The index of the thread flow location within the thread flow"
        },
        "location": {
          "$ref": "#/definitions/v1SarifLocation",
          "title": "The code location"
        },
        "module": {
          "type": "string",
          "title": "The name of the module that contains the code location"
        },
        "stack": {
          "$ref": "#/definitions/v1SarifStack",
          "title": "The call stack leading to this location"
        },
        "web_request": {
          "$ref": "#/definitions/v1SarifWebRequest",
          "title": "Web request associated with the thread flow location"
        },
        "web_response": {
          "$ref": "#/definitions/v1SarifWebResponse",
          "title": "Web response associated with the thread flow location"
        },
        "kinds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "An array of strings that classify the location"
        },
        "state": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1SarifText"
          },
          "title": "Values of relevant expressions at this location"
        },
        "nesting_level": {
          "type": "integer",
          "format": "int32",
          "title": "An integer representing the level of nesting within the thread flow"
        },
        "execution_order": {
          "type": "integer",
          "format": "int32",
          "title": "An integer representing the temporal order in which execution reached this location"
        },
        "execution_time_utc": {
          "type": "string",
          "title": "The time at which execution reached this location"
        },
        "importance": {
          "$ref": "#/definitions/SarifThreadFlowLocationImportance"
        },
        "taxa": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SarifReportingDescriptorReference"
          },
          "description": "A set of distinct strings that categorize the thread flow location."
        }
      },
      "description": "A location visited by an analysis tool in the course of simulating or tracing the execution of a program."
    },
    "v1SarifToolComponentReference": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the tool component."
        },
        "index": {
          "type": "integer",
          "format": "int32",
          "description": "The index of the tool component in the tool.extensions array."
        },
        "guid": {
          "type": "string",
          "description": "The globally unique identifier for the tool component."
        }
      },
      "description": "A reference to a tool component."
    },
    "v1SarifWebRequest": {
      "type": "object",
      "properties": {
        "index": {
          "type": "integer",
          "format": "int32",
          "title": "The index of the request within run.webRequests"
        },
        "protocol": {
          "type": "string",
          "title": "The HTTP protocol used"
        },
        "version": {
          "type": "string",
          "title": "The HTTP version"
        },
        "target": {
          "type": "string",
          "title": "The target of the request"
        },
        "method": {
          "type": "string",
          "title": "The HTTP method"
        },
        "headers": {
          "type": "object",
          "title": "The request headers"
        },
        "parameters": {
          "type": "object",
          "title": "The request parameters"
        },
        "body": {
          "$ref": "#/definitions/v1SarifArtifactContent",
          "title": "The body of the request"
        }
      },
      "description": "Describes an HTTP request."
    },
    "v1SarifWebResponse": {
      "type": "object",
      "properties": {
        "index": {
          "type": "integer",
          "format": "int32",
          "title": "The index of the response within run.webResponses"
        },
        "protocol": {
          "type": "string",
          "title": "The HTTP protocol used"
        },
        "version": {
          "type": "string",
          "title": "The HTTP version"
        },
        "status_code": {
          "type": "integer",
          "format": "int32",
          "title": "The status code"
        },
        "reason_phrase": {
          "type": "string",
          "title": "The reason phrase"
        },
        "headers": {
          "type": "object",
          "title": "The response headers"
        },
        "body": {
          "$ref": "#/definitions/v1SarifArtifactContent",
          "title": "The body of the response"
        },
        "no_response_received": {
          "type": "boolean",
          "title": "Set to true if the response was intercepted"
        }
      },
      "description": "Describes an HTTP response."
    },
    "v1SavedQuery": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a saved query.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The Tenant Metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1SavedQuerySpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates that the object should be visible in child namespaces."
        }
      },
      "description": "SavedQuery implements the metric query requests.",
      "required": [
        "tenant_meta",
        "meta"
      ]
    },
    "v1SavedQuerySpec": {
      "type": "object",
      "properties": {
        "query": {
          "$ref": "#/definitions/v1Query",
          "description": "The actual query to be executed against the namespace\nof this object."
        },
        "monitor": {
          "type": "boolean",
          "description": "Indicates that the service will automatically evaluate this query on\na daily basis and keep a value available for quick display."
        },
        "lock": {
          "type": "boolean",
          "description": "Lock is used internally and not available to users.",
          "readOnly": true
        },
        "query_type": {
          "$ref": "#/definitions/SavedQuerySpecQueryType"
        },
        "is_default": {
          "type": "boolean",
          "description": "Indicates that this saved query is the namespace default for the\nresource kind in the query."
        }
      }
    },
    "v1ScalaToolChain": {
      "type": "object",
      "properties": {
        "version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        },
        "java_version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        }
      },
      "required": [
        "version"
      ]
    },
    "v1ScanCreditUsage": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the scan credit usage record.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "ScanCreditUsage is associated with a root tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata for the scan credit usage record."
        },
        "spec": {
          "$ref": "#/definitions/v1ScanCreditUsageSpec",
          "description": "Specification of the scan credit usage record."
        }
      },
      "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.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "v1ScanCreditUsageSpec": {
      "type": "object",
      "properties": {
        "window_start": {
          "type": "string",
          "format": "date-time",
          "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."
        },
        "window_end": {
          "type": "string",
          "format": "date-time",
          "description": "End of the aggregation window this snapshot covers (exclusive). All\nScanResults with create_time in [window_start, window_end) contributed\nto window_* fields."
        },
        "credits_period_start": {
          "type": "string",
          "format": "date-time",
          "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."
        },
        "window_scan_credits": {
          "type": "string",
          "format": "int64",
          "description": "Total credits consumed during [window_start, window_end). Sum of all\nsix window_breakdown counters."
        },
        "cumulative_scan_credits": {
          "type": "string",
          "format": "int64",
          "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."
        },
        "window_breakdown": {
          "$ref": "#/definitions/ScanCreditUsageScanCreditBreakdown",
          "description": "Per-context, per-component breakdown for [window_start, window_end)."
        },
        "cumulative_breakdown": {
          "$ref": "#/definitions/ScanCreditUsageScanCreditBreakdown",
          "description": "Per-context, per-component breakdown cumulative since credits_period_start\nthrough window_end."
        },
        "scan_credit_limit": {
          "type": "string",
          "format": "int64",
          "description": "Scan credit limit in effect at aggregation time. Snapshotted from\nEndorLicense.spec.scan_credit_limit. Overage = max(0, cumulative_scan_credits - credit_limit)."
        },
        "onboarded_project_count": {
          "type": "integer",
          "format": "int32",
          "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."
        },
        "overflow_project_count": {
          "type": "integer",
          "format": "int32",
          "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."
        }
      },
      "required": [
        "window_start",
        "window_end",
        "credits_period_start",
        "window_scan_credits",
        "cumulative_scan_credits",
        "window_breakdown",
        "cumulative_breakdown"
      ]
    },
    "v1ScanLogRequest": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of scan log request.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace of the message that is accessed."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ScanLogRequestSpec"
        }
      },
      "description": "ScanLogRequest represents a CRUD operation on a message.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1ScanLogRequestLogMessage": {
      "type": "object",
      "properties": {
        "level": {
          "$ref": "#/definitions/v1LogLevel",
          "description": "The log level."
        },
        "json_payload": {
          "type": "object",
          "description": "The json payload of the message."
        },
        "tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The tags that are associated with the log message."
        },
        "timestamp": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp of the log message."
        }
      }
    },
    "v1ScanLogRequestSpec": {
      "type": "object",
      "properties": {
        "start_time": {
          "type": "string",
          "format": "date-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."
        },
        "max_entries": {
          "type": "integer",
          "format": "int32",
          "description": "max_entries is the maximum number of log entries to return."
        },
        "log_messages": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ScanLogRequestLogMessage"
          },
          "description": "An array of log messages provided as JSON payloads\nthat the output of the request.",
          "readOnly": true
        },
        "newest_first": {
          "type": "boolean",
          "description": "newest_first asks for log entries to be returned in reverse chronological\norder."
        },
        "admin_filter": {
          "type": "string",
          "description": "admin_filter is an extra filter that is only available for admin users."
        },
        "log_levels": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1LogLevel"
          },
          "description": "log_levels are the log levels that should be used to filter the logs.\nOptional argument."
        },
        "scan_request_uuid": {
          "type": "string",
          "description": "scan_request_uuid that should be used to filter the logs."
        },
        "project_uuid": {
          "type": "string",
          "description": "project_uuid of the project that should be used to filter the logs."
        },
        "installation_uuid": {
          "type": "string",
          "description": "installation_uuid of the installation that should be used to filter the logs."
        },
        "onprem_scheduler_uuid": {
          "type": "string",
          "description": "onprem_scheduler_uuid of the onprem scheduler that should be used to filter the logs."
        },
        "scan_result_uuid": {
          "type": "string",
          "description": "UUID of the scan result that should be used to filter the logs."
        },
        "execution_id": {
          "type": "string",
          "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."
        },
        "admin_search": {
          "type": "boolean",
          "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."
        },
        "applied_filter": {
          "type": "string",
          "description": "applied_filter is the filter that is applied to the logs.",
          "readOnly": true
        },
        "end_time": {
          "type": "string",
          "format": "date-time",
          "description": "Cap the time range of the logs to be returned.\nDefault is 2 days from start_time."
        },
        "traverse": {
          "type": "boolean",
          "description": "traverse includes child namespaces in the search. Only honored when\ntarget_uuid = admin_search. Endor-only."
        }
      },
      "required": [
        "max_entries"
      ]
    },
    "v1ScanProfile": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "UUID is a universally unique identifier for the tool chain profile.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta"
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Meta identifies the tool chain object."
        },
        "spec": {
          "$ref": "#/definitions/v1ScanProfileSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates that the object should be visible in the child namespaces."
        }
      },
      "description": "ScanProfile represents the scan configuration to use across different\nprojects.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "v1ScanProfileSpec": {
      "type": "object",
      "properties": {
        "toolchain_profile": {
          "$ref": "#/definitions/v1ToolChainProfile"
        },
        "automated_scan_parameters": {
          "$ref": "#/definitions/v1AutomatedScanParameters",
          "description": "automated_scan_parameters is the parameters that must be applied during\ncloud scans by Endor Labs. This is optional."
        },
        "remediation_parameters": {
          "$ref": "#/definitions/v1RemediationParameters",
          "description": "remediation_parameters contains the parameters required for remediation\nactions."
        },
        "is_default": {
          "type": "boolean",
          "description": "is_default indicates that the scan profile is the namespace default."
        },
        "security_review_scanner_parameters": {
          "$ref": "#/definitions/SpecSecurityReviewScannerParameters",
          "description": "security_review_scanner_parameters contains the parameters required for\nthe security review scanner."
        },
        "exporter_parameters": {
          "$ref": "#/definitions/SpecExporterParameters",
          "description": "exporter_parameters contains the parameters required for the exporter."
        },
        "ai_sast_analysis_parameters": {
          "$ref": "#/definitions/v1AISastAnalysisParameters",
          "description": "ai_sast_analysis_parameters contains parameters to dictate AI Sast Analysis workflow specs."
        }
      },
      "description": "Spec is the internal specification of the object."
    },
    "v1ScanRequest": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the source control scan request.",
          "readOnly": true,
          "x-endor-name": "ScanRequest UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "ScanRequests are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ScanRequestSpec",
          "description": "ScanRequest specifications."
        }
      },
      "description": "ScanRequest represents a request to scan a particular PR and is only\nused by the system.",
      "required": [
        "meta"
      ]
    },
    "v1ScanRequestSpec": {
      "type": "object",
      "properties": {
        "project_uuid": {
          "type": "string",
          "description": "Specifies the UUID of the project."
        },
        "installation_uuid": {
          "type": "string",
          "description": "Specifies the UUID of the installation."
        },
        "pull_request_id": {
          "type": "string",
          "description": "The PR for which this request is been created. If no PR\nis provided, it is assumed that this is merge to the default\nbranch and it will be executed with the --pr flag."
        },
        "commit_sha": {
          "type": "string",
          "description": "The commit sha of the request that will be checked out."
        },
        "ref": {
          "type": "string",
          "description": "The ref of the base branch that the PR is being merged into."
        },
        "status": {
          "$ref": "#/definitions/SpecScanRequestStatus"
        },
        "result": {
          "$ref": "#/definitions/SpecScanRequestResult"
        },
        "external_scm_reference": {
          "type": "string",
          "description": "external_reference to the ID of the SCM tool that has initiated this\nrequested."
        },
        "pr_run_uuid": {
          "type": "string",
          "description": "pr_run_uuid is the UUID of the PR run that executed this request."
        },
        "origin": {
          "$ref": "#/definitions/SpecScanRequestOrigin",
          "description": "origin is the originated caller of the scan request."
        },
        "request_full_scan": {
          "type": "boolean",
          "description": "request_full_scan is a flag to indicate if the scan should be a full\nscan."
        },
        "request_pr_comments": {
          "type": "boolean",
          "description": "request_pr_comments is a flag to indicate if the scan should comment on\nthe PR."
        },
        "scheduled_time": {
          "type": "string",
          "format": "date-time",
          "description": "scheduled_time is the time at which the scan is scheduled to run.",
          "readOnly": true
        },
        "type": {
          "$ref": "#/definitions/SpecScanRequestType",
          "description": "type of the request."
        },
        "tenant_name": {
          "type": "string",
          "description": "tenant_name  is the tenant (and not the namespace) that is the owner\nof this scan request."
        },
        "is_on_premise": {
          "type": "boolean",
          "description": "is_on_premise specifies if this scan request\nis processed by scheduler on premise.",
          "readOnly": true
        },
        "pr_check_run_conclusion": {
          "type": "string",
          "description": "pr_check_run_conclusion is the conclusion of the PR check run."
        },
        "request_rescan": {
          "type": "boolean",
          "description": "request_rescan is a flag to request rescan."
        },
        "request_pr_incremental": {
          "type": "boolean",
          "description": "request_pr_incremental is a flag to request a PR incremental scan."
        },
        "finding_refresh": {
          "$ref": "#/definitions/SpecFindingRefresh",
          "description": "finding_refresh carries metadata for SCAN_REQUEST_TYPE_FINDING_REFRESH requests."
        },
        "github_payload": {
          "$ref": "#/definitions/v1GitHubPayload",
          "description": "GitHub webhook payload (PR or merge-queue dequeue event)."
        },
        "bitbucket_payload": {
          "$ref": "#/definitions/v1BitbucketPayload",
          "description": "Bitbucket Cloud / Data Center webhook payload (PR or merge event)."
        },
        "gitlab_payload": {
          "$ref": "#/definitions/v1GitlabPayload",
          "description": "GitLab webhook payload (merge request event)."
        },
        "azure_payload": {
          "$ref": "#/definitions/v1AzurePayload",
          "description": "Azure DevOps webhook payload (pull request event)."
        }
      }
    },
    "v1ScanResult": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the object.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Information about the tenant and namespace that the scan ran in."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ScanResultSpec",
          "description": "Resource kind specific data."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Contexts keep objects from different scans separated."
        }
      },
      "description": "Contains the results of an endorctl scan.",
      "required": [
        "meta",
        "context"
      ]
    },
    "v1ScanResultSpec": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/ScanResultSpecStatus",
          "description": "Success state of the scan."
        },
        "errors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Deprecated."
        },
        "warnings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Deprecated."
        },
        "infos": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Deprecated."
        },
        "start_time": {
          "type": "string",
          "format": "date-time",
          "description": "Time the scan started."
        },
        "end_time": {
          "type": "string",
          "format": "date-time",
          "description": "Time the scan ended."
        },
        "stats": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "Map of stats such as how many issues were ingested during the scan."
        },
        "type": {
          "$ref": "#/definitions/ScanResultSpecType",
          "description": "Type of scan that generated this scan result.\nAlways set to TYPE_ALL_SCANS."
        },
        "refs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of branches scanned."
        },
        "environment": {
          "$ref": "#/definitions/SpecEnvironment",
          "description": "All the information available about the input parameters and the host environment."
        },
        "has_panic": {
          "type": "boolean",
          "description": "True if there was a panic during the scan."
        },
        "exit_code": {
          "$ref": "#/definitions/v1EndorctlRC",
          "description": "The exit code of the scan."
        },
        "logs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "User facing log output for the scan."
        },
        "policies_triggered": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of policy uuids triggered during the scan."
        },
        "warning_findings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of warning finding uuids identified by the scan."
        },
        "blocking_findings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of blocking finding uuids identified by the scan."
        },
        "runtimes": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "A map of internal scan type runtimes (in milliseconds) indexed by internal scan type string."
        },
        "all_findings": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/SpecFindingData"
          },
          "description": "Deprecated."
        },
        "deleted_findings": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/SpecFindingData"
          },
          "description": "Map of basic metadata for all findings deleted by the scan, indexed by finding uuid.\nNot available for CI runs."
        },
        "languages_detected": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of languages detected by the scan."
        },
        "exception_findings": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/SpecFindingData"
          },
          "description": "Deprecated."
        },
        "findings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of all finding UUIDs identified by the scan."
        },
        "provisioning_result_uuid": {
          "type": "string"
        },
        "versions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Version"
          },
          "description": "Version information for each ref."
        },
        "ecosystem_pkg_counts": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "Number of package versions per ecosystems processed during the scan."
        },
        "ecosystem_dep_counts": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "Number of dependencies per ecosystems processed during the scan."
        },
        "components_executed": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SpecScanComponent"
          },
          "description": "Scanner components that actually executed during this scan."
        },
        "deleted_package_versions": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/SpecPackageVersionData"
          },
          "description": "List of deleted package versions indexed by UUID."
        },
        "provisioning_result": {
          "$ref": "#/definitions/SpecProvisioningResultData",
          "description": "Provisioning result data."
        }
      },
      "description": "ScanResult specific data.",
      "required": [
        "status",
        "type"
      ]
    },
    "v1ScanState": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "v1ScanWorkflow": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The unique identifier of the scan workflow.",
          "readOnly": true,
          "x-endor-name": "Scan Workflow UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The tenant to which the scan workflow belongs."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ScanWorkflowSpec",
          "description": "Scan Workflow specifications."
        }
      },
      "description": "ScanWorkflow corresponds to a workflow of scan steps.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1ScanWorkflowResult": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The unique identifier of the scan workflow result.",
          "readOnly": true,
          "x-endor-name": "Scan Workflow Result UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The tenant to which the scan workflow result belongs."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ScanWorkflowResultSpec",
          "description": "Scan Workflow Result specifications."
        },
        "context": {
          "$ref": "#/definitions/v1Context",
          "description": "Contexts keep objects from different scans separated."
        }
      },
      "description": "ScanWorkflowResult corresponds to a workflow scan result.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "v1ScanWorkflowResultSpec": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/ScanResultSpecStatus",
          "description": "Success state."
        },
        "start_time": {
          "type": "string",
          "format": "date-time",
          "description": "Time the scan started."
        },
        "end_time": {
          "type": "string",
          "format": "date-time",
          "description": "Time the scan ended."
        },
        "execution_id": {
          "type": "string",
          "description": "The execution ID for all scans."
        },
        "workflow_results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecWorkflowResult"
          },
          "description": "The workflow step results."
        },
        "stats": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "Map of stats such as how many issues were ingested during the scan."
        },
        "versions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Version"
          },
          "description": "Version information for each ref."
        }
      },
      "required": [
        "status"
      ]
    },
    "v1ScanWorkflowSpec": {
      "type": "object",
      "properties": {
        "steps": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecWorkflowStep"
          },
          "description": "The workflow steps."
        },
        "remediation_parameters": {
          "$ref": "#/definitions/v1RemediationParameters",
          "description": "remediation_parameters contains the parameters required for remediation\nactions of the analytic scan."
        },
        "automated_scan_parameters": {
          "$ref": "#/definitions/v1AutomatedScanParameters",
          "description": "automated_scan_parameters contains parameters that can be applied across\nall cloud workflow scans."
        }
      }
    },
    "v1ScopePolicy": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a scope policy.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Scope policies are issued per namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1ScopePolicySpec"
        }
      },
      "description": "ScopePolicy represents a scope policy in the system. Scope policies allow users\nto select for a set of projects (or namespaces) as defined by the project selectors.\nIt is the set of policies that are applied to these projects as defined by a policy selector.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1ScopePolicySpec": {
      "type": "object",
      "properties": {
        "project_namespace_selector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of namespaces for which this scope rule will apply.\nFor example, defining a namespace \"tenant\" will mean that the rule applies for all\nprojects in the namespace.",
          "x-endor-name": "Project Namespace Selector"
        },
        "project_tag_selector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of tags that projects must have for the scope policy to be executed against.\nIf left empty, the scope policy applies to all projects of the namespace. The items in the array\ncorrespond to an OR operator. That is, any project with a tag that matches any\nof the project_selector values will be matched.",
          "x-endor-name": "Project Tag Selector"
        },
        "excluded_project_tag_selector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of tags that projects must not have for the scope policy to be executed against.",
          "x-endor-name": "Excluded Project Tag Selector"
        },
        "policy_namespace_selector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Selects all policies in the namespace to be applied.\nIf the policy_namespace_selector is defined, the policy_tag_selector cannot be defined at the same time.\nFor example, defining a policy_namespace_selector of \"tenant\" will indicate that all policies\nin the tenant must be applied to the projects defined with the above selectors.",
          "x-endor-name": "Policy Namespace Selector"
        },
        "policy_tag_selector": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The set of tags that policies must match to be applied to a project.",
          "x-endor-name": "Policy Tag Selector"
        }
      },
      "required": [
        "project_namespace_selector",
        "policy_namespace_selector"
      ]
    },
    "v1ScoreCard": {
      "type": "object",
      "properties": {
        "overall_score": {
          "type": "number",
          "format": "float",
          "description": "The overall score."
        },
        "category_scores": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1CategoryScore"
          },
          "description": "The per category scores."
        },
        "analysis_scope_description": {
          "type": "string",
          "description": "Description of the analysis scope."
        }
      },
      "description": "A scorecard contains a total score per ScoreCategory."
    },
    "v1ScoreCategory": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "v1ScoreFactor": {
      "type": "object",
      "properties": {
        "category": {
          "$ref": "#/definitions/v1ScoreCategory",
          "description": "The category for this factor."
        },
        "score": {
          "type": "integer",
          "format": "int32",
          "description": "The score for this factor."
        },
        "description": {
          "type": "string",
          "description": "Text description of the factor and its meaning."
        },
        "name": {
          "type": "string",
          "description": "An external name for the factor."
        },
        "evidence": {
          "type": "string",
          "description": "The details of what the factor was raised."
        },
        "id": {
          "type": "string",
          "description": "Unique ID to identify the factor."
        },
        "score_float": {
          "type": "number",
          "format": "float",
          "description": "The float value of the score for the factor."
        }
      },
      "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."
    },
    "v1ScoreFactorList": {
      "type": "object",
      "properties": {
        "score_factors": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1ScoreFactor"
          }
        }
      },
      "description": "A list of score factors that are directly exported by the related anlaytics."
    },
    "v1ScoreOptions": {
      "type": "object",
      "properties": {
        "boost": {
          "type": "number",
          "format": "float",
          "description": "boost is used to boost the score of the result."
        },
        "constant": {
          "type": "number",
          "format": "float",
          "description": "constant is to used to replace the score of the result."
        }
      },
      "description": "ScoreOptions is used to score the result and potentially adjust the score."
    },
    "v1ScpmData": {
      "type": "object",
      "properties": {
        "organization_access": {
          "$ref": "#/definitions/v1OrganizationAccess",
          "description": "Organization-level access settings."
        },
        "repository_access": {
          "$ref": "#/definitions/v1RepositoryAccess",
          "description": "Repository-level access settings."
        },
        "branch_access": {
          "$ref": "#/definitions/v1BranchAccess",
          "description": "Branch-level protection settings indexed by branch name."
        },
        "platform_source": {
          "$ref": "#/definitions/v1PlatformSource",
          "description": "The platform where the source code of the project is located."
        },
        "raw": {
          "type": "object",
          "description": "Raw, platform specific, ingested data."
        }
      },
      "description": "ScpmData contains normalized SCPM data.",
      "required": [
        "platform_source",
        "raw"
      ]
    },
    "v1SearchClause": {
      "type": "object",
      "properties": {
        "equals": {
          "$ref": "#/definitions/v1SearchClauseEquals"
        },
        "text": {
          "$ref": "#/definitions/v1SearchClauseText"
        },
        "query_string": {
          "$ref": "#/definitions/v1SearchClauseQueryString"
        },
        "in": {
          "$ref": "#/definitions/v1SearchClauseIn"
        },
        "phrase": {
          "$ref": "#/definitions/v1SearchClausePhrase"
        },
        "range": {
          "$ref": "#/definitions/v1SearchClauseRange"
        },
        "wildcard": {
          "$ref": "#/definitions/v1SearchClauseWildcard"
        },
        "autocomplete": {
          "$ref": "#/definitions/v1SearchClauseAutocomplete"
        },
        "compound": {
          "$ref": "#/definitions/v1SearchQuery"
        },
        "regex": {
          "$ref": "#/definitions/v1SearchClauseRegex"
        }
      },
      "description": "SearchClause defines the search criteria."
    },
    "v1SearchClauseAutocomplete": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string"
        },
        "query": {
          "type": "string"
        },
        "token_order": {
          "type": "string",
          "title": "\"sequential\" or \"any\""
        },
        "fuzzy": {
          "$ref": "#/definitions/v1Fuzzy",
          "description": "Fuzzy search is used to search for a similar string. Parameters\ndetermine the deviation."
        },
        "score_options": {
          "$ref": "#/definitions/v1ScoreOptions"
        }
      },
      "description": "Search clause for the autocomplete operator.",
      "required": [
        "path",
        "query"
      ]
    },
    "v1SearchClauseEquals": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string",
          "description": "The path to the field to search."
        },
        "value": {
          "$ref": "#/definitions/v1SearchValue",
          "description": "The value to search for."
        },
        "score_options": {
          "$ref": "#/definitions/v1ScoreOptions"
        }
      },
      "description": "Search clause for equals operator. Field must be indexed as token.",
      "required": [
        "path",
        "value"
      ]
    },
    "v1SearchClauseIn": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string"
        },
        "values": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SearchValue"
          }
        },
        "score_options": {
          "$ref": "#/definitions/v1ScoreOptions"
        }
      },
      "description": "Search clause for in operator. Field must be indexed as token.",
      "required": [
        "path",
        "values"
      ]
    },
    "v1SearchClausePhrase": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string"
        },
        "query": {
          "type": "string"
        },
        "score_options": {
          "$ref": "#/definitions/v1ScoreOptions"
        }
      },
      "description": "Search clause for phrase operator. Field must be indexed as text.",
      "required": [
        "path",
        "query"
      ]
    },
    "v1SearchClauseQueryString": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string"
        },
        "query": {
          "type": "string"
        },
        "score_options": {
          "$ref": "#/definitions/v1ScoreOptions"
        }
      },
      "description": "Search clause for query string operator. Field must be indexed as text.",
      "required": [
        "path",
        "query"
      ]
    },
    "v1SearchClauseRange": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string"
        },
        "gte": {
          "$ref": "#/definitions/v1SearchValue"
        },
        "lte": {
          "$ref": "#/definitions/v1SearchValue"
        },
        "gt": {
          "$ref": "#/definitions/v1SearchValue"
        },
        "lt": {
          "$ref": "#/definitions/v1SearchValue"
        },
        "score_options": {
          "$ref": "#/definitions/v1ScoreOptions"
        }
      },
      "description": "Search clause for the range operator. Field must be indexed as number.",
      "required": [
        "path"
      ]
    },
    "v1SearchClauseRegex": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string"
        },
        "query": {
          "type": "string"
        },
        "allow_analyzed": {
          "type": "boolean",
          "description": "Default: false."
        },
        "score_options": {
          "$ref": "#/definitions/v1ScoreOptions"
        }
      },
      "description": "Regex is used to search for a string that matches a regular expression.",
      "required": [
        "path",
        "query"
      ]
    },
    "v1SearchClauseText": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string",
          "description": "The path to the field to search."
        },
        "query": {
          "type": "string",
          "description": "The text to search for."
        },
        "fuzzy": {
          "$ref": "#/definitions/v1Fuzzy",
          "description": "Fuzzy search is used to search for a similar string. Parameters\ndetermine the deviation."
        },
        "full_match": {
          "type": "boolean",
          "description": "Default: false."
        },
        "score_options": {
          "$ref": "#/definitions/v1ScoreOptions"
        }
      },
      "description": "Search clause for text operator. Field must be indexed as text.",
      "required": [
        "path",
        "query"
      ]
    },
    "v1SearchClauseWildcard": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string"
        },
        "query": {
          "type": "string"
        },
        "allow_analyzed": {
          "type": "boolean",
          "description": "Default: false."
        },
        "score_options": {
          "$ref": "#/definitions/v1ScoreOptions"
        }
      },
      "description": "Search clause for the wildcard operator.",
      "required": [
        "path",
        "query"
      ]
    },
    "v1SearchQuery": {
      "type": "object",
      "properties": {
        "filters": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SearchClause"
          },
          "description": "filters are used to filter the results."
        },
        "must": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SearchClause"
          },
          "description": "must clauses must be satisfied."
        },
        "must_not": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SearchClause"
          },
          "description": "must_not clauses must not be satisfied for a result to be returned."
        },
        "should": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SearchClause"
          },
          "description": "should clauses should be satisfied for a result to be returned.\nMainly used for partial matching."
        }
      },
      "description": "SearchQuery is the top level message for search queries.",
      "x-internal": true
    },
    "v1SearchValue": {
      "type": "object",
      "properties": {
        "string_value": {
          "type": "string"
        },
        "bool_value": {
          "type": "boolean"
        },
        "int64_value": {
          "type": "string",
          "format": "int64"
        },
        "double_value": {
          "type": "number",
          "format": "double"
        },
        "timestamp_value": {
          "type": "string",
          "format": "date-time"
        }
      },
      "description": "Search value is used to search for a value. This needs to be typed."
    },
    "v1SecretInfo": {
      "type": "object",
      "properties": {
        "rule_id": {
          "type": "string",
          "description": "The rule that generated the result."
        },
        "file": {
          "type": "string",
          "description": "The file where the result was found."
        },
        "line": {
          "type": "integer",
          "format": "int32",
          "description": "The line in the file where the result was found."
        },
        "match": {
          "type": "string",
          "description": "The text that matched."
        },
        "severity": {
          "type": "string",
          "description": "The severity of the result."
        },
        "confidence": {
          "type": "string",
          "description": "Confidence of the result."
        },
        "snippet": {
          "type": "string",
          "description": "The source code that was responsible for triggering the result."
        }
      },
      "description": "A brief summary of secret results."
    },
    "v1SecretRule": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the secret rule.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Rules are associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata that identifies the object."
        },
        "spec": {
          "$ref": "#/definitions/v1SecretRuleSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagate indicates that the object should be visible in\nchildren namespaces."
        }
      },
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1SecretRuleSpec": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "description": "The description of the rule."
        },
        "rule_id": {
          "type": "string",
          "description": "The unique identifier for this rule."
        },
        "entropy": {
          "type": "number",
          "format": "float",
          "description": "A float representing the minimum Shannon entropy\na regex group must have to be considered a secret."
        },
        "secret_group": {
          "type": "integer",
          "format": "int32",
          "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."
        },
        "regex": {
          "type": "string",
          "description": "A golang regular expression used to detect secrets."
        },
        "path": {
          "type": "string",
          "title": "A golang regular expression used to\nfilter secrets by path"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "An array of strings used for metadata\nand reporting purposes."
        },
        "keywords": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "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."
        },
        "allowlist": {
          "$ref": "#/definitions/v1Allowlist",
          "description": "Allows a rule to be ignored for specific regexes, paths, and/or commits.\n\nDeprecated: Use allowlists (field 12) instead."
        },
        "disabled": {
          "type": "boolean",
          "description": "Rule is disabled."
        },
        "validation": {
          "$ref": "#/definitions/v1HttpParamsProfile",
          "description": "Validation contains the profile for the secret validation."
        },
        "allowlists": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Allowlist"
          },
          "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."
        }
      },
      "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"
    },
    "v1SecretStats": {
      "type": "object",
      "properties": {
        "result_count": {
          "type": "integer",
          "format": "int32",
          "description": "The number of secrets found."
        },
        "files_with_secrets_count": {
          "type": "integer",
          "format": "int32",
          "description": "The number of files with secrets."
        },
        "distinct_rules_with_results": {
          "type": "integer",
          "format": "int32",
          "description": "The count of distint rules with results."
        },
        "distinct_file_types_with_secrets": {
          "type": "integer",
          "format": "int32",
          "description": "The count of distinct file types with secrets."
        },
        "results_cnt_by_severity": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The breakdown of result count for each severity level."
        },
        "results_cnt_by_rule": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The breakdown of result count for each rule."
        },
        "results_cnt_by_file_type": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The breakdown of result count for each file type."
        },
        "file_cnt_by_severity": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The breakdown of distinct file count for each severity level."
        },
        "file_cnt_by_rule": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The breakdown of distinct file count for each rule."
        },
        "file_cnt_by_file_type": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The breakdown of distinct file count for each file type."
        },
        "file_cnt_by_category": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "The breakdown of distinct file count for each category."
        },
        "secrets": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SecretInfo"
          },
          "description": "A list of all the linter results."
        }
      },
      "description": "The secret statistics message. This is included as the payload of a metric object."
    },
    "v1SecretSummary": {
      "type": "object",
      "properties": {
        "validation": {
          "$ref": "#/definitions/v1ValidationStatus"
        },
        "git_log_scanned": {
          "type": "boolean",
          "description": "Set when the secret was discovered by looking in the Git logs using the\nfull history option."
        },
        "secret_id": {
          "type": "string",
          "description": "Same value for two linter results with the same secret found in different\nlocations."
        },
        "fs_scanned": {
          "type": "boolean",
          "title": "Set when the secret was discovered by looking into the filesystem"
        }
      },
      "title": "Secret summary"
    },
    "v1SecretsCheckActivity": {
      "type": "object",
      "properties": {
        "include_file_patterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only scan files whose path matches one of these regexes. Empty means all\nfiles the event covers."
        },
        "exclude_file_patterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Skip files whose path matches one of these regexes (e.g. test fixtures,\n\"*.example\" files, vendored dirs). Applied after include_file_patterns."
        }
      },
      "description": "SecretsCheckActivity runs Endor's secret detection over file content (the\nproposed content of a write/edit, or a file read scanned from disk). Matching\nthe activity means running the scan; the verdict comes from the findings, not\nfrom the policy config."
    },
    "v1SecretsMatch": {
      "type": "object",
      "properties": {
        "rule_id": {
          "type": "string",
          "description": "Detection rule that fired (e.g. \"aws-access-token\", \"github-pat\")."
        },
        "line": {
          "type": "integer",
          "format": "int32",
          "description": "Line number in the scanned content where the secret was found."
        },
        "message": {
          "type": "string",
          "description": "Human-readable explanation of what fired."
        },
        "rule_description": {
          "type": "string",
          "description": "Friendly rule name (e.g. \"AWS Access Key\")."
        },
        "column": {
          "type": "integer",
          "format": "int32",
          "description": "Column in the scanned content where the secret starts."
        },
        "fingerprint": {
          "type": "string",
          "description": "Unique finding fingerprint, for dedup and cross-round false-positive suppression."
        }
      },
      "description": "SecretsMatch describes a secret detected by the secrets check. It carries only\nthe rule and location, never the secret value, so a finding can be surfaced\nwithout leaking the credential."
    },
    "v1SecurityReviewFindingData": {
      "type": "object",
      "properties": {
        "ai_meta": {
          "$ref": "#/definitions/v1AIMeta",
          "description": "AI metadata for the finding.\nThis is only set for findings generated by AI."
        },
        "category": {
          "$ref": "#/definitions/PullRequestSecurityReviewResultInfoSecurityReviewCategory",
          "description": "Security review category of the finding."
        },
        "justification": {
          "type": "string",
          "description": "Justification for the security review category."
        },
        "code_snippet": {
          "$ref": "#/definitions/PullRequestSecurityReviewResultInfoCodeSnippet",
          "description": "Code snippet of the finding."
        },
        "security_impact_type": {
          "$ref": "#/definitions/SecurityAspectMetricSecurityImpactType",
          "description": "Security impact type of the finding."
        }
      }
    },
    "v1SecurityReviewPullRequest": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the security review pull request.",
          "readOnly": true,
          "x-endor-name": "Repository UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Security review pull requests are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata for the security review pull request."
        },
        "spec": {
          "$ref": "#/definitions/v1SecurityReviewPullRequestSpec",
          "description": "Security review pull request specifications."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "SecurityReviewPullRequest represents a security review pull request.",
      "required": [
        "meta",
        "context"
      ],
      "x-internal": true
    },
    "v1SecurityReviewPullRequestSpec": {
      "type": "object",
      "properties": {
        "repository_pull_request_spec": {
          "$ref": "#/definitions/v1RepositoryPullRequestSpec",
          "description": "The repository pull request that is being reviewed."
        },
        "level": {
          "$ref": "#/definitions/SpecSecurityReviewLevel",
          "description": "The security review level."
        },
        "security_summary": {
          "type": "string",
          "description": "The description of the security review pull request."
        },
        "code_changes": {
          "$ref": "#/definitions/SpecCodeChanges",
          "description": "The code changes in the security review pull request."
        },
        "project_uuid": {
          "type": "string",
          "description": "The UUID of the project to which the security review pull request belongs."
        },
        "approvers": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PlatformAccount"
          },
          "description": "The approvers of the pull request.\nThis is only populated if the pull request was merged."
        },
        "categories": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PullRequestSecurityReviewResultInfoSecurityReviewCategory"
          },
          "description": "The categories of the security review pull request."
        },
        "is_latest_pr_scan": {
          "type": "boolean",
          "description": "Whether the security review pull request is the latest pull request scan."
        },
        "has_pr_description": {
          "type": "boolean",
          "description": "Whether the pr has a description."
        },
        "analysis_issues": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SecurityReviewPullRequestSpecAnalysisIssue"
          },
          "description": "Special cases that occurred during analysis but didn't prevent partial completion."
        },
        "findings_info": {
          "$ref": "#/definitions/SpecFindingsInfo",
          "description": "Information about findings counts by severity."
        }
      },
      "required": [
        "repository_pull_request_spec",
        "level",
        "security_summary",
        "code_changes",
        "project_uuid"
      ]
    },
    "v1SecurityReviewQuery": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the security review dashboard summary.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Security Review Dashboard Summary are associated with a tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1SecurityReviewQuerySpec",
          "description": "Security Review Dashboard Summary specification."
        }
      },
      "description": "SecurityReviewQuery is an internal API to accelerate the Security Review dashboard operations.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "v1SecurityReviewQuerySpec": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/SpecSRRequest",
          "description": "The security review dashboard summary request."
        },
        "response": {
          "$ref": "#/definitions/SpecSRResponse",
          "description": "The security review dashboard summary response."
        }
      }
    },
    "v1Segment": {
      "type": "object",
      "properties": {
        "source_uri": {
          "type": "string",
          "description": "Source of this segment."
        },
        "package_version": {
          "type": "string",
          "description": "Canonical representation of the version of the package\nfollowing all our conventions about package URLs.\nFor example, \"c://github.com/my/repo@v1.2.3\"."
        },
        "sha": {
          "type": "string",
          "description": "Commit sha of the segment."
        },
        "path": {
          "type": "string",
          "description": "Relative path of the file where this segment was found."
        },
        "function_ref": {
          "type": "string",
          "description": "Function signature of the segment."
        },
        "line_start": {
          "type": "integer",
          "format": "int32",
          "description": "The first line of the segment."
        },
        "line_end": {
          "type": "integer",
          "format": "int32",
          "description": "The last line of the segment."
        },
        "content": {
          "type": "string",
          "format": "byte",
          "description": "Content of the segment."
        },
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Extensibility field of additonal metadata\nthat we might want to carry with the segment."
        },
        "commit_time": {
          "type": "string",
          "format": "date-time",
          "description": "Time of the repo version that this segment belongs to."
        },
        "metadata": {
          "$ref": "#/definitions/v1SegmentMetadata",
          "description": "Metadata for this segment."
        },
        "language": {
          "$ref": "#/definitions/v1Language",
          "description": "Language for this segment."
        },
        "file_hash": {
          "type": "string",
          "format": "byte",
          "description": "SHA256 for the file that contains this segment."
        },
        "blame_time": {
          "type": "string",
          "format": "date-time",
          "description": "Git blame time of this segment."
        },
        "cyclomatic_complexity": {
          "type": "integer",
          "format": "int32",
          "description": "CyclomaticComplexity represents the complexity of the control flow."
        },
        "rest": {
          "type": "boolean",
          "description": "Flag to indicate the segment is a REST segment."
        }
      },
      "description": "Index segment with associated metadata."
    },
    "v1SegmentContentKind": {
      "type": "string",
      "enum": [
        "SEGMENT_CONTENT_KIND_UNSPECIFIED",
        "SEGMENT_CONTENT_KIND_FUNCTION",
        "SEGMENT_CONTENT_KIND_TYPE",
        "SEGMENT_CONTENT_KIND_LICENSE"
      ],
      "default": "SEGMENT_CONTENT_KIND_UNSPECIFIED",
      "description": "SegmentContentKind is the kind of the segment."
    },
    "v1SegmentIndexRequest": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the segment index request.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace of the segment index request."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1SegmentIndexRequestSpec",
          "description": "Resource kind specific data."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "A segment index request allows the caller to provide a set of code\nsegments with their associated metadata that should be indexed as part the\nembeddings store. Embeddings are only created. They are only read through the\nSegmentQueryRequest. The request can include multiple segments to allow\nparallel execution.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1SegmentIndexRequestSpec": {
      "type": "object",
      "properties": {
        "segments": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Segment"
          },
          "description": "List of segments to index."
        },
        "project_uuid": {
          "type": "string",
          "description": "Project UUID."
        },
        "ref": {
          "type": "string",
          "description": "Resolved ref of the source control version."
        },
        "sha": {
          "type": "string",
          "description": "SHA of the source control version."
        },
        "segmentation_done": {
          "type": "boolean",
          "description": "Set to true for the last index request for the source control version."
        },
        "segmentation_starting": {
          "type": "boolean",
          "description": "Set to true for the first index request for the source control version."
        },
        "segmenter_version": {
          "type": "integer",
          "format": "int32",
          "title": "Segmenter version"
        }
      }
    },
    "v1SegmentMatchValidateRequest": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the segment match validate request.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace of the segment match validate request."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1SegmentMatchValidateRequestSpec",
          "description": "Resource kind specific data."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "title": "A segment match validate request",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1SegmentMatchValidateRequestSpec": {
      "type": "object",
      "properties": {
        "file_locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "These are the file paths that matched."
        },
        "project_uuid": {
          "type": "string",
          "description": "Project UUID."
        },
        "ref": {
          "type": "string",
          "description": "Resolved ref of the source control version.\nCan be a tag, a branch or a SHA."
        },
        "library": {
          "type": "string",
          "description": "The library name."
        },
        "version": {
          "type": "string",
          "description": "The version of the library."
        },
        "top_score": {
          "type": "number",
          "format": "double",
          "description": "The top score for the match."
        },
        "release_date": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp of the repo version."
        },
        "required_match_percentage": {
          "type": "number",
          "format": "float",
          "description": "The required percentage of files that should match."
        },
        "valid": {
          "type": "boolean",
          "description": "Return value: true if the file locations meet the threshold for a sufficient match.",
          "readOnly": true
        }
      }
    },
    "v1SegmentMetadata": {
      "type": "object",
      "properties": {
        "signature": {
          "type": "string",
          "description": "Signature for this segment."
        },
        "embedding": {
          "$ref": "#/definitions/v1EmbeddingVector",
          "description": "Embedding vector for this segment."
        },
        "code_size": {
          "type": "string",
          "format": "int64",
          "description": "Size of code for this segment."
        },
        "content_kind": {
          "$ref": "#/definitions/v1SegmentContentKind",
          "description": "Kind of this segment."
        }
      }
    },
    "v1SegmentQueryRequest": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the segment query request.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace of the segment query request."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1SegmentQueryRequestSpec",
          "description": "Resource kind specific data."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "A segment query request allows the caller to send a set of segments and find\nsimilarities based on the embeddings. Callers can send multiple segments in\none call. Caller provides the content and embeddings server responds with the\nbest file version matches.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1SegmentQueryRequestSpec": {
      "type": "object",
      "properties": {
        "queries": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SegmentQueryRequestSegmentQuery"
          },
          "description": "One query per file.\nEach query can contain metadata for multiple file segments."
        },
        "project_uuid": {
          "type": "string",
          "description": "Project UUID."
        },
        "ref": {
          "type": "string",
          "description": "Resolved ref of the source control version.\nCan be a tag, a branch or a SHA."
        }
      }
    },
    "v1SemgrepEndpoints": {
      "type": "object",
      "properties": {
        "web": {
          "$ref": "#/definitions/v1SemgrepWeb"
        }
      }
    },
    "v1SemgrepExposure": {
      "type": "object",
      "properties": {
        "include": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "exclude": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "v1SemgrepFixRegex": {
      "type": "object",
      "properties": {
        "regex": {
          "type": "string"
        },
        "replacement": {
          "type": "string"
        },
        "count": {
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "v1SemgrepManagement": {
      "type": "object",
      "properties": {
        "endpoints": {
          "$ref": "#/definitions/v1SemgrepEndpoints"
        }
      }
    },
    "v1SemgrepMetaAsvs": {
      "type": "object",
      "properties": {
        "section": {
          "type": "string"
        },
        "control_id": {
          "type": "string"
        },
        "control_url": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "v1SemgrepMetavariableAnalysis": {
      "type": "object",
      "properties": {
        "analyzer": {
          "type": "string"
        },
        "metavariable": {
          "type": "string"
        }
      }
    },
    "v1SemgrepMetavariableComparison": {
      "type": "object",
      "properties": {
        "metavariable": {
          "type": "string"
        },
        "comparison": {
          "type": "string"
        },
        "base": {
          "type": "boolean"
        },
        "strip": {
          "type": "boolean"
        }
      }
    },
    "v1SemgrepMetavariablePattern": {
      "type": "object",
      "properties": {
        "metavariable": {
          "type": "string"
        },
        "patterns": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SemgrepRulePatternType"
          }
        },
        "pattern_either": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SemgrepRulePatternType"
          }
        },
        "pattern_regex": {
          "type": "string"
        },
        "language": {
          "type": "string"
        },
        "pattern": {
          "type": "string"
        }
      }
    },
    "v1SemgrepMetavariableRegex": {
      "type": "object",
      "properties": {
        "regex": {
          "type": "string"
        },
        "metavariable": {
          "type": "string"
        },
        "x": {
          "type": "string"
        }
      }
    },
    "v1SemgrepMetavariableType": {
      "type": "object",
      "properties": {
        "metavariable": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "v1SemgrepNativeRule": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "pattern": {
          "type": "string"
        },
        "fix": {
          "type": "string"
        },
        "severity": {
          "type": "string"
        },
        "metadata": {
          "$ref": "#/definitions/v1SemgrepRuleMeta"
        },
        "languages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "message": {
          "type": "string"
        },
        "patterns": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SemgrepRulePatternType"
          }
        },
        "fix_regex": {
          "$ref": "#/definitions/v1SemgrepFixRegex"
        },
        "mode": {
          "type": "string"
        },
        "pattern_sources": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SemgrepRulePatternType"
          }
        },
        "pattern_sinks": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SemgrepRulePatternType"
          }
        },
        "pattern_propagators": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SemgrepRulePatternType"
          }
        },
        "options": {
          "$ref": "#/definitions/v1SemgrepOptions"
        },
        "pattern_either": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SemgrepRulePatternType"
          }
        },
        "paths": {
          "$ref": "#/definitions/v1SemgrepPaths"
        },
        "pattern_sanitizers": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SemgrepRulePatternType"
          }
        },
        "pattern_not": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SemgrepRulePatternType"
          }
        },
        "pattern_regex": {
          "type": "string"
        },
        "references": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "metavariable_regex": {
          "$ref": "#/definitions/v1SemgrepMetavariableRegex"
        },
        "metavariable_pattern": {
          "$ref": "#/definitions/v1SemgrepMetavariablePattern"
        },
        "focus_metavariable": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "min_version": {
          "type": "string"
        },
        "pattern_inside": {
          "type": "string"
        },
        "pattern_inside_either": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SemgrepRulePatternType"
          }
        }
      },
      "description": "SemgrepNativeRule reflects the Semgrep rules as per the specification."
    },
    "v1SemgrepOptions": {
      "type": "object",
      "properties": {
        "symbolic_propagation": {
          "type": "boolean",
          "description": "Enables symbolic propagation analysis for taint tracking."
        },
        "taint_unify_mvars": {
          "type": "boolean",
          "description": "Enables unification of metavariables in taint analysis."
        },
        "generic_ellipsis_max_span": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum span for generic ellipsis patterns."
        },
        "interfile": {
          "type": "boolean",
          "description": "Enables interfile analysis for cross-file taint tracking."
        },
        "taint_assume_safe_booleans": {
          "type": "boolean",
          "description": "Assumes boolean values are safe in taint analysis."
        },
        "taint_assume_safe_numbers": {
          "type": "boolean",
          "description": "Assumes numeric values are safe in taint analysis."
        },
        "taint_assume_safe_functions": {
          "type": "boolean",
          "description": "Assumes function calls are safe in taint analysis."
        },
        "constant_propagation": {
          "type": "boolean",
          "description": "Enables constant propagation analysis."
        },
        "implicit_deep_exprstmt": {
          "type": "boolean",
          "description": "Enables implicit deep expression statement analysis."
        },
        "generic_engine": {
          "type": "string",
          "description": "Specifies the generic engine to use for analysis."
        }
      }
    },
    "v1SemgrepPaths": {
      "type": "object",
      "properties": {
        "include": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "exclude": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "v1SemgrepRule": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the Semgrep rule.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Rules are associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata that identifies the object."
        },
        "spec": {
          "$ref": "#/definitions/v1SemgrepRuleSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Propagate indicates that the object should be visible in child namespaces."
        },
        "disabled": {
          "type": "boolean"
        }
      },
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1SemgrepRuleMeta": {
      "type": "object",
      "properties": {
        "license": {
          "type": "string"
        },
        "likelihood": {
          "type": "string"
        },
        "confidence": {
          "type": "string"
        },
        "category": {
          "type": "string"
        },
        "cwe": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "owasp": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "references": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "technology": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "subcategory": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "cwe2022_top25": {
          "type": "boolean"
        },
        "cwe2021_top25": {
          "type": "boolean"
        },
        "source_rule_url": {
          "type": "string"
        },
        "impact": {
          "type": "string"
        },
        "description": {
          "type": "string",
          "description": "A description of the rule."
        },
        "endor_targets": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1EndorTarget"
          },
          "description": "Determines whether a rule is run against the repository and/or package\n(possible values: package, repository)."
        },
        "endor_category": {
          "type": "string",
          "description": "Determines what a rule is used for (possible values: vulnerability,\nmalware-detection, critical-api, or llm)."
        },
        "endor_tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "ENDOR_TAG_SEMGREP_IGNORE\n  ENDOR_TAG_ANALYTICS_INFO\n  ENDOR_TAG_ANALYTICS_IMPACT",
          "title": "Container for generic tags that control later processing of rule results.\nCertain ENDOR specific tags exist and are reserved for internal use, like:"
        },
        "endor_attack_examples": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "References to the description of an attack (if any) that used the\nrespective code."
        },
        "version": {
          "type": "string",
          "description": "The semantic version of this rule."
        },
        "confidence_level": {
          "$ref": "#/definitions/endorv1ConfidenceLevel",
          "description": "The confidene level for this rule."
        },
        "asvs": {
          "$ref": "#/definitions/v1SemgrepMetaAsvs",
          "description": "Application Security Verification Standard."
        },
        "functional_categories": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "vulnerability": {
          "type": "string"
        },
        "interfile": {
          "type": "boolean"
        },
        "security_severity": {
          "type": "string"
        },
        "short_description": {
          "type": "string"
        },
        "vulnerability_class": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "endor_rule_origin": {
          "$ref": "#/definitions/v1EndorRuleOrigin"
        },
        "author": {
          "type": "string"
        },
        "explanation": {
          "type": "string"
        },
        "remediation": {
          "type": "string"
        },
        "cwe2023_top25": {
          "type": "boolean"
        },
        "rule_origin_note": {
          "type": "string"
        },
        "help": {
          "type": "string"
        },
        "precision": {
          "type": "string"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "source_url_open": {
          "type": "string"
        },
        "cwe2020_top25": {
          "type": "boolean"
        },
        "severity": {
          "type": "string"
        },
        "bandit_code": {
          "type": "string"
        },
        "masvs": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "owaspapi": {
          "type": "string"
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "deprecated": {
          "type": "boolean"
        },
        "display_name": {
          "type": "string"
        },
        "ai_provider": {
          "type": "string"
        }
      },
      "title": "Semgrep rule specifications"
    },
    "v1SemgrepRulePatternType": {
      "type": "object",
      "properties": {
        "pattern": {
          "type": "string"
        },
        "pattern_not": {
          "type": "string"
        },
        "from": {
          "type": "string"
        },
        "to": {
          "type": "string"
        },
        "metavariable_regex": {
          "$ref": "#/definitions/v1SemgrepMetavariableRegex"
        },
        "patterns": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SemgrepRulePatternType"
          }
        },
        "pattern_not_regex": {
          "type": "string"
        },
        "pattern_regex": {
          "type": "string"
        },
        "pattern_inside": {
          "type": "string"
        },
        "pattern_not_inside": {
          "type": "string"
        },
        "metavariable_pattern": {
          "$ref": "#/definitions/v1SemgrepMetavariablePattern"
        },
        "pattern_either_new": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SemgrepRulePatternType"
          }
        },
        "metavariable_analysis": {
          "$ref": "#/definitions/v1SemgrepMetavariableAnalysis"
        },
        "focus_metavariable": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "metavariable_comparison": {
          "$ref": "#/definitions/v1SemgrepMetavariableComparison"
        },
        "exact": {
          "type": "boolean"
        },
        "by_side_effect": {
          "type": "boolean"
        },
        "label": {
          "type": "string"
        },
        "management": {
          "$ref": "#/definitions/v1SemgrepManagement"
        },
        "not_conflicting": {
          "type": "boolean"
        },
        "requires": {
          "type": "string"
        },
        "metavariable_type": {
          "$ref": "#/definitions/v1SemgrepMetavariableType"
        },
        "pattern_inside_either": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1SemgrepRulePatternType"
          }
        }
      }
    },
    "v1SemgrepRuleSpec": {
      "type": "object",
      "properties": {
        "rule": {
          "$ref": "#/definitions/v1SemgrepNativeRule"
        },
        "disabled": {
          "type": "boolean",
          "description": "Rule is disabled."
        },
        "yaml": {
          "type": "string",
          "description": "Yaml is the rule in its original yaml format."
        },
        "defined_by": {
          "type": "string",
          "description": "Endor Labs or the name of the tenant creating the rule.",
          "readOnly": true
        },
        "severity_level": {
          "$ref": "#/definitions/v1SemgrepRuleSpecSeverityLevel",
          "readOnly": true
        }
      }
    },
    "v1SemgrepRuleSpecSeverityLevel": {
      "type": "string",
      "enum": [
        "SEVERITY_LEVEL_UNSPECIFIED",
        "SEVERITY_LEVEL_LOW",
        "SEVERITY_LEVEL_MEDIUM",
        "SEVERITY_LEVEL_HIGH",
        "SEVERITY_LEVEL_CRITICAL"
      ],
      "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."
    },
    "v1SemgrepSummary": {
      "type": "object",
      "properties": {
        "severity": {
          "type": "string"
        },
        "likelihood": {
          "type": "string"
        },
        "confidence": {
          "type": "string"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "description": {
          "type": "string"
        },
        "explanation": {
          "type": "string"
        },
        "remediation": {
          "type": "string"
        },
        "impact": {
          "type": "string"
        },
        "languages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "rule_name": {
          "type": "string"
        },
        "rule_uuid": {
          "type": "string"
        },
        "cwes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "rule_version": {
          "type": "string"
        },
        "references": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ai_provider": {
          "type": "string"
        }
      },
      "description": "Semgrep summary."
    },
    "v1SemgrepTriggerPattern": {
      "type": "object",
      "properties": {
        "pattern": {
          "$ref": "#/definitions/v1SemgrepMetavariablePattern"
        }
      },
      "description": "A pattern that triggered the vulnerability scan."
    },
    "v1SemgrepWeb": {
      "type": "object",
      "properties": {
        "exposure": {
          "$ref": "#/definitions/v1SemgrepExposure"
        }
      }
    },
    "v1ServerType": {
      "type": "string",
      "enum": [
        "SERVER_TYPE_UNSPECIFIED",
        "SERVER_TYPE_LOCAL",
        "SERVER_TYPE_REMOTE"
      ],
      "default": "SERVER_TYPE_UNSPECIFIED",
      "description": "ServerType indicates whether a tool server runs locally or remotely."
    },
    "v1ServiceRequest": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a service request.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "ServiceRequests are raised for a specific internal tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata is generic for any object."
        },
        "spec": {
          "$ref": "#/definitions/v1ServiceRequestSpec"
        }
      },
      "description": "ServiceRequest defines a message for raising requests to perform resource updates\nneeded by the Endor Labs Sales/CS team.",
      "required": [
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "v1ServiceRequestSpec": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "description": "The reasoning behind this service request."
        },
        "resource": {
          "type": "string",
          "description": "The resource name on which the requested action needs to be performed."
        },
        "target_namespace": {
          "type": "string",
          "description": "The resource namespace on which operations needs to be performed."
        },
        "approvers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of approver email IDs to which this service request\nnotifications will be sent."
        },
        "status": {
          "$ref": "#/definitions/v1RequestStatus",
          "description": "The status of the request.",
          "readOnly": true
        },
        "data": {
          "$ref": "#/definitions/googleprotobufAny",
          "description": "The required information needed to perform the requested action."
        },
        "method": {
          "$ref": "#/definitions/v1Method",
          "description": "The type of action required by this service request."
        },
        "error_message": {
          "type": "string",
          "description": "Error message when the request fails."
        },
        "slack_message_ts": {
          "type": "string",
          "title": "Slack Message TimeStamp (\"ts\") of the notification, used to update the notification status",
          "readOnly": true
        }
      },
      "required": [
        "description",
        "resource",
        "target_namespace",
        "approvers",
        "data",
        "method"
      ]
    },
    "v1ServiceToken": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the request.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata are generic for any object."
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Tenant metadata required for service tokens."
        },
        "spec": {
          "$ref": "#/definitions/v1ServiceTokenSpec"
        }
      },
      "description": "ServiceToken represents a request for a service token.",
      "required": [
        "meta",
        "tenant_meta"
      ]
    },
    "v1ServiceTokenSpec": {
      "type": "object",
      "properties": {
        "audience": {
          "type": "string",
          "description": "The audience for the service token."
        },
        "expiration_time": {
          "type": "string",
          "format": "date-time",
          "description": "expiration_time for the token that should before the\nexpiration time of the authentication token."
        },
        "service_token": {
          "type": "string",
          "description": "service_token is the token that is generated.",
          "readOnly": true
        }
      },
      "required": [
        "audience"
      ]
    },
    "v1SessionActivity": {
      "type": "object",
      "properties": {
        "top_level": {
          "$ref": "#/definitions/v1SessionTopLevelCriteria",
          "description": "Predicates over SessionHook top-level fields and the per-session\nuser identity. Field is named `top_level` (not `meta`) to avoid\ncollision with the CRUD-root meta-field convention."
        },
        "sandbox": {
          "$ref": "#/definitions/v1SessionSandboxCriteria",
          "description": "Predicates over AgentConfigLevel.sandbox at any level."
        },
        "permissions": {
          "$ref": "#/definitions/v1SessionPermissionsCriteria",
          "description": "Predicates over AgentConfigLevel.permissions at any level."
        },
        "hook": {
          "$ref": "#/definitions/v1SessionHookCriteria",
          "description": "Predicates over AgentConfigLevel.hooks at any level."
        },
        "model": {
          "$ref": "#/definitions/v1SessionModelCriteria",
          "description": "Predicates over default_model / available_models at any level."
        }
      },
      "description": "SessionActivity matches sessions by posture predicates over SessionHook\nfields and the captured AgentConfigSnapshot. Sessions have no stable\nname, so matching uses field predicates instead of name regexes.\n\nEach sub-message is optional; if set, all its predicates are AND'd.\nSub-messages are also AND'd with each other. Predicates that target\nAgentConfigSnapshot evaluate across repository / user / enterprise\nlevels (any-level satisfies). MCP-server-related criteria intentionally\nlive on McpServerActivity, not here."
    },
    "v1SessionHook": {
      "type": "object",
      "properties": {
        "source": {
          "type": "string",
          "description": "Source of the session.\n\n\"startup\", \"resume\", \"clear\""
        },
        "reason": {
          "type": "string",
          "description": "Reason for the session.\n\nFor SESSION_END: \"completed\", \"aborted\", \"error\""
        },
        "is_background_agent": {
          "type": "boolean",
          "description": "Whether the session is a background agent."
        },
        "composer_mode": {
          "type": "string",
          "description": "Composer mode of the session.\n\n\"agent\", \"ask\", \"edit\""
        },
        "config": {
          "$ref": "#/definitions/v1AgentConfigSnapshot",
          "description": "Configuration snapshot captured at session start.\nPopulated for SESSION_START events; nil for SESSION_STOP."
        },
        "skills": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1DiscoveredSkill"
          },
          "description": "Skills discovered in the workspace during session start."
        },
        "ai_tool_inventory": {
          "$ref": "#/definitions/v1AiToolInventory",
          "description": "AI development tools detected on the host machine at session start."
        }
      },
      "title": "Session lifecycle metadata (only populated for SESSION_START/END)"
    },
    "v1SessionHookCriteria": {
      "type": "object",
      "properties": {
        "event_name_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Regex matchers for hook event_name (e.g. \"PostToolUse\")."
        },
        "command_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Regex matchers for hook command strings (e.g. \"curl .* \\\\| bash\")."
        }
      },
      "description": "SessionHookCriteria matches against AgentHookConfig entries at any\nAgentConfigLevel. Each field is optional."
    },
    "v1SessionMatch": {
      "type": "object",
      "properties": {
        "matched_criteria": {
          "type": "string",
          "description": "The criteria category that fired (mirrors a SessionActivity sub-message\nname, e.g. \"top_level\", \"sandbox\", \"permissions\", \"hook\", \"model\")."
        },
        "matched_value": {
          "type": "string",
          "description": "The specific predicate value or pattern that matched\n(e.g. \"default_mode=bypassPermissions\", \"any-level sandbox.enabled=false\")."
        },
        "message": {
          "type": "string",
          "description": "Free-form human-readable explanation of what fired."
        }
      },
      "description": "SessionMatch describes a session that matched a policy. Unlike SkillMatch\nor McpServerMatch, the source data (SessionHook + AgentConfigSnapshot)\nis already carried by the surrounding AgentHookEvent, so this match\nonly describes what fired."
    },
    "v1SessionModelCriteria": {
      "type": "object",
      "properties": {
        "default_model_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Regex matchers for default_model."
        },
        "available_model_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Regex matchers for entries in available_models."
        }
      },
      "description": "SessionModelCriteria matches against default_model and available_models\nat any AgentConfigLevel. Each field is optional."
    },
    "v1SessionPermissionsCriteria": {
      "type": "object",
      "properties": {
        "default_mode_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Regex matchers for permissions.default_mode (e.g. \"bypassPermissions\")."
        },
        "bypass_disabled": {
          "type": "boolean",
          "description": "If set, match when permissions.bypass_disabled equals this value\n(e.g. false ⇒ \"bypass is allowed\")."
        },
        "allowed_command_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Regex matchers for entries in permissions.allowed_commands."
        },
        "denied_command_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Regex matchers for entries in permissions.denied_commands."
        }
      },
      "description": "SessionPermissionsCriteria matches against AgentPermissionsConfig at\nany AgentConfigLevel. Each field is optional."
    },
    "v1SessionSandboxCriteria": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "If set, match when sandbox.enabled equals this value at any level\n(e.g. false ⇒ \"sandbox is off or unset\")."
        },
        "fail_if_unavailable": {
          "type": "boolean",
          "description": "If set, match when sandbox.fail_if_unavailable equals this value."
        },
        "allowed_host_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Regex matchers for entries in sandbox.allowed_network_hosts (catches\noverly permissive host rules like \".*\")."
        }
      },
      "description": "SessionSandboxCriteria matches against AgentSandboxConfig at any\nAgentConfigLevel. Each field is optional."
    },
    "v1SessionTopLevelCriteria": {
      "type": "object",
      "properties": {
        "composer_mode_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Regex matchers for composer_mode (e.g. \"agent\", \"ask\", \"edit\")."
        },
        "source_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Regex matchers for source (e.g. \"startup\", \"resume\", \"clear\")."
        },
        "is_background_agent": {
          "type": "boolean",
          "description": "If set, match when is_background_agent equals this value."
        },
        "user_name_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Regex matchers for the user name from AgentHookEvent.Spec.user\n(e.g. \"alice\", \"svc-.*\", \".*@example\\\\.com\")."
        }
      },
      "description": "SessionTopLevelCriteria matches against SessionHook top-level fields\n(composer_mode, source, is_background_agent) and the per-session\nuser identity carried on AgentHookEvent.Spec.user."
    },
    "v1Sibling": {
      "type": "object",
      "properties": {
        "rfilename": {
          "type": "string",
          "description": "The filename within a specific model."
        }
      }
    },
    "v1SimpleContainerImage": {
      "type": "object",
      "properties": {
        "critical": {
          "$ref": "#/definitions/v1Critical",
          "description": "Critical data correctly evaluate the validity of the signature."
        }
      },
      "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."
    },
    "v1SkillActivity": {
      "type": "object",
      "properties": {
        "name_matchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Regex matchers for skill name (e.g. \"untrusted-.*\", \"experimental-.*\").\nAND'd with the score-predicate branch when both are configured."
        },
        "score_at_or_below": {
          "type": "number",
          "format": "float",
          "description": "Match when the overall score is at or below this threshold\n(scores are 1-10, higher = safer). OR'd with dimension_at_or_below."
        },
        "dimension_at_or_below": {
          "$ref": "#/definitions/v1SkillDimensionThresholds",
          "description": "Per-dimension score thresholds. OR'd among themselves and with\nscore_at_or_below."
        }
      },
      "description": "SkillActivity matches skills by name patterns and/or score thresholds.\nMatch logic: configured branches are AND'd — when both name_matchers\nand score predicates are set, both must hold for the match to fire;\nwhen only one is set, only that one must hold; if neither is set,\nthe activity never matches. Within the score branch, score_at_or_below\nand every set field of dimension_at_or_below are OR'd: any single\nsatisfied threshold fires the branch. When score predicates are set\nbut no SkillMeta is available for the skill, the score branch is\nconfigured-but-cannot-fire, failing the AND with the name branch\n(fail-safe)."
    },
    "v1SkillDimensionThresholds": {
      "type": "object",
      "properties": {
        "instruction_integrity": {
          "type": "number",
          "format": "float",
          "description": "Threshold for instruction integrity (prompt injection, boundary violations)."
        },
        "data_protection": {
          "type": "number",
          "format": "float",
          "description": "Threshold for data protection (credential access, exfiltration)."
        },
        "permission_boundaries": {
          "type": "number",
          "format": "float",
          "description": "Threshold for permission boundaries (privilege claims, tool misuse)."
        },
        "external_dependencies": {
          "type": "number",
          "format": "float",
          "description": "Threshold for external dependencies (untrusted sources, remote code)."
        }
      },
      "description": "SkillDimensionThresholds holds per-dimension score thresholds for\nSkillActivity. Each field is optional; an unset dimension is ignored.\nSet dimensions are OR'd among themselves and with score_at_or_below:\nany single dimension at or below its threshold fires the predicate.\nDimension names mirror AgenticInventory.SkillScoreDimensions."
    },
    "v1SkillMatch": {
      "type": "object",
      "properties": {
        "skill_name": {
          "type": "string",
          "description": "Name of the skill that matched."
        },
        "message": {
          "type": "string",
          "description": "Describes what exactly matched (e.g. \"score at or below threshold 5\",\n\"instruction_integrity at or below 4\")."
        }
      },
      "description": "SkillMatch describes a skill that matched a policy. Carries only the\nmatched skill's name; consumers can fetch the full SkillMeta from\nAgenticInventory if more detail is needed."
    },
    "v1SlackConfig": {
      "type": "object",
      "properties": {
        "webhook_url": {
          "type": "string"
        }
      },
      "required": [
        "webhook_url"
      ]
    },
    "v1SlackTemplate": {
      "type": "object",
      "properties": {
        "open_action_template": {
          "type": "string",
          "description": "The template to be used for OPEN action for slack plugin."
        },
        "update_action_template": {
          "type": "string",
          "description": "The template to be used for UPDATE action for slack plugin."
        }
      }
    },
    "v1SourceLocation": {
      "type": "object",
      "properties": {
        "relative_path": {
          "type": "string",
          "description": "The relative path to the file where the issue was found."
        },
        "start_column": {
          "type": "integer",
          "format": "int32",
          "title": "Starting column number in the file"
        },
        "end_column": {
          "type": "integer",
          "format": "int32",
          "title": "Ending column number in the file"
        },
        "start_line": {
          "type": "integer",
          "format": "int32",
          "title": "Starting line number in the file"
        },
        "end_line": {
          "type": "integer",
          "format": "int32",
          "title": "Ending line number in the file"
        },
        "snippet": {
          "type": "string",
          "description": "Code snippet containing the issue."
        },
        "function_name": {
          "type": "string",
          "description": "The name of the function for this location if available."
        },
        "type": {
          "$ref": "#/definitions/v1LocationType",
          "description": "The type of the location."
        },
        "scm_link": {
          "type": "string",
          "description": "Permalink to this location in the SCM (GitHub/GitLab/Azure/Bitbucket). Displayed in the UI."
        },
        "description": {
          "type": "string",
          "description": "Human-readable description of what happens at this dataflow step."
        }
      }
    },
    "v1StringList": {
      "type": "object",
      "properties": {
        "list_value": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "description": "Contains a list of string values."
    },
    "v1SupportAccessRequest": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The uuid of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "The tenant metadata restricts access to a specific tenant."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1SupportAccessRequestSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates that the object should be visible in the child namespaces."
        }
      },
      "description": "Implements the API to grant access to support for a given namespace. It will\ncreate an authorization policy that allows access to the support team.",
      "required": [
        "tenant_meta",
        "meta"
      ]
    },
    "v1SupportAccessRequestSpec": {
      "type": "object",
      "properties": {
        "expiration_time": {
          "type": "string",
          "format": "date-time",
          "description": "Expiration time of the support access."
        },
        "authorization_policy_uuid": {
          "type": "string",
          "description": "The uuid of the resource.",
          "readOnly": true
        }
      },
      "required": [
        "expiration_time"
      ]
    },
    "v1SupportedToolChainProfile": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "UUID is a universally unique identifier for the tool chain profile.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta"
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Meta identifies the tool chain object."
        },
        "spec": {
          "$ref": "#/definitions/v1SupportedToolChainProfileSpec"
        }
      },
      "description": "SupportedToolChainProfile represents the list of tool chains that are maintained\nby Endor Labs.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ]
    },
    "v1SupportedToolChainProfileSpec": {
      "type": "object",
      "properties": {
        "os": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/SpecArchitecture"
          }
        }
      },
      "description": "Spec is the internal specification of the object."
    },
    "v1SupportedToolChainVersion": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "UUID is a universally unique identifier for the tool chain profile.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta"
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Meta identifies the tool chain object."
        },
        "spec": {
          "$ref": "#/definitions/v1SupportedToolChainVersionSpec"
        },
        "propagate": {
          "type": "boolean"
        }
      },
      "description": "SupportedToolChainVersion represents the versions that are maintained\nby Endor Labs.",
      "required": [
        "tenant_meta",
        "meta",
        "spec"
      ],
      "x-internal": true
    },
    "v1SupportedToolChainVersionSpec": {
      "type": "object",
      "properties": {
        "os": {
          "type": "string"
        },
        "arch": {
          "type": "string"
        },
        "toolchain": {
          "type": "string"
        },
        "version": {
          "$ref": "#/definitions/v1SupportedVersion"
        },
        "default": {
          "type": "boolean",
          "description": "Indicates whether this toolchain version is the default to use."
        }
      },
      "description": "Spec is the internal specification of the object.",
      "required": [
        "os",
        "arch",
        "toolchain",
        "version"
      ]
    },
    "v1SupportedVersion": {
      "type": "object",
      "properties": {
        "version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        },
        "default": {
          "type": "boolean"
        },
        "disabled": {
          "type": "boolean"
        },
        "is_default": {
          "type": "boolean",
          "description": "Marks this version as the default to use for its containing toolchain set.",
          "readOnly": true
        }
      },
      "required": [
        "version"
      ]
    },
    "v1SwiftSpec": {
      "type": "object",
      "properties": {
        "priority": {
          "type": "integer",
          "format": "int32",
          "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."
        },
        "url": {
          "type": "string",
          "description": "The URL of the registry that the Swift package manager must use."
        },
        "scope": {
          "type": "string",
          "description": "The private registry scope."
        },
        "token": {
          "type": "string",
          "description": "Access token to authenticate to the registry."
        },
        "basic_auth": {
          "$ref": "#/definitions/v1SwiftSpecBasicAuth",
          "description": "Basic auth credentials to authenticate to the registry."
        }
      },
      "description": "Represents a configuration for the Swift package manager.",
      "required": [
        "priority"
      ]
    },
    "v1SwiftSpecBasicAuth": {
      "type": "object",
      "properties": {
        "username": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      }
    },
    "v1SwiftToolChain": {
      "type": "object",
      "properties": {
        "version": {
          "$ref": "#/definitions/v1ToolChainVersion"
        },
        "additional_swift_versions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "version"
      ]
    },
    "v1SystemConfig": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the system configuration.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "SystemConfig is associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1SystemConfigSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates that the object should be visible in child namespaces."
        }
      },
      "description": "SystemConfig represents the system configuration for a tenant.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1SystemConfigSpec": {
      "type": "object",
      "properties": {
        "policy": {
          "$ref": "#/definitions/SystemConfigPolicyConfig"
        },
        "logging": {
          "$ref": "#/definitions/SystemConfigLoggingConfig"
        },
        "analytics": {
          "$ref": "#/definitions/SystemConfigAnalyticsConfig"
        },
        "finding_prioritization": {
          "$ref": "#/definitions/v1PrioritizationConfig"
        },
        "artifactory": {
          "$ref": "#/definitions/SystemConfigArtifactoryConfig"
        },
        "sast": {
          "$ref": "#/definitions/SystemConfigSastConfig"
        },
        "cloud_deployment": {
          "$ref": "#/definitions/SystemConfigCloudDeploymentConfig"
        },
        "ai": {
          "$ref": "#/definitions/SystemConfigAiConfig"
        },
        "urgent_notification": {
          "$ref": "#/definitions/SystemConfigUrgentNotificationConfig"
        },
        "endor_ignore": {
          "$ref": "#/definitions/SystemConfigEndorIgnoreConfig"
        },
        "package_firewall": {
          "$ref": "#/definitions/SystemConfigPackageFirewallConfig",
          "description": "Package firewall config (exclusion list, min age in hours). Used by endorfactory."
        }
      }
    },
    "v1SystemEvaluationMethodDefinition": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "v1SystemRole": {
      "type": "string",
      "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"
      ],
      "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)."
    },
    "v1TableHeader": {
      "type": "object",
      "properties": {
        "columns": {
          "type": "integer",
          "format": "int32",
          "description": "The number of columns in the table."
        },
        "description": {
          "type": "string",
          "description": "Information about the table."
        },
        "column_ids": {
          "type": "object",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          },
          "description": "A map from a column name to an ID. The IDs in the rows of the\ntable are used to avoid repeating the column name."
        },
        "column_types": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1ColumnTypes"
          },
          "description": "A map from a column ID to a type. This will be used to read the values of the columns in each row."
        }
      },
      "description": "Contains information for the table.\nIt is repeated in each TableRowGroup even though it contains the same information.",
      "required": [
        "column_ids",
        "column_types"
      ]
    },
    "v1TableRow": {
      "type": "object",
      "properties": {
        "columns": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1ColumnValue"
          }
        }
      },
      "description": "A table row contains a map with the values for each column."
    },
    "v1TableRowGroup": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the table row group.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "TableRowGroups are associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1TableRowGroupSpec"
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "description": "TableRowGroup in the main object that contains an ordered list of TableRows\nand TableDescription with general information about the table.",
      "required": [
        "meta",
        "spec",
        "context"
      ]
    },
    "v1TableRowGroupSpec": {
      "type": "object",
      "properties": {
        "project_uuid": {
          "type": "string",
          "description": "The UUID of the project that to which the TableRowGroup is related.",
          "x-endor-name": "Impacted Project UUID"
        },
        "sequence": {
          "type": "integer",
          "format": "int32",
          "description": "The sequence number indicates the order of this group among all the groups in the table."
        },
        "header": {
          "$ref": "#/definitions/v1TableHeader",
          "description": "The table header."
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1TableRow"
          },
          "description": "The rows in this group."
        }
      },
      "required": [
        "sequence",
        "header"
      ]
    },
    "v1TagCounts": {
      "type": "object",
      "properties": {
        "counts": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "format": "uint64"
          },
          "description": "Overall activity count per tag."
        }
      }
    },
    "v1Target": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/TargetTargetType",
          "description": "Target type."
        },
        "name": {
          "type": "string",
          "description": "Target name. Example: linux, dotnet, x86_64."
        },
        "version": {
          "type": "string",
          "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."
        },
        "exclude": {
          "type": "boolean",
          "description": "Set to true if a dependency is excluded from the target."
        }
      },
      "required": [
        "type",
        "name",
        "exclude"
      ]
    },
    "v1TaskStatus": {
      "type": "string",
      "enum": [
        "TASK_STATUS_UNSPECIFIED",
        "TASK_STATUS_PENDING",
        "TASK_STATUS_RUNNING",
        "TASK_STATUS_COMPLETED",
        "TASK_STATUS_FAILED"
      ],
      "default": "TASK_STATUS_UNSPECIFIED",
      "description": "TaskStatus represents the lifecycle state of an analysis task."
    },
    "v1Telemetry": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the telemetry.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace of the message that is accessed."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1TelemetrySpec"
        }
      },
      "description": "Telemetry represents the Prometheus metrics obtained from endorctl processes.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1TelemetrySpec": {
      "type": "object",
      "properties": {
        "metric_families": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/clientMetricFamily"
          },
          "description": "An array of metric families sent to the server."
        },
        "execution_id": {
          "type": "string",
          "description": "The UUID for the endorctl run."
        },
        "caller_prefix": {
          "type": "string",
          "description": "Identifies where the metrics come from."
        },
        "caller_version": {
          "type": "string",
          "description": "Version of the caller."
        }
      },
      "required": [
        "caller_prefix"
      ]
    },
    "v1TemplateParamName": {
      "type": "string",
      "enum": [
        "TEMPLATE_PARAM_NAME_UNSPECIFIED",
        "TEMPLATE_PARAM_NAME_CLIENT_ID",
        "TEMPLATE_PARAM_NAME_TENANT_ID"
      ],
      "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."
    },
    "v1Tenant": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a tenant.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "spec": {
          "$ref": "#/definitions/v1TenantSpec"
        }
      },
      "description": "Tenant represents a tenant in the system.\n\nMostly includes tenant configuration parameters.",
      "required": [
        "meta"
      ]
    },
    "v1TenantMeta": {
      "type": "object",
      "properties": {
        "namespace": {
          "type": "string",
          "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\".",
          "x-endor-name": "Namespace"
        }
      },
      "description": "Tenant related data for the tenant containing the resource.",
      "required": [
        "namespace"
      ]
    },
    "v1TenantSpec": {
      "type": "object",
      "properties": {
        "street": {
          "type": "string",
          "description": "The street address of a user."
        },
        "city": {
          "type": "string",
          "description": "The city of a users address."
        },
        "state": {
          "type": "string",
          "description": "The state of a users address."
        },
        "country": {
          "type": "string",
          "description": "A user's country of residence."
        },
        "code": {
          "type": "string",
          "description": "A user's area code."
        },
        "phone_number": {
          "type": "string",
          "description": "A user's phone number."
        },
        "organizational_entity_name": {
          "type": "string",
          "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"
        },
        "organizational_contacts": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1TenantSpecOrganizationalContact"
          },
          "description": "The list of contact that we can put as the contact in the SBOM export supplier information."
        },
        "organization_urls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of URLs which are associated with the given organization which can be included in the supplier SBOM information."
        },
        "placement_zone": {
          "type": "string",
          "description": "The placement zone for internal tenant routing and sharding.",
          "readOnly": true,
          "x-internal": true
        }
      }
    },
    "v1TenantSpecOrganizationalContact": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        }
      },
      "required": [
        "name"
      ]
    },
    "v1TimeResolution": {
      "type": "string",
      "enum": [
        "TIME_RESOLUTION_UNSPECIFIED",
        "TIME_RESOLUTION_DAY",
        "TIME_RESOLUTION_MONTH",
        "TIME_RESOLUTION_YEAR"
      ],
      "default": "TIME_RESOLUTION_UNSPECIFIED",
      "description": "Describes the resolution used."
    },
    "v1TimeSlot": {
      "type": "object",
      "properties": {
        "timestamp": {
          "type": "string",
          "format": "date-time",
          "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."
        },
        "count": {
          "type": "string",
          "format": "uint64",
          "description": "The count of activity in the slot."
        },
        "tag_activity": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "format": "uint64"
          },
          "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."
        }
      },
      "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."
    },
    "v1TimeTracker": {
      "type": "object",
      "properties": {
        "resolutions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1TimeResolution"
          }
        },
        "daily_activity": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1TimeSlot"
          }
        },
        "monthly_activity": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1TimeSlot"
          }
        },
        "yearly_activity": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1TimeSlot"
          }
        }
      },
      "description": "Tge sequence of TimeSlots for each time resolution we track.\nWe can track multiple resolutions, and some resolutions may be empty."
    },
    "v1ToolChainProfile": {
      "type": "object",
      "properties": {
        "os": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/ToolChainProfileArchitectureToolChain"
          }
        }
      },
      "description": "ToolChainProfile represents the list of tool chains that need to be\ninstalled."
    },
    "v1ToolChainVersion": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "name of the tool chain."
        },
        "relative_tool_chain_path": {
          "type": "string",
          "description": "relative path of the tool chain in tar ball."
        },
        "urls": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "http mirros from where the tool can be downloaded."
        },
        "sha256_sum": {
          "type": "string",
          "description": "SHA256 Digest of the tool that will be downloaded."
        }
      },
      "description": "ToolChainVersion defines the tool chain's source from where it can be installed."
    },
    "v1ToolChains": {
      "type": "object",
      "properties": {
        "java_tool_chain": {
          "$ref": "#/definitions/v1JavaToolChain"
        },
        "python_tool_chain": {
          "$ref": "#/definitions/v1PythonToolChain"
        },
        "javascript_tool_chain": {
          "$ref": "#/definitions/v1JavaScriptToolChain"
        },
        "dotnet_tool_chain": {
          "$ref": "#/definitions/v1DotNetToolChain"
        },
        "scala_tool_chain": {
          "$ref": "#/definitions/v1ScalaToolChain"
        },
        "golang_tool_chain": {
          "$ref": "#/definitions/v1GolangToolChain"
        },
        "rust_tool_chain": {
          "$ref": "#/definitions/v1RustToolChain"
        },
        "android_tool_chain": {
          "$ref": "#/definitions/v1AndroidToolChain"
        },
        "php_tool_chain": {
          "$ref": "#/definitions/v1PHPToolChain"
        },
        "ruby_tool_chain": {
          "$ref": "#/definitions/v1RubyToolChain"
        },
        "swift_tool_chain": {
          "$ref": "#/definitions/v1SwiftToolChain"
        },
        "environment_variables": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "environment_variables are the env variables to be set during toolchain installation."
        }
      }
    },
    "v1ToolChainsSource": {
      "type": "string",
      "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"
      ],
      "default": "TOOL_CHAINS_SOURCE_UNSPECIFIED",
      "description": "Toolchain source types."
    },
    "v1ToolPattern": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the tool pattern.",
          "readOnly": true,
          "x-endor-name": "UUID"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Rules are associated with a tenant and namespace."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata identifies the tool pattern object."
        },
        "spec": {
          "$ref": "#/definitions/v1ToolPatternSpec"
        },
        "propagate": {
          "type": "boolean",
          "description": "Indicates that the object should be visible in child namespaces."
        }
      },
      "description": "ToolPattern represents the search pattern data for one tool.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1ToolPatternSpec": {
      "type": "object",
      "properties": {
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of control function categories (based on static name to category mapping).\nExamples: Build, CI/CD Pipeline, Code Coverage, Container Orchestration, Container Registry, Dependency Mgmt, Documentation, IaC, License Mgmt, Linters, Monitoring, Package Mgmt, Publishers, SBOM, SCA, Secrets, Security, Signing and Verification, Testing, VMs, Vulnerability Mgmt."
        },
        "refs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of references."
        },
        "file_patterns": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecFilePatterns"
          },
          "description": "List of search patterns that are applied file/path names (filename_patterns) and, if present, their content (line_patterns).\nExamples:\nA file name match for \"Dockerfile$\" identifies Docker.\nA match for line_pattern \"\\[tool\\.black\\]\" inside a file with a filename_pattern match for \"pyproject.toml$\" idenfies Python Black."
        },
        "cmd_patterns": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecCmdPatterns"
          },
          "description": "List of search patterns that are applied to the content of all CI/CD pipeline definition files.\nExample: \"endorctl scan\" identifies Endor Labs usage inside tool configuration files that contain shell commands."
        },
        "tool_patterns": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/SpecCmdPatterns"
          },
          "description": "Map of search patterns that are applied to the content of specific tool definition files, indexed by tool name.\nExample: \".*uses: sonarsource/sonarcloud-github-action@.*\" identifies sonarcloud inside a GitHub Actions file, so it is listed under \"ghactions\" here.\nThe index string must match the name of the other tool in order for the infrastructure to cross-reference them."
        },
        "webhook_patterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of search patterns that are applied to webhook payload URLs.\nExample: https://coveralls.io/webhook."
        },
        "badge_patterns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of badge URL patterns.\nExample: codecov.io."
        },
        "display_name": {
          "type": "string",
          "description": "Display name if different from tool name.\nExample: \"GitHub Actions\" might be the display name for \"ghactions\"."
        },
        "app_patterns": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecAppPatterns"
          },
          "description": "List of GitHub application patterns."
        }
      },
      "description": "The internal specification of the object."
    },
    "v1TypeChange": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "declared_type": {
          "type": "string"
        },
        "package_name": {
          "type": "string"
        },
        "diff_change": {
          "$ref": "#/definitions/v1ChangeType"
        },
        "modifier_change": {
          "$ref": "#/definitions/v1ModifierChangeType"
        }
      },
      "description": "Protobuf definition for TypeChange."
    },
    "v1UITelemetry": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the UI telemetry.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace where the telemetry events were recorded."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1UITelemetrySpec"
        }
      },
      "description": "UITelemetry represents events observered from the Endor UI.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1UITelemetrySpec": {
      "type": "object",
      "properties": {
        "user_id": {
          "type": "string",
          "description": "The user to which these events belong."
        },
        "session_id": {
          "type": "string",
          "description": "The user session to which these events belong."
        },
        "events": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecUITelemetryEvent"
          },
          "description": "A batched list of events observed from the UI."
        },
        "device_user_agent": {
          "$ref": "#/definitions/SpecDeviceUserAgent",
          "description": "Additional browser information from the device sending the events."
        },
        "device_screen_info": {
          "$ref": "#/definitions/SpecDeviceScreenInfo",
          "description": "Additional screen size information from the device sending the events."
        }
      },
      "required": [
        "user_id",
        "session_id",
        "events"
      ]
    },
    "v1UnsupportedSpec": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the unsupported project, which can be an unsupported clone URL or\na package name.",
          "x-endor-name": "Unsupported Project Name"
        }
      },
      "description": "A project with a source code type that is not supported or not known.",
      "required": [
        "name"
      ]
    },
    "v1UpdateRequest": {
      "type": "object",
      "properties": {
        "update_mask": {
          "type": "string",
          "description": "Fields to update. Defaults to all fields."
        },
        "force": {
          "type": "boolean",
          "description": "Force will force the update of the resource if any\nchecks fail."
        }
      },
      "description": "Message used for all update requests."
    },
    "v1UpdateTenantRequest": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "$ref": "#/definitions/v1Tenant"
        }
      },
      "description": "Request to update a tenant."
    },
    "v1UpdateUserRequest": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1UpdateRequest"
        },
        "object": {
          "$ref": "#/definitions/v1User"
        }
      },
      "description": "Request to update a user."
    },
    "v1User": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a user.",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1UserSpec"
        }
      },
      "description": "User represents a user in the system.\n\nMostly includes configuration parameters that are user wise.",
      "required": [
        "meta"
      ]
    },
    "v1UserInfoResponse": {
      "type": "object",
      "properties": {
        "authentication_source": {
          "type": "string",
          "readOnly": true
        },
        "expiration_time": {
          "type": "string",
          "format": "date-time",
          "readOnly": true
        },
        "user": {
          "$ref": "#/definitions/v1User",
          "readOnly": true
        },
        "tenants": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/UserInfoResponseTenantInfo"
          },
          "readOnly": true
        },
        "permissions": {
          "$ref": "#/definitions/v1Permissions",
          "readOnly": true
        },
        "namespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "readOnly": true
        }
      },
      "description": "UserInfoResponse returns information about a user and their authentication token."
    },
    "v1UserSpec": {
      "type": "object",
      "properties": {
        "user_name": {
          "type": "string",
          "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)",
          "readOnly": true
        },
        "first_name": {
          "type": "string",
          "description": "First name of the user as identified. It can be changed."
        },
        "last_name": {
          "type": "string",
          "description": "Last name of the user. It can be changed."
        },
        "email": {
          "type": "string",
          "description": "Email of the user. It can be changed."
        },
        "last_login_time": {
          "type": "string",
          "format": "date-time",
          "description": "Last login time keeps a record of the last time\nthat the user logged in.",
          "readOnly": true
        },
        "event_tracking": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v1Events"
          },
          "description": "Lists of user events indexed by event type."
        },
        "token_hash": {
          "type": "string",
          "description": "The hash of the last token issued to the user.\nDuring authentication we make sure that this hash matches\nthe token provided."
        },
        "groups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Groups that the user is a member of, as identified by the\nclaims returned by the identity provider."
        }
      }
    },
    "v1UserTelemetry": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the user telemetry.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Namespace where the telemetry events were recorded."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1UserTelemetrySpec"
        }
      },
      "description": "UserTelemetry represents user-specific events observered from the Endor Labs UI.",
      "required": [
        "meta",
        "spec"
      ]
    },
    "v1UserTelemetrySpec": {
      "type": "object",
      "properties": {
        "user_id": {
          "type": "string",
          "description": "The user to which these events belong."
        },
        "session_id": {
          "type": "string",
          "description": "The user session to which these events belong."
        },
        "event_store": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/SpecUserTelemetryEvent"
          },
          "description": "Lists of user events indexed by event type."
        }
      },
      "required": [
        "user_id",
        "session_id"
      ]
    },
    "v1ValidateAPIKeyReq": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string",
          "description": "The unique identifier of the API key."
        },
        "secret": {
          "type": "string",
          "description": "The secret associated with the provided API Key."
        },
        "valid": {
          "type": "boolean",
          "description": "Valid returns if the API key and secret pair are valid.",
          "readOnly": true
        },
        "issuing_user": {
          "$ref": "#/definitions/v1User",
          "description": "The user that creates the API key.",
          "readOnly": true
        }
      },
      "description": "Validates an API key.",
      "required": [
        "key",
        "secret"
      ]
    },
    "v1ValidationStatus": {
      "type": "string",
      "enum": [
        "VALIDATION_STATUS_UNSPECIFIED",
        "VALIDATION_STATUS_FAILURE",
        "VALIDATION_STATUS_SECRET_IS_VALID",
        "VALIDATION_STATUS_SECRET_IS_INVALID"
      ],
      "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"
    },
    "v1VantaConfig": {
      "type": "object",
      "properties": {
        "auth_method": {
          "$ref": "#/definitions/VantaConfigVantaAuthMethod"
        },
        "vulnerable_component_resource_id": {
          "type": "string",
          "description": "The Resource ID of the vulnerable component created in Vanta."
        },
        "package_vulnerability_resource_id": {
          "type": "string",
          "description": "The Resource ID of the package vulnerability created in Vanta."
        },
        "sca_resource_id": {
          "type": "string",
          "description": "The Resource ID of the static code analysis vulnerabilities created in Vanta."
        },
        "access_token_auth": {
          "$ref": "#/definitions/VantaConfigVantaAccessTokenAuth"
        },
        "api_key": {
          "type": "string"
        }
      },
      "required": [
        "auth_method",
        "vulnerable_component_resource_id"
      ]
    },
    "v1VectorStore": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of an VectorStore.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "VectorStores are associated with a tenant or are global."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1VectorStoreSpec",
          "description": "The internal specification of the object."
        },
        "propagate": {
          "type": "boolean",
          "description": "Vector stores can be propagated and accessed in child namespaces."
        }
      },
      "description": "Represents a vector store in the system. The vector store will create all\nthe infrastructure for semantic searches.",
      "required": [
        "meta"
      ],
      "x-internal": true
    },
    "v1VectorStoreData": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta"
        },
        "spec": {
          "$ref": "#/definitions/v1VectorStoreDataSpec"
        }
      },
      "description": "VectorStoreData is the message for uploading data to the vector store.\nIt allows batch uploads.",
      "required": [
        "spec"
      ],
      "x-internal": true
    },
    "v1VectorStoreDataDeleteQuery": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta"
        },
        "spec": {
          "$ref": "#/definitions/v1VectorStoreDataDeleteQuerySpec"
        }
      },
      "description": "VectorStoreDataDeleteQuery deletes documents matching filter whose uniqueness\nfield values are NOT in the provided retain set. This is a generic \"prune\" operation\nuseful for incremental index refresh.",
      "required": [
        "spec"
      ],
      "x-internal": true
    },
    "v1VectorStoreDataDeleteQuerySpec": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1VectorStoreDataDeleteQuerySpecRequest",
          "description": "Request contains the input parameters for the delete operation."
        },
        "response": {
          "$ref": "#/definitions/v1VectorStoreDataDeleteQuerySpecResponse",
          "description": "Response contains the output from the delete operation.",
          "readOnly": true
        }
      },
      "description": "Spec is the specification of the delete request.",
      "required": [
        "request"
      ]
    },
    "v1VectorStoreDataDeleteQuerySpecRequest": {
      "type": "object",
      "properties": {
        "vector_store_uuid": {
          "type": "string",
          "description": "vector_store_uuid is the ID of the vector store to delete data from."
        },
        "filter": {
          "type": "object",
          "description": "filter scopes the deletion to documents matching this filter.\ne.g., {\"repo\": \"/path/to/repo\"} to only affect documents from a specific repo."
        },
        "keep_filters": {
          "type": "array",
          "items": {
            "type": "object"
          },
          "description": "keep_filters contains the filters to keep.\nEach entry is a Struct with field values matching the vector store's fields.\ne.g., {\"fqn\": \"com.example.Foo.bar\", \"repo\": \"/path/to/repo\"} to keep documents from a specific repo and fqn."
        }
      },
      "description": "Request contains the input parameters for the delete operation.",
      "required": [
        "vector_store_uuid",
        "filter",
        "keep_filters"
      ]
    },
    "v1VectorStoreDataDeleteQuerySpecResponse": {
      "type": "object",
      "properties": {
        "deleted_count": {
          "type": "string",
          "format": "int64",
          "description": "deleted_count is the number of documents that were deleted."
        }
      },
      "description": "Response contains the output from the delete operation."
    },
    "v1VectorStoreDataDocumentConsistencyQuery": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta"
        },
        "spec": {
          "$ref": "#/definitions/v1VectorStoreDataDocumentConsistencyQuerySpec"
        }
      },
      "description": "VectorStoreDataDocumentConsistencyQuery checks which documents need to be updated in a vector store.\nThis is a lightweight check that only requires uniqueness fields and content hash,\navoiding the need to send full document content over the wire.",
      "required": [
        "spec"
      ],
      "x-internal": true
    },
    "v1VectorStoreDataDocumentConsistencyQuerySpec": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1VectorStoreDataDocumentConsistencyQuerySpecRequest",
          "description": "Request contains the input parameters for the needs update check."
        },
        "response": {
          "$ref": "#/definitions/v1VectorStoreDataDocumentConsistencyQuerySpecResponse",
          "description": "Response contains the results of the needs update check.",
          "readOnly": true
        }
      },
      "description": "Spec is the specification of the needs update query.",
      "required": [
        "request"
      ]
    },
    "v1VectorStoreDataDocumentConsistencyQuerySpecRequest": {
      "type": "object",
      "properties": {
        "vector_store_uuid": {
          "type": "string",
          "description": "vector_store_uuid is the ID of the vector store to check against."
        },
        "documents": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/SpecDocumentConsistency"
          },
          "description": "documents contains the lightweight document check requests."
        }
      },
      "description": "Request contains the input parameters for the needs update check.",
      "required": [
        "vector_store_uuid"
      ]
    },
    "v1VectorStoreDataDocumentConsistencyQuerySpecResponse": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/ResponseEntryMatchResult"
          },
          "description": "results contains the consistency results, in the same order as the request documents."
        }
      },
      "description": "Response contains the results of the entry match check."
    },
    "v1VectorStoreDataSpec": {
      "type": "object",
      "properties": {
        "vector_store_uuid": {
          "type": "string",
          "description": "vector_store_uuid is the ID of the vector store to upload data."
        },
        "documents": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1VectorStoreDocument"
          },
          "description": "data is the data to upload to the vector store."
        }
      },
      "required": [
        "vector_store_uuid"
      ]
    },
    "v1VectorStoreDocument": {
      "type": "object",
      "properties": {
        "data": {
          "type": "string",
          "description": "data is the data to upload to the vector store."
        },
        "metadata": {
          "type": "object",
          "description": "metadata is the metadata of the document."
        },
        "score": {
          "type": "number",
          "format": "float",
          "description": "score is the score of the document.",
          "readOnly": true
        },
        "save_content": {
          "type": "boolean",
          "description": "save_content controls whether document content is saved to the store."
        },
        "content_hash": {
          "type": "string",
          "description": "content_hash is the SHA256 hash of the document content."
        }
      },
      "description": "VectorStoreDocument is the standard format of documents in the vector store.",
      "required": [
        "data"
      ],
      "x-internal": true
    },
    "v1VectorStoreMetadataQuery": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta"
        },
        "spec": {
          "$ref": "#/definitions/v1VectorStoreMetadataQuerySpec"
        }
      },
      "description": "VectorStoreMetadataQuery is the message to query the vector store by metadata.",
      "required": [
        "spec"
      ],
      "x-internal": true
    },
    "v1VectorStoreMetadataQuerySpec": {
      "type": "object",
      "properties": {
        "request": {
          "$ref": "#/definitions/v1VectorStoreMetadataQuerySpecRequest",
          "description": "Request contains the input parameters for the metadata query operation."
        },
        "response": {
          "$ref": "#/definitions/v1VectorStoreMetadataQuerySpecResponse",
          "description": "Response contains the output from the metadata query operation.",
          "readOnly": true
        }
      },
      "description": "Spec is the specification of the metadata query request.",
      "required": [
        "request"
      ]
    },
    "v1VectorStoreMetadataQuerySpecRequest": {
      "type": "object",
      "properties": {
        "vector_store_uuid": {
          "type": "string",
          "description": "vector_store_uuid is the ID of the vector store to query."
        },
        "filter": {
          "type": "object",
          "description": "filter is the metadata filter to search for matching documents."
        }
      },
      "description": "Request contains the input parameters for the metadata query operation.",
      "required": [
        "vector_store_uuid",
        "filter"
      ]
    },
    "v1VectorStoreMetadataQuerySpecResponse": {
      "type": "object",
      "properties": {
        "matches": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1VectorStoreDocument"
          },
          "description": "matches contains the documents matching the metadata filter."
        }
      },
      "description": "Response contains the output from the metadata query operation."
    },
    "v1VectorStoreQuery": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "readOnly": true
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta"
        },
        "spec": {
          "$ref": "#/definitions/v1VectorStoreQuerySpec"
        }
      },
      "description": "VectorStoreQuery is the message to query the vector store.",
      "required": [
        "spec"
      ],
      "x-internal": true
    },
    "v1VectorStoreQuerySpec": {
      "type": "object",
      "properties": {
        "vector_store_uuid": {
          "type": "string",
          "description": "vector_store_uuid is the ID of the vector store to upload data."
        },
        "query": {
          "type": "string",
          "description": "query is the actual query string."
        },
        "matches": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1VectorStoreDocument"
          },
          "description": "data is the data to upload to the vector store.",
          "readOnly": true
        },
        "metadata_filter": {
          "type": "object",
          "title": "metadata_filter is an optional filter to scope the similarity search to documents"
        }
      },
      "required": [
        "vector_store_uuid",
        "query"
      ]
    },
    "v1VectorStoreSpec": {
      "type": "object",
      "properties": {
        "embedding_provider": {
          "$ref": "#/definitions/v1EmbeddingProvider",
          "description": "EmbeddingProvider is the embedding provider of the vector store."
        },
        "embedding_model": {
          "$ref": "#/definitions/v1EmbeddingModel",
          "description": "EmbeddingModel is the embedding model of the vector store."
        },
        "dimensions": {
          "type": "integer",
          "format": "int32",
          "description": "Dimensions is the number of dimensions to be used."
        },
        "uniqueness_fields": {
          "type": "string",
          "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."
        },
        "apply_uniqueness_index_changes": {
          "type": "boolean",
          "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."
        }
      },
      "required": [
        "embedding_provider",
        "embedding_model"
      ]
    },
    "v1Version": {
      "type": "object",
      "properties": {
        "sha": {
          "type": "string",
          "description": "SHA of the source control version.\nBecause the SHA might not be possible to resolved this field is optional.",
          "x-endor-name": "Commit SHA"
        },
        "ref": {
          "type": "string",
          "description": "Resolved ref of the source control version.\nCan be a tag, a branch or a SHA.",
          "x-endor-name": "Ref"
        },
        "metadata": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Version metadata."
        }
      },
      "required": [
        "ref"
      ]
    },
    "v1VersionDiff": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the version diff.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Tenant metadata information."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1VersionDiffSpec",
          "description": "The internal specification of the object."
        }
      },
      "description": "Protobuf definition for VersionDiff.",
      "required": [
        "tenant_meta",
        "meta"
      ]
    },
    "v1VersionDiffResult": {
      "type": "object",
      "properties": {
        "function_change": {
          "$ref": "#/definitions/v1FunctionChange"
        },
        "type_change": {
          "$ref": "#/definitions/v1TypeChange"
        },
        "reachable_path": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "violating_types": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/VersionDiffResultRepeatedString"
          }
        },
        "confidence": {
          "$ref": "#/definitions/v1Confidence"
        }
      },
      "description": "Protobuf definition for VersionDiffResult."
    },
    "v1VersionDiffSpec": {
      "type": "object",
      "properties": {
        "pkg_version_uuid": {
          "type": "string"
        },
        "to_pkg_version_uuid": {
          "type": "string"
        },
        "func_diff": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1FunctionChange"
          }
        },
        "type_diff": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1TypeChange"
          }
        }
      },
      "required": [
        "pkg_version_uuid",
        "to_pkg_version_uuid"
      ]
    },
    "v1VersionUpgrade": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of the resource.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta",
          "description": "Tenant metadata information."
        },
        "meta": {
          "$ref": "#/definitions/v1Meta",
          "description": "Metadata required for all objects."
        },
        "spec": {
          "$ref": "#/definitions/v1VersionUpgradeSpec",
          "description": "The internal specification of the object."
        },
        "context": {
          "$ref": "#/definitions/v1Context"
        }
      },
      "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.",
      "required": [
        "tenant_meta",
        "meta",
        "context"
      ]
    },
    "v1VersionUpgradeSpec": {
      "type": "object",
      "properties": {
        "project_uuid": {
          "type": "string",
          "description": "The UUID of the project to which this version upgrade relates."
        },
        "upgrade_info": {
          "$ref": "#/definitions/v1ReleaseUpgradeInfo",
          "description": "Information for a single version upgrade."
        },
        "name": {
          "type": "string",
          "description": "The name of the project or package version for this record."
        },
        "configuration": {
          "$ref": "#/definitions/v1ReleaseUpgradeConfiguration",
          "description": "Configuration that was used in the computation."
        },
        "stats": {
          "$ref": "#/definitions/v1ReleaseUpgradeStats",
          "description": "Statistics from the computation."
        },
        "prioritized_upgrades": {
          "$ref": "#/definitions/VersionUpgradeUpgradeList",
          "description": "Deprecated."
        },
        "all_upgrades": {
          "$ref": "#/definitions/VersionUpgradeUpgradeList",
          "description": "Deprecated."
        },
        "finding_fixing_upgrades": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/VersionUpgradeUpgradeList"
          },
          "description": "Upgrades that fix findings."
        }
      },
      "required": [
        "project_uuid",
        "name"
      ]
    },
    "v1Vuln": {
      "type": "object",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "The UUID of a vulnerability.",
          "readOnly": true
        },
        "tenant_meta": {
          "$ref": "#/definitions/v1TenantMeta"
        },
        "meta": {
          "$ref": "#/definitions/v1Meta"
        },
        "spec": {
          "$ref": "#/definitions/v1VulnSpec"
        }
      },
      "description": "Vuln represents an Endor Labs vulnerability in the system.",
      "required": [
        "meta"
      ]
    },
    "v1VulnSpec": {
      "type": "object",
      "properties": {
        "deepdive": {
          "type": "boolean",
          "description": "Indicates whether the research team performed full analysis on multiple\nartifact_ids involved in CVE."
        },
        "disputed": {
          "type": "boolean",
          "description": "Indicates whether the research team considers a CVE should be disputed\nbased on analysis."
        },
        "additional_notes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Notes by the person that processed the CVE."
        },
        "published": {
          "type": "string",
          "format": "date-time",
          "description": "The RFC3339 timestamp indicating when this entry was published."
        },
        "modified": {
          "type": "string",
          "format": "date-time",
          "description": "The RFC3339 timestamp indicating when this entry was last modified."
        },
        "withdrawn": {
          "type": "string",
          "format": "date-time",
          "description": "Optional. The RFC3339 timestamp indicating when this entry is considered\nto be withdrawn."
        },
        "aliases": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. IDs for the same vulnerability in other databases."
        },
        "related": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Optional. List of IDs of closely related vulnerabilities, such as the\nsame problem in alternate ecosystems."
        },
        "cvss_v3_severity": {
          "$ref": "#/definitions/SpecCVSSV3Severity",
          "description": "Optional. Severity of the vulnerability."
        },
        "cvss_v4_severity": {
          "$ref": "#/definitions/SpecCVSSV4Severity",
          "description": "Optional. CVSS v4.0 severity of the vulnerability."
        },
        "credits": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/VulnSpecCredit"
          },
          "description": "Optional. Credits for the vulnerability."
        },
        "database_specific": {
          "type": "object",
          "description": "Optional. JSON object holding additional information about the\nvulnerability as defined by the database for which the record applies."
        },
        "summary": {
          "type": "string",
          "description": "Long summary of the vulnerability."
        },
        "affected": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/VulnSpecAffected"
          }
        },
        "references": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/VulnSpecReference"
          },
          "description": "Reference URLs for the vulnerability."
        },
        "epss_score": {
          "$ref": "#/definitions/SpecEPSSScore"
        },
        "raw": {
          "$ref": "#/definitions/SpecRaw"
        },
        "malicious": {
          "type": "boolean",
          "description": "Indicates whether this item is classified as malicious or not."
        },
        "additional_endor_notes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Notes from the Endor Labs analysis of the vulnerability."
        }
      }
    },
    "v1VulnerabilityStats": {
      "type": "object",
      "properties": {
        "critical_vulnerabilities": {
          "type": "integer",
          "format": "int32",
          "description": "The number of critical vulnerabilities."
        },
        "high_vulnerabilities": {
          "type": "integer",
          "format": "int32",
          "description": "The number of high vulnerabilities."
        },
        "medium_vulnerabilities": {
          "type": "integer",
          "format": "int32",
          "description": "The number of medium vulnerabilities."
        },
        "low_vulnerabilities": {
          "type": "integer",
          "format": "int32",
          "description": "The number of low vulnerabilities."
        },
        "vulnerabilities": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1Vuln"
          },
          "description": "A list of all the vulnerabilities found affecting this package or package version."
        }
      },
      "description": "VulnerabilityFactors message includes all vulnerability related data."
    },
    "v1WebhookConfig": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string"
        },
        "auth_method": {
          "$ref": "#/definitions/WebhookConfigWebhookAuthMethod"
        },
        "basic_auth": {
          "$ref": "#/definitions/WebhookConfigWebhookBasicAuth"
        },
        "api_key": {
          "type": "string"
        },
        "disable_hmac": {
          "type": "boolean"
        },
        "hmac_shared_secret": {
          "type": "string"
        },
        "custom_headers": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/WebhookConfigWebhookHeader"
          },
          "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)."
        }
      },
      "required": [
        "url",
        "auth_method"
      ]
    },
    "v1WebhookTemplate": {
      "type": "object",
      "properties": {
        "open_action_template": {
          "type": "string",
          "description": "The template to be used for OPEN action for webhook plugin."
        },
        "update_action_template": {
          "type": "string",
          "description": "The template to be used for UPDATE action for webhook plugin."
        },
        "resolve_action_template": {
          "type": "string",
          "description": "The template to be used for RESOLVE action for webhook plugin."
        }
      }
    }
  }
}
