diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/roots/X509Entity.java b/jams-common/src/main/java/net/jami/jams/common/objects/roots/X509Entity.java index 45feb134796606468822333679ac199798a02b1c..8398a9aedbe23e45d5fef2170b34c0c4b2519170 100644 --- a/jams-common/src/main/java/net/jami/jams/common/objects/roots/X509Entity.java +++ b/jams-common/src/main/java/net/jami/jams/common/objects/roots/X509Entity.java @@ -37,4 +37,5 @@ public class X509Entity { //These can be null because they are only used if this is a request. private X509Fields x509Fields; private PKCS10CertificationRequest certificationRequest; + private Boolean revoked; } diff --git a/jams-server/doc/api_data.js b/jams-server/doc/api_data.js index 7d85b262388a569cdb28781dc7ad90b8d5d80e5f..599d0b50861479a8121981add8385dce914c7b45 100644 --- a/jams-server/doc/api_data.js +++ b/jams-server/doc/api_data.js @@ -66,7 +66,14 @@ define({ "api": [ "description": "<p>List of contacts for the user</p>" } ] - } + }, + "examples": [ + { + "title": "Success-Response:", + "content": "[{\n \"uri\": \"jami://7e3ab29383\",\n \"displayName\": \"John Doe\"\n}]", + "type": "json" + } + ] }, "filename": "src/main/java/net/jami/jams/server/servlets/api/auth/contacts/ContactServlet.java", "groupTitle": "Contacts" @@ -89,7 +96,14 @@ define({ "api": [ "description": "<p>JSON representation of the contact object</p>" } ] - } + }, + "examples": [ + { + "title": "Request-Example:", + "content": "{\n \"uri\": \"jami://7e3ab29383\",\n \"displayName\": \"John Doe\"\n}", + "type": "json" + } + ] }, "success": { "fields": { @@ -200,7 +214,14 @@ define({ "api": [ "description": "<p>device information</p>" } ] - } + }, + "examples": [ + { + "title": "Success-Response:", + "content": "{\n \"certificate\":\"pem_encoded_certificate\",\n \"displayName\":\"My Galaxy S8\",\n \"deviceId\":\"6aec6252ad\",\n \"revoked\":true\n}", + "type": "json" + } + ] }, "error": { "fields": { @@ -236,7 +257,14 @@ define({ "api": [ "description": "<p>device registration request</p>" } ] - } + }, + "examples": [ + { + "title": "Request-Example:", + "content": "{\n \"csr\":\"pem_encoded_csr\",\n \"deviceName\":\"My Galaxy S8\"\n}", + "type": "json" + } + ] }, "success": { "fields": { @@ -249,7 +277,14 @@ define({ "api": [ "description": "<p>registration response</p>" } ] - } + }, + "examples": [ + { + "title": "Success-Response:", + "content": "{\n \"certificateChain\":\"pem_encoded_certificate_chain\"\n \"displayName\":\"John Doe\"\n \"nameServer\":\"https://mydomain.com\"\n \"deviceReceipt\": \"device_receipt_object\"\n \"receiptSignature\":\"receipt_signature_object\"\n \"userPhoto\":\"base64_encoded_photo\"\n}", + "type": "json" + } + ] }, "error": { "fields": { @@ -327,7 +362,7 @@ define({ "api": [ "version": "1.0.0", "type": "get", "url": "/api/auth/devices", - "title": "List the devices of a user", + "title": "Get device info", "name": "getDevices", "group": "Devices", "success": { @@ -337,11 +372,18 @@ define({ "api": [ "group": "200", "type": "body", "optional": false, - "field": "Device[]", - "description": "<p>array of devices owned by the user</p>" + "field": "Device", + "description": "<p>device information</p>" } ] - } + }, + "examples": [ + { + "title": "Success-Response:", + "content": "[{\n \"certificate\":\"pem_encoded_certificate\",\n \"displayName\":\"My Galaxy S8\",\n \"deviceId\":\"6aec6252ad\",\n \"revoked\":true\n}]", + "type": "json" + } + ] }, "error": { "fields": { @@ -351,7 +393,7 @@ define({ "api": [ "type": "null", "optional": false, "field": "null", - "description": "<p>could not fetch devices</p>" + "description": "<p>Device could not be retrieved</p>" } ] } @@ -373,11 +415,18 @@ define({ "api": [ "group": "200", "type": "body", "optional": false, - "field": "AuthenticationSource[]", + "field": "AuthModuleKey[]", "description": "<p>array of available authentication sources</p>" } ] - } + }, + "examples": [ + { + "title": "Success-Response:", + "content": "[{\n \"realm\":\"savoirfairelinux\",\n \"type\":\"LDAP\"\n},\n{\n \"realm\":\"LOCAL\",\n \"type\":\"LOCAL\"\n},\n...\n{\n \"realm\":\"savoirfairelinux-ad\",\n \"type\":\"AD\"\n}]", + "type": "json" + } + ] }, "error": { "fields": { @@ -422,9 +471,13 @@ define({ "api": [ { "group": "Parameter", "type": "query", + "allowedValues": [ + "vcard" + ], "optional": true, "field": "format", - "description": "<p>vcard</p>" + "defaultValue": "json", + "description": "<p>output format</p>" }, { "group": "Parameter", @@ -454,7 +507,19 @@ define({ "api": [ "description": "<p>vcard-representation of the user profile</p>" } ] - } + }, + "examples": [ + { + "title": "Success-Response:", + "content": "{\n \"username\":\"jdoe\",\n \"firstName\":\"John\",\n \"lastName\":\"Doe\",\n \"phoneNumber\":\"+1-514-000-0000\",\n \"phoneNumberExtension\":\"363\",\n \"mobileNumber\":\"+1-514-000-0000\",\n \"faxNumber\":\"+1-514-000-0000\",\n \"profilePicture\":\"base64_encoded_picture\",\n \"email\":\"jdoe@savoirfairelinux.com\",\n \"organization\":\"SFL\"\n}", + "type": "json" + }, + { + "title": "Success-Response:", + "content": "BEGIN:VCARD\nVERSION:3.0\nPRODID:ez-vcard 0.10.6\nN:B%C3%A9raud;Adrien\nTEL;TYPE=work:176\nEMAIL;TYPE=work:adrien.beraud@savoirfairelinux.com\nORG:Savoir-faire Linux\nPHOTO;ENCODING=b;TYPE=jpeg:/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwME\n AwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2w\n BDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU\n FBQUFBQUFBQUFBT/wAARCACWAJYDAREAAhEBAxEB/8QAHgAAAQQCAwEAAAAAAAAAAAAAAAYHCA\n kEBQEDCgL/xABEEAABAwMBBAgDBAUKBwAAAAABAgMEAAURBgcSITEIEzhBUWF2tAkUIjJxgaEW\n IyRSkRUlM0JiZKSxwdEmN0OElLLx/8QAGwEAAgMBAQEAAAAAAAAAAAAAAAIBAwQFBgf/xAAnEQ\n ACAgEEAgIDAAMBAAAAAAAAAQIRAwQSITEyQQUTIlFhFCNxsf/aAAwDAQACEQMRAD8AqqoAKALi\n fg6dmXU3q+V7KFWXL5Dx6J2VSMFABQAUAc4oA53FeBoA+eVABigAoAKACgAoAKAPOx0pO01td9\n X3f3rtbo+KK32NjTEBQAUAFAFxPwdOzLqb1fK9lCrLl8h49E7KpGCgAoAOdACI2ubVIWyvT6ZS\n 467jdpaurgW5kZW8rvJ8EjvNUZsqwwurZZCCyPsjbc+kpf1rcflrNvfSclCHsbvkPurzU9dkk7\n XB1Y6WNcHVaenc9Z7gzBvK4chs8n88T9/nWjF8lkfaK56Veh5NH9KKw31lDtwQYrTn9G8ynII8\n SPCtkPkccnU+DLLTyXQ71nvdv1DCTMtk1mdHUAd9lWceRHca6sJRmri7RlacXTMynICgAoAKAP\n Ox0pO01td9X3f3rtbo+KK32NjTEBQAUAFAFxPwdOzLqb1fK9lCrLl8h49E7KpGCgAoA+kpBI3j\n hPefAUA+iAHSI2zi4bSL+5b30vhofJNSSd5DLSTx6rjzUcZPlXmtfq2m1H/h2NPhtKxmbouU5Z\n Vvyoz5akIO7JdBKc+eOP41walKZ2Y43VpEd16fvF0ffbUpTrbTu8jPHAzyz3iu2pQaTiv4UPFJ\n voWWndtFy0LcExb1CnSIycBL7CCUNp8MeVT/AIv3Qbi0mLJOHokr0delijRGo/2h8P2mcQHW1q\n wMHkoedNpsstKlGXRz8+JTVrssT07qKBqyzRrpbH0SIj6d5KkKz+FeijNTVo5LTTpmxpxQoAKA\n POx0pO01td9X3f3rtbo+KK32NjTEBQAUAFAFxPwdOzLqb1fK9lCrLl8h49E7KpGCgAoAazpI65\n c0ds7djRHC1cLqr5VtxJx1aT9o/wAMj8ax6rL9OO/2X4Y75UQzg7NYt9ujE+O2idEiqCpjA+kO\n eJB8q8blcm+VZ6TTR5HCuun7bfkJYLPVQkABDQH5VfDGrO0sbSNXC2PafjOEtQUHfOcCrPrUX+\n ItL2ZmotklmkWdxhEBkhScHKRSylJKkx4KuCK+2LYBJ0laF3qzOLShlQ32cfZ48CKbDqW8lTXZ\n z9VhTtwJl/D72krm2+76LubyzNjstyogVyW2OCsefHNeg0c1LcjzGphtqRMKumYAoAKAPOx0pO\n 01td9X3f3rtbo+KK32NjTEBQAUAFAFxPwdOzLqb1fK9lCrLl8h49E7KpGCgDlIJIA5mgCvrp5b\n aSNZi0sOBLNoHUpGf+oftKNef1Ev8jPsfUTq6eOyG59s1vRq1Im9aFdfDhdcW4QpXjXO1UVDJw\n eg0ytWPDa7GX1lTiwyyT9o0m6naOgp+hQtwLfFwVvBahyxwqx7/aFcWzFukaK83usPgK8M1le9\n vkeKa5Y3utLYp21zWJSQ426ypPEeVJNcNv0VS/PoYfo7bUI+z/a1p64vvIbYakmMtw8uqWdxQP\n 4GurhnLFkhL17OBqce+Mki1dLjbzaHWlhxpxIWhaTwIPEGvUHnTmgAoA87HSk7TW131fd/eu1u\n j4orfY2NMQFABQAUAXE/B07MupvV8r2UKsuXyHj0TsqkYKAOFvCM048QSGkKXgDJ4DNF1yT3wU\n la/eu22LaBeVKdWh6TLdUp5aSQlZUcDHfxrz2KLUt8ket0+nWojKEXVIcTYQxrvZfsNvj7UWNI\n uLFyDZanEhTbZOCseOOeKbVvBPOm+qKsEM+LHt7dhr3a9r+MiKIk+6hlxSWC400hCCvGcgEcuP\n Pyq7S4ceox7lwass5YuGd1n2ta5tk6BCdFx1e5MQ4pMSC1vSWtzG8pQAwU8edafrTtN0kXffLC\n lauxNX3pAa2udt/lG2Ll2+OlS8x1IBcwlRSc8OYIPCpjpYSbgVZNRkcFOK4foU1g23aoctBl3Z\n UibGYQgyIq28O7iuG8kY4nj3VyNRghOaxR7Y6yThi+xojDa9ZSWNS3W3vLKd2Utxre+lSTnOPv\n 8q35tPWKMor0cuGTfKSf7LrOidrtO0LYJpm4Kz81HbMR/PPfT3/nW/A7xo4meO3I0h3a0GcKAP\n Ox0pO01td9X3f3rtbo+KK32NjTEBQAUAFAFxPwdOzLqb1fK9lCrLl8h49E7KpGCgDlKt05oAib\n te6JECwPXrVmlRutOOmbIgEcWj/WUjxHfisWbFUW4nb+M1TxaiO7p8DbbNLAiboSbbrglx8ylk\n yd48VZzgg/hXC1TTkpR/R6nPX3SXo1132RXeYpLab8tEFI3UtyY6VlI7hmmx5ZQVoWMK4sXWwj\n Zta9D3+6Xp2X8zLdiCGiQ6AkBIJJCB3DKqpz5cmRbaHjjt7pcjJ6m2YT7Zqq8i2qiyIz8xcpDL\n 6cBG+cqCVAcsk1ZptS1CpLkdxcW9vRs7Foq4urZbnRocRCFJUpTKytSgk5AGRwrNkk3F/vkz5O\n v4Rts2xG4bRrve7zEhLdnyrksRooT9bgLmPpHPlxrqY5S+rHCL9IwazbiSUlTf8A4W/7CdmjGy\n TZVY9Otg9e00HZKlcy6oDe/wAq7cIbIpHksk98mxe1YVhQB52OlJ2mtrvq+7+9drdHxRW+xsaY\n gKACgAoAuJ+Dp2ZdTer5XsoVZcvkPHonZVIwUAFAGn1m/coukbu7aGW5FwRHUWmnRkL4cRjxxm\n ll4uho9og3sh1Nqm53nVbGoLC9aIcVaBEedYLfXHJ3x4HHDlXn9TCOxbe2z1GHVvPPa/SFHqzV\n rdvjD5hzqWe9XeaxwVM7UJcWM7qdy8TZvz1rddZacTupa68DcHjjNaoRb4o1wcn0jL0NdhZEtQ\n rqp1Ut1RIkOub4JzyrPmhtdxEnKpVQ4Uye2zFkP4A6plbhx5JJrJJ2YsslFWLroENW682G7Xf+\n SerlNubjD6kf0aeR5jmfEV6D4/GoQ2/o8t8lqJajKn6RLUnNdc5JxQAUAedjpSdpra76vu/vXa\n 3R8UVvsbGmICgAoAKALifg6dmXU3q+V7KFWXL5Dx6J2VSMFABQByDunIoAbLbXpSMrSky8sKcb\n kxMK6pJG4oKICjjHPvrBq4Jw3fo3aKbjmS/ZFXUTMG9RI7E9r5phxfFKTxx41xHxJNHq4Zkqoa\n 3aRpmFZW2m7bZ3no6lA74fV9IrXhySfB3dP8goRpq2ddi0rZylm4OoeZmI+lALhIGfI1hyzkpS\n M+o1KyOkuB7dnezeZtWnTbNCmCCwI5MicpHWBtJ4Y3cjJNTpNK80qs83rdQscP6yY+jdJW/Q2m\n oFltrSUx4rQb3wgJU4QOKlY769TGOyKijyzbfLNxTkBQAUAedjpSdpra76vu/vXa3R8UVvsbGm\n ICgAoAKALifg6dmXU3q+V7KFWXL5Dx6J2VSMFABQAUAIbbDfGbdplNvUkKeuK+rTk8gkbxP5Vj\n 1jrA2dDQq8yILbSoN505dvnLY2qVBVkqjp+0g+Kf8AauJGpVZ3JQp8CBlba2wy43JdDTrQ+pqS\n ndKSPwrWlGHXZfiT9icibSZWorp8vbEiQpZH6xKfpFZZ7IXbJnKTfBLfo0a+a2Z6xs+nblhY1R\n loyVfaQ8lO8kfccAVq+JW55Y/yzkfIY/xU/wBEzVDBIPMcK7hwjigAoAKAPOx0pO01td9X3f3r\n tbo+KK32NjTEBQAUAFAFxPwdOzLqb1fK9lCrLl8h49E7KpGCgD7SjKc8kj+salRb6Ibo0EjUK5\n M8RIKCUpJDsgjgMdwrfDTxSuRW5voaTpLvPQrdpW8JJUiNci2+e4JW2sD88Vz9fh34qSOn8e/9\n rt+hoLiW7gzvkAjn415+Ea4Z6W00Iu96YtdxO9NtkWWr951lKjj8RWtRTSbRCbsxbTpu32peYc\n BiN4dU2E4/hXPy405cIuuuzCuinZW0/QTcVRDjFzQVEefCt/xMPr1G5+00YtVUsEv4Tvg6+cYk\n li5NpKRgB5vgccsmvRrTb43F8nkd1cCvYkNSWw404lxChkEVllCUXTGtPo+8UhIUAedjpSdpra\n 76vu/vXa3R8UVvsbGmICgAoAKALifg6dmXU3q+V7KFWXL5Dx6J3oQpZwkZNVJOTpDXRkiKGgCv\n BOM+VaoYkl+RXZrbg+pMOS+tQ3G0EjwHCtNJdCWaXRlvDts+ZeOC8SofjVk+xWJ/bBpVjUWgL1\n b5b7ERlSEuNyZKwhttxJBSSo8Bx4VRkh9kHEu0+R4simvRGGDa7hAilMlpRSkYU4n6kHzBHDBr\n hSwuLe5HrMWRT5i+zTTCp9wjI51TPhI1VRjTXFNMhtpOHVcvKss+0PtNtss0LIuu0mxy1tqcbh\n OGS4rGQCBw/OunoFeTd+jma6e3A1+yVD9iNxhlxA/WA7wHj5V38dpWjyzfNHxp26uWtgcwje3T\n 5U8lb5BC4iXZL7YU4OB/ro/2rHPFF8jpmalxDqSptQWn94VklBxYydnnY6Unaa2u+r7v712tkf\n FCPsbGmICgAoAKALifg6KSnozamyoJ/wCL5XM/3KFVE4uUuB06ROtdxTDBHLhnNaY41FFN2YDe\n pRJjyEEgKQQMnvB5U6hTJMDW8lTGm0xkZD0pSUcOeCasgrlZAntWbSlaHtbDbFlMlTSQhIddCA\n SPuqyGN5JUheiOe1G8Xva1OgyL5ILVrjqK27RHURHC+4r/AHyPOupgxQxP8uxW5PoLVAyC3vK4\n J3Nze+nHdgVZLDimpJrsmOScJJr0cXTT7MF9aSUhW6FAZxnNfPtfFaXO8cfF9HtNFqHqMak+12\n JK5ZirQtKeteJCEt54k1x3LdKjqs22qrRfbbaLZJtz8q3uMvJcefjKKcLJ4IJFe7+O00dPFKfs\n 8VrtT982l0uh4tm+3F521oj6jiL+YQQj5qMnIV5qTWzNgUJXj6Ocm32L9MmLcH5Co29uOJDu6p\n BThX41j5umMjkzHmzGbSsoGTnzoqx0b2NdDBkMtYyVgrX4AVRPHuiCdM8/fSfWHekttaWOStXX\n c/4x2ljwkKxs6YAoAKACgC3D4RroR0bdShS9xI1ZJUTn+5w6ux8ciSJrXa9tIkMtoO8lxvf41q\n 28CrgNPNsy31vPLDbSMOKKjjgKifQydnTc7j+kd4hLQCIwe+gHvA76RKkyTD1boNOp5O/ImKZZ\n Sc7qE5JohPYT6E8zsztcOHKYUtcjrU7oU4OKPAirnlk2miDFt2h4EOYwsp+tCcfV9lRHLNO8kp\n JpOrI/6Nntkt0mJOgXIYJaUphTbfJWcEV535bD/pjNvlcHd+KyVOUF12a3ZrpWTqOcq4zIgRFh\n kLKjx31dwFc343SfdlWSXSOh8jqfqhtT5YrLlpebJTcU/rCZS05aJ+nOcjFe6yZYygkvTPHQj+\n VmVbNnM5lCyhKMniElXOs+TKaUrHM09HkMW1pElOHm048cisT7IfB03J79rIHAISOXiTVmPsh9\n A1dutnSHVn9UhKWgfuGT+ZplFtcCt0ih3pIrS50iNqS08Uq1VdSPu+bdrI1TaGQ3VQAUAFABQB\n a78KF4I6Omo0kZSdVSc/8AiQ6ePYrJYy7glt0rC+KUlCQeI4HiP4YrrRVwKX2bG03L5uM6y2rI\n wAonw8Kpkv2OuxY2uKkOMKCUpbZRw4cc1nk+KHO+RKStZA447/Oqwo1T4KlOcuIqxAaxxgvA7v\n FaDnHjVidCvoRm0i2Nz9MTXVNHdZKVkHnkZ/3rPr8X2YJJmzQ5PrzqxQbP9FI01ou3trVuIUgy\n nludxVx4/cMVOjxLDhjETV5fuzSl66OlTqr3PTJaT1cVvIa/t55rP+lXSdOildGwCXGgDvZxVM\n uxkbRqUENdYFDGOIqpjCUXc+tmynFfZGSfw5VZh8mRNUJzUN0WzaYsVlRTImKUtR7wnNa/dIqf\n VlJm3dJTtw2hhRKlDUVxBJ7/ANpcrBPyYy6ENSEhQAUAFAFqfwq17nR61D4/pTI9pEqyPQrJMS\n FuFV2jb5S6F9c2c8eI4j8q62JpRi2VSTs79l89U16e2viW90ZJqMy2yoiPI5ztwk56lrcSORWD\n xxWNrguPpDalqCQrPjiquhjtTH3l+Q7/ABoXDFZiPwpEVwSY43lA8UHvFWKSIZ03O0p1eqLGEZ\n yOlxY69KxhG6OJrQtqi3LlFbtPjs0WqNSJ1bfBYrSv+aIh3ZTzfJ1SeG4k/ujHGoSqFsdc9m6j\n REsNpSEhOBwxWS7dssCWyNwkD+FKyUJt65lsutKyk4OM1EvGxkrYmVyCzZ1uFWXpDwbQknjx/w\n Dhq3EuLCfdGnQtVy1G6rO8hkpjtgHgAkcfzJrXDiLf7KpcUimzpBJ3NvW0lPhqW5D/ABTlcyfk\n yUIGlJCgAoAKALTPhZLCej1qHx/SiR7SJWjHG42QyS2o5JiXQOpOA+0W97wUORrZj5jQjMHZE+\n sytQ7yt15tSMnwzV+oe9QK4cNjqWXP9I85vk8d3vVWRltiijOobaK14C1cgO4VS0SdDtyQ0khB\n G9nhS0DMpNxCWd9eB+FTVgITV+qZz8aYzGdUwp1HUI6tO6EpP2j9/KuhjxpxiVX+TNhoWzRLFp\n 9EltsNoLY5jv76z53+e1jx5O5Fz+ZUtwrBSTyFU7UWHxJuyFHcB4+Rqtr0NXsRWp7ghLzLrTmS\n FbihnxqF00N1yImJfkXLU6WclLVvZW+sd2eQ/wBa1QVY7K27ZsNGbz85pzl1m+6rPmeFX1txpF\n btsp26Q/8Az/2mep7n7tyuVLtlg31KAUAFABQBaF8LxW70ftQHHH9J5HH/ALSJWrF4iskrrRzM\n Avjipo7x+7vrXiVWhX0GzncTGusptIDj620lY7wOI/zqcnFJirnociBHkyy1ugoCT9SlDmPKsm\n 6mWHbqK4i3oUhKypQ8OQp1yBq7S+/MdQCogE5JNM0ifRub9d1WuEhuOjrlK4YPdSx5INJCti3G\n etl4DqlfYKuOT5Vsb6oqrlijdjfLaecilZKAM4Pd91Y83LsshwJOKFR0kJP0g86hclsjh2ON1b\n gUN4JycHFS4iJiOv0JanStCt0rPI9xquC/Kiy+BES5sWzy7/DbC03BaWVqyk4UFkgBKu/G6o/j\n WyMbhX9Kn3YuNDNlCpCuG602lGabUcLgWD3OymrpCHO33aWfHU1z905XIfZYICoAKACgAoAtO+\n FjHW70d9RFJSB+lEgfUP7pErVi6FZIzUqCliS0s7wIIP3Vsx9iv9GFsiSJFkU2sklMkjPiAABR\n qOGV4/Y8kZ8IQd0EBIxWEuETqCap6eloZCc5PnWhKuRq4FVp2CjcbzxzSN+xbOi+uBV7ZZSnCG\n xk+dEOmTXFn3abe1NuK5CkBUnPBazwAqzJN44JixW5m3upBiP+BTjFVZOUEexGzd8QT1RCFkcD\n jIFTBFjEuxd3ZKy3I4q3uJQcCtTjwV3ydeocx1IO8paCnO6fGscPMs9DUaifMjVcdH2A4pBVj+\n wFY/8AatuLlOyqXY6+i0YtchZP1OLFVZnZMOymPpBcNve0r1NcvdOVzX2OxA1ABQB//9k=\nEND:VCARD", + "type": "vCard" + } + ] }, "error": { "fields": { @@ -503,7 +568,14 @@ define({ "api": [ "description": "<p>json-representation of the user profiles</p>" } ] - } + }, + "examples": [ + { + "title": "Success-Response:", + "content": "[{\n \"username\":\"jdoe\",\n \"firstName\":\"John\",\n \"lastName\":\"Doe\",\n \"phoneNumber\":\"+1-514-000-0000\",\n \"phoneNumberExtension\":\"363\",\n \"mobileNumber\":\"+1-514-000-0000\",\n \"faxNumber\":\"+1-514-000-0000\",\n \"profilePicture\":\"base64_encoded_picture\",\n \"email\":\"jdoe@savoirfairelinux.com\",\n \"organization\":\"SFL\"\n }]", + "type": "json" + } + ] }, "error": { "fields": { @@ -566,7 +638,14 @@ define({ "api": [ "description": "<p>the 0Auth authentication token</p>" } ] - } + }, + "examples": [ + { + "title": "Success-Response:", + "content": "{\n \"token_type\":\"Bearer\",\n \"access_token\":\"JWT representation of the token\",\n \"expires_in\":180000,\n \"scope\":\"USER\"\n}", + "type": "json" + } + ] }, "error": { "fields": { @@ -602,7 +681,14 @@ define({ "api": [ "description": "<p>json user object representation</p>" } ] - } + }, + "examples": [ + { + "title": "Success-Response:", + "content": "{\n \"username\":\"jdoe\",\n \"password\":null,\n \"userType\":\"AD\",\n \"realm\":\"savoirfairelinux\",\n \"accessLevel\":\"USER\",\n \"needsPasswordReset\":false,\n \"ethAddress\":\"8272773ac\",\n \"ethKey\":\"192938ae72772ab\",\n \"jamiId\":\"6e3552723df\",\n \"certificate\":\"pem_formatted_certificate\",\n \"privateKey\":\"pem_formatted_key\",\n \"revoked\":false\n}", + "type": "json" + } + ] }, "error": { "fields": { diff --git a/jams-server/doc/api_data.json b/jams-server/doc/api_data.json index 883c4ee0c19b86cf2580b509455f27136dc763e7..5528687b49798c7a1fb21d343788f2a292197d49 100644 --- a/jams-server/doc/api_data.json +++ b/jams-server/doc/api_data.json @@ -66,7 +66,14 @@ "description": "<p>List of contacts for the user</p>" } ] - } + }, + "examples": [ + { + "title": "Success-Response:", + "content": "[{\n \"uri\": \"jami://7e3ab29383\",\n \"displayName\": \"John Doe\"\n}]", + "type": "json" + } + ] }, "filename": "src/main/java/net/jami/jams/server/servlets/api/auth/contacts/ContactServlet.java", "groupTitle": "Contacts" @@ -89,7 +96,14 @@ "description": "<p>JSON representation of the contact object</p>" } ] - } + }, + "examples": [ + { + "title": "Request-Example:", + "content": "{\n \"uri\": \"jami://7e3ab29383\",\n \"displayName\": \"John Doe\"\n}", + "type": "json" + } + ] }, "success": { "fields": { @@ -200,7 +214,14 @@ "description": "<p>device information</p>" } ] - } + }, + "examples": [ + { + "title": "Success-Response:", + "content": "{\n \"certificate\":\"pem_encoded_certificate\",\n \"displayName\":\"My Galaxy S8\",\n \"deviceId\":\"6aec6252ad\",\n \"revoked\":true\n}", + "type": "json" + } + ] }, "error": { "fields": { @@ -236,7 +257,14 @@ "description": "<p>device registration request</p>" } ] - } + }, + "examples": [ + { + "title": "Request-Example:", + "content": "{\n \"csr\":\"pem_encoded_csr\",\n \"deviceName\":\"My Galaxy S8\"\n}", + "type": "json" + } + ] }, "success": { "fields": { @@ -249,7 +277,14 @@ "description": "<p>registration response</p>" } ] - } + }, + "examples": [ + { + "title": "Success-Response:", + "content": "{\n \"certificateChain\":\"pem_encoded_certificate_chain\"\n \"displayName\":\"John Doe\"\n \"nameServer\":\"https://mydomain.com\"\n \"deviceReceipt\": \"device_receipt_object\"\n \"receiptSignature\":\"receipt_signature_object\"\n \"userPhoto\":\"base64_encoded_photo\"\n}", + "type": "json" + } + ] }, "error": { "fields": { @@ -327,7 +362,7 @@ "version": "1.0.0", "type": "get", "url": "/api/auth/devices", - "title": "List the devices of a user", + "title": "Get device info", "name": "getDevices", "group": "Devices", "success": { @@ -337,11 +372,18 @@ "group": "200", "type": "body", "optional": false, - "field": "Device[]", - "description": "<p>array of devices owned by the user</p>" + "field": "Device", + "description": "<p>device information</p>" } ] - } + }, + "examples": [ + { + "title": "Success-Response:", + "content": "[{\n \"certificate\":\"pem_encoded_certificate\",\n \"displayName\":\"My Galaxy S8\",\n \"deviceId\":\"6aec6252ad\",\n \"revoked\":true\n}]", + "type": "json" + } + ] }, "error": { "fields": { @@ -351,7 +393,7 @@ "type": "null", "optional": false, "field": "null", - "description": "<p>could not fetch devices</p>" + "description": "<p>Device could not be retrieved</p>" } ] } @@ -373,11 +415,18 @@ "group": "200", "type": "body", "optional": false, - "field": "AuthenticationSource[]", + "field": "AuthModuleKey[]", "description": "<p>array of available authentication sources</p>" } ] - } + }, + "examples": [ + { + "title": "Success-Response:", + "content": "[{\n \"realm\":\"savoirfairelinux\",\n \"type\":\"LDAP\"\n},\n{\n \"realm\":\"LOCAL\",\n \"type\":\"LOCAL\"\n},\n...\n{\n \"realm\":\"savoirfairelinux-ad\",\n \"type\":\"AD\"\n}]", + "type": "json" + } + ] }, "error": { "fields": { @@ -422,9 +471,13 @@ { "group": "Parameter", "type": "query", + "allowedValues": [ + "vcard" + ], "optional": true, "field": "format", - "description": "<p>vcard</p>" + "defaultValue": "json", + "description": "<p>output format</p>" }, { "group": "Parameter", @@ -454,7 +507,19 @@ "description": "<p>vcard-representation of the user profile</p>" } ] - } + }, + "examples": [ + { + "title": "Success-Response:", + "content": "{\n \"username\":\"jdoe\",\n \"firstName\":\"John\",\n \"lastName\":\"Doe\",\n \"phoneNumber\":\"+1-514-000-0000\",\n \"phoneNumberExtension\":\"363\",\n \"mobileNumber\":\"+1-514-000-0000\",\n \"faxNumber\":\"+1-514-000-0000\",\n \"profilePicture\":\"base64_encoded_picture\",\n \"email\":\"jdoe@savoirfairelinux.com\",\n \"organization\":\"SFL\"\n}", + "type": "json" + }, + { + "title": "Success-Response:", + "content": "BEGIN:VCARD\nVERSION:3.0\nPRODID:ez-vcard 0.10.6\nN:B%C3%A9raud;Adrien\nTEL;TYPE=work:176\nEMAIL;TYPE=work:adrien.beraud@savoirfairelinux.com\nORG:Savoir-faire Linux\nPHOTO;ENCODING=b;TYPE=jpeg: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\nEND:VCARD", + "type": "vCard" + } + ] }, "error": { "fields": { @@ -503,7 +568,14 @@ "description": "<p>json-representation of the user profiles</p>" } ] - } + }, + "examples": [ + { + "title": "Success-Response:", + "content": "[{\n \"username\":\"jdoe\",\n \"firstName\":\"John\",\n \"lastName\":\"Doe\",\n \"phoneNumber\":\"+1-514-000-0000\",\n \"phoneNumberExtension\":\"363\",\n \"mobileNumber\":\"+1-514-000-0000\",\n \"faxNumber\":\"+1-514-000-0000\",\n \"profilePicture\":\"base64_encoded_picture\",\n \"email\":\"jdoe@savoirfairelinux.com\",\n \"organization\":\"SFL\"\n }]", + "type": "json" + } + ] }, "error": { "fields": { @@ -566,7 +638,14 @@ "description": "<p>the 0Auth authentication token</p>" } ] - } + }, + "examples": [ + { + "title": "Success-Response:", + "content": "{\n \"token_type\":\"Bearer\",\n \"access_token\":\"JWT representation of the token\",\n \"expires_in\":180000,\n \"scope\":\"USER\"\n}", + "type": "json" + } + ] }, "error": { "fields": { @@ -602,7 +681,14 @@ "description": "<p>json user object representation</p>" } ] - } + }, + "examples": [ + { + "title": "Success-Response:", + "content": "{\n \"username\":\"jdoe\",\n \"password\":null,\n \"userType\":\"AD\",\n \"realm\":\"savoirfairelinux\",\n \"accessLevel\":\"USER\",\n \"needsPasswordReset\":false,\n \"ethAddress\":\"8272773ac\",\n \"ethKey\":\"192938ae72772ab\",\n \"jamiId\":\"6e3552723df\",\n \"certificate\":\"pem_formatted_certificate\",\n \"privateKey\":\"pem_formatted_key\",\n \"revoked\":false\n}", + "type": "json" + } + ] }, "error": { "fields": { diff --git a/jams-server/doc/api_project.js b/jams-server/doc/api_project.js index 9e7e18c3eb31b2634169701644862cdeba27fe19..f6b2dc72e849e0f302a8c602bae1f01a25096b27 100644 --- a/jams-server/doc/api_project.js +++ b/jams-server/doc/api_project.js @@ -7,7 +7,7 @@ define({ "apidoc": "0.3.0", "generator": { "name": "apidoc", - "time": "2020-06-05T16:15:02.609Z", + "time": "2020-06-06T10:01:09.148Z", "url": "http://apidocjs.com", "version": "0.23.0" } diff --git a/jams-server/doc/api_project.json b/jams-server/doc/api_project.json index e76b0b80fb769a855da1ff8a62c038bf8d38709c..40efc2f45ea4fa8da409228844a658591905d024 100644 --- a/jams-server/doc/api_project.json +++ b/jams-server/doc/api_project.json @@ -7,7 +7,7 @@ "apidoc": "0.3.0", "generator": { "name": "apidoc", - "time": "2020-06-05T16:15:02.609Z", + "time": "2020-06-06T10:01:09.148Z", "url": "http://apidocjs.com", "version": "0.23.0" } diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/LoginServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/LoginServlet.java index 36af1dabe4d5c700761d728258b5430bcde5f01b..df1b56b4a8a63c15e210b51ff1a113fde90b6e98 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/LoginServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/LoginServlet.java @@ -51,6 +51,14 @@ public class LoginServlet extends HttpServlet { * @apiParam {body} [LoginRequest] username/password sent to server as JSON object * * @apiSuccess (200) {body} AuthTokenResponse the 0Auth authentication token + * @apiSuccessExample {json} Success-Response: + * { + * "token_type":"Bearer", + * "access_token":"JWT representation of the token", + * "expires_in":180000, + * "scope":"USER" + * } + * * @apiError (403) {null} null The user is unauthorized */ @Override diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/contacts/ContactServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/contacts/ContactServlet.java index 477652b0ee28a5d1f268420d2f4e89c975bf2ce7..ef4e0035ca21b795317ede38febcd19cd34fd9ca 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/contacts/ContactServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/contacts/ContactServlet.java @@ -47,7 +47,12 @@ public class ContactServlet extends HttpServlet { * @apiName getContact * @apiGroup Contacts * - * @apiSuccess (200) {body} Contact[] List of contacts for the user + * @apiSuccess (200) {body} Contact[] List of contacts for the user + * @apiSuccessExample {json} Success-Response: + * [{ + * "uri": "jami://7e3ab29383", + * "displayName": "John Doe" + * }] */ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { @@ -64,6 +69,11 @@ public class ContactServlet extends HttpServlet { * @apiGroup Contacts * * @apiParam {body} Contact JSON representation of the contact object + * @apiParamExample {json} Request-Example: + * { + * "uri": "jami://7e3ab29383", + * "displayName": "John Doe" + * } * * @apiSuccess (200) {null} null successfully added contact * @apiError (500) {null} null contact could not be successfully added diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DeviceServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DeviceServlet.java index c7349dc5ff7fdf235dda7c2a6c38cea1fc34d732..bcb29e5aaf96deb8c4e4d1e09874b7f61e5df180 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DeviceServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DeviceServlet.java @@ -31,6 +31,7 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import net.jami.jams.common.dao.StatementElement; import net.jami.jams.common.dao.StatementList; +import net.jami.jams.common.objects.devices.Device; import net.jami.jams.common.objects.requests.DeviceRegistrationRequest; import net.jami.jams.common.objects.responses.DeviceRegistrationResponse; import net.jami.jams.common.objects.responses.DeviceRevocationResponse; @@ -39,6 +40,7 @@ import net.jami.jams.server.core.workflows.RevokeDeviceFlow; import java.io.IOException; +import static net.jami.jams.server.Server.certificateAuthority; import static net.jami.jams.server.Server.dataStore; @WebServlet("/api/auth/device/*") @@ -53,6 +55,13 @@ public class DeviceServlet extends HttpServlet { * @apiParam {path} deviceId id of the device * * @apiSuccess (200) {body} Device device information + * @apiSuccessExample {json} Success-Response: + * { + * "certificate":"pem_encoded_certificate", + * "displayName":"My Galaxy S8", + * "deviceId":"6aec6252ad", + * "revoked":true + * } * @apiError (500) {null} null Device could not be retrieved */ @Override @@ -64,7 +73,9 @@ public class DeviceServlet extends HttpServlet { StatementElement st2 = new StatementElement("deviceId","=",deviceId,""); statementList.addStatement(st1); statementList.addStatement(st2); - resp.getOutputStream().write(JsonStream.serialize(dataStore.getDeviceDao().getObjects(statementList).get(0)).getBytes()); + Device device = dataStore.getDeviceDao().getObjects(statementList).get(0); + device.setRevoked(certificateAuthority.getLatestCRL().get().getRevokedCertificate(device.getCertificate().getSerialNumber()) != null); + resp.getOutputStream().write(JsonStream.serialize(device).getBytes()); } /** @@ -74,9 +85,23 @@ public class DeviceServlet extends HttpServlet { * @apiGroup Device * * @apiParam {body} DeviceRegistrationRequest device registration request + * @apiParamExample {json} Request-Example: + * { + * "csr":"pem_encoded_csr", + * "deviceName":"My Galaxy S8" + * } * * @apiSuccess (200) {body} DeviceRegistrationResponse registration response * @apiError (500) {null} null Device could not be enrolled + * @apiSuccessExample {json} Success-Response: + * { + * "certificateChain":"pem_encoded_certificate_chain" + * "displayName":"John Doe" + * "nameServer":"https://mydomain.com" + * "deviceReceipt": "device_receipt_object" + * "receiptSignature":"receipt_signature_object" + * "userPhoto":"base64_encoded_photo" + * } */ @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DevicesServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DevicesServlet.java index 9dff2f6fbb87f0672c7ad39fecc3b9f2aac382b0..872e2eb894ee31ce3ded4e586a60d4364f54cd8c 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DevicesServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DevicesServlet.java @@ -30,9 +30,12 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import net.jami.jams.common.dao.StatementElement; import net.jami.jams.common.dao.StatementList; +import net.jami.jams.common.objects.devices.Device; import java.io.IOException; +import java.util.List; +import static net.jami.jams.server.Server.certificateAuthority; import static net.jami.jams.server.Server.dataStore; @WebServlet("/api/auth/devices") @@ -40,20 +43,31 @@ public class DevicesServlet extends HttpServlet { /** * @apiVersion 1.0.0 - * @api {get} /api/auth/devices List the devices of a user + * @api {get} /api/auth/devices Get device info * @apiName getDevices * @apiGroup Devices * * - * @apiSuccess (200) {body} Device[] array of devices owned by the user - * @apiError (500) {null} null could not fetch devices + * @apiSuccess (200) {body} Device device information + * @apiSuccessExample {json} Success-Response: + * [{ + * "certificate":"pem_encoded_certificate", + * "displayName":"My Galaxy S8", + * "deviceId":"6aec6252ad", + * "revoked":true + * }] + * @apiError (500) {null} null Device could not be retrieved */ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String username = req.getAttribute("username").toString(); StatementList statementList = new StatementList(); statementList.addStatement(new StatementElement("owner","=",username,"")); - resp.getOutputStream().write(JsonStream.serialize(dataStore.getDeviceDao().getObjects(statementList)).getBytes()); + List<Device> devices = dataStore.getDeviceDao().getObjects(statementList); + devices.forEach( device -> { + device.setRevoked(certificateAuthority.getLatestCRL().get().getRevokedCertificate(device.getCertificate().getSerialNumber()) != null); + }); + resp.getOutputStream().write(JsonStream.serialize(devices).getBytes()); } diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoriesServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoriesServlet.java index 795a3b0b689746772091dfa78d229627364f7891..96a7ca86aa15eb66c1bd535beb5df795d26c722e 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoriesServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoriesServlet.java @@ -43,7 +43,21 @@ public class DirectoriesServlet extends HttpServlet { * @apiGroup Directories * * - * @apiSuccess (200) {body} AuthenticationSource[] array of available authentication sources + * @apiSuccess (200) {body} AuthModuleKey[] array of available authentication sources + * @apiSuccessExample {json} Success-Response: + * [{ + * "realm":"savoirfairelinux", + * "type":"LDAP" + * }, + * { + * "realm":"LOCAL", + * "type":"LOCAL" + * }, + * ... + * { + * "realm":"savoirfairelinux-ad", + * "type":"AD" + * }] * @apiError (500) {null} null could not return any authentication sources */ @Override diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoryEntryServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoryEntryServlet.java index 534176b2972f307ca25cb3e8d6125fd19cbece62..881a7aa085fad1750fa0e9333f7208321d8f9902 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoryEntryServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoryEntryServlet.java @@ -52,11 +52,142 @@ public class DirectoryEntryServlet extends HttpServlet { * * @apiParam {query} [directory] name of the directory * @apiParam {query} [directoryType] type of the directory - * @apiParam {query} [format] vcard + * @apiParam {query=vcard} [format=json] output format * @apiParam {query} [username] username we are looking for * * @apiSuccess (200) {body} UserProfile json-representation of the user profile + * @apiSuccessExample {json} Success-Response: + * { + * "username":"jdoe", + * "firstName":"John", + * "lastName":"Doe", + * "phoneNumber":"+1-514-000-0000", + * "phoneNumberExtension":"363", + * "mobileNumber":"+1-514-000-0000", + * "faxNumber":"+1-514-000-0000", + * "profilePicture":"base64_encoded_picture", + * "email":"jdoe@savoirfairelinux.com", + * "organization":"SFL" + * } + * * @apiSuccess (200) {body} vCard vcard-representation of the user profile + * @apiSuccessExample {vCard} Success-Response: + * BEGIN:VCARD + * VERSION:3.0 + * PRODID:ez-vcard 0.10.6 + * N:B%C3%A9raud;Adrien + * TEL;TYPE=work:176 + * EMAIL;TYPE=work:adrien.beraud@savoirfairelinux.com + * ORG:Savoir-faire Linux + * PHOTO;ENCODING=b;TYPE=jpeg:/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwME + * AwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2w + * BDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU + * FBQUFBQUFBQUFBT/wAARCACWAJYDAREAAhEBAxEB/8QAHgAAAQQCAwEAAAAAAAAAAAAAAAYHCA + * kEBQEDCgL/xABEEAABAwMBBAgDBAUKBwAAAAABAgMEAAURBgcSITEIEzhBUWF2tAkUIjJxgaEW + * IyRSkRUlM0JiZKSxwdEmN0OElLLx/8QAGwEAAgMBAQEAAAAAAAAAAAAAAAIBAwQFBgf/xAAnEQ + * ACAgEEAgIDAAMBAAAAAAAAAQIRAwQSITEyQQUTIlFhFCNxsf/aAAwDAQACEQMRAD8AqqoAKALi + * fg6dmXU3q+V7KFWXL5Dx6J2VSMFABQAUAc4oA53FeBoA+eVABigAoAKACgAoAKAPOx0pO01td9 + * X3f3rtbo+KK32NjTEBQAUAFAFxPwdOzLqb1fK9lCrLl8h49E7KpGCgAoAOdACI2ubVIWyvT6ZS + * 467jdpaurgW5kZW8rvJ8EjvNUZsqwwurZZCCyPsjbc+kpf1rcflrNvfSclCHsbvkPurzU9dkk7 + * XB1Y6WNcHVaenc9Z7gzBvK4chs8n88T9/nWjF8lkfaK56Veh5NH9KKw31lDtwQYrTn9G8ynII8 + * SPCtkPkccnU+DLLTyXQ71nvdv1DCTMtk1mdHUAd9lWceRHca6sJRmri7RlacXTMynICgAoAKAP + * Ox0pO01td9X3f3rtbo+KK32NjTEBQAUAFAFxPwdOzLqb1fK9lCrLl8h49E7KpGCgAoA+kpBI3j + * hPefAUA+iAHSI2zi4bSL+5b30vhofJNSSd5DLSTx6rjzUcZPlXmtfq2m1H/h2NPhtKxmbouU5Z + * Vvyoz5akIO7JdBKc+eOP41walKZ2Y43VpEd16fvF0ffbUpTrbTu8jPHAzyz3iu2pQaTiv4UPFJ + * voWWndtFy0LcExb1CnSIycBL7CCUNp8MeVT/AIv3Qbi0mLJOHokr0delijRGo/2h8P2mcQHW1q + * wMHkoedNpsstKlGXRz8+JTVrssT07qKBqyzRrpbH0SIj6d5KkKz+FeijNTVo5LTTpmxpxQoAKA + * POx0pO01td9X3f3rtbo+KK32NjTEBQAUAFAFxPwdOzLqb1fK9lCrLl8h49E7KpGCgAoAazpI65 + * c0ds7djRHC1cLqr5VtxJx1aT9o/wAMj8ax6rL9OO/2X4Y75UQzg7NYt9ujE+O2idEiqCpjA+kO + * eJB8q8blcm+VZ6TTR5HCuun7bfkJYLPVQkABDQH5VfDGrO0sbSNXC2PafjOEtQUHfOcCrPrUX+ + * ItL2ZmotklmkWdxhEBkhScHKRSylJKkx4KuCK+2LYBJ0laF3qzOLShlQ32cfZ48CKbDqW8lTXZ + * z9VhTtwJl/D72krm2+76LubyzNjstyogVyW2OCsefHNeg0c1LcjzGphtqRMKumYAoAKAPOx0pO + * 01td9X3f3rtbo+KK32NjTEBQAUAFAFxPwdOzLqb1fK9lCrLl8h49E7KpGCgDlIJIA5mgCvrp5b + * aSNZi0sOBLNoHUpGf+oftKNef1Ev8jPsfUTq6eOyG59s1vRq1Im9aFdfDhdcW4QpXjXO1UVDJw + * eg0ytWPDa7GX1lTiwyyT9o0m6naOgp+hQtwLfFwVvBahyxwqx7/aFcWzFukaK83usPgK8M1le9 + * vkeKa5Y3utLYp21zWJSQ426ypPEeVJNcNv0VS/PoYfo7bUI+z/a1p64vvIbYakmMtw8uqWdxQP + * 4GurhnLFkhL17OBqce+Mki1dLjbzaHWlhxpxIWhaTwIPEGvUHnTmgAoA87HSk7TW131fd/eu1u + * j4orfY2NMQFABQAUAXE/B07MupvV8r2UKsuXyHj0TsqkYKAOFvCM048QSGkKXgDJ4DNF1yT3wU + * la/eu22LaBeVKdWh6TLdUp5aSQlZUcDHfxrz2KLUt8ket0+nWojKEXVIcTYQxrvZfsNvj7UWNI + * uLFyDZanEhTbZOCseOOeKbVvBPOm+qKsEM+LHt7dhr3a9r+MiKIk+6hlxSWC400hCCvGcgEcuP + * Pyq7S4ceox7lwass5YuGd1n2ta5tk6BCdFx1e5MQ4pMSC1vSWtzG8pQAwU8edafrTtN0kXffLC + * lauxNX3pAa2udt/lG2Ll2+OlS8x1IBcwlRSc8OYIPCpjpYSbgVZNRkcFOK4foU1g23aoctBl3Z + * UibGYQgyIq28O7iuG8kY4nj3VyNRghOaxR7Y6yThi+xojDa9ZSWNS3W3vLKd2Utxre+lSTnOPv + * 8q35tPWKMor0cuGTfKSf7LrOidrtO0LYJpm4Kz81HbMR/PPfT3/nW/A7xo4meO3I0h3a0GcKAP + * Ox0pO01td9X3f3rtbo+KK32NjTEBQAUAFAFxPwdOzLqb1fK9lCrLl8h49E7KpGCgDlKt05oAib + * te6JECwPXrVmlRutOOmbIgEcWj/WUjxHfisWbFUW4nb+M1TxaiO7p8DbbNLAiboSbbrglx8ylk + * yd48VZzgg/hXC1TTkpR/R6nPX3SXo1132RXeYpLab8tEFI3UtyY6VlI7hmmx5ZQVoWMK4sXWwj + * Zta9D3+6Xp2X8zLdiCGiQ6AkBIJJCB3DKqpz5cmRbaHjjt7pcjJ6m2YT7Zqq8i2qiyIz8xcpDL + * 6cBG+cqCVAcsk1ZptS1CpLkdxcW9vRs7Foq4urZbnRocRCFJUpTKytSgk5AGRwrNkk3F/vkz5O + * v4Rts2xG4bRrve7zEhLdnyrksRooT9bgLmPpHPlxrqY5S+rHCL9IwazbiSUlTf8A4W/7CdmjGy + * TZVY9Otg9e00HZKlcy6oDe/wAq7cIbIpHksk98mxe1YVhQB52OlJ2mtrvq+7+9drdHxRW+xsaY + * gKACgAoAuJ+Dp2ZdTer5XsoVZcvkPHonZVIwUAFAGn1m/coukbu7aGW5FwRHUWmnRkL4cRjxxm + * ll4uho9og3sh1Nqm53nVbGoLC9aIcVaBEedYLfXHJ3x4HHDlXn9TCOxbe2z1GHVvPPa/SFHqzV + * rdvjD5hzqWe9XeaxwVM7UJcWM7qdy8TZvz1rddZacTupa68DcHjjNaoRb4o1wcn0jL0NdhZEtQ + * rqp1Ut1RIkOub4JzyrPmhtdxEnKpVQ4Uye2zFkP4A6plbhx5JJrJJ2YsslFWLroENW682G7Xf+ + * SerlNubjD6kf0aeR5jmfEV6D4/GoQ2/o8t8lqJajKn6RLUnNdc5JxQAUAedjpSdpra76vu/vXa + * 3R8UVvsbGmICgAoAKALifg6dmXU3q+V7KFWXL5Dx6J2VSMFABQByDunIoAbLbXpSMrSky8sKcb + * kxMK6pJG4oKICjjHPvrBq4Jw3fo3aKbjmS/ZFXUTMG9RI7E9r5phxfFKTxx41xHxJNHq4Zkqoa + * 3aRpmFZW2m7bZ3no6lA74fV9IrXhySfB3dP8goRpq2ddi0rZylm4OoeZmI+lALhIGfI1hyzkpS + * M+o1KyOkuB7dnezeZtWnTbNCmCCwI5MicpHWBtJ4Y3cjJNTpNK80qs83rdQscP6yY+jdJW/Q2m + * oFltrSUx4rQb3wgJU4QOKlY769TGOyKijyzbfLNxTkBQAUAedjpSdpra76vu/vXa3R8UVvsbGm + * ICgAoAKALifg6dmXU3q+V7KFWXL5Dx6J2VSMFABQAUAIbbDfGbdplNvUkKeuK+rTk8gkbxP5Vj + * 1jrA2dDQq8yILbSoN505dvnLY2qVBVkqjp+0g+Kf8AauJGpVZ3JQp8CBlba2wy43JdDTrQ+pqS + * ndKSPwrWlGHXZfiT9icibSZWorp8vbEiQpZH6xKfpFZZ7IXbJnKTfBLfo0a+a2Z6xs+nblhY1R + * loyVfaQ8lO8kfccAVq+JW55Y/yzkfIY/xU/wBEzVDBIPMcK7hwjigAoAKAPOx0pO01td9X3f3r + * tbo+KK32NjTEBQAUAFAFxPwdOzLqb1fK9lCrLl8h49E7KpGCgD7SjKc8kj+salRb6Ibo0EjUK5 + * M8RIKCUpJDsgjgMdwrfDTxSuRW5voaTpLvPQrdpW8JJUiNci2+e4JW2sD88Vz9fh34qSOn8e/9 + * rt+hoLiW7gzvkAjn415+Ea4Z6W00Iu96YtdxO9NtkWWr951lKjj8RWtRTSbRCbsxbTpu32peYc + * BiN4dU2E4/hXPy405cIuuuzCuinZW0/QTcVRDjFzQVEefCt/xMPr1G5+00YtVUsEv4Tvg6+cYk + * li5NpKRgB5vgccsmvRrTb43F8nkd1cCvYkNSWw404lxChkEVllCUXTGtPo+8UhIUAedjpSdpra + * 76vu/vXa3R8UVvsbGmICgAoAKALifg6dmXU3q+V7KFWXL5Dx6J3oQpZwkZNVJOTpDXRkiKGgCv + * BOM+VaoYkl+RXZrbg+pMOS+tQ3G0EjwHCtNJdCWaXRlvDts+ZeOC8SofjVk+xWJ/bBpVjUWgL1 + * b5b7ERlSEuNyZKwhttxJBSSo8Bx4VRkh9kHEu0+R4simvRGGDa7hAilMlpRSkYU4n6kHzBHDBr + * hSwuLe5HrMWRT5i+zTTCp9wjI51TPhI1VRjTXFNMhtpOHVcvKss+0PtNtss0LIuu0mxy1tqcbh + * OGS4rGQCBw/OunoFeTd+jma6e3A1+yVD9iNxhlxA/WA7wHj5V38dpWjyzfNHxp26uWtgcwje3T + * 5U8lb5BC4iXZL7YU4OB/ro/2rHPFF8jpmalxDqSptQWn94VklBxYydnnY6Unaa2u+r7v712tkf + * FCPsbGmICgAoAKALifg6KSnozamyoJ/wCL5XM/3KFVE4uUuB06ROtdxTDBHLhnNaY41FFN2YDe + * pRJjyEEgKQQMnvB5U6hTJMDW8lTGm0xkZD0pSUcOeCasgrlZAntWbSlaHtbDbFlMlTSQhIddCA + * SPuqyGN5JUheiOe1G8Xva1OgyL5ILVrjqK27RHURHC+4r/AHyPOupgxQxP8uxW5PoLVAyC3vK4 + * J3Nze+nHdgVZLDimpJrsmOScJJr0cXTT7MF9aSUhW6FAZxnNfPtfFaXO8cfF9HtNFqHqMak+12 + * JK5ZirQtKeteJCEt54k1x3LdKjqs22qrRfbbaLZJtz8q3uMvJcefjKKcLJ4IJFe7+O00dPFKfs + * 8VrtT982l0uh4tm+3F521oj6jiL+YQQj5qMnIV5qTWzNgUJXj6Ocm32L9MmLcH5Co29uOJDu6p + * BThX41j5umMjkzHmzGbSsoGTnzoqx0b2NdDBkMtYyVgrX4AVRPHuiCdM8/fSfWHekttaWOStXX + * c/4x2ljwkKxs6YAoAKACgC3D4RroR0bdShS9xI1ZJUTn+5w6ux8ciSJrXa9tIkMtoO8lxvf41q + * 28CrgNPNsy31vPLDbSMOKKjjgKifQydnTc7j+kd4hLQCIwe+gHvA76RKkyTD1boNOp5O/ImKZZ + * Sc7qE5JohPYT6E8zsztcOHKYUtcjrU7oU4OKPAirnlk2miDFt2h4EOYwsp+tCcfV9lRHLNO8kp + * JpOrI/6Nntkt0mJOgXIYJaUphTbfJWcEV535bD/pjNvlcHd+KyVOUF12a3ZrpWTqOcq4zIgRFh + * kLKjx31dwFc343SfdlWSXSOh8jqfqhtT5YrLlpebJTcU/rCZS05aJ+nOcjFe6yZYygkvTPHQj+ + * VmVbNnM5lCyhKMniElXOs+TKaUrHM09HkMW1pElOHm048cisT7IfB03J79rIHAISOXiTVmPsh9 + * A1dutnSHVn9UhKWgfuGT+ZplFtcCt0ih3pIrS50iNqS08Uq1VdSPu+bdrI1TaGQ3VQAUAFABQB + * a78KF4I6Omo0kZSdVSc/8AiQ6ePYrJYy7glt0rC+KUlCQeI4HiP4YrrRVwKX2bG03L5uM6y2rI + * wAonw8Kpkv2OuxY2uKkOMKCUpbZRw4cc1nk+KHO+RKStZA447/Oqwo1T4KlOcuIqxAaxxgvA7v + * FaDnHjVidCvoRm0i2Nz9MTXVNHdZKVkHnkZ/3rPr8X2YJJmzQ5PrzqxQbP9FI01ou3trVuIUgy + * nludxVx4/cMVOjxLDhjETV5fuzSl66OlTqr3PTJaT1cVvIa/t55rP+lXSdOildGwCXGgDvZxVM + * uxkbRqUENdYFDGOIqpjCUXc+tmynFfZGSfw5VZh8mRNUJzUN0WzaYsVlRTImKUtR7wnNa/dIqf + * VlJm3dJTtw2hhRKlDUVxBJ7/ANpcrBPyYy6ENSEhQAUAFAFqfwq17nR61D4/pTI9pEqyPQrJMS + * FuFV2jb5S6F9c2c8eI4j8q62JpRi2VSTs79l89U16e2viW90ZJqMy2yoiPI5ztwk56lrcSORWD + * xxWNrguPpDalqCQrPjiquhjtTH3l+Q7/ABoXDFZiPwpEVwSY43lA8UHvFWKSIZ03O0p1eqLGEZ + * yOlxY69KxhG6OJrQtqi3LlFbtPjs0WqNSJ1bfBYrSv+aIh3ZTzfJ1SeG4k/ujHGoSqFsdc9m6j + * REsNpSEhOBwxWS7dssCWyNwkD+FKyUJt65lsutKyk4OM1EvGxkrYmVyCzZ1uFWXpDwbQknjx/w + * Dhq3EuLCfdGnQtVy1G6rO8hkpjtgHgAkcfzJrXDiLf7KpcUimzpBJ3NvW0lPhqW5D/ABTlcyfk + * yUIGlJCgAoAKALTPhZLCej1qHx/SiR7SJWjHG42QyS2o5JiXQOpOA+0W97wUORrZj5jQjMHZE+ + * sytQ7yt15tSMnwzV+oe9QK4cNjqWXP9I85vk8d3vVWRltiijOobaK14C1cgO4VS0SdDtyQ0khB + * G9nhS0DMpNxCWd9eB+FTVgITV+qZz8aYzGdUwp1HUI6tO6EpP2j9/KuhjxpxiVX+TNhoWzRLFp + * 9EltsNoLY5jv76z53+e1jx5O5Fz+ZUtwrBSTyFU7UWHxJuyFHcB4+Rqtr0NXsRWp7ghLzLrTmS + * FbihnxqF00N1yImJfkXLU6WclLVvZW+sd2eQ/wBa1QVY7K27ZsNGbz85pzl1m+6rPmeFX1txpF + * btsp26Q/8Az/2mep7n7tyuVLtlg31KAUAFABQBaF8LxW70ftQHHH9J5HH/ALSJWrF4iskrrRzM + * Avjipo7x+7vrXiVWhX0GzncTGusptIDj620lY7wOI/zqcnFJirnociBHkyy1ugoCT9SlDmPKsm + * 6mWHbqK4i3oUhKypQ8OQp1yBq7S+/MdQCogE5JNM0ifRub9d1WuEhuOjrlK4YPdSx5INJCti3G + * etl4DqlfYKuOT5Vsb6oqrlijdjfLaecilZKAM4Pd91Y83LsshwJOKFR0kJP0g86hclsjh2ON1b + * gUN4JycHFS4iJiOv0JanStCt0rPI9xquC/Kiy+BES5sWzy7/DbC03BaWVqyk4UFkgBKu/G6o/j + * WyMbhX9Kn3YuNDNlCpCuG602lGabUcLgWD3OymrpCHO33aWfHU1z905XIfZYICoAKACgAoAtO+ + * FjHW70d9RFJSB+lEgfUP7pErVi6FZIzUqCliS0s7wIIP3Vsx9iv9GFsiSJFkU2sklMkjPiAABR + * qOGV4/Y8kZ8IQd0EBIxWEuETqCap6eloZCc5PnWhKuRq4FVp2CjcbzxzSN+xbOi+uBV7ZZSnCG + * xk+dEOmTXFn3abe1NuK5CkBUnPBazwAqzJN44JixW5m3upBiP+BTjFVZOUEexGzd8QT1RCFkcD + * jIFTBFjEuxd3ZKy3I4q3uJQcCtTjwV3ydeocx1IO8paCnO6fGscPMs9DUaifMjVcdH2A4pBVj+ + * wFY/8AatuLlOyqXY6+i0YtchZP1OLFVZnZMOymPpBcNve0r1NcvdOVzX2OxA1ABQB//9k= + * END:VCARD + * * @apiError (500) {null} null could not return any authentication sources */ @Override diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java index dd5f62779476914656864530a0cf5cec46c7de3d..f8bdca567cb967ae3574a69856ff07eb6baf4614 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java @@ -52,6 +52,19 @@ public class SearchDirectoryServlet extends HttpServlet { * @apiParam {query} [queryString] the full-text query * * @apiSuccess (200) {body} UserProfile[] json-representation of the user profiles + * @apiSuccessExample {json} Success-Response: + * [{ + * "username":"jdoe", + * "firstName":"John", + * "lastName":"Doe", + * "phoneNumber":"+1-514-000-0000", + * "phoneNumberExtension":"363", + * "mobileNumber":"+1-514-000-0000", + * "faxNumber":"+1-514-000-0000", + * "profilePicture":"base64_encoded_picture", + * "email":"jdoe@savoirfairelinux.com", + * "organization":"SFL" + * }] * @apiError (500) {null} null could not return any authentication sources */ @Override diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/user/UserServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/user/UserServlet.java index 37783c1707f250b6c69f3be4c9038e72f32bdbdc..e1f89164b55f1823af9a2033639dcb11819bf018 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/user/UserServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/user/UserServlet.java @@ -31,9 +31,11 @@ import jakarta.servlet.http.HttpServletResponse; import net.jami.jams.common.authentication.AuthenticationSourceType; import net.jami.jams.common.dao.StatementElement; import net.jami.jams.common.dao.StatementList; +import net.jami.jams.common.objects.user.User; import java.io.IOException; +import static net.jami.jams.server.Server.certificateAuthority; import static net.jami.jams.server.Server.dataStore; @WebServlet("/api/auth/user") @@ -47,6 +49,21 @@ public class UserServlet extends HttpServlet { * @apiGroup User * * @apiSuccess (200) {body} User json user object representation + * @apiSuccessExample {json} Success-Response: + * { + * "username":"jdoe", + * "password":null, + * "userType":"AD", + * "realm":"savoirfairelinux", + * "accessLevel":"USER", + * "needsPasswordReset":false, + * "ethAddress":"8272773ac", + * "ethKey":"192938ae72772ab", + * "jamiId":"6e3552723df", + * "certificate":"pem_formatted_certificate", + * "privateKey":"pem_formatted_key", + * "revoked":false + * } * @apiError (500) {null} null could not fetch user information */ @Override @@ -55,7 +72,9 @@ public class UserServlet extends HttpServlet { StatementList select = new StatementList(); StatementElement st = new StatementElement("username","=",username,""); select.addStatement(st); - resp.getOutputStream().write(JsonStream.serialize(dataStore.getUserDao().getObjects(select).get(0)).getBytes()); + User user = dataStore.getUserDao().getObjects(select).get(0); + user.setRevoked(certificateAuthority.getLatestCRL().get().getRevokedCertificate(user.getCertificate().getSerialNumber()) != null); + resp.getOutputStream().write(JsonStream.serialize(user).getBytes()); } //The user can update 3 fields: password,privatekey,publickey