{"openapi": "3.0.0", "info": {"version": "6.5", "title": "Anaconda Server API"}, "servers": [{"url": "https://api.anaconda.cloud/api"}], "tags": [{"name": "system", "description": "System endpoints - version, health, etc."}, {"name": "auth", "description": "Authentication endpoints"}, {"name": "account", "description": "User account actions"}, {"name": "artifacts", "description": "Artifact endpoints - search, retrieve, mirror"}, {"name": "users", "description": "User role management endpoints (CRUD is managed separately)"}, {"name": "groups", "description": "Group management endpoints"}, {"name": "channels", "description": "Channel management endpoints"}, {"name": "tags", "description": "Tags"}], "paths": {"/installers": {"get": {"tags": ["installers"], "summary": "Get list of miniconda installers available for download.", "operationId": "repo.endpoints.installers.list_installers", "responses": {"200": {"description": "successful operation", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Installers"}}}}, "500": {"$ref": "#/components/responses/InternalServerError"}}}}, "/installers/{installer_name}": {"get": {"tags": ["installers"], "summary": "Donwload miniconda installer from mounted installers.zip", "operationId": "repo.endpoints.installers.download_installer", "parameters": [{"$ref": "#/components/parameters/installer_name-parameter"}], "responses": {"200": {"description": "successfully found the resource to download"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}}, "/external-docs": {"get": {"tags": ["docs"], "summary": "Redirect a user to the right documentation location", "operationId": "repo.endpoints.system.get_external_docs", "responses": {"302": {"description": "redirect to the current documentation of Anaconda Server"}}}}, "/system": {"get": {"tags": ["system"], "summary": "Get system information such as health, version, etc.", "operationId": "repo.endpoints.system.health", "responses": {"200": {"description": "successful operation", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/System"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}}, "/system/stats": {"get": {"tags": ["system"], "summary": "Get system stats such as disk usage, etc.", "operationId": "repo.endpoints.system.stats", "responses": {"200": {"description": "successful operation", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SystemStats"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/system/metrics": {"get": {"tags": ["system"], "summary": "Get system metrics in OpenMetrics format", "operationId": "repo.endpoints.system.metrics", "parameters": [{"in": "query", "name": "name[]", "required": false, "description": "metrics name filter", "schema": {"type": "array", "items": {"type": "string"}}}], "responses": {"200": {"description": "Exported metrics", "content": {"application/openmetrics-text": {"schema": {"type": "string"}}, "application/json": {"schema": {"$ref": "#/components/schemas/OpenMetrics"}}}}, "500": {"$ref": "#/components/responses/InternalServerError"}}}}, "/system/history": {"get": {"tags": ["account"], "summary": "Get full history of all system events", "operationId": "repo.endpoints.system.history", "parameters": [{"$ref": "#/components/parameters/event-types-query"}, {"$ref": "#/components/parameters/user-id-query"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}], "responses": {"200": {"description": "successful retrieval of history", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AccountHistory"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/system/scopes": {"get": {"tags": ["system"], "summary": "Get all possible scopes in system", "operationId": "repo.endpoints.system.scopes", "responses": {"200": {"description": "successful operation", "content": {"application/json": {"schema": {"type": "array", "items": {"type": "string"}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/system/resource_types": {"get": {"tags": ["system"], "summary": "Get all possible resource types, used for role management", "operationId": "repo.endpoints.system.resource_types", "responses": {"200": {"description": "successful operation", "content": {"application/json": {"schema": {"type": "array", "items": {"type": "string"}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/system/license": {"get": {"tags": ["system"], "summary": "Get current license information", "operationId": "repo.endpoints.system.get_license", "responses": {"200": {"description": "Current license information", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProductLicense"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}, "post": {"tags": ["system"], "summary": "Add license key", "operationId": "repo.endpoints.system.post_license", "requestBody": {"description": "Activate the license", "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProductLicenseRequest"}}}}, "responses": {"200": {"description": "Current license information"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}, "put": {"tags": ["system"], "summary": "Update or re-activate license key", "operationId": "repo.endpoints.system.put_license", "responses": {"202": {"description": "Accepted"}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/system/settings": {"get": {"tags": ["system"], "summary": "Get current system settings", "operationId": "repo.endpoints.system.get_settings", "responses": {"200": {"description": "System settings", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SystemSettings"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}, "put": {"tags": ["system"], "summary": "Update system settings", "operationId": "repo.endpoints.system.update_settings", "requestBody": {"description": "System settings", "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SystemSettings"}}}}, "responses": {"200": {"description": "Current system settings"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/diagnose/blobs": {"post": {"tags": ["diagnosis"], "summary": "Diagnose", "operationId": "repo.endpoints.diagnosis.blobs.troubleshoot_routes_blobs", "description": "## Troubleshoots routes and blobs in the database.\n* If the blobs of active routes of given channel name(s) are not available, mark the active routes as passive. \nIf the channel name list is not given, then do the process for all channel artifacts.\n* Return the list of routes updated\n* Identify the index blobs in the database as per the channel names given or for all \nchannels (if list is not given) so that admin can analyse it and decide about removing the index blobs\n", "requestBody": {"description": "request body for diagnosis", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DiagnosisRequest"}}}}, "responses": {"200": {"description": "Analyse missing blobs", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DiagnoseRoutesAndBlobs"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/auth/login": {"post": {"tags": ["auth"], "summary": "Authenticate user", "operationId": "repo.endpoints.auth.login", "requestBody": {"description": "Get user token by providing credentials", "required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LoginRequest"}}}}, "responses": {"200": {"description": "Token information", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LoginResponse"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}}, "/auth/logout": {"get": {"tags": ["auth"], "operationId": "repo.endpoints.auth.logout_get", "responses": {"302": {"description": "successful redirect a user"}}}}, "/auth/authorize": {"get": {"tags": ["auth"], "summary": "Initiates authentication flow", "operationId": "repo.endpoints.auth.openidc_authorize", "responses": {"200": {"description": "returns the redirect_rul", "content": {"application/json": {"schema": {"type": "object", "properties": {"redirect_url": {"type": "string"}}}}}}}}}, "/auth/callback/kc": {"get": {"tags": ["auth"], "parameters": [{"in": "query", "name": "code", "required": true, "schema": {"type": "string"}, "description": "authorization_code from OpenID provider"}, {"in": "query", "name": "state", "schema": {"type": "string"}}, {"in": "query", "name": "redirect_uri", "schema": {"type": "string"}}], "summary": "Callback endpoint, used for final redirect from the OpenID connect provider", "operationId": "repo.endpoints.auth.openidc_callback_keycloak", "description": "kc means Keycloak, could be potentially extended with different providers", "responses": {"302": {"description": "redirects to index page and sets the corresponding cookies"}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}}}}, "/account/register": {"post": {"x-not-implemented": "red", "tags": ["account"], "summary": "This allows a non-user to create an user", "operationId": "repo.endpoints.account.register", "requestBody": {"description": "registered new user with provided payload", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/User"}}}}, "responses": {"200": {"description": "successful operation"}, "400": {"$ref": "#/components/responses/BadRequest"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "deprecated": true}}, "/account/register/{account_id}": {"get": {"x-not-implemented": "red", "tags": ["account"], "summary": "Once a new user is registered they must confirm their registration via an email", "description": "When a new account is registered, it must first be confirmed before full access is granted. An email will be sent to the email address used during registration. There will be a link in that email that points to https://server.com/register/{accountid}", "operationId": "repo.endpoints.account.register_confirm", "parameters": [{"in": "path", "name": "account_id", "schema": {"type": "string"}, "description": "the uuid in the link of the confirmation email", "required": true}], "responses": {"200": {"description": "successful operation"}, "400": {"$ref": "#/components/responses/BadRequest"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}], "deprecated": true}}, "/account/unregister": {"post": {"x-not-implemented": "red", "tags": ["account"], "summary": "This allows a user to unregister their account", "description": "If the user wants to unregister their account from repo, this endpoint uses the currently logged in user to unregister. A confirmation email will be sent to the registered address before unregistration is complete.", "operationId": "repo.endpoints.account.unregister", "responses": {"200": {"description": "successfully triggered unregistration"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}], "deprecated": true}}, "/account/unregister/{account_id}": {"get": {"x-not-implemented": "red", "tags": ["account"], "summary": "This is confirm that the user does want to unregister their account from repo", "description": "This endpoint will normally be called due to the user confirming their unregistration from the confirmation email they received", "operationId": "repo.endpoints.account.unregister_confirm", "parameters": [{"in": "path", "name": "account_id", "schema": {"type": "string"}, "description": "the uuid in the link of the confirmation email", "required": true}], "responses": {"200": {"description": "successful operation"}, "400": {"$ref": "#/components/responses/BadRequest"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}], "deprecated": true}}, "/account": {"get": {"x-not-implemented": "yellow", "tags": ["account"], "summary": "This gets the account data for the currently logged in user.", "description": "The platform will know what user to get data for by using the JWT token.There is no need to query parameters", "operationId": "repo.endpoints.account.get_account", "responses": {"200": {"description": "successful operation", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Account"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}, "put": {"x-not-implemented": "red", "tags": ["account"], "summary": "Edit the currently logged in user's account", "description": "The user that is currently logged in is determined by the JWT token that is available", "operationId": "repo.endpoints.account.edit_account", "requestBody": {"description": "pass the schema properties edited", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AccountUpdateRequest"}}}}, "responses": {"200": {"description": "successful operation"}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}], "deprecated": true}, "delete": {"x-not-implemented": "red", "tags": ["account"], "summary": "Delete the account temporarily until confirmed", "operationId": "repo.endpoints.account.delete", "responses": {"200": {"description": "successful deletion"}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}], "deprecated": true}}, "/account/tokens": {"get": {"tags": ["account"], "summary": "Get user tokens for current account", "description": "Returns the list of created token by this user, either `scope` or `resource` type.", "operationId": "repo.endpoints.tokens.user_tokens.list_tokens", "responses": {"200": {"description": "successful operation", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserTokenList"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}, "post": {"tags": ["account"], "summary": "Create a new user token", "description": "Give access to allow user to do specific actions on one or more resources", "operationId": "repo.endpoints.tokens.user_tokens.post_token", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserTokenCreateRequest"}}}}, "responses": {"200": {"description": "Created token object, which also contains the token itself and id of the token", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserTokenCreateResponse"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/account/token-info": {"get": {"tags": ["account"], "summary": "Get information about the current user token, provided with X-Auth header", "operationId": "repo.endpoints.tokens.user_tokens.info", "responses": {"200": {"description": "successful operation", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserTokenInfo"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"user_token": []}]}}, "/account/tokens/{token_id}": {"put": {"tags": ["account"], "summary": "Update user token information", "operationId": "repo.endpoints.tokens.user_tokens.put_token", "description": "By default reissues a new token and returns in `token` attribute. If `reissue_token` query parameter is false, then token is not reissued and old value is used. The api returns `null` as a token in this case.\n", "parameters": [{"$ref": "#/components/parameters/token_id-parameter"}, {"$ref": "#/components/parameters/reissue_token-query"}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserTokenUpdateRequest"}}}}, "responses": {"200": {"description": "Updated token object, which also contains the token itself", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserTokenUpdateResponse"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}, "delete": {"tags": ["account"], "summary": "Delete specific user token", "operationId": "repo.endpoints.tokens.user_tokens.delete_token", "parameters": [{"$ref": "#/components/parameters/token_id-parameter"}], "responses": {"204": {"description": "Token is deleted"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/account/tokens/{token_id}/metadata": {"put": {"tags": ["users"], "summary": "Update user token metadata", "operationId": "repo.endpoints.tokens.user_tokens.put_token_metadata", "description": "Updates token metadata\n", "parameters": [{"$ref": "#/components/parameters/token_id-parameter"}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserTokenUpdateMetadataRequest"}}}}, "responses": {"200": {"description": "Updated token object, which also contains the token itself", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserTokenUpdateResponse"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/users/{user_id}/tokens": {"get": {"tags": ["users"], "summary": "Get user tokens for current account by admin user", "description": "Returns the list of created token by this user, either `scope` or `resource` type. Token list includes also `token_hash`.\n", "operationId": "repo.endpoints.tokens.admin_user_tokens.list_tokens", "parameters": [{"$ref": "#/components/parameters/user_id-parameter"}], "responses": {"200": {"description": "successful operation", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserTokenList"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}, "post": {"tags": ["users"], "summary": "Create a new user token by admin user", "description": "Give access to allow user to do specific actions on one or more resources", "operationId": "repo.endpoints.tokens.admin_user_tokens.post_token", "parameters": [{"$ref": "#/components/parameters/user_id-parameter"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserTokenCreateRequest"}}}}, "responses": {"200": {"description": "Created token object, which also contains the token itself and id of the token", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserTokenCreateResponse"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/users/tokens": {"post": {"tags": ["users"], "summary": "Bulk update of token information for users", "operationId": "repo.endpoints.tokens.admin_user_tokens.list_users_tokens", "description": "By default reissues a new tokens and returns a UsersTokens object with tokens, successful_updated_users and unsuccessful_updated_users attributes. If `reissue_token` query parameter is false, then tokens are not reissued and old values are used. The api returns `null` as a token in this case.\n", "parameters": [{"$ref": "#/components/parameters/with_hash-query"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UsersTokenGetRequest"}}}}, "responses": {"200": {"description": "Updated users tokens object, which also contains the tokens itself", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UsersTokensGetResponse"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}, "put": {"tags": ["users"], "summary": "Bulk update of token information for users", "operationId": "repo.endpoints.tokens.admin_user_tokens.put_tokens", "description": "By default reissues a new tokens and returns a UsersTokens object with tokens, successful_updated_users and unsuccessful_updated_users attributes. If `reissue_token` query parameter is false, then tokens are not reissued and old values are used. The api returns `null` as a token in this case.\n", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UsersTokenUpdateRequest"}}}}, "responses": {"200": {"description": "Updated users tokens object, which also contains the tokens itself", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UsersTokenUpdateResponse"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/users/{user_id}/tokens/{token_id}": {"put": {"tags": ["users"], "summary": "Update user token information", "operationId": "repo.endpoints.tokens.admin_user_tokens.put_token", "description": "By default reissues a new token and returns in `token` attribute. If `reissue_token` query parameter is false, then token is not reissued and old value is used. The api returns `null` as a token in this case.\n", "parameters": [{"$ref": "#/components/parameters/user_id-parameter"}, {"$ref": "#/components/parameters/token_id-parameter"}, {"$ref": "#/components/parameters/reissue_token-query"}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserTokenUpdateRequest"}}}}, "responses": {"200": {"description": "Updated token object, which also contains the token itself", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserTokenUpdateResponse"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}, "delete": {"tags": ["users"], "summary": "Delete specific user token", "operationId": "repo.endpoints.tokens.admin_user_tokens.delete_token", "parameters": [{"$ref": "#/components/parameters/user_id-parameter"}, {"$ref": "#/components/parameters/token_id-parameter"}], "responses": {"204": {"description": "Token is deleted"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/users/{user_id}/tokens/{token_id}/metadata": {"put": {"tags": ["users"], "summary": "Update user token metadata", "operationId": "repo.endpoints.tokens.admin_user_tokens.put_token_metadata", "description": "Updates token metadata\n", "parameters": [{"$ref": "#/components/parameters/user_id-parameter"}, {"$ref": "#/components/parameters/token_id-parameter"}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserTokenUpdateMetadataRequest"}}}}, "responses": {"200": {"description": "Updated token object, which also contains the token itself", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserTokenUpdateResponse"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/account/history": {"get": {"tags": ["account"], "summary": "Get the history logs for the account", "operationId": "repo.endpoints.account.history", "parameters": [{"$ref": "#/components/parameters/event-types-query"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}], "responses": {"200": {"description": "successful retrieval of history", "content": {"application/json": {"schema": {"type": "object", "properties": {"items": {"$ref": "#/components/schemas/AccountHistory"}}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/account/history/ws": {"get": {"tags": ["account", "websocket"], "operationId": "repo.endpoints.account.publish_events", "parameters": [{"name": "timeout", "in": "query", "required": false, "schema": {"type": "integer", "default": 5000}}, {"$ref": "#/components/parameters/event-types-query"}], "responses": {"101": {"description": "Read-only websocket with new events", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AccountHistory"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}}, "security": [{"jwt": []}]}}, "/account/logs": {"get": {"x-not-implemented": "red", "tags": ["account"], "summary": "Get the audit logs for the account", "description": "this gets the logs for the account and if the account is owned by an admin user then it retrieves the logs for everyone. maybe that's too much", "operationId": "repo.endpoints.account.logs", "parameters": [{"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/created-query"}, {"$ref": "#/components/parameters/updated-query"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}], "responses": {"200": {"description": "successful retrieval of logs", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AccountAuditLog"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}], "deprecated": true}}, "/account/channels": {"get": {"tags": ["account"], "summary": "Get channels the user has access to", "operationId": "repo.endpoints.channels.channels.list_my_channels", "parameters": [{"$ref": "#/components/parameters/permission-query"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/include-subchannels"}, {"$ref": "#/components/parameters/channel-sort-query"}], "responses": {"200": {"description": "ok", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/Channel"}}}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/account/permissions": {"get": {"tags": ["account"], "summary": "Get the permissions for this user's account", "operationId": "repo.endpoints.account.get_user_permissions", "responses": {"200": {"description": "ok", "content": {"application/json": {"schema": {"type": "object", "properties": {"items": {"type": "array", "items": {"$ref": "#/components/schemas/UserPermission"}}}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}}, "/account/scopes": {"get": {"tags": ["account"], "summary": "Get the scopes for specific user account", "operationId": "repo.endpoints.account.get_user_scopes", "responses": {"200": {"description": "ok", "content": {"application/json": {"schema": {"type": "object", "properties": {"scopes": {"type": "string"}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/users": {"get": {"tags": ["users"], "summary": "Get list of users for the group editing", "operationId": "repo.endpoints.users.list_users", "parameters": [{"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/offset-query"}], "responses": {"200": {"description": "successfully retrieved users", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/GroupMember"}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}, "post": {"x-not-implemented": "red", "tags": ["users"], "summary": "Admin Only! Create user (handled by IDP for now)", "description": "Admin only. This can only be done by the logged in user.", "operationId": "repo.endpoints.users.post", "requestBody": {"description": "create user with provided payload", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/User"}}}}, "responses": {"200": {"description": "successful operation"}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}], "deprecated": true}}, "/users/{user_id}": {"get": {"x-not-implemented": "red", "tags": ["users"], "summary": "Admin Only! get individual user by user id (handled by IDP for now)", "operationId": "repo.endpoints.users.get", "parameters": [{"in": "path", "name": "user_id", "schema": {"type": "string"}, "required": true}], "responses": {"200": {"description": "successfully retrieved single user", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/User"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}], "deprecated": true}, "put": {"x-not-implemented": "red", "tags": ["users"], "summary": "Admin Only! Edit the individual user role by user id", "operationId": "repo.endpoints.users.put", "parameters": [{"in": "path", "name": "user_id", "schema": {"type": "string"}, "required": true}], "requestBody": {"content": {"application/json": {"schema": {"type": "object", "properties": {"id": {"type": "string", "description": "the user's id"}, "role": {"type": "string", "enum": ["user", "author", "admin"]}}}}}}, "responses": {"200": {"description": "successfully edited single org", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/User"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}], "deprecated": true}, "delete": {"x-not-implemented": "red", "tags": ["users"], "summary": "Admin Only! delete user (handled by IDP for now)", "operationId": "repo.endpoints.users.delete", "parameters": [{"in": "path", "name": "user_id", "schema": {"type": "string"}, "required": true}], "responses": {"200": {"description": "successfully deleted user"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}], "deprecated": true}}, "/users/{user_id}/activity": {"get": {"x-not-implemented": "red", "tags": ["users"], "summary": "Get the activity logs for the specific user", "operationId": "repo.endpoints.users.logs", "parameters": [{"in": "path", "name": "user_id", "schema": {"type": "string"}, "required": true}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}], "responses": {"200": {"description": "successfully retrieved the activity logs for the user", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserLogs"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}], "deprecated": true}}, "/roles": {"get": {"tags": ["users"], "summary": "Get the list of available roles", "operationId": "repo.endpoints.roles.list_roles", "responses": {"200": {"description": "get all roles", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/AuthRole"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}, "post": {"tags": ["users"], "summary": "Adds a new role", "operationId": "repo.endpoints.roles.post_role", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthRole"}}}}, "responses": {"200": {"description": "the role object", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthRole"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/roles/{role_id}": {"put": {"tags": ["users"], "summary": "Edit the role", "operationId": "repo.endpoints.roles.put_role", "parameters": [{"$ref": "#/components/parameters/role_id-parameter"}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthRole"}}}}, "responses": {"200": {"description": "get all roles", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthRole"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "409": {"$ref": "#/components/responses/Conflict"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}, "delete": {"tags": ["users"], "summary": "Delete the role", "operationId": "repo.endpoints.roles.delete_role", "parameters": [{"$ref": "#/components/parameters/role_id-parameter"}], "responses": {"204": {"description": "successfully deleted role"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/mirrors": {"get": {"tags": ["mirrors"], "summary": "Get list of mirrors", "operationId": "repo.endpoints.mirrors.get_all", "parameters": [{"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/mirror-sort-query"}], "responses": {"200": {"description": "ok", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "mirrors": {"type": "array", "items": {"$ref": "#/components/schemas/MirrorWithChannel"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels": {"get": {"tags": ["channels"], "summary": "Get all channels with filtering possibilities", "operationId": "repo.endpoints.channels.channels.list_channels", "parameters": [{"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/channel-ids-query"}, {"$ref": "#/components/parameters/channel-sort-query"}, {"$ref": "#/components/parameters/include-subchannels"}, {"$ref": "#/components/parameters/include-reserved-query"}], "responses": {"200": {"description": "get all channels", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/Channel"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}, "post": {"tags": ["channels"], "summary": "Create a new channel", "operationId": "repo.endpoints.channels.channels.post_channel", "description": "create a new channel", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelCreateRequest"}}}}, "responses": {"201": {"description": "successfully created a channel", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Channel"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "409": {"$ref": "#/components/responses/Conflict"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}": {"get": {"tags": ["channels"], "summary": "Get data for a specific channel", "operationId": "repo.endpoints.channels.channels.get_channel", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}], "responses": {"200": {"description": "get a specific channel by name", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Channel"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}, "put": {"tags": ["channels"], "summary": "Edit the data for the specified channel", "operationId": "repo.endpoints.channels.channels.put_channel", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelUpdateRequest"}}}}, "responses": {"200": {"description": "successfully updated the channel"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "409": {"$ref": "#/components/responses/Conflict"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}, "delete": {"tags": ["channels"], "summary": "Delete channel and all its contents", "operationId": "repo.endpoints.channels.channels.delete_channel", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}], "responses": {"201": {"description": "no channel to delete"}, "202": {"description": "successfully deleted the channel"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/permissions": {"get": {"tags": ["channels"], "summary": "Get the user permission level on the channel", "operationId": "repo.endpoints.channels.channels.channel_permissions", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}], "responses": {"200": {"description": "successfully retrieved the permission scopes on a channel", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResourcePermissions"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}}, "/channels/{channel_name}/groups": {"get": {"tags": ["groups"], "summary": "Get the channel groups", "operationId": "repo.endpoints.channels.channel_groups.list_groups", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}], "responses": {"200": {"description": "successfully retrieved the channel groups", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/ChannelGroup"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}, "post": {"tags": ["groups"], "summary": "Add new group to the channel", "operationId": "repo.endpoints.channels.channel_groups.post_group", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelGroupRequest"}}}}, "responses": {"204": {"description": "successfully added group to the channel"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/channels/{channel_name}/groups/{group_id}": {"put": {"tags": ["groups"], "summary": "Update group channel permission", "operationId": "repo.endpoints.channels.channel_groups.change_group", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/group_id-parameter"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelGroupPermissions"}}}}, "responses": {"200": {"description": "successfully updated the channel group permissions", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/ChannelGroup"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "409": {"$ref": "#/components/responses/Conflict"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}, "delete": {"tags": ["groups"], "summary": "Delete the group from the channel", "operationId": "repo.endpoints.channels.channel_groups.delete_group", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/group_id-parameter"}], "responses": {"204": {"description": "Group is successfully removed"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "409": {"$ref": "#/components/responses/Conflict"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/channels/{channel_name}/history": {"get": {"tags": ["channels"], "summary": "Get the history logs of the channel", "operationId": "repo.endpoints.channels.channels.channel_history", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/event-types-query"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}], "responses": {"200": {"description": "successfully retrieved the activity logs for the channel", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelHistory"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/cves_history": {"get": {"tags": ["channels", "cves"], "summary": "Get the cve history logs of the channel", "operationId": "repo.endpoints.channels.channels_cve_history.get_cve_channel_history", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/from-date-parameter"}, {"$ref": "#/components/parameters/to-date-parameter"}, {"$ref": "#/components/parameters/min-download-count-query"}, {"$ref": "#/components/parameters/cve_status-query"}, {"$ref": "#/components/parameters/cve-notifications-event-type-query"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/max-impact-score-query"}, {"$ref": "#/components/parameters/min-impact-score-query"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}], "responses": {"200": {"description": "successfully retrieved the cve history logs for the channel", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelCveHistory"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}, "post": {"tags": ["channels", "cves"], "summary": "generate min-download-count-parametertory for a specific timestamp for example for existing cves history", "operationId": "repo.endpoints.channels.channels_cve_history.generate_cve_notifications", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CVENotificationsTimestamp"}}}}, "responses": {"202": {"description": "successfully starting building of cve notifications", "content": {"application/json": {"schema": {"type": "object", "properties": {"message": {"type": "string"}}}}}}, "200": {"description": "No history available for given timestamp", "content": {"application/json": {"schema": {"type": "object", "properties": {"message": {"type": "string"}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/stats": {"get": {"tags": ["channels"], "summary": "Get stats and counters for the channel", "operationId": "repo.endpoints.channels.channels.channel_stats", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}], "responses": {"200": {"description": "returns stats for the channel", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelStats"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/virtual-channels": {"get": {"tags": ["channels"], "summary": "Get list of all virtual channels created from current channel", "operationId": "repo.endpoints.channels.channels.list_virtual_channels", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/channel-sort-query"}], "responses": {"200": {"description": "return list of virtual channels", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/Channel"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/artifacts": {"get": {"tags": ["channels"], "summary": "Get list of artifacts for specific channel", "description": "Retrieve all artifacts for the current channel and passing the ?filter= query will only returns those artifacts in the current channel that match that filter string", "operationId": "repo.endpoints.channels.channel_artifacts.list_artifacts", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/only_names-query"}, {"$ref": "#/components/parameters/artifact-sort-query"}, {"$ref": "#/components/parameters/artifact_family-query"}, {"$ref": "#/components/parameters/platform-query"}], "responses": {"200": {"description": "get list of packages for channels", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/Artifact"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}, "post": {"tags": ["channels"], "summary": "Upload an artifact to the channel (implemented by repo-proxy, can't be called directly)", "operationId": "repo.endpoints.channels.channel_artifacts.upload_placeholder", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}], "requestBody": {"description": "upload the artifact to the channel with specified filetype", "content": {"multipart/form-data": {"schema": {"type": "object", "required": ["filetype", "content"], "properties": {"filetype": {"$ref": "#/components/schemas/UploadFileType"}, "r_version": {"type": "string", "description": "cran_binary_package R version"}, "distribution": {"type": "string", "description": "cran_binary_package distribution", "example": "macosx"}, "content": {"type": "string", "format": "binary"}}}}}}, "responses": {"201": {"description": "successful file uploaded"}, "204": {"description": "successful subsequent file uploads"}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/artifacts/bulk": {"put": {"summary": "Perform a bulk action for artifacts in channel", "operationId": "repo.endpoints.channels.channel_artifacts.bulk", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ArtifactBulkActionRequest"}}}}, "responses": {"202": {"description": "bulk did something to artifacts in the channel successfully"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}], "tags": ["channels"]}}, "/channels/{channel_name}/artifacts/{artifact_family}": {"put": {"tags": ["channels"], "summary": "Refreshes the index for specific artifact family in the channel", "operationId": "repo.endpoints.channels.channel_artifacts.refresh_artifact_family_index", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}], "responses": {"202": {"description": "index update accepted"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/artifacts/{artifact_family}/{artifact_name}": {"get": {"tags": ["channels"], "summary": "Get specific artifact in current channel", "operationId": "repo.endpoints.channels.channel_artifacts.get_artifact", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}], "responses": {"200": {"description": "successfully returned an Artifact", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Artifact"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}, "delete": {"tags": ["channels"], "summary": "Delete the specific artifact in the current channel", "operationId": "repo.endpoints.channels.channel_artifacts.delete_artifact", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}], "responses": {"204": {"description": "successfully deleted"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/artifacts/{artifact_family}/{artifact_name}/readme": {"get": {"x-not-implemented": "red", "tags": ["channels"], "summary": "Get the README file for this artifact", "operationId": "repo.endpoints.channels.channel_artifacts.get_artifact_readme", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}], "responses": {"200": {"description": "successfully retrieved README for this artifact", "content": {"application/json": {"schema": {"type": "string"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "deprecated": true}}, "/channels/{channel_name}/cves": {"get": {"tags": ["channels", "cves"], "summary": "Get all the CVE's associated with this channel", "operationId": "repo.endpoints.channels.channel_artifacts.list_channel_cves", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/cve_status-query"}, {"$ref": "#/components/parameters/min_cve_score-query"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/max_cve_score-query"}, {"$ref": "#/components/parameters/architectures-query"}, {"$ref": "#/components/parameters/cve-name-query"}, {"$ref": "#/components/parameters/version-query"}, {"$ref": "#/components/parameters/min_packages_count-query"}, {"$ref": "#/components/parameters/artifact_name-query"}, {"$ref": "#/components/parameters/cve-sort-query"}, {"$ref": "#/components/parameters/with_cve_counts_by_severity-query"}], "responses": {"200": {"description": "successfully returns the CVE objects related to this channel", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/CVE"}}, "cve_count_by_severity": {"$ref": "#/components/schemas/CVEsBySeverity"}}}}, "text/csv": {"schema": {"type": "string"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/cves/ws": {"get": {"tags": ["channels", "cves", "websocket"], "operationId": "repo.endpoints.channels.channel_artifacts.cve_report_batched", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/cve_status-query"}, {"$ref": "#/components/parameters/min_cve_score-query"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/max_cve_score-query"}, {"$ref": "#/components/parameters/architectures-query"}, {"$ref": "#/components/parameters/cve-name-query"}, {"$ref": "#/components/parameters/version-query"}, {"$ref": "#/components/parameters/artifact_name-query"}], "responses": {"101": {"description": "Read-only websocket with new events", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CVE"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}}, "security": [{"jwt": []}]}}, "/channels/{channel_name}/cves/{cve_id}": {"get": {"tags": ["channels", "cves"], "summary": "Get channel CVE details", "operationId": "repo.endpoints.channels.channel_artifacts.get_channel_cve_details", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/cve_id-parameter"}], "responses": {"200": {"description": "successfully returns the channel's CVE detailss", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CVE"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/cves/{cve_id}/files": {"get": {"tags": ["channels", "cves"], "summary": "Get all package files, associated with specific CVE in the channel", "operationId": "repo.endpoints.channels.channel_artifacts.list_channel_cve_files", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/cve_id-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/cve_status-query"}, {"$ref": "#/components/parameters/min_cve_score-query"}], "responses": {"200": {"description": "successfully returns routes, related to this CVE in the channel", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/CVEPackage"}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/artifacts/{artifact_family}/{artifact_name}/cves": {"get": {"tags": ["channels", "cves"], "summary": "Get all the CVE's associated with this channel and artifact", "operationId": "repo.endpoints.channels.channel_artifacts.list_artifact_cves", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/cve_status-query"}, {"$ref": "#/components/parameters/min_cve_score-query"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/with_cve_counts_by_severity-query"}], "responses": {"200": {"description": "successfully returns the CVE objects, related to this CVE in artifact", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/CVE"}}, "cve_count_by_severity": {"$ref": "#/components/schemas/CVEsBySeverity"}}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/artifacts/{artifact_family}/{artifact_name}/cves/{cve_id}": {"get": {"tags": ["channels", "cves"], "summary": "Get artifact CVE details", "operationId": "repo.endpoints.channels.channel_artifacts.get_artifact_cve_details", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/cve_id-parameter"}], "responses": {"200": {"description": "successfully returns the artifact CVE details", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CVE"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/artifacts/{artifact_family}/{artifact_name}/cves/{cve_id}/files": {"get": {"tags": ["channels", "cves"], "summary": "successfully returns routes, related to this CVE in the artifact", "operationId": "repo.endpoints.channels.channel_artifacts.list_artifact_cve_files", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/cve_id-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/cve_status-query"}, {"$ref": "#/components/parameters/min_cve_score-query"}], "responses": {"200": {"description": "successfully returns routes, related to this CVE in the channel", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/CVEPackage"}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/artifacts/{artifact_family}/{artifact_name}/files": {"get": {"tags": ["channels"], "summary": "Get all files of the artifact", "operationId": "repo.endpoints.channels.channel_artifacts.list_artifact_files", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/file-sort-query"}, {"$ref": "#/components/parameters/omit_cve-query"}, {"$ref": "#/components/parameters/include_nonsearchable-query"}, {"$ref": "#/components/parameters/cve_status-query"}, {"$ref": "#/components/parameters/max_cve_score-query"}, {"$ref": "#/components/parameters/min_cve_score-query"}, {"$ref": "#/components/parameters/architectures-query"}, {"$ref": "#/components/parameters/package-state-query"}, {"$ref": "#/components/parameters/created-min-query"}, {"$ref": "#/components/parameters/created-max-query"}, {"$ref": "#/components/parameters/ckey-query"}, {"$ref": "#/components/parameters/version-query"}, {"$ref": "#/components/parameters/cve_extra_info-query"}], "responses": {"200": {"description": "successfully retrieved all files", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/ArtifactFile"}}}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}}, "/channels/{channel_name}/artifacts/{artifact_family}/{artifact_name}/files/{ckey:[^/].*?}": {"get": {"tags": ["channels"], "summary": "Get artifact file", "operationId": "repo.endpoints.channels.channel_artifacts.artifact_file", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/ckey-parameter"}, {"$ref": "#/components/parameters/omit_cve-query"}], "responses": {"200": {"description": "Artifact file", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ArtifactFile"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}}, "/channels/{channel_name}/artifacts/{artifact_family}/{artifact_name}/file-cves/{ckey:[^/].*?}": {"get": {"tags": ["channels"], "summary": "Get a list of CVEs for the file (ckey)", "operationId": "repo.endpoints.channels.channel_artifacts.list_file_cves", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/ckey-parameter"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}], "responses": {"200": {"description": "List of CVEs", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/CVE"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/signature-verification/{artifact_family}": {"post": {"tags": ["channels"], "summary": "Verify a single package metadata", "operationId": "repo.endpoints.signature_verification.is_verified", "parameters": [{"$ref": "#/components/parameters/signature-artifact_family-parameter"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FileSignatureVerificationRequest"}}}}, "responses": {"200": {"description": "Verfication succeed", "content": {"application/json": {"schema": {"type": "object", "properties": {"verified": {"type": "boolean"}}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/artifacts/{artifact_family}/{artifact_name}/dependencies": {"get": {"tags": ["channels"], "summary": "Get all dependencies of artifact", "operationId": "repo.endpoints.channels.channel_artifacts.list_artifact_dependencies", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}], "responses": {"200": {"description": "successfully retrieved all dependencies", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/ArtifactDependency"}}}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}}, "/channels/{channel_name}/artifacts/{artifact_family}/{artifact_name}/dependants": {"get": {"tags": ["channels"], "summary": "Get all dependant packages from the artifact", "operationId": "repo.endpoints.channels.channel_artifacts.list_artifact_dependants", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}], "responses": {"200": {"description": "successfully retrieved all dependants", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/ArtifactDependency"}}}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}}, "/channels/{channel_name}/artifacts/{artifact_family}/{artifact_name}/move": {"put": {"x-not-implemented": "red", "tags": ["channels"], "summary": "Move the artifact to another channel", "operationId": "repo.endpoints.channels.channel_artifacts.move_artifact", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ArtifactBulkActionRequest"}}}}, "responses": {"200": {"description": "successfully moved the artifact to another channel"}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}], "deprecated": true}}, "/channels/{channel_name}/artifacts/{artifact_family}/{artifact_name}/copy": {"put": {"x-not-implemented": "red", "tags": ["channels"], "summary": "Copy the artifact to another channel", "operationId": "repo.endpoints.channels.channel_artifacts.copy_artifact", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ArtifactBulkActionRequest"}}}}, "responses": {"200": {"description": "successfully copied the artifact to another channel"}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}], "deprecated": true}}, "/channels/{channel_name}/mirrors": {"get": {"tags": ["channels"], "summary": "Get list of mirror configurations", "operationId": "repo.endpoints.channels.channel_mirrors.list_mirrors", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/mirror-sort-query"}], "responses": {"200": {"description": "ok", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/Mirror"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}, "post": {"tags": ["channels"], "summary": "Create a mirror", "operationId": "repo.endpoints.channels.channel_mirrors.post_mirror", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/task-manager-schedule-query"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MirrorConfiguration"}}}}, "responses": {"201": {"description": "ok", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Mirror"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}, "409": {"$ref": "#/components/responses/Conflict"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/mirrors/{mirror_id}/stop_mirror_sync": {"post": {"tags": ["channels"], "summary": "Stop mirror sync task", "operationId": "repo.endpoints.channels.channel_mirrors.stop_mirror_sync", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/mirror_id-parameter"}], "responses": {"200": {"description": "ok", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Mirror"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/mirrors/{mirror_id}": {"get": {"tags": ["channels"], "summary": "Get mirror details", "operationId": "repo.endpoints.channels.channel_mirrors.get_mirror", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/mirror_id-parameter"}], "responses": {"200": {"description": "ok", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Mirror"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}, "put": {"tags": ["channels"], "summary": "Update a mirror", "operationId": "repo.endpoints.channels.channel_mirrors.put_mirror", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/mirror_id-parameter"}, {"$ref": "#/components/parameters/task-manager-schedule-query"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MirrorConfiguration"}}}}, "responses": {"202": {"description": "ok", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Mirror"}}}}, "204": {"description": "no content"}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}, "delete": {"tags": ["channels"], "summary": "Delete an existing mirror configuration", "operationId": "repo.endpoints.channels.channel_mirrors.delete_mirror", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/mirror_id-parameter"}], "responses": {"200": {"description": "ok"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/files-filtered": {"get": {"tags": ["channels"], "summary": "Get list of routes filtered by last mirror for specific channel", "description": "Retrieve all routes filtered by last mirror for the specific channel", "operationId": "repo.endpoints.channels.channels_routes_filtered.list_routes_filtered", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}], "responses": {"200": {"description": "get list of routes filtered for channel", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/FileFiltered"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels": {"get": {"tags": ["channels"], "summary": "Get list of subchannels within the channel", "operationId": "repo.endpoints.channels.subchannels.list_subchannels", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/channel-ids-query"}, {"$ref": "#/components/parameters/channel-sort-query"}], "responses": {"200": {"description": "get the subchannels of the channel", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/Subchannel"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}, "post": {"tags": ["channels"], "summary": "Create a subchannel", "operationId": "repo.endpoints.channels.subchannels.post_subchannel", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelCreateRequest"}}}}, "responses": {"201": {"description": "successfully created the subchannel", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Subchannel"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "409": {"$ref": "#/components/responses/Conflict"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}": {"get": {"tags": ["channels"], "summary": "Get the specific subchannel details", "operationId": "repo.endpoints.channels.subchannels.get_subchannel", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}], "responses": {"200": {"description": "get the subchannel", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Subchannel"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}, "put": {"tags": ["channels"], "summary": "Update the subchannel", "operationId": "repo.endpoints.channels.subchannels.put_subchannel", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Subchannel"}}}}, "responses": {"200": {"description": "successfully updated the subchannel"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "409": {"$ref": "#/components/responses/Conflict"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}, "delete": {"tags": ["channels"], "summary": "Delete the subchannel", "operationId": "repo.endpoints.channels.subchannels.delete_subchannel", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}], "responses": {"202": {"description": "successfully deleted the subchannel"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/cves_history": {"get": {"tags": ["channels", "cves"], "summary": "Get the cve history logs of the subchannel", "operationId": "repo.endpoints.channels.subchannels_cve_history.get_cve_subchannel_history", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/to-date-parameter"}, {"$ref": "#/components/parameters/from-date-parameter"}, {"$ref": "#/components/parameters/cve_status-query"}, {"$ref": "#/components/parameters/cve-notifications-event-type-query"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/min-download-count-query"}, {"$ref": "#/components/parameters/max-impact-score-query"}, {"$ref": "#/components/parameters/min-impact-score-query"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}], "responses": {"200": {"description": "successfully retrieved the cve history logs for the channel", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelCveHistory"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}, "post": {"tags": ["channels", "cves"], "summary": "generate cves_history for a specific timestamp for example for existing cves history", "operationId": "repo.endpoints.channels.subchannels_cve_history.generate_cve_notifications", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/timestamp-parameter"}], "responses": {"202": {"description": "successfully starting building of cve notifications", "content": {"application/json": {"schema": {"type": "object", "properties": {"message": {"type": "string"}}}}}}, "200": {"description": "No history available for given timestamp", "content": {"application/json": {"schema": {"type": "object", "properties": {"message": {"type": "string"}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/mirrors/{mirror_id}/stop_mirror_sync": {"post": {"tags": ["channels"], "summary": "Stop mirror sync task", "operationId": "repo.endpoints.channels.subchannel_mirrors.stop_mirror_sync", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/mirror_id-parameter"}], "responses": {"200": {"description": "ok", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Mirror"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/permissions": {"get": {"tags": ["channels"], "summary": "Get the user permission level on the channel", "operationId": "repo.endpoints.channels.subchannels.subchannel_permissions", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}], "responses": {"200": {"description": "successfully retrieved the permission scopes on a subchannel", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResourcePermissions"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}}, "/channels/{channel_name}/subchannels/{subchannel_name}/artifacts": {"get": {"tags": ["channels"], "summary": "Get the artifacts of the subchannel", "operationId": "repo.endpoints.channels.subchannel_artifacts.list_artifacts", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/only_names-query"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/artifact-sort-query"}, {"$ref": "#/components/parameters/artifact_family-query"}, {"$ref": "#/components/parameters/platform-query"}], "responses": {"200": {"description": "get the subchannel artifacts", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/Artifact"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}, "post": {"tags": ["channels"], "summary": "Upload an artifact to the subchannel (implemented by repo-proxy, can't be called directly)", "operationId": "repo.endpoints.channels.subchannel_artifacts.upload_placeholder", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}], "requestBody": {"description": "upload the artifact to the subchannel with specified type and name", "content": {"multipart/form-data": {"schema": {"type": "object", "properties": {"filetype": {"$ref": "#/components/schemas/UploadFileType"}, "description": {"type": "string", "description": "a string that describes the package that is being uploaded"}, "content": {"type": "string", "format": "binary"}}}}}}, "responses": {"201": {"description": "successful file uploaded"}, "204": {"description": "successful subsequent file uploads"}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/stats": {"get": {"tags": ["channels"], "summary": "Get stats and counters for the subchannel", "operationId": "repo.endpoints.channels.subchannels.subchannel_stats", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}], "responses": {"200": {"description": "returns stats for the subchannel", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelStats"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/virtual-channels": {"get": {"tags": ["channels"], "summary": "Get list of all virtual channels created from current subchannel", "operationId": "repo.endpoints.channels.subchannels.list_virtual_channels", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/channel-sort-query"}], "responses": {"200": {"description": "return list of virtual channels", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/Channel"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/artifacts/bulk": {"put": {"tags": ["channels"], "summary": "Perform a bulk action for artifacts in subchannel", "operationId": "repo.endpoints.channels.subchannel_artifacts.bulk", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ArtifactBulkActionRequest"}}}}, "responses": {"202": {"description": "bulk did something to artifacts in the subchannel successfully"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/artifacts/{artifact_family}": {"put": {"tags": ["channels"], "summary": "Refreshes the index for specific artifact family in the subchannel", "operationId": "repo.endpoints.channels.subchannel_artifacts.refresh_artifact_family_index", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}], "responses": {"202": {"description": "index update accepted"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/artifacts/{artifact_family}/{artifact_name}": {"get": {"tags": ["channels"], "summary": "Get the details of the specific artifact in the subchannel", "operationId": "repo.endpoints.channels.subchannel_artifacts.get_artifact", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}], "responses": {"200": {"description": "successfully returned an Artifact", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Artifact"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}, "delete": {"tags": ["channels"], "summary": "Delete the specific artifact in the subchannel", "operationId": "repo.endpoints.channels.subchannel_artifacts.delete_artifact", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}], "responses": {"204": {"description": "successfully deleted the artifact from the subchannel"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/artifacts/{artifact_family}/{artifact_name}/readme": {"get": {"x-not-implemented": "red", "tags": ["channels"], "summary": "Get the readme of the specific artifact in the subchannel", "operationId": "repo.endpoints.channels.subchannel_artifacts.get_artifact_readme", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}], "responses": {"200": {"description": "successfully returned an artifact readme", "content": {"application/json": {"schema": {"type": "string"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "deprecated": true}}, "/channels/{channel_name}/subchannels/{subchannel_name}/cves": {"get": {"tags": ["channels", "cves"], "summary": "Get all the CVE's associated with this subchannel", "operationId": "repo.endpoints.channels.subchannel_artifacts.list_subchannel_cves", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/cve_status-query"}, {"$ref": "#/components/parameters/min_cve_score-query"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/max_cve_score-query"}, {"$ref": "#/components/parameters/architectures-query"}, {"$ref": "#/components/parameters/cve-name-query"}, {"$ref": "#/components/parameters/version-query"}, {"$ref": "#/components/parameters/min_packages_count-query"}, {"$ref": "#/components/parameters/artifact_name-query"}, {"$ref": "#/components/parameters/cve-sort-query"}, {"$ref": "#/components/parameters/with_cve_counts_by_severity-query"}], "responses": {"200": {"description": "successfully returns the CVE objects related to this channel", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/CVE"}}}, "text/csv": {"schema": {"type": "string"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/cves/ws": {"get": {"tags": ["channels", "cves", "websocket"], "operationId": "repo.endpoints.channels.subchannel_artifacts.cve_report_batched", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/cve_status-query"}, {"$ref": "#/components/parameters/min_cve_score-query"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/max_cve_score-query"}, {"$ref": "#/components/parameters/architectures-query"}, {"$ref": "#/components/parameters/cve-name-query"}, {"$ref": "#/components/parameters/version-query"}, {"$ref": "#/components/parameters/artifact_name-query"}], "responses": {"101": {"description": "Read-only websocket with new events", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CVE"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}}, "security": [{"jwt": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/cves/{cve_id}": {"get": {"tags": ["channels", "cves"], "summary": "Get subchannel CVE details", "operationId": "repo.endpoints.channels.subchannel_artifacts.get_subchannel_cve_details", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/cve_id-parameter"}], "responses": {"200": {"description": "successfully returns subchannel CVE details", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CVE"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/cves/{cve_id}/files": {"get": {"tags": ["channels", "cves"], "summary": "Get all package files, associated with specific CVE in the channel", "operationId": "repo.endpoints.channels.subchannel_artifacts.list_subchannel_cve_files", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/cve_id-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/cve_status-query"}, {"$ref": "#/components/parameters/min_cve_score-query"}], "responses": {"200": {"description": "successfully returns routes, related to this CVE in the subchannel", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/CVEPackage"}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/artifacts/{artifact_family}/{artifact_name}/cves": {"get": {"tags": ["channels", "cves"], "summary": "Get all the CVE's associated with this subchannel and artifact", "operationId": "repo.endpoints.channels.subchannel_artifacts.list_artifact_cves", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/cve_status-query"}, {"$ref": "#/components/parameters/min_cve_score-query"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/with_cve_counts_by_severity-query"}], "responses": {"200": {"description": "successfully returns the CVE objects, related to this subchannel", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/CVE"}}, "cve_count_by_severity": {"$ref": "#/components/schemas/CVEsBySeverity"}}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/artifacts/{artifact_family}/{artifact_name}/cves/{cve_id}": {"get": {"tags": ["channels", "cves"], "summary": "Get subchannel artifact CVE details", "operationId": "repo.endpoints.channels.subchannel_artifacts.get_artifact_cve_details", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/cve_id-parameter"}], "responses": {"200": {"description": "successfully returns the subchannel artifact CVE details", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CVE"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/artifacts/{artifact_family}/{artifact_name}/cves/{cve_id}/files": {"get": {"tags": ["channels", "cves"], "summary": "successfully returns routes, related to this CVE in the artifact", "operationId": "repo.endpoints.channels.subchannel_artifacts.list_artifact_cve_files", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/cve_id-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/cve_status-query"}, {"$ref": "#/components/parameters/min_cve_score-query"}], "responses": {"200": {"description": "successfully returns routes, related to this CVE in the artifact", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/CVE"}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/artifacts/{artifact_family}/{artifact_name}/files": {"get": {"tags": ["channels"], "summary": "Get all files of artifact in subchannel", "operationId": "repo.endpoints.channels.subchannel_artifacts.list_artifact_files", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/file-sort-query"}, {"$ref": "#/components/parameters/omit_cve-query"}, {"$ref": "#/components/parameters/include_nonsearchable-query"}, {"$ref": "#/components/parameters/cve_status-query"}, {"$ref": "#/components/parameters/max_cve_score-query"}, {"$ref": "#/components/parameters/min_cve_score-query"}, {"$ref": "#/components/parameters/architectures-query"}, {"$ref": "#/components/parameters/package-state-query"}, {"$ref": "#/components/parameters/created-min-query"}, {"$ref": "#/components/parameters/created-max-query"}, {"$ref": "#/components/parameters/ckey-query"}, {"$ref": "#/components/parameters/version-query"}, {"$ref": "#/components/parameters/cve_extra_info-query"}], "responses": {"200": {"description": "successfully retrieved all files", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/ArtifactFile"}}}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}}, "/channels/{channel_name}/subchannels/{subchannel_name}/artifacts/{artifact_family}/{artifact_name}/files/{ckey:[^/].*?}": {"get": {"tags": ["channels"], "summary": "Get artifact file in subchannel", "operationId": "repo.endpoints.channels.subchannel_artifacts.artifact_file", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/ckey-parameter"}, {"$ref": "#/components/parameters/omit_cve-query"}], "responses": {"200": {"description": "Artifact file", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ArtifactFile"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}}, "/channels/{channel_name}/subchannels/{subchannel_name}/artifacts/{artifact_family}/{artifact_name}/file-cves/{ckey:[^/].*?}": {"get": {"tags": ["channels"], "summary": "Get a list of CVEs for the file (ckey)", "operationId": "repo.endpoints.channels.subchannel_artifacts.list_file_cves", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/ckey-parameter"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}], "responses": {"200": {"description": "List of CVEs", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/CVE"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/artifacts/{artifact_family}/{artifact_name}/dependencies": {"get": {"tags": ["channels"], "summary": "Get all dependencies of artifact in subchannel", "operationId": "repo.endpoints.channels.subchannel_artifacts.list_artifact_dependencies", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}], "responses": {"200": {"description": "successfully retrieved all dependencies", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/ArtifactDependency"}}}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}}, "/channels/{channel_name}/subchannels/{subchannel_name}/artifacts/{artifact_family}/{artifact_name}/dependants": {"get": {"tags": ["channels"], "summary": "Get all dependants of artifact in subchannel", "operationId": "repo.endpoints.channels.subchannel_artifacts.list_artifact_dependants", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}], "responses": {"200": {"description": "successfully retrieved all dependants", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/ArtifactDependency"}}}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}}, "/channels/{channel_name}/subchannels/{subchannel_name}/artifacts/{artifact_family}/{artifact_name}/move": {"put": {"x-not-implemented": "red", "tags": ["channels"], "summary": "Move the artifact between two subchannels", "operationId": "repo.endpoints.channels.subchannel_artifacts.move_artifact", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}], "requestBody": {"content": {"application/json": {"schema": {"type": "object", "properties": {"dest": {"type": "string", "description": "the destination subchannel to move this artifact to"}}}}}}, "responses": {"200": {"description": "successfully moved the artifact to another subchannel"}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}], "deprecated": true}}, "/channels/{channel_name}/subchannels/{subchannel_name}/artifacts/{artifact_family}/{artifact_name}/copy": {"put": {"x-not-implemented": "red", "tags": ["channels"], "summary": "Copy the artifact to another subchannel", "operationId": "repo.endpoints.channels.subchannel_artifacts.copy_artifact", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}], "requestBody": {"content": {"application/json": {"schema": {"type": "object", "properties": {"dest": {"type": "string", "description": "the subchannel to copy the artifact to"}}}}}}, "responses": {"200": {"description": "successfully copied the artifact to another subchannel"}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}], "deprecated": true}}, "/channels/{channel_name}/subchannels/{subchannel_name}/artifacts/{artifact_family}/{artifact_name}/download": {"get": {"x-not-implemented": "red", "tags": ["channels"], "summary": "Donwload the artifact from the subchannel", "description": "download the artifact in the current subchannel specified by the artifact id", "operationId": "repo.endpoints.channels.subchannel_artifacts.download_artifact_file", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}], "responses": {"200": {"description": "successfully found the resource to download"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "deprecated": true}}, "/channels/{channel_name}/subchannels/{subchannel_name}/mirrors": {"get": {"tags": ["channels"], "summary": "Get list of mirrors of the subchannel", "operationId": "repo.endpoints.channels.subchannel_mirrors.list_mirrors", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/mirror-sort-query"}], "responses": {"200": {"description": "get the subchannel mirrors", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/Mirror"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}, "post": {"tags": ["channels"], "summary": "Create a mirror in the subchannel", "operationId": "repo.endpoints.channels.subchannel_mirrors.post_mirror", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/task-manager-schedule-query"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MirrorConfiguration"}}}}, "responses": {"201": {"description": "ok", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Mirror"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/mirrors/{mirror_id}": {"get": {"tags": ["channels"], "summary": "Show mirror details in subchannel", "operationId": "repo.endpoints.channels.subchannel_mirrors.get_mirror", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/mirror_id-parameter"}], "responses": {"200": {"description": "ok", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Mirror"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}, "put": {"tags": ["channels"], "summary": "Update a mirror in subchannel", "operationId": "repo.endpoints.channels.subchannel_mirrors.put_mirror", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/mirror_id-parameter"}, {"$ref": "#/components/parameters/task-manager-schedule-query"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MirrorConfiguration"}}}}, "responses": {"202": {"description": "ok", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Mirror"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}, "delete": {"tags": ["channels"], "summary": "Delete the mirror from the subchannel", "operationId": "repo.endpoints.channels.subchannel_mirrors.delete_mirror", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/mirror_id-parameter"}], "responses": {"204": {"description": "successfully removed the mirror from the subchannel"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/groups": {"get": {"tags": ["groups"], "summary": "Get list of groups for the subchannel", "operationId": "repo.endpoints.channels.subchannel_groups.list_groups", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}], "responses": {"200": {"description": "successfully retrieved the channel attached groups", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/ChannelGroup"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}, "post": {"tags": ["groups"], "summary": "Add a new group to the subchannel", "operationId": "repo.endpoints.channels.subchannel_groups.post_group", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelGroupRequest"}}}}, "responses": {"204": {"description": "successfully added group to the subchannel"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/groups/{group_id}": {"put": {"tags": ["groups"], "summary": "Update group subchannel permission", "operationId": "repo.endpoints.channels.subchannel_groups.change_group", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/group_id-parameter"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelGroupPermissions"}}}}, "responses": {"200": {"description": "successfully updated the subchannel group permissions", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/ChannelGroup"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "409": {"$ref": "#/components/responses/Conflict"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}, "delete": {"tags": ["groups"], "summary": "Delete a group from the subchannel", "operationId": "repo.endpoints.channels.subchannel_groups.delete_group", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/group_id-parameter"}], "responses": {"204": {"description": "Group is successfully removed"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "409": {"$ref": "#/components/responses/Conflict"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/channels/{channel_name}/subchannels/{subchannel_name}/history": {"get": {"tags": ["channels"], "summary": "Get the history logs of the subchannel", "operationId": "repo.endpoints.channels.subchannels.subchannel_history", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/subchannel-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}], "responses": {"200": {"description": "get the subchannel history", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChannelHistory"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/groups": {"get": {"tags": ["groups"], "summary": "Get list of all groups", "operationId": "repo.endpoints.groups.list_all_groups", "parameters": [{"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/with-user-counts-query"}], "responses": {"200": {"description": "successfully retrieved all groups", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "integer"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/Group"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}, "post": {"tags": ["groups"], "summary": "Create a new group", "operationId": "repo.endpoints.groups.post_group", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GroupRequest"}}}}, "responses": {"200": {"description": "successfully created the group", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Group"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/groups/{group_id}": {"get": {"tags": ["groups"], "summary": "Get group details", "description": "gets the data for a group specified by the name of the group", "operationId": "repo.endpoints.groups.get_group", "parameters": [{"$ref": "#/components/parameters/group_id-parameter"}], "responses": {"200": {"description": "successfully retrieved single group", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Group"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}, "put": {"tags": ["groups"], "summary": "Edit a group", "description": "Edits the group specified by the group name", "operationId": "repo.endpoints.groups.put_group", "parameters": [{"$ref": "#/components/parameters/group_id-parameter"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GroupRequest"}}}}, "responses": {"200": {"description": "successfully edited the specified subchannel", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Subchannel"}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}, "delete": {"tags": ["groups"], "summary": "Delete a group", "description": "Allows a user to delete the group specified by the group name", "operationId": "repo.endpoints.groups.delete_group", "parameters": [{"$ref": "#/components/parameters/group_id-parameter"}], "responses": {"204": {"description": "successfully deleted group"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/groups/{group_id}/users": {"post": {"tags": ["groups"], "summary": "Add a user to the group", "description": "Adds a user to the group with specific permission", "operationId": "repo.endpoints.groups.add_user", "parameters": [{"$ref": "#/components/parameters/group_id-parameter"}], "requestBody": {"content": {"application/json": {"schema": {"type": "object", "required": ["user_id", "permission"], "properties": {"user_id": {"type": "string", "description": "the user_id"}, "permission": {"type": "string", "enum": ["read", "manage"]}}}}}}, "responses": {"200": {"description": "successfully retrieved single group", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Group"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/groups/{group_id}/users/{user_id}": {"delete": {"tags": ["groups"], "summary": "removes a user from the group", "description": "removes a user from the group", "operationId": "repo.endpoints.groups.delete_user", "parameters": [{"$ref": "#/components/parameters/group_id-parameter"}, {"$ref": "#/components/parameters/user_id-parameter"}], "responses": {"200": {"description": "successfully retrieved single group", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Group"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/groups/{group_id}/channels": {"get": {"tags": ["groups"], "summary": "Get list of the group channels", "operationId": "repo.endpoints.groups.list_channels", "parameters": [{"$ref": "#/components/parameters/group_id-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/channel-sort-query"}], "responses": {"200": {"description": "successfully retrieved list of channels", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Channel"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}]}}, "/artifacts": {"get": {"x-not-implemented": "yellow", "tags": ["artifacts"], "summary": "Get list of all artifacts", "description": "Gets all the artifacts regardless of type found within the entire standalone Repo", "operationId": "repo.endpoints.artifacts.search_artifacts", "parameters": [{"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/only_names-query"}, {"$ref": "#/components/parameters/artifact-sort-query"}, {"$ref": "#/components/parameters/artifact_family-query"}, {"$ref": "#/components/parameters/platform-query"}, {"$ref": "#/components/parameters/created-query"}, {"$ref": "#/components/parameters/updated-query"}], "responses": {"200": {"description": "successfully retrieved all artifacts", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/Artifact"}}}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}}}, "/artifacts/{artifact_family}/": {"get": {"x-not-implemented": "red", "tags": ["artifacts"], "summary": "Get list of all the artifacts of a specific type", "description": "Gets all artifacts that match the given type parameter", "operationId": "repo.endpoints.artifacts.get_all_by_type", "parameters": [{"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/artifact-sort-query"}], "responses": {"200": {"description": "successfully retrieved all artifacts with the artifact_family", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Artifact"}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}], "deprecated": true}}, "/artifacts/{artifact_family}/{artifact_name}": {"get": {"x-not-implemented": "red", "tags": ["artifacts"], "summary": "Get list of the artifacts by type and name", "description": "Search for artifacts matching the artifact_family and artifact_name", "operationId": "repo.endpoints.artifacts.get_all_by_type_and_name", "parameters": [{"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}], "responses": {"200": {"description": "successfully retrieved all artifacts of type artifact_family", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Artifact"}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "deprecated": true}}, "/artifacts/{artifact_family}/{artifact_name}/channels": {"get": {"x-not-implemented": "red", "tags": ["artifacts"], "summary": "Get all channels that have this artifact in it", "operationId": "repo.endpoints.artifacts.artifact_channels", "parameters": [{"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}], "responses": {"200": {"description": "successfully retrieved all channels using this artifact", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/Artifact"}}}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "deprecated": true}}, "/artifacts/{artifact_family}/{artifact_name}/{artifact_file}/download": {"get": {"x-not-implemented": "red", "tags": ["artifacts"], "summary": "Download the artifact file", "operationId": "repo.endpoints.artifacts.download_artifact", "parameters": [{"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"in": "path", "name": "artifact_file", "description": "the url property of the ArtifactFile to download from", "schema": {"type": "string"}, "required": true}], "responses": {"200": {"description": "successfully downloaded the file"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "deprecated": true}}, "/artifacts/{artifact_family}/{artifact_name}/versions": {"get": {"x-not-implemented": "red", "tags": ["artifacts"], "summary": "Get list of artifact versions available for this artifact", "operationId": "repo.endpoints.artifacts.versions", "parameters": [{"$ref": "#/components/parameters/artifact_family-parameter"}, {"$ref": "#/components/parameters/artifact_name-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}], "responses": {"200": {"description": "returns an array of versions associated with this artifact", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/ArtifactVersion"}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "deprecated": true}}, "/cves": {"get": {"tags": ["cves"], "summary": "Get list of the latest CVEs", "operationId": "repo.endpoints.cves.list_cves", "parameters": [{"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/cve_status-query"}, {"$ref": "#/components/parameters/min_cve_score-query"}, {"$ref": "#/components/parameters/min_packages_count-query"}, {"$ref": "#/components/parameters/search-query"}, {"$ref": "#/components/parameters/cve-sort-query"}], "responses": {"200": {"description": "get latest CVEs", "content": {"application/json": {"schema": {"type": "object", "properties": {"total_count": {"type": "number"}, "items": {"type": "array", "items": {"$ref": "#/components/schemas/CVE"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/cves/{cve_id}": {"get": {"tags": ["cves"], "summary": "Get the CVE by its ID", "operationId": "repo.endpoints.cves.get_cve", "parameters": [{"$ref": "#/components/parameters/cve_id-parameter"}], "responses": {"200": {"description": "get cve detailss", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CVE"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/cves/{cve_id}/files": {"get": {"tags": ["cves"], "summary": "Get the CVE by its ID", "operationId": "repo.endpoints.cves.list_cve_files", "parameters": [{"$ref": "#/components/parameters/cve_id-parameter"}, {"$ref": "#/components/parameters/offset-query"}, {"$ref": "#/components/parameters/limit-query"}, {"$ref": "#/components/parameters/cve_status-query"}, {"$ref": "#/components/parameters/min_cve_score-query"}], "responses": {"200": {"description": "get cve all relevant files", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CVE"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "404": {"$ref": "#/components/responses/NotFound"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/cves-report": {"get": {"tags": ["cves"], "summary": "Get list of the CVEs with status for provided list of packages", "operationId": "repo.endpoints.cves.list_cves_for_packages", "parameters": [{"$ref": "#/components/parameters/sha256s-query"}, {"$ref": "#/components/parameters/use_blob-query"}], "responses": {"200": {"description": "get CVE status for packages", "content": {"application/json": {"schema": {"type": "object", "properties": {"items": {"type": "array", "items": {"$ref": "#/components/schemas/CVEsReport"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}, "post": {"tags": ["cves"], "summary": "Get list of the CVEs with status for provided list of packages. Using Post as Get", "operationId": "repo.endpoints.cves.list_cves_for_packages_post_query", "parameters": [{"$ref": "#/components/parameters/use_blob-query"}], "requestBody": {"content": {"application/json": {"schema": {"type": "object", "required": ["sha256s"], "properties": {"sha256s": {"type": "array", "description": "list of sha256 checksums", "items": {"type": "string"}}}}}}}, "responses": {"200": {"description": "get CVE status for packages", "content": {"application/json": {"schema": {"type": "object", "properties": {"items": {"type": "array", "items": {"$ref": "#/components/schemas/CVEsReport"}}}}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/system/blob_cleanup": {"delete": {"tags": ["system"], "x-internal": true, "operationId": "repo.endpoints.system.blob_cleanup", "summary": "Action to cleanup orphan blobs for users with system management roles", "description": "## Finds and clears all orphan blobs that are not index artifacts\n", "responses": {"200": {"description": "cleanup stats", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CleanupStats"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}}, "security": [{"jwt": []}, {"user_token": []}]}, "post": {"tags": ["system"], "x-internal": true, "operationId": "repo.endpoints.system.cleanup_specified_orphan_blobs", "summary": "Action to cleanup given list of blobs", "description": "## Clears the blobs based on the details (sha256) provided by admin\n", "requestBody": {"content": {"application/json": {"schema": {"type": "array", "description": "list of blobs with sha256", "items": {"type": "string"}}}}}, "responses": {"200": {"description": "cleanup stats", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CleanupStats"}}}}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}}, "security": [{"jwt": []}, {"user_token": []}]}}, "/repo/upload": {"post": {"x-internal": true, "summary": "Used by repo-proxy to handle upload artifact flow", "operationId": "repo.endpoints.artifacts.upload_artifact", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UploadRequest"}}}}, "responses": {"200": {"description": "ok"}, "400": {"description": "metadata format is invalid"}}, "tags": ["artifacts"]}}, "/repo/docker/events": {"post": {"x-internal": true, "operationId": "repo.endpoints.docker.publish_events", "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object"}}}}, "responses": {"204": {"description": "No content"}}}}, "/repo/docker/repositories/{channel_id}/{image_name}": {"get": {"x-internal": true, "operationId": "repo.endpoints.docker.get_repository", "parameters": [{"name": "channel_id", "in": "path", "required": true, "schema": {"type": "string"}}, {"name": "image_name", "in": "path", "required": true, "schema": {"type": "string", "format": "path"}}], "responses": {"200": {"description": "OK"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}}, "security": [{"user_token": []}]}}, "/repo/{channel_name}/{ckey:[^/].*?}": {"summary": "Interacting with artifacts within a channel", "get": {"summary": "Get artifact contents or other information", "operationId": "repo.endpoints.artifacts.get_artifact", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/ckey-parameter"}, {"$ref": "#/components/parameters/sbom-query"}], "responses": {"200": {"description": "ok"}, "404": {"description": "not found"}, "422": {"description": "proxied file is broken"}}, "tags": ["artifacts"]}, "patch": {"summary": "Patch artifact metadata", "operationId": "repo.endpoints.artifacts.patch_artifact_metadata", "parameters": [{"$ref": "#/components/parameters/channel-parameter"}, {"$ref": "#/components/parameters/ckey-parameter"}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ArtifactMetadata"}}}}, "responses": {"204": {"description": "ok"}, "400": {"description": "metadata format is invalid"}, "404": {"description": "file not found"}, "422": {"description": "proxied file is broken"}}, "tags": ["artifacts"], "security": [{"jwt": []}, {"user_token": []}]}}, "/repo/{root_version:\\d+}.root.json": {"get": {"summary": "Returns root.json for package signing", "operationId": "repo.endpoints.signatures.root_json", "parameters": [{"$ref": "#/components/parameters/root_version-parameter"}], "responses": {"200": {"description": "ok"}, "404": {"description": "root.json version not found"}}, "tags": ["artifacts"], "security": []}}, "/repo/key_mgr.json": {"get": {"summary": "Returns key_mgr.json for package signing", "operationId": "repo.endpoints.signatures.key_mgr_json", "responses": {"200": {"description": "ok"}, "404": {"description": "key_mgr.json is not configured"}}, "tags": ["artifacts"], "security": []}}, "/reports/artifact_downloads": {"post": {"tags": ["reports"], "summary": "Endpoint to get artifact downloaded event reports", "operationId": "repo.endpoints.audit_logs.artifact_download.generate_artifact_downloads_report", "description": "## Generates artifact downloaded report for records satisfying given filter conditions.\n* This feature is only available for admin users.\n* from_date, to_date and download_as are mandatory fields.\n* usernames list and channel names list are optional fields.\n* Example: If you enter a date duration, give list of channel names, list of user names in the request, \n you get a report of artifact downloaded details downloaded during that duration AND (from the channel names\n given OR downloaded by what users specified).\n", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ArtifactDownloadReportRequest"}}}}, "responses": {"200": {"description": "Returns artifact download report file successfully based on download_as option selected", "content": {"application/json": {"schema": {"type": "object", "properties": {"items": {"type": "array", "items": {"$ref": "#/components/schemas/ArtifactDownloadReportResponse"}}}}}, "text/csv": {}}}, "400": {"$ref": "#/components/responses/BadRequest"}, "401": {"$ref": "#/components/responses/Unauthenticated"}, "403": {"$ref": "#/components/responses/Forbidden"}, "500": {"$ref": "#/components/responses/InternalServerError"}}, "security": [{"jwt": []}, {"user_token": []}]}}}, "components": {"parameters": {"channel-parameter": {"name": "channel_name", "in": "path", "required": true, "schema": {"type": "string", "pattern": "^[a-z][a-z0-9_-]*$"}}, "subchannel-parameter": {"name": "subchannel_name", "in": "path", "required": true, "schema": {"type": "string", "pattern": "^[a-z][a-z0-9_-]*$"}}, "artifact_family-parameter": {"name": "artifact_family", "in": "path", "required": true, "schema": {"$ref": "#/components/schemas/ArtifactFamily"}}, "artifact_name-parameter": {"name": "artifact_name", "in": "path", "required": true, "description": "the unique name of the artifact", "schema": {"type": "string", "example": "numpy"}}, "ckey-parameter": {"name": "ckey", "in": "path", "required": true, "schema": {"type": "string", "format": "path"}}, "group_id-parameter": {"name": "group_id", "in": "path", "required": true, "schema": {"type": "string", "pattern": "^[a-z0-9-]+$"}}, "user_id-parameter": {"name": "user_id", "in": "path", "required": true, "schema": {"type": "string"}}, "role_id-parameter": {"name": "role_id", "in": "path", "required": true, "schema": {"type": "string"}}, "root_version-parameter": {"name": "root_version", "in": "path", "required": true, "schema": {"type": "integer", "minimum": 0, "maximum": 1000}, "description": "the number of results in the result set"}, "installer_name-parameter": {"name": "installer_name", "in": "path", "required": true, "description": "the unique name of installer file", "schema": {"type": "string", "example": "Miniconda3-py37_4.10.1-Linux-aarch64.sh"}}, "artifact_family-query": {"name": "artifact_family", "in": "query", "schema": {"type": "array", "items": {"$ref": "#/components/schemas/ArtifactFamily"}}}, "platform-query": {"name": "platform", "in": "query", "schema": {"type": "string"}, "description": "filter for the platform"}, "ckey-query": {"name": "ckey", "in": "query", "schema": {"type": "string"}, "description": "ckey"}, "user-id-query": {"in": "query", "name": "user_id", "required": false, "description": "id of a user to filter for", "schema": {"type": "string"}}, "channel-ids-query": {"in": "query", "name": "ids", "required": false, "description": "the channel ids to filter for", "schema": {"type": "array", "items": {"type": "string"}}}, "offset-query": {"in": "query", "name": "offset", "required": false, "schema": {"type": "integer", "default": 0}, "description": "the offset of the result set"}, "limit-query": {"in": "query", "name": "limit", "required": false, "schema": {"type": "integer", "default": 100}, "description": "the number of results in the result set"}, "search-query": {"in": "query", "name": "q", "description": "the string to search on", "schema": {"type": "string"}}, "package-state-query": {"in": "query", "name": "state", "description": "active or passive state", "schema": {"type": "string", "enum": ["active", "passive"]}}, "architectures-query": {"in": "query", "name": "architectures", "description": "the package architectures list to search on", "schema": {"type": "array", "example": ["linux-64", "osx-64", "win-32", "win-64"], "items": {"type": "string"}}}, "artifact_name-query": {"in": "query", "name": "artifact", "description": "package name to search on", "schema": {"type": "string"}}, "cve-name-query": {"in": "query", "name": "cve_name", "description": "the exact CVE id to search on", "example": "CVE-2018-1000805", "schema": {"type": "string"}}, "only_names-query": {"in": "query", "name": "only_names", "description": "list of packages, search for. exact names, separated by comma", "schema": {"type": "array", "items": {"type": "string"}}}, "reissue_token-query": {"in": "query", "name": "reissue_token", "required": false, "schema": {"type": "boolean", "default": true}, "description": "update token endpoint by default reissues a new token."}, "with_cve_counts_by_severity-query": {"in": "query", "name": "with_cve_counts_by_severity", "required": false, "schema": {"type": "boolean", "default": false}, "description": "return cve counts by severity."}, "with_hash-query": {"in": "query", "name": "with_hash", "required": false, "schema": {"type": "boolean", "default": true}, "description": "get token endpoint by default returns token hash."}, "artifact-sort-query": {"in": "query", "name": "sort", "description": "property to sort artifacts (may be comma-separated)", "schema": {"type": "array", "items": {"type": "string", "enum": ["common_name", "-common_name", "download_count", "-download_count", "updated_at", "-updated_at"]}}}, "file-sort-query": {"in": "query", "name": "sort", "description": "property to sort artifact files (may be comma-separated)", "schema": {"type": "array", "items": {"type": "string", "enum": ["ckey", "-ckey", "updated_at", "-updated_at", "blob_size", "-blob_size", "metadata_version", "-metadata_version", "metadata_platforms", "-metadata_platforms"]}}}, "channel-sort-query": {"in": "query", "name": "sort", "description": "property to sort channels (may be comma-separated)", "schema": {"type": "array", "items": {"type": "string", "enum": ["name", "-name", "updated_at", "-updated_at"]}}}, "mirror-sort-query": {"in": "query", "name": "sort", "description": "property to sort mirrors (may be comma-separated)", "schema": {"type": "array", "items": {"type": "string", "enum": ["mirror_name", "-mirror_name", "created_at", "-created_at", "routes_mirrored", "-routes_mirrored", "mirror_type", "-mirror_type", "updated_at", "-updated_at", "state", "-state"]}}}, "cve-sort-query": {"in": "query", "name": "sort", "description": "property to sort CVEs (may be comma-separated)", "schema": {"type": "array", "items": {"type": "string", "enum": ["score", "-score", "published_at", "-published_at", "modified_at", "-modified_at", "created_at", "-created_at"]}}}, "include-subchannels": {"in": "query", "name": "include_subchannels", "description": "option to include or exclude subchannels from the response", "schema": {"type": "boolean", "default": false}}, "include-reserved-query": {"in": "query", "name": "include_reserved", "description": "option to include reserved channels in response", "schema": {"type": "boolean", "default": false}}, "cve_status-query": {"in": "query", "name": "status", "description": "CVE artifact status (may be comma-separated)", "schema": {"type": "array", "items": {"$ref": "#/components/schemas/CVE_status"}}}, "omit_cve-query": {"in": "query", "name": "omit_cve", "description": "Explicitly don't return CVE data", "schema": {"type": "boolean", "default": false}}, "cve_extra_info-query": {"in": "query", "name": "cve_extra_info", "description": "In addition to relevant cve_id, score and status provide description, etc.", "schema": {"type": "boolean", "default": false}}, "include_nonsearchable-query": {"in": "query", "name": "include_nonsearchable", "description": "Include also nonsearchable files", "schema": {"type": "boolean", "default": false}}, "max_cve_score-query": {"in": "query", "name": "max_score", "description": "Returns files below requesed max_cve_score", "schema": {"type": "number", "minimum": 0, "maximum": 10}}, "version-query": {"in": "query", "name": "version", "description": "Package Version", "schema": {"type": "string"}}, "min_cve_score-query": {"in": "query", "name": "min_score", "description": "Returns the CVE with at least provided minimum score", "schema": {"type": "number", "minimum": 0, "maximum": 10}}, "min_packages_count-query": {"in": "query", "name": "min_packages_count", "description": "Returns the CVE with at least provided minimum score", "schema": {"type": "integer", "minimum": 0}}, "min-download-count-query": {"in": "query", "name": "min_download_count", "description": "Displays notifications only for packages with provided minimum number of downloads", "schema": {"type": "integer", "minimum": 0, "default": 0}}, "sha256s-query": {"in": "query", "name": "sha256s", "description": "list of sha256 (may be comma-separated)", "schema": {"type": "array", "items": {"type": "string"}}}, "use_blob-query": {"in": "query", "name": "use_blob", "required": false, "schema": {"type": "boolean", "default": false}}, "sbom-query": {"in": "query", "name": "sbom", "required": false, "schema": {"type": "string", "enum": ["view", "download"]}}, "event-types-query": {"in": "query", "name": "event_types", "required": false, "description": "comma separated list of event types to filter", "schema": {"type": "array", "items": {"type": "string", "enum": ["channel_created", "channel_updated", "channel_deleted", "mirror_registered", "mirror_deleted", "mirroring_completed", "mirroring_failed", "artifact_registered", "artifact_removed", "artifact_copied", "artifact_generated", "artifact_metadata_updated", "artifact_downloaded"]}}}, "created-query": {"in": "query", "name": "created", "description": "timestamp start boundary for when created. I guess this could be either \"only artifacts created on this exact date\" or \"artifacts created on this date and newer\"", "schema": {"type": "integer"}}, "created-min-query": {"in": "query", "name": "created_min", "description": "date of creation in string", "schema": {"type": "string"}}, "created-max-query": {"in": "query", "name": "created_max", "description": "date of creation (in combination with created_min field as start date)", "schema": {"type": "string"}}, "updated-query": {"in": "query", "name": "updated", "description": "timestamp end boundary", "schema": {"type": "integer"}}, "permission-query": {"name": "permission", "in": "query", "schema": {"type": "string", "enum": ["read", "write", "manage"]}}, "task-manager-schedule-query": {"name": "task_manager_schedule", "in": "query", "description": "if true, schedule mirroring in task manager component", "schema": {"type": "boolean", "default": false}}, "from-date-parameter": {"name": "from_date", "description": "starting timestamp for filtering data", "in": "query", "schema": {"type": "string", "format": "date", "description": "bottom date YYYY-mm-dd"}}, "timestamp-parameter": {"name": "timestamp", "description": "exact timestamp for filtering data", "in": "query", "schema": {"type": "string", "format": "date-time"}}, "to-date-parameter": {"name": "to_date", "description": "ending timestamp for filtering data", "in": "query", "schema": {"type": "string", "format": "date", "description": "upper date YYYY-mm-dd"}}, "mirror_id-parameter": {"name": "mirror_id", "in": "path", "required": true, "schema": {"type": "string"}}, "token_id-parameter": {"name": "token_id", "description": "Id of the token position, not an X-Auth or JWT token itself!", "in": "path", "required": true, "schema": {"type": "string", "minLength": 1}}, "cve_id-parameter": {"name": "cve_id", "in": "path", "required": true, "schema": {"type": "string", "minLength": 1}}, "signature-artifact_family-parameter": {"in": "path", "name": "artifact_family", "required": true, "schema": {"type": "string", "enum": ["conda"]}}, "cve-notifications-event-type-query": {"in": "query", "name": "event_types", "description": "filter CVE Notifications by event types", "schema": {"type": "array", "items": {"$ref": "#/components/schemas/CVEsNotificationEventTypes"}}}, "max-impact-score-query": {"in": "query", "name": "max_score", "description": "Returns the CVE Notifications below provided maximum impact score", "schema": {"type": "number", "minimum": 0, "maximum": 10}}, "min-impact-score-query": {"in": "query", "name": "min_score", "description": "Returns the CVE Notifications with at least provided minimum impact score", "schema": {"type": "number", "minimum": 0, "maximum": 10}}, "with-user-counts-query": {"in": "query", "name": "with_user_counts", "description": "Skips the user counts for groups all groups", "required": false, "schema": {"type": "boolean", "default": true}}}, "responses": {"NotFound": {"description": "The specified resource was not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}, "Forbidden": {"description": "Access is forbidden", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}, "Conflict": {"description": "Creating/updating resource raises a conflict", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}, "Unauthenticated": {"description": "Unauthenticated, no token is provided or token is invalid", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}, "InternalServerError": {"description": "Internal server error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}, "BadRequest": {"description": "Server cannot execute request due to something that is perceived to be a client error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}}, "schemas": {"CVENotificationChanges": {"type": "array", "additionalProperties": true, "required": ["cve_id", "new_score", "new_status"], "properties": {"cve_id": {"type": "string"}, "old_score": {"type": "number"}, "new_score": {"type": "string"}, "old_status": {"type": "string"}, "new_status": {"type": "string"}}}, "CVENotificationsHistory": {"type": "object", "description": "The object representing cve notification", "properties": {"file_name": {"type": "string"}, "platform": {"type": "string"}, "artifact_family": {"$ref": "#/components/schemas/ArtifactFamily"}, "cves_count": {"type": "number"}, "old_max_score": {"type": "number"}, "new_max_score": {"type": "number"}, "notification_changes": {"type": "array", "items": {"$ref": "#/components/schemas/CVENotificationChanges"}}, "number_of_downloads": {"type": "number"}, "created_at": {"type": "string"}}}, "ArtifactFamily": {"type": "string", "enum": ["anaconda_project", "anaconda_env", "cve", "conda", "python", "cran", "notebook", "docker", "sbom"]}, "FilteredCause": {"type": "string", "enum": ["only_specs", "exclude_specs", "duplicated_legacy_conda", "cve", "license", "date", "signed", "platforms"]}, "RouteChange": {"type": "string", "enum": ["added", "removed"]}, "UploadFileType": {"type": "string", "enum": ["conda1", "anaconda_cve", "anaconda_cve_index", "anaconda_project", "anaconda_env", "bdist_wheel", "bdist_egg", "sdist", "cran_source_package", "cran_binary_package", "jupyter_notebook", "docker_repository"]}, "ChannelPrivacy": {"description": "channel privacy channel", "type": "string", "enum": ["private", "authenticated", "public"]}, "ChannelType": {"description": "channel type", "type": "string", "default": "default", "enum": ["default", "virtual"]}, "ChannelIndexingBehavior": {"description": "channel indexing behavior", "type": "string", "default": "default", "enum": ["default", "frozen"]}, "UserPermission": {"type": "object", "properties": {"resource_type": {"type": "string"}, "action": {"type": "string"}, "permissions": {"type": "string"}}}, "LoginRequest": {"type": "object", "additionalProperties": false, "required": ["username", "password"], "properties": {"username": {"type": "string", "minLength": 1, "example": "user@anaconda.com"}, "password": {"type": "string", "minLength": 1}}}, "LoginResponse": {"type": "object", "properties": {"token": {"type": "string"}}}, "UserTokenCreateRequest": {"oneOf": [{"$ref": "#/components/schemas/UserTokenCreateResourceRequest"}, {"$ref": "#/components/schemas/UserTokenCreateScopedRequest"}], "description": "The token could be created either `scope` or `resource` based.", "example": {"name": "channel view token", "expires_at": "2021-01-01", "scopes": ["channel:view", "subchannel:view"]}}, "UserTokenCreateResourceRequest": {"type": "object", "additionalProperties": false, "required": ["name", "resources"], "properties": {"name": {"type": "string", "minLength": 1}, "metadata": {"type": "object"}, "expires_at": {"type": "string", "minLength": 1, "pattern": "^\\d{4}-\\d{2}-\\d{2}$"}, "resources": {"type": "array", "items": {"$ref": "#/components/schemas/UserTokenPermissionResourceItem"}, "minItems": 1}}}, "UserTokenCreateScopedRequest": {"type": "object", "additionalProperties": false, "required": ["name", "scopes"], "properties": {"name": {"type": "string", "minLength": 1}, "metadata": {"type": "object"}, "expires_at": {"type": "string", "minLength": 1, "format": "date"}, "scopes": {"type": "array", "items": {"type": "string"}, "minItems": 1}}}, "UsersTokenGetRequest": {"type": "object", "properties": {"users_ids": {"type": "array"}}}, "UserTokenUpdateRequest": {"type": "object", "properties": {"name": {"type": "string", "minLength": 1}, "expires_at": {"type": "string", "minLength": 1, "format": "date"}, "resources": {"type": "array", "items": {"$ref": "#/components/schemas/UserTokenPermissionResourceItem"}, "minItems": 1}}}, "UsersTokenUpdateRequest": {"type": "object", "properties": {"token_ids": {"type": "array"}, "expires_at": {"type": "string", "minLength": 1, "format": "date"}, "resources": {"type": "array", "items": {"$ref": "#/components/schemas/UserTokenPermissionResourceItem"}, "minItems": 1, "maxItems": 100}}}, "UserTokenUpdateMetadataRequest": {"type": "object"}, "UserTokenInfo": {"type": "object", "properties": {"expires_at": {"type": "string"}, "default_channel_name": {"type": "string"}, "type": {"type": "string", "enum": ["scope", "resource"], "description": "scopes - when token was created scope-based, resource - when resources-based"}}}, "UserTokenList": {"type": "object", "description": "The list of user tokens, either `scope` or `resource` types.", "properties": {"items": {"type": "array", "items": {"oneOf": [{"$ref": "#/components/schemas/UserResourceToken"}, {"$ref": "#/components/schemas/UserScopeToken"}]}}}}, "UsersTokensGetResponse": {"type": "object", "properties": {"items": {"type": "array"}}}, "UserResourceToken": {"type": "object", "properties": {"id": {"type": "string", "description": "Id of the token in the system, not a token itself!"}, "name": {"type": "string"}, "created_at": {"type": "string"}, "expires_at": {"type": "string"}, "metadata": {"type": "object"}, "resources": {"type": "array", "items": {"$ref": "#/components/schemas/UserTokenPermissionResourceItem"}}}}, "UserScopeToken": {"type": "object", "properties": {"id": {"type": "string", "description": "Id of the token in the system, not a token itself!"}, "name": {"type": "string"}, "metadata": {"type": "object"}, "created_at": {"type": "string"}, "expires_at": {"type": "string"}, "scopes": {"type": "array", "items": {"type": "string", "description": "must be valid, which is available in the system"}}}}, "UserTokenCreateResponse": {"type": "object", "properties": {"id": {"type": "string", "description": "Token Id, represents the token position for token management"}, "token": {"type": "string", "description": "Token itself. It's one-time generated, couldn't be read with different api."}}}, "UserTokenUpdateResponse": {"type": "object", "properties": {"token": {"type": "string"}}}, "UsersTokenUpdateResponse": {"type": "object", "properties": {"tokens": {"type": "array"}, "successful_updated_users": {"type": "array"}}}, "UserTokenPermissionResourceItem": {"type": "object", "description": "Represents a resource element, which user can access, for example specific channel. This enforces the default user authorization level.", "required": ["resource_type", "resource_id", "permission"], "properties": {"resource_type": {"type": "string", "enum": ["channel", "subchannel", "artifact"]}, "resource_id": {"type": "string", "description": "resource name"}, "permission": {"type": "string"}}}, "Account": {"type": "object", "description": "Data pertaining to an account", "required": ["user_id", "username", "default_channel_name"], "properties": {"user_id": {"description": "the user_id of the account", "type": "string"}, "username": {"description": "the username of the user", "type": "string"}, "default_channel_name": {"description": "user's default channel name", "type": "string"}, "roles": {"type": "array", "description": "user roles", "items": {"type": "string"}}}}, "AccountUpdateRequest": {"type": "object", "description": "Data pertaining to an account", "required": ["default_channel_name"], "properties": {"default_channel_name": {"description": "user's default channel name", "type": "string"}}}, "AccountAuditLog": {"type": "object", "description": "Activity performed by the account"}, "AccountHistory": {"type": "object", "description": "Account events history", "additionalProperties": false, "required": ["items"], "properties": {"items": {"type": "array", "items": {"type": "object", "properties": {"event_id": {"type": "string", "description": "Event identifier"}, "event_type": {"type": "string", "description": "Event type", "example": "channel_created"}, "data": {"type": "object", "description": "Event data", "example": "channel name, access level"}, "meta": {"type": "object", "description": "the captured event context", "example": "user"}, "created": {"type": "number", "description": "timestamp of log creation"}}}}}}, "AuthRolePermissionValue": {"type": "string", "nullable": true, "enum": ["read", "write", "manage"], "description": "the lowerest permission level, which could be set for the resource"}, "AuthRolePermissions": {"type": "object", "additionalProperties": false, "properties": {"channel": {"$ref": "#/components/schemas/AuthRolePermissionValue"}, "channel.default-channel": {"$ref": "#/components/schemas/AuthRolePermissionValue"}, "channel.group": {"$ref": "#/components/schemas/AuthRolePermissionValue"}, "channel.mirror": {"$ref": "#/components/schemas/AuthRolePermissionValue"}, "channel.routes-filtered": {"$ref": "#/components/schemas/AuthRolePermissionValue"}, "subchannel": {"$ref": "#/components/schemas/AuthRolePermissionValue"}, "subchannel.group": {"$ref": "#/components/schemas/AuthRolePermissionValue"}, "subchannel.mirror": {"$ref": "#/components/schemas/AuthRolePermissionValue"}, "artifact": {"$ref": "#/components/schemas/AuthRolePermissionValue"}, "cve": {"$ref": "#/components/schemas/AuthRolePermissionValue"}, "role": {"$ref": "#/components/schemas/AuthRolePermissionValue"}, "system": {"$ref": "#/components/schemas/AuthRolePermissionValue"}, "system.license": {"$ref": "#/components/schemas/AuthRolePermissionValue"}, "system.settings": {"$ref": "#/components/schemas/AuthRolePermissionValue"}, "user.token": {"$ref": "#/components/schemas/AuthRolePermissionValue"}, "mirror": {"$ref": "#/components/schemas/AuthRolePermissionValue"}, "audit-logs": {"$ref": "#/components/schemas/AuthRolePermissionValue"}, "cve-notifications": {"$ref": "#/components/schemas/AuthRolePermissionValue"}}}, "AuthRole": {"type": "object", "required": ["name", "permissions"], "properties": {"id": {"type": "string", "description": "role_id, this is read-only attribute"}, "name": {"type": "string", "pattern": "^[a-z][a-z0-9_\\-]*$", "description": "Role name, next names are reserved: admin (admin's permissions could not be overwriten)\n"}, "persistent": {"type": "boolean", "description": "persistent roles are built-in and can't be removed. This is read-only attribute"}, "permissions": {"$ref": "#/components/schemas/AuthRolePermissions"}}}, "User": {"type": "object", "description": "Use same structure for create and read", "properties": {"id": {"type": "string"}, "username": {"type": "string", "description": "could username be the email? its unique"}, "firstName": {"type": "string", "description": "do we need this?"}, "lastName": {"type": "string", "description": "do we need this?"}, "email": {"type": "string"}, "org": {"type": "string", "description": "the uid of the org this user might belong to"}, "role": {"type": "array", "items": {"type": "string", "enum": ["user", "author", "admin"]}, "description": "permissions types for users\n * \"user\" - Allows for searching and downloading\n * \"author\" - Allows for searching, downloading, uploading, and updating packages\n"}}}, "UserLogs": {"type": "object", "description": "Logs for a user", "properties": {"id": {"type": "string"}, "userId": {"description": "id of user that logs are associated with", "type": "string"}, "updated": {"description": "timestamp of last log update", "type": "string"}, "logs": {"type": "string"}}}, "FilterLicenses": {"type": "array", "uniqueItems": true, "items": {"type": "string", "enum": ["agpl", "gpl2", "gpl3", "lgpl", "bsd", "mit", "apache", "psf", "public_domain", "proprietary", "other", "none"]}, "description": "List of license familities to look for. Empty array means all licenses"}, "FilterIncludeSpecs": {"type": "array", "uniqueItems": true, "items": {"type": "string"}, "description": "A list of MatchSpec strings, for including from excluded list General format is (channel(/subdir):(namespace):)name(version(build))[key1=value1,key2=value2]\n"}, "FilterExcludeSpecs": {"type": "array", "uniqueItems": true, "items": {"type": "string"}, "description": "A list of MatchSpec strings, for excluding specific packages. General format is (channel(/subdir):(namespace):)name(version(build))[key1=value1,key2=value2]\n"}, "FilterOnlySpecs": {"type": "array", "uniqueItems": true, "items": {"type": "string"}, "description": "A list of MatchSpec strings, for explicit list of artifacts Doesn't work together with licenses and exclude_specs General format is (channel(/subdir):(namespace):)name(version(build))[key1=value1,key2=value2]\n"}, "ChannelFilters": {"type": "object", "description": "Filter directives for mirroring operation. Fields are optional. Can't have include and exclude licenses together. This attribute is not returned by default in channels list\n", "additionalProperties": false, "properties": {"conda": {"type": "object", "additionalProperties": false, "properties": {"include_licenses": {"$ref": "#/components/schemas/FilterLicenses"}, "exclude_licenses": {"$ref": "#/components/schemas/FilterLicenses"}, "include_specs": {"$ref": "#/components/schemas/FilterIncludeSpecs"}, "exclude_specs": {"$ref": "#/components/schemas/FilterExcludeSpecs"}}}, "cran": {"type": "object", "additionalProperties": false, "properties": {"include_licenses": {"$ref": "#/components/schemas/FilterLicenses"}, "exclude_licenses": {"$ref": "#/components/schemas/FilterLicenses"}, "include_specs": {"$ref": "#/components/schemas/FilterIncludeSpecs"}, "exclude_specs": {"$ref": "#/components/schemas/FilterExcludeSpecs"}}}, "python": {"type": "object", "additionalProperties": false, "properties": {"include_licenses": {"$ref": "#/components/schemas/FilterLicenses"}, "exclude_licenses": {"$ref": "#/components/schemas/FilterLicenses"}, "include_specs": {"$ref": "#/components/schemas/FilterIncludeSpecs"}, "exclude_specs": {"$ref": "#/components/schemas/FilterExcludeSpecs"}}}}}, "ChannelSettings": {"type": "object", "description": "Settings for cve notifications and other channel related activities.\n", "additionalProperties": false, "properties": {"cve_notifications": {"type": "object", "additionalProperties": false, "properties": {"cve_score_increase": {"description": "Do you want to see cve notifications when cve score increases?", "type": "boolean"}, "cve_score_decrease": {"description": "Do you want to see cve notifications when cve score decreases?", "type": "boolean"}, "cve_status_change": {"description": "Do you want to see cve notifications when cve status changes? Currently by default \"active\", \"mitigated\", \"cleared\" statuses are considered.\n", "type": "boolean"}, "cve_score_threshold": {"description": "Threshold value for which score changes should be considered. If the value is -1, then no threshold is considered - Notifications will be shown for any score changes\n", "type": "number", "minimum": -1, "maximum": 10}}}}}, "Channel": {"type": "object", "description": "Channel object", "required": ["name"], "properties": {"id": {"type": "string"}, "name": {"type": "string", "pattern": "^[a-z][a-z0-9_\\-]*$"}, "parent": {"type": "string", "pattern": "^[a-z][a-z0-9_\\-]*$", "description": "if present, the object is supposed to be a subchannel"}, "description": {"type": "string"}, "privacy": {"$ref": "#/components/schemas/ChannelPrivacy"}, "channel_type": {"$ref": "#/components/schemas/ChannelType"}, "indexing_behavior": {"$ref": "#/components/schemas/ChannelIndexingBehavior"}, "sources": {"type": "array", "items": {"$ref": "#/components/schemas/VirtualChannelSource"}}, "created": {"description": "date created", "type": "string"}, "updated": {"description": "date of last update", "type": "string"}, "artifact_count": {"description": "number of artifacts the channel currently has", "type": "number"}, "download_count": {"description": "number of downloads", "type": "number"}, "filters": {"$ref": "#/components/schemas/ChannelFilters"}}}, "Subchannel": {"type": "object", "description": "Nested channel object", "properties": {"id": {"type": "string"}, "name": {"description": "This can be any string based name", "example": "dev, prod, test, main, utility, ui", "type": "string", "pattern": "^[a-z][a-z0-9_\\-]*$"}, "description": {"type": "string"}, "parent": {"description": "name of parent channel", "type": "string"}, "privacy": {"$ref": "#/components/schemas/ChannelPrivacy"}, "channel_type": {"$ref": "#/components/schemas/ChannelType"}, "indexing_behavior": {"$ref": "#/components/schemas/ChannelIndexingBehavior"}, "sources": {"type": "array", "items": {"$ref": "#/components/schemas/VirtualChannelSource"}}, "created": {"description": "date created", "type": "string"}, "updated": {"description": "date of last update", "type": "string"}}}, "ChannelCreateRequest": {"type": "object", "required": ["name"], "properties": {"name": {"type": "string", "pattern": "^[a-z][a-z0-9_\\-]*$"}, "description": {"type": "string"}, "privacy": {"$ref": "#/components/schemas/ChannelPrivacy"}, "channel_type": {"$ref": "#/components/schemas/ChannelType"}, "indexing_behavior": {"$ref": "#/components/schemas/ChannelIndexingBehavior"}, "sources": {"type": "array", "items": {"$ref": "#/components/schemas/VirtualChannelSource"}}, "filters": {"$ref": "#/components/schemas/ChannelFilters"}, "settings": {"$ref": "#/components/schemas/ChannelSettings"}}}, "ChannelUpdateRequest": {"type": "object", "properties": {"name": {"type": "string", "pattern": "^[a-z][a-z0-9_\\-]*$"}, "description": {"type": "string"}, "privacy": {"$ref": "#/components/schemas/ChannelPrivacy"}, "filters": {"$ref": "#/components/schemas/ChannelFilters"}, "settings": {"$ref": "#/components/schemas/ChannelSettings"}, "indexing_behavior": {"type": "string", "enum": ["default", "frozen"]}}}, "VirtualChannelSource": {"type": "object", "required": ["name"], "properties": {"name": {"type": "string", "pattern": "^[a-z][a-z0-9_\\-]*$"}, "parent_name": {"type": "string", "pattern": "^[a-z][a-z0-9_\\-]*$"}}}, "ChannelHistory": {"type": "object", "description": "The object to return for Channel History", "additionalProperties": false, "required": ["items"], "properties": {"items": {"type": "array", "items": {"type": "object", "properties": {"event_type": {"type": "string", "description": "Event type", "example": "channel_created"}, "data": {"type": "object", "description": "Event data", "example": "channel/subchannel name, access level"}, "meta": {"type": "object", "description": "the captured event context", "example": "user"}, "created": {"type": "number", "description": "timestamp of log creation"}}}}}}, "ChannelCveHistory": {"type": "array", "description": "List of cve histories", "items": {"$ref": "#/components/schemas/CVENotificationsHistory"}}, "ChannelStats": {"type": "object", "description": "Channel stats object", "additionalProperties": false, "required": ["stats"], "properties": {"stats": {"type": "object", "properties": {"counters": {"type": "object", "properties": {"total_artifact_count": {"type": "integer", "description": "Total number of artifacts", "example": 10}, "package_count": {"type": "integer", "description": "Number of packages (conda, cran, python)", "example": 10}, "project_count": {"type": "integer", "description": "Number of anaconda projects", "example": 10}, "notebook_count": {"type": "integer", "description": "Number of notebooks", "example": 10}, "environment_count": {"type": "integer", "description": "Number of environments", "example": 10}, "mirror_count": {"type": "integer", "description": "Number of channel mirrors", "example": 10}, "group_count": {"type": "integer", "description": "Number of groups", "example": 10}, "subchannel_count": {"type": "integer", "description": "Number of subchannels in the channel", "example": 10}, "download_count": {"type": "integer", "description": "Number of downloads", "example": 10}}}}}}}, "MirrorConfiguration": {"type": "object", "description": "Information about mirroring configuration", "required": ["mirror_name", "source_root", "mirror_type", "mirror_mode", "cron"], "properties": {"mirror_name": {"type": "string", "description": "Mirror name", "pattern": "^[A-Za-z0-9_\\-\\/\\.].*$"}, "source_root": {"type": "string", "format": "uri", "example": "https://conda.anaconda.org/mewtwo", "description": "The upstream location of the channel to mirror."}, "mirror_type": {"type": "string", "description": "Type of upstream source to mirror", "enum": ["conda", "python_simple", "cran", "cve", "sbom"]}, "mirror_mode": {"type": "string", "default": "passive", "enum": ["active", "passive", "redirect"]}, "cron": {"type": "string", "description": "A five-field cron expression indicating the schedule for active synchronization.\n"}, "proxy": {"type": "string", "format": "uri", "nullable": true, "description": "Proxy server URL configuration to use to attain access to upstream source.\n"}, "filters": {"type": "object", "description": "Filter directives that are specific to each individual mirror type.", "properties": {"subdirs": {"type": "array", "uniqueItems": true, "items": {"type": "string"}, "description": "Conda specific subdirs. Empty array means include all subdirs", "example": ["osx-64", "linux-64", "noarch"]}, "cve_score_threshold": {"type": "number", "description": "Any packages with CVE score higher than that will be filtered out", "example": 5.9}, "cve_score_exceptions": {"type": "array", "uniqueItems": true, "items": {"type": "string"}, "description": "CVE ids that are excluded from cve score threshold", "example": ["CVE-2022-21372", "CVE-2019-1348"]}, "exclude_non_curated_cve": {"type": "boolean", "description": "Omit mirroring files associated to non curated CVEs"}, "exclude_cve_statuses": {"type": "array", "uniqueItems": true, "items": {"$ref": "#/components/schemas/CVE_status"}, "description": "Omit mirroring files associated to non curated CVEs"}, "dedupe_conda_legacy": {"type": "boolean", "description": "Ignore legacy .tar.bz2 conda packages when .conda is available"}, "projects": {"type": "array", "uniqueItems": true, "items": {"type": "string"}, "description": "python_simple specific list of projects. empty array means all projects", "example": ["numpy", "pandas", "scikit-learn"]}, "packages": {"type": "array", "uniqueItems": true, "items": {"type": "string"}, "description": "CRAN specific list of packages", "example": ["dplyr", "MASS", "RPostgres"]}, "include_licenses": {"$ref": "#/components/schemas/FilterLicenses"}, "exclude_licenses": {"$ref": "#/components/schemas/FilterLicenses"}, "include_specs": {"$ref": "#/components/schemas/FilterIncludeSpecs"}, "exclude_specs": {"$ref": "#/components/schemas/FilterExcludeSpecs"}, "only_specs": {"$ref": "#/components/schemas/FilterOnlySpecs"}, "include_dependencies": {"type": "boolean", "default": false, "description": "* If this is true, then dependencies will be mirrored\n* The value should be True / enabled only if only_specs list is not empty.\n"}, "date_from": {"type": "string", "format": "date", "description": "bottom date YYYY-mm-dd when package published. Conda-only"}, "date_to": {"type": "string", "format": "date", "description": "upper date YYYY-mm-dd when package was published. Conda-only"}, "only_signed": {"type": "boolean", "default": false, "description": "Unsigned packages will be filtered out. Conda-only"}}}, "run_now": {"type": "boolean", "default": false, "description": "Does a one-time, immediate, and off-schedule run of the mirroring operation.\n"}}}, "Mirror": {"type": "object", "description": "Configured mirror object", "properties": {"mirror_id": {"type": "string"}, "mirror_name": {"type": "string", "description": "Mirror name", "pattern": "^[A-Za-z0-9_\\-\\/\\.].*$"}, "source_root": {"type": "string", "format": "uri", "example": "https://conda.anaconda.org/mewtwo", "description": "The upstream location of the channel to mirror."}, "mirror_type": {"type": "string", "description": "Type of upstream source to mirror", "enum": ["conda", "python_simple", "cran", "cve", "sbom"]}, "mirror_mode": {"type": "string", "default": "passive", "enum": ["active", "passive", "redirect"]}, "cron": {"type": "string"}, "proxy": {"type": "string", "format": "uri", "nullable": true, "description": "Proxy server URL configuration to use to attain access to upstream source.\n"}, "filters": {"type": "object", "additionalProperties": true, "description": "Filter directives that are specific to each individual artifact type."}, "state": {"type": "string", "enum": ["pending", "running", "completed", "failed", "deleted", "stopping", "stopped"]}, "cause": {"type": "string", "description": "Mirror failure cause"}, "sync_state": {"$ref": "#/components/schemas/MirrorSyncState"}, "last_run_at": {"type": "string"}, "next_run_at": {"type": "string"}, "created_at": {"type": "string"}, "updated_at": {"type": "string"}}}, "MirrorWithChannel": {"type": "object", "required": ["id", "name", "source_root", "type", "mode", "cron", "state", "last_run_at", "created_at", "updated_at", "channel", "filters"], "description": "Mirror with appropriate channel details", "properties": {"id": {"type": "string"}, "name": {"type": "string", "description": "Mirror name", "pattern": "^[A-Za-z0-9_\\-\\/\\.].*$"}, "source_root": {"type": "string", "format": "uri", "example": "https://conda.anaconda.org/mewtwo", "description": "The upstream location of the channel to mirror."}, "type": {"type": "string", "description": "Type of upstream source to mirror", "enum": ["conda", "python_simple", "cran", "cve", "sbom"]}, "mode": {"type": "string", "default": "passive", "enum": ["active", "passive", "redirect"]}, "state": {"type": "string", "enum": ["pending", "running", "completed", "failed", "deleted", "stopping", "stopped"]}, "sync_state": {"$ref": "#/components/schemas/MirrorSyncState"}, "last_run_at": {"type": "string"}, "created_at": {"type": "string"}, "updated_at": {"type": "string"}, "channel": {"type": "object", "properties": {"name": {"type": "string", "pattern": "^[a-z][a-z0-9_\\-]*$"}, "privacy": {"$ref": "#/components/schemas/ChannelPrivacy"}}}, "subchannel": {"type": "object", "properties": {"name": {"type": "string", "pattern": "^[a-z][a-z0-9_\\-]*$"}, "privacy": {"$ref": "#/components/schemas/ChannelPrivacy"}}}}}, "MirrorSyncState": {"type": "object", "additionalProperties": false, "description": "State of current mirror synchronization", "properties": {"count": {"type": "object", "additionalProperties": false, "properties": {"removed": {"type": "integer", "description": "Number of packages, removed from the channel"}, "passive": {"type": "integer", "description": "Number of passively mirrored packages"}, "active": {"type": "integer", "description": "Number of pulled packages"}, "active_planned": {"type": "integer", "description": "Number of total planned packages for pulling"}, "failed": {"type": "integer", "description": "Number of failed packages to pull"}, "package_stat": {"type": "object", "additionalProperties": false, "properties": {"primary": {"type": "integer", "description": "Number of primary packages listed in only specs mirrored"}, "dependencies": {"type": "integer", "description": "Number of dependencies packages mirrored"}}}, "mirror_filtered": {"type": "object", "additionalProperties": false, "properties": {"cve": {"type": "integer", "description": "Number of packages removed because of CVE filter"}, "date": {"type": "integer", "description": "Number of packages removed because of date filter"}, "signed": {"type": "integer", "description": "Number of packages removed because of missing signatures"}, "license": {"type": "integer", "description": "Number of packages removed because of license filter"}, "only_specs": {"type": "integer", "description": "Number of packages removed because of \"only packages\" filter"}, "exclude_specs": {"type": "integer", "description": "Number of packages removed because of exclude/include filter"}, "duplicated_legacy_conda": {"type": "integer", "description": "\\ Number of packages removed because of legacy package format and having corresponding .conda package"}}}, "channel_filtered": {"type": "object", "additionalProperties": false, "properties": {"license": {"type": "integer"}, "exclude_specs": {"type": "integer"}}}}}, "last_ckey": {"type": "string"}, "last_exception": {"type": "string"}, "total_steps_count": {"type": "integer"}, "current_step_number": {"type": "integer"}, "current_step_description": {"type": "string"}, "current_step_percentage": {"type": "integer"}, "bytes_transfered": {"type": "integer", "description": "Total number of bytes transfered during active mirroring"}}}, "CleanupStats": {"type": "object", "description": "Cleanup stats", "properties": {"blob_count": {"type": "number"}, "space_reclaimed": {"type": "number", "description": "Space reclaimed in bytes after cleanup"}}}, "CVE_status": {"type": "string", "enum": ["reported", "active", "mitigated", "cleared", "disputed", "unknown"]}, "CVEsNotificationEventTypes": {"type": "string", "enum": ["score_increased", "score_decreased", "status_changed"]}, "CVE": {"type": "object", "description": "CVE information", "properties": {"id": {"type": "string", "example": "CVE-2019-9948"}, "description": {"type": "string", "description": "Text description of the vulnerability from the database"}, "score": {"type": "number", "description": "Maximum score of the CVE"}, "cvssv2_score": {"type": "number", "description": "CVSSv2 score of the CVE"}, "cvssv3_score": {"type": "number", "description": "CVSSv3 score of the CVE"}, "curated": {"type": "boolean", "description": "Indicates whether CVE has curated status"}, "packages_count": {"type": "number", "description": "Number of associated packages with this CVE"}, "packages": {"description": "optionals", "type": "array", "items": {"type": "object", "properties": {"channel_name": {"type": "string", "example": "The Channel"}, "parent_channel_name": {"type": "string", "example": "The Root Channel"}, "cve_status": {"$ref": "#/components/schemas/CVE_status"}, "artifact_family": {"$ref": "#/components/schemas/ArtifactFamily"}, "artifact_type": {"type": "string", "example": "conda1"}, "ckey": {"type": "string", "example": "osx-64/numpy-1.1.1.conda"}, "common_name": {"type": "string", "example": "numpy"}, "blob_sha256": {"type": "string", "example": "82cf9c932145565158eb8ee67dba369851210aab"}, "blob_size": {"type": "string", "example": 1234}}}}, "published_at": {"description": "date when the CVE has been published in NVD", "type": "string"}, "nvd_modified_at": {"description": "latest date when the CVE was updated in NVD", "type": "string"}, "anaconda_modified_at": {"description": "latest date when the CVE was curated by Anaconda", "type": "string"}, "cvssv2": {"type": "object", "properties": {"cvssV2": {"type": "object", "properties": {"version": {"type": "string", "example": 2.0}, "vectorString": {"type": "string", "example": "AV:N/AC:L/Au:N/C:P/I:P/A:N"}, "accessComplexity": {"type": "string", "example": "LOW"}, "accessVector": {"type": "string", "example": "NETWORK"}, "authentication": {"type": "string", "example": "NONE"}, "availabilityImpact": {"type": "string", "example": "NONE"}, "baseScore": {"type": "string", "example": 6.4}, "confidentialityImpact": {"type": "string", "example": "PARTIAL"}, "integrityImpact": {"type": "string", "example": "PARTIAL"}}}, "exploitabilityScore": {"type": "number", "example": 10.0}, "impactScore": {"type": "number", "example": 6.5}, "severity": {"type": "string", "example": "MEDIUM"}, "obtainAllPrivilege": {"type": "boolean"}, "obtainOtherPrivilege": {"type": "boolean"}, "obtainUserPrivilege": {"type": "boolean"}, "userInteractionRequired": {"type": "boolean"}}}, "cvssv3": {"type": "object", "properties": {"cvssV3": {"type": "object", "properties": {"attackComplexity": {"type": "string", "example": "LOW"}, "attackVector": {"type": "string", "example": "NETWORK"}, "availabilityImpact": {"type": "string", "example": "NONE"}, "baseScore": {"type": "string", "example": 9.1}, "baseSeverity": {"type": "string", "example": "CRITICAL"}, "confidentialityImpact": {"type": "string", "example": "HIGH"}, "integrityImpact": {"type": "string", "example": "HIGH"}, "privilegesRequired": {"type": "string", "example": "NONE"}, "scope": {"type": "string", "example": "UNCHANGED"}, "userInteraction": {"type": "string", "example": "NONE"}, "vectorString": {"type": "string", "example": "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N"}, "version": {"type": "string", "example": 3.0}}}, "exploitabilityScore": {"type": "number", "example": 10.0}, "impactScore": {"type": "number", "example": 6.5}}}, "nvdv2": {"type": "object", "additionalProperties": true}, "reviews": {"type": "array", "items": {"type": "object", "additionalProperties": true}}, "cwes": {"type": "array", "items": {"type": "string"}}}}, "CVEPackage": {"type": "object", "description": "CVE Package information", "properties": {"channel_name": {"type": "string", "example": "The Channel"}, "parent_channel_name": {"type": "string", "example": "The Root Channel"}, "cve_status": {"$ref": "#/components/schemas/CVE_status"}, "artifact_family": {"$ref": "#/components/schemas/ArtifactFamily"}, "artifact_type": {"type": "string", "example": "conda1"}, "ckey": {"type": "string", "example": "osx-64/numpy-1.1.1.conda"}, "common_name": {"type": "string", "example": "numpy"}, "blob_sha256": {"type": "string", "example": "82cf9c932145565158eb8ee67dba369851210aab"}, "blob_size": {"type": "string", "example": 1234}}}, "CVEsReport": {"type": "object", "description": "CVE Package information", "properties": {"sha256": {"type": "string"}, "cves": {"type": "array", "items": {"type": "object", "properties": {"id": {"type": "string", "example": "CVE-2019-9948"}, "score": {"type": "number", "description": "Maximum score of the CVE"}, "status": {"type": "string", "description": "CVE status"}, "curated": {"type": "boolean", "description": "Indicates whether CVE has curated status"}, "published_at": {"description": "date when the CVE has been published in NVD", "type": "string"}, "nvd_modified_at": {"description": "latest date when the CVE was updated in NVD", "type": "string"}, "anaconda_modified_at": {"description": "latest date when the CVE was curated by Anaconda", "type": "string"}}}}}}, "CVEsBySeverity": {"type": "object", "description": "CVE counts grouped by severity based on NVD classification", "properties": {"critical": {"type": "integer"}, "high": {"type": "integer"}, "medium": {"type": "integer"}, "low": {"type": "integer"}, "none": {"type": "integer"}}}, "UploadRequest": {"type": "object", "description": "The information that proxy sends us after successful upload", "required": ["channel", "name", "server_temp_path", "server_sha256", "server_md5", "server_size", "client_fields"], "properties": {"channel": {"type": "string"}, "name": {"type": "string"}, "server_temp_path": {"type": "string"}, "server_sha256": {"type": "string"}, "server_md5": {"type": "string"}, "server_size": {"type": "integer"}, "client_fields": {"type": "object"}}}, "Artifact": {"type": "object", "description": "The object stored in Repo in as few properties as possible", "properties": {"name": {"type": "string"}, "family": {"$ref": "#/components/schemas/ArtifactFamily"}, "channel": {"type": "string"}, "subchannel": {"type": "string"}, "download_count": {"type": "number"}, "privacy": {"$ref": "#/components/schemas/ChannelPrivacy"}, "file_count": {"description": "number of files (routes) in the artifact", "type": "number"}, "cve_count": {"description": "number of CVE in the artifact files", "type": "number"}, "metadata": {"type": "object", "description": "family specific fields such as base and version"}, "updated_at": {"type": "string"}}}, "ArtifactMetadata": {"type": "object", "description": "Artifact's metadata"}, "ArtifactFile": {"type": "object", "description": "The file associated with an artifact", "properties": {"channel": {"type": "string", "description": "artifact's channel"}, "subchannel": {"type": "string", "description": "artifact's subchannel"}, "ckey": {"type": "string"}, "family": {"$ref": "#/components/schemas/ArtifactFamily"}, "name": {"type": "string", "description": "common_name of the artifact"}, "metadata": {"type": "object", "description": "artifact_type specific fields such as base and version"}, "signatures": {"type": "object", "description": "list of signatures for this artifact"}, "size": {"type": "number", "description": "size of the artifact in bytes", "example": 12452}, "url": {"type": "string", "description": "the location of the file for downloading"}, "cve_count": {"type": "number", "example": 1}, "cve_score": {"type": "number", "example": 9.8}, "cve_scores": {"type": "object", "properties": {"cvssv2": {"type": "number", "example": 4.3}, "cvssv3": {"type": "number", "example": 9.8}}}, "cve_status": {"$ref": "#/components/schemas/CVE_status"}, "created_at": {"type": "string"}, "updated_at": {"type": "string"}}}, "ArtifactVersion": {"type": "object", "description": "The version or point-in-time that this artifact existed and all it's associated metadata", "properties": {"id": {"type": "string"}, "version": {"type": "integer"}, "name": {"type": "string"}, "file_type": {"description": "type of file", "example": "conda", "type": "string"}, "created_at": {"description": "the date the file was created", "type": "string"}, "updated_at": {"description": "date of last update", "type": "string"}, "uploader": {"description": "where was this uploaded (channel?)", "type": "string"}, "download_count": {"description": "the number of downloads", "type": "integer"}}}, "ArtifactDependency": {"type": "object", "description": "Dependent package of an artifact", "properties": {"name": {"type": "string", "example": "numpy"}, "version": {"type": "string", "example": ">=8.9.2,<9.0b0"}, "artifact": {"$ref": "#/components/schemas/Artifact"}}}, "ArtifactBulkActionRequest": {"type": "object", "additionalProperties": false, "properties": {"action": {"type": "string", "enum": ["copy", "move", "delete"], "description": "Bulk action name"}, "target_channel": {"type": "string", "description": "Target channel name (only for copy and move actions)"}, "target_subchannel": {"type": "string", "description": "Target subchannel name (target_channel is also required as a parent)"}, "items": {"type": "array", "items": {"type": "object", "description": "actionable artifact items", "required": ["name", "family"], "properties": {"name": {"type": "string"}, "family": {"$ref": "#/components/schemas/ArtifactFamily"}, "ckey": {"type": "string"}}}}}, "required": ["action", "items"]}, "FileSignatureVerificationRequest": {"type": "object", "properties": {"metadata": {"type": "object", "properties": {"md5": {"type": "string"}, "name": {"type": "string"}, "size": {"type": "number"}, "build": {"type": "string"}, "sha256": {"type": "string"}, "subdir": {"type": "string"}, "depends": {"type": "array", "items": {"type": "string"}}, "license": {"type": "string"}, "version": {"type": "string"}, "build_number": {"type": "number"}}, "required": ["md5", "name", "size", "build", "sha256", "subdir", "depends", "license", "version", "build_number"]}, "signatures": {"type": "object", "additionalProperties": false, "properties": {"public_key": {"pattern": "^[a-f0-9]{64}$", "type": "string"}, "signature": {"type": "string", "pattern": "^[a-f0-9]{128}$"}}, "required": ["signature", "public_key"]}}, "required": ["metadata", "signatures"]}, "Group": {"type": "object", "description": "Logical collection of users within a channel", "properties": {"id": {"type": "string", "description": "uid"}, "name": {"type": "string", "pattern": "^[A-Za-z0-9_-\\/].*$", "description": "the name of the group", "example": "ui-team"}, "description": {"type": "string", "description": "the description of the group", "example": "ui-team owner access"}, "members_count": {"type": "integer", "description": "member count", "example": 1}, "created_at": {"type": "string", "description": "when the group was created"}, "updated_at": {"type": "string", "description": "when the group was updated"}, "user_permission": {"type": "string", "enum": ["read", "manage"], "description": "permissions types for users\n * \"read\" - the group member can only view within the group\n * \"manage\" - the group member can both view and edit group and update users\n"}, "remote": {"type": "boolean", "description": "remote group", "example": false}}}, "GroupRequest": {"type": "object", "required": ["name", "description"], "properties": {"name": {"type": "string", "description": "the name of the group", "example": "ui-team", "pattern": "^[A-Za-z0-9_\\-\\/].*$"}, "description": {"type": "string", "description": "the description of the group", "example": "ui-team description"}}}, "GroupMember": {"type": "object", "description": "Small object that represents the users belonging to the group", "properties": {"id": {"type": "string", "description": "the uid of the"}, "username": {"type": "string", "description": "the username of the member"}}}, "ChannelGroup": {"type": "object", "description": "Channel group relationship metadata", "properties": {"group_id": {"type": "string", "description": "the assigned group_id"}, "name": {"type": "string", "description": "the assigned group name", "pattern": "^[A-Za-z0-9_\\-\\/].*$"}, "description": {"type": "string", "description": "the assigned group description"}, "permission": {"type": "string", "enum": ["read", "write", "manage"]}, "persistent": {"type": "boolean", "description": "the persistent groups could not be deleted"}, "created_at": {"type": "string", "description": "when the group was created"}, "updated_at": {"type": "string", "description": "when the group was updated"}}}, "ChannelGroupPermissions": {"type": "object", "description": "group members permissions to channel", "required": ["permission"], "properties": {"permission": {"type": "string", "enum": ["read", "write", "manage"]}}}, "ChannelGroupRequest": {"type": "object", "required": ["group_id", "permission"], "properties": {"group_id": {"type": "string", "description": "group_id to add"}, "permission": {"type": "string", "enum": ["read", "write", "manage"]}}}, "ErrorResponse": {"type": "object", "description": "The metadata contained in an error response", "properties": {"code": {"type": "string", "description": "Internal error code. Could be used to show corresponding message text from a message catalog", "example": "bad-parameter"}, "message": {"type": "string", "description": "Short human-readable error message. Used mainly for logging", "example": "Bad request parameter for 'sort'"}, "status": {"type": "integer", "description": "The HTTP Status code", "example": 401}}}, "System": {"type": "object", "properties": {"status": {"type": "string"}, "service_name": {"type": "string"}, "version": {"type": "string"}, "product_version": {"type": "string"}, "errors": {"type": "array", "items": {"type": "string"}}, "queue_status": {"type": "object", "properties": {"queue_name": {"type": "integer", "description": "Number of messages in the queue", "example": 12}}}}}, "SystemStats": {"type": "object", "properties": {"blob_size": {"type": "object", "properties": {"total": {"type": "integer"}, "by_artifact_family": {"type": "array", "items": {"type": "object", "properties": {"artifact_family": {"type": "string"}, "blob_size": {"type": "integer"}}}}}}}}, "Installers": {"type": "object", "properties": {"installers": {"type": "object", "properties": {"os": {"type": "string"}, "platform": {"type": "string"}, "python_version": {"type": "string"}, "version": {"type": "string"}, "description": {"type": "string"}, "updated_at": {"type": "string"}, "size": {"type": "integer"}, "sha256": {"type": "string"}, "internal": {"type": "boolean"}, "url": {"type": "string"}, "top": {"type": "boolean"}}}}}, "ResourcePermissions": {"type": "object", "properties": {"scopes": {"type": "array", "items": {"type": "string", "example": "channel:edit"}}}}, "ProductLicenseRequest": {"type": "object", "required": ["license_key"], "properties": {"license_key": {"type": "string", "minLength": 1}}}, "ProductLicenseMetrics": {"type": "object", "description": "Is used in definining limits as well as current compliance metrics", "properties": {"instances": {"type": "object", "properties": {"api": {"type": "integer"}, "worker": {"type": "integer"}, "dispatcher": {"type": "integer"}}}, "users": {"type": "integer"}, "channels": {"type": "integer"}, "mirrors": {"type": "integer"}}}, "ProductLicenseComplianceGroup": {"type": "array", "items": {"type": "string", "enum": ["users", "channels", "instances.api", "instances.dispatcher", "instances.worker"]}}, "ProductLicenseCompliance": {"type": "object", "description": "Is used in definining compliance checks for different group. warn_limit is triggered when reached 80% of the quota", "properties": {"ok": {"$ref": "#/components/schemas/ProductLicenseComplianceGroup"}, "warn_limit": {"$ref": "#/components/schemas/ProductLicenseComplianceGroup"}, "over_quota": {"$ref": "#/components/schemas/ProductLicenseComplianceGroup"}, "no_data": {"$ref": "#/components/schemas/ProductLicenseComplianceGroup"}}}, "ProductLicense": {"type": "object", "properties": {"id": {"type": "string"}, "status": {"type": "string", "enum": ["active", "expired", "empty", "revoked"], "description": "Describes the status of the license. \"active\" - active \"expired\" - expired \"empty\" - no license is provided yet \"revoked\" - license was revoked"}, "compliance_status": {"type": "string", "enum": ["good", "warning", "blocked"], "description": "Described the compliance status of the license. \"good\" - good \"warning\" - compliance warning should be shown \"blocked\" - the access to the system is block. License must be updated"}, "license_type": {"type": "string", "enum": ["restricted", "permissive"], "description": "\"restricted\" - once limits are hit or expired, the system is blocked \"permissive\" - once limits are hit or license is expired, the system displays message."}, "issued_at": {"type": "string"}, "expires_at": {"type": "string"}, "plan": {"type": "object", "properties": {"limits": {"$ref": "#/components/schemas/ProductLicenseMetrics"}, "features": {"type": "object", "properties": {"cve": {"type": "object", "properties": {"enabled": {"type": "boolean"}, "settings": {"type": "object"}}}}}, "extra": {"type": "object", "properties": {"plan_name": {"type": "string"}, "company_name": {"type": "string"}}}}}, "metrics": {"$ref": "#/components/schemas/ProductLicenseMetrics"}, "compliance": {"$ref": "#/components/schemas/ProductLicenseCompliance"}}}, "SystemSettings": {"type": "object", "additionalProperties": false, "properties": {"user_channel_autocreate": {"type": "boolean", "description": "create a default user channel on first login"}, "show_intro": {"type": "boolean", "description": "show intro screen after first installation or settings reset"}, "cve_channel_id": {"type": "string", "description": "ID of global CVE channel", "nullable": true}, "anaconda_ident_settings": {"type": "object", "nullable": true, "properties": {"enabled": {"type": "boolean", "description": "Should anaconda-ident be enabled? If yes, then true, else false"}, "enable_from": {"type": "string", "format": "date-time", "description": "From when should anaconda-ident be made mandatory"}, "updated_by": {"type": "string", "description": "Username of admin updating this setting"}, "selected_tokens": {"type": "array", "description": "List of tokens selected by admin for anaconda-ident", "items": {"type": "string", "enum": ["client_token", "session_token", "environment_token", "username", "hostname", "environment", "organization"]}}}}}}, "OpenMetrics": {"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string"}, "documentation": {"type": "string"}, "type": {"type": "string", "enum": ["counter", "gauge", "summary", "histogram", "info", "stateset"]}, "samples": {"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string"}, "labels": {"type": "object"}, "value": {"oneOf": [{"type": "string"}, {"type": "number"}]}}}}}}}, "ArtifactDownloadReportRequest": {"type": "object", "description": "Artifact download report request to be downloaded from a given start date to a given end date channel id and user id filters are optional", "required": ["from_date", "to_date", "download_as"], "properties": {"from_date": {"type": "string", "format": "date", "description": "* Report start date. \n* Supported date formats:\n - '%Y-%m-%d'\n"}, "to_date": {"type": "string", "format": "date", "description": "* Report end date. \n* Supported date formats:\n - '%Y-%m-%d'\n"}, "download_as": {"type": "string", "description": "* Specifies the format of report download file. \n* The report name will follow the convention\n ArtifactsReport_{timestamp('%Y%m%d_%H%M%S')}\n", "enum": ["json", "csv"]}, "channel_names": {"type": "array", "items": {"type": "string"}, "nullable": true, "description": "List of Channel names"}, "user_names": {"type": "array", "items": {"type": "string"}, "nullable": true, "description": "List of user names"}}}, "ArtifactDownloadReportResponse": {"type": "object", "description": "Artifact Download Report response", "properties": {"artifact_downloaded_at": {"type": "string"}, "user_id": {"type": "string"}, "user_ip_address": {"type": "string"}, "username": {"type": "string"}, "host_username": {"type": "string"}, "channel_id": {"type": "string"}, "channel_name": {"type": "string"}, "artifact_family": {"type": "string"}, "artifact_ckey": {"type": "string"}, "artifact_sha256": {"type": "string"}, "environment": {"type": "string"}, "hostname": {"type": "string"}, "cves_count": {"type": "integer"}, "cve_score": {"type": "number"}, "cve_status": {"$ref": "#/components/schemas/CVE_status"}, "cve_information": {"type": "array", "items": {"type": "object", "properties": {"id": {"type": "string", "example": "CVE-2019-9948"}, "score": {"type": "number", "description": "Maximum score of the CVE"}, "status": {"type": "string", "description": "CVE status"}, "curated": {"type": "boolean", "description": "Indicates whether CVE has curated status"}, "published_at": {"description": "date when the CVE has been published in NVD", "type": "string"}, "nvd_modified_at": {"description": "latest date when the CVE was updated in NVD", "type": "string"}, "anaconda_modified_at": {"description": "latest date when the CVE was curated by Anaconda", "type": "string"}}}}, "user_agent_headers": {"type": "string"}}}, "DiagnosisRequest": {"type": "object", "description": "request body with filter details for diagnosis, \ncurrently has channel names list and download_as option\n", "properties": {"download_as": {"type": "string", "description": "* Specifies the format of report download file. \n* The report name will follow the convention\n DiagnosisReport_{timestamp('%Y%m%d_%H%M%S')}\n", "enum": ["json"]}, "channel_names": {"type": "array", "items": {"type": "string"}, "nullable": true, "description": "List of Channel names"}}}, "DiagnosisDetails": {"type": "object", "properties": {"channel_name": {"type": "string"}, "artifacts_list": {"type": "array"}, "total": {"type": "number"}, "action_taken": {"type": "string"}}}, "DiagnoseRoutesAndBlobs": {"type": "object", "description": "Blobs Diagnosis response", "properties": {"artifact_routes": {"$ref": "#/components/schemas/DiagnosisDetails"}, "index_blobs": {"$ref": "#/components/schemas/DiagnosisDetails"}, "diagnosis_timestamp": {"type": "string"}}}, "CVENotificationsTimestamp": {"required": ["timestamp"], "additionalProperties": false, "type": "object", "description": "Timestamp for Generation of CVE Notifications", "properties": {"timestamp": {"type": "string", "format": "date-time"}}}, "FileFiltered": {"type": "object", "description": "File filtered from latest mirror", "properties": {"channel_id": {"type": "string"}, "channel_name": {"type": "string", "pattern": "^[a-z][a-z0-9_\\-]*$"}, "ckey": {"type": "string", "example": "osx-64/numpy-1.1.1.conda"}, "filtered_cause": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/FilteredCause"}]}, "change": {"$ref": "#/components/schemas/RouteChange"}, "mirror_id": {"type": "string", "nullable": true}, "created_at": {"type": "string"}}}}, "securitySchemes": {"jwt": {"type": "http", "scheme": "bearer", "bearerFormat": "JWT", "x-bearerInfoFunc": "repo.auth.token_provider.decode_token"}, "user_token": {"type": "apiKey", "name": "X-Auth", "in": "header", "x-apikeyInfoFunc": "repo.auth.token_provider.decode_user_private_token"}}}}