summary refs log tree commit diff
path: root/api
diff options
context:
space:
mode:
authorAlTech98 <altech123159@gmail.com>2021-09-17 18:29:02 +0200
committerAlTech98 <altech123159@gmail.com>2021-09-17 18:29:02 +0200
commit6123f359b0b58e72da70d0f0d89cc7714d54f8b6 (patch)
treedb64b13077038f94a2d32979641229d25f7871f8 /api
parentMerge branch 'fosscord:master' into fix-dm (diff)
downloadserver-6123f359b0b58e72da70d0f0d89cc7714d54f8b6.tar.xz
Fix icon, owner_id change and channel deletion for group DMs
Diffstat (limited to 'api')
-rw-r--r--api/assets/schemas.json1186
-rw-r--r--api/src/routes/channels/#channel_id/index.ts8
2 files changed, 592 insertions, 602 deletions
diff --git a/api/assets/schemas.json b/api/assets/schemas.json
index 9c34f968..05046b97 100644
--- a/api/assets/schemas.json
+++ b/api/assets/schemas.json
@@ -81,11 +81,30 @@
                 "type": "string"
             },
             "type": {
-                "$ref": "#/definitions/ChannelType"
+                "enum": [
+                    0,
+                    1,
+                    10,
+                    11,
+                    12,
+                    13,
+                    2,
+                    3,
+                    4,
+                    5,
+                    6
+                ],
+                "type": "number"
             },
             "topic": {
                 "type": "string"
             },
+            "icon": {
+                "type": [
+                    "null",
+                    "string"
+                ]
+            },
             "bitrate": {
                 "type": "integer"
             },
@@ -142,27 +161,7 @@
             }
         },
         "additionalProperties": false,
-        "required": [
-            "name",
-            "type"
-        ],
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -308,11 +307,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -368,11 +386,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -470,22 +484,6 @@
         },
         "additionalProperties": false,
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -631,11 +629,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -691,11 +708,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -751,22 +764,6 @@
         },
         "additionalProperties": false,
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -912,11 +909,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -972,11 +988,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -1002,22 +1014,6 @@
         },
         "additionalProperties": false,
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -1163,11 +1159,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -1223,11 +1238,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -1256,22 +1267,6 @@
             "messages"
         ],
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -1417,11 +1412,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -1477,11 +1491,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -1519,22 +1529,6 @@
             "type"
         ],
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -1680,11 +1674,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -1740,11 +1753,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -1775,22 +1784,6 @@
             "name"
         ],
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -1936,11 +1929,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -1996,11 +2008,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -2026,22 +2034,6 @@
         },
         "additionalProperties": false,
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -2187,11 +2179,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -2247,11 +2258,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -2289,22 +2296,6 @@
             ]
         },
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -2450,11 +2441,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -2510,11 +2520,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -2565,22 +2571,6 @@
             "name"
         ],
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -2726,11 +2716,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -2786,11 +2795,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -2889,22 +2894,6 @@
             "name"
         ],
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -3050,11 +3039,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -3110,11 +3118,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -3140,22 +3144,6 @@
         },
         "additionalProperties": false,
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -3301,11 +3289,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -3361,11 +3368,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -3391,22 +3394,6 @@
             "nick"
         ],
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -3552,11 +3539,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -3612,11 +3618,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -3654,22 +3656,6 @@
         },
         "additionalProperties": false,
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -3815,11 +3801,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -3875,11 +3880,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -3912,22 +3913,6 @@
             ]
         },
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -4073,11 +4058,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -4133,11 +4137,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -4166,22 +4166,6 @@
             "name"
         ],
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -4327,11 +4311,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -4387,11 +4390,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -4420,22 +4419,6 @@
             "name"
         ],
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -4581,11 +4564,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -4641,11 +4643,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -4670,22 +4668,6 @@
         },
         "additionalProperties": false,
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -4831,11 +4813,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -4891,11 +4892,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -4940,22 +4937,6 @@
             "channel_id"
         ],
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -5101,11 +5082,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -5161,11 +5161,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -5217,22 +5213,6 @@
         },
         "additionalProperties": false,
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -5378,11 +5358,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -5438,11 +5437,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -5472,22 +5467,6 @@
             "enabled"
         ],
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -5633,11 +5612,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -5693,11 +5691,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -5726,22 +5720,6 @@
             "name"
         ],
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -5887,11 +5865,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -5947,11 +5944,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -5983,22 +5976,6 @@
             "recipients"
         ],
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -6144,11 +6121,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -6204,11 +6200,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -6264,22 +6256,6 @@
         },
         "additionalProperties": false,
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -6425,11 +6401,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -6485,11 +6480,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -6515,22 +6506,6 @@
             "type"
         ],
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -6676,11 +6651,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -6736,11 +6730,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -6770,22 +6760,6 @@
             "username"
         ],
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -6931,11 +6905,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -6991,11 +6984,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
@@ -7208,22 +7197,6 @@
             "timezone_offset"
         ],
         "definitions": {
-            "ChannelType": {
-                "enum": [
-                    0,
-                    1,
-                    10,
-                    11,
-                    12,
-                    13,
-                    2,
-                    3,
-                    4,
-                    5,
-                    6
-                ],
-                "type": "number"
-            },
             "ChannelPermissionOverwriteType": {
                 "enum": [
                     0,
@@ -7369,11 +7342,30 @@
                         "type": "string"
                     },
                     "type": {
-                        "$ref": "#/definitions/ChannelType"
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
                     },
                     "topic": {
                         "type": "string"
                     },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
                     "bitrate": {
                         "type": "integer"
                     },
@@ -7429,11 +7421,7 @@
                         "type": "integer"
                     }
                 },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type"
-                ]
+                "additionalProperties": false
             },
             "RelationshipType": {
                 "enum": [
diff --git a/api/src/routes/channels/#channel_id/index.ts b/api/src/routes/channels/#channel_id/index.ts
index e836622b..70dd3994 100644
--- a/api/src/routes/channels/#channel_id/index.ts
+++ b/api/src/routes/channels/#channel_id/index.ts
@@ -1,6 +1,6 @@
 import { Channel, ChannelDeleteEvent, ChannelPermissionOverwriteType, ChannelService, ChannelType, ChannelUpdateEvent, emitEvent, Recipient } from "@fosscord/util";
 import { Request, Response, Router } from "express";
-import { route } from "@fosscord/api";
+import { handleFile, route } from "@fosscord/api";
 
 const router: Router = Router();
 // TODO: delete channel
@@ -44,9 +44,10 @@ export interface ChannelModifySchema {
 	/**
 	 * @maxLength 100
 	 */
-	name: string;
-	type: ChannelType;
+	name?: string;
+	type?: ChannelType;
 	topic?: string;
+	icon?: string | null;
 	bitrate?: number;
 	user_limit?: number;
 	rate_limit_per_user?: number;
@@ -67,6 +68,7 @@ export interface ChannelModifySchema {
 router.patch("/", route({ body: "ChannelModifySchema", permission: "MANAGE_CHANNELS" }), async (req: Request, res: Response) => {
 	var payload = req.body as ChannelModifySchema;
 	const { channel_id } = req.params;
+	if (payload.icon) payload.icon = await handleFile(`/channel-icons/${channel_id}`, payload.icon);
 
 	const channel = await Channel.findOneOrFail({ id: channel_id });
 	channel.assign(payload);