def get_challenges_api(serial=None): """ This endpoint returns the active challenges in the database or returns the challenges for a single token by its serial number :query serial: The optional serial number of the token for which the challenges should be returned :query sortby: sort the output by column :query sortdir: asc/desc :query page: request a certain page :query pagesize: limit the number of returned tokens :return: json """ param = request.all_data page = int(getParam(param, "page", optional, default=1)) sort = getParam(param, "sortby", optional, default="timestamp") sdir = getParam(param, "sortdir", optional, default="asc") psize = int(getParam(param, "pagesize", optional, default=15)) challenges = get_challenges_paginate(serial=serial, sortby=sort, sortdir=sdir, page=page, psize=psize) g.audit_object.log({"success": True}) return send_result(challenges)