from flask import jsonify from auth.registry_jwt_auth import process_registry_jwt_auth from endpoints.common import parse_repository_name from endpoints.v2 import v2_bp, require_repo_read, paginate from endpoints.v2.errors import NameUnknown from endpoints.decorators import anon_protect from data.interfaces.v2 import pre_oci_model as model @v2_bp.route('//tags/list', methods=['GET']) @parse_repository_name() @process_registry_jwt_auth(scopes=['pull']) @require_repo_read @anon_protect @paginate() def list_all_tags(namespace_name, repo_name, limit, offset, pagination_callback): repo = model.get_repository(namespace_name, repo_name) if repo is None: raise NameUnknown() tags = model.repository_tags(namespace_name, repo_name, limit, offset) response = jsonify({ 'name': '{0}/{1}'.format(namespace_name, repo_name), 'tags': [tag.name for tag in tags], }) pagination_callback(len(tags), response) return response