namespace _zeitbild.api { /** */ export function register_calendar_list( rest_subject : lib_plankton.rest_caldav.type_rest ) : void { register< null, Array< { id : int; name : string; access_level : string; } > >( rest_subject, lib_plankton.http.enum_method.get, "/calendar", { "description": "listet alle verfügbaren Kalender auf", "query_parameters": () => ([ ]), "output_schema": () => ({ "type": "array", "items": { "type": "object", "nullable": false, "additionalProperties": false, "properties": { "id": { "type": "number", "nullable": false, }, "name": { "type": "string", "nullable": false, }, "access_level": { "type": "string", "nullable": true, "enum": ["none", "edit", "view", "admin"] }, }, "required": [ "id", "name", "public", "role", ], } }), "restriction": restriction_none, "execution": async (stuff) => { const user_id : (null | _zeitbild.type_user_id) = await ( session_from_stuff(stuff) .then( (session : {key : string; value : lib_plankton.session.type_session;}) => ( _zeitbild.service.user.identify(session.value.name) .catch(x => Promise.resolve(null)) ) ) .catch(x => Promise.resolve(null)) ); return ( _zeitbild.service.calendar.overview(user_id) .then( (data_raw) => Promise.resolve( data_raw .map( (entry) => ({ "id": entry.id, "name": entry.name, "access_level": _zeitbild.value_object.access_level.to_string(entry.access_level), }) ) ) ) .then( (data) => Promise.resolve({ "status_code": 200, "data": data, }) ) ); } } ); } }