diff --git a/API.apib b/API.apib index bd8aca2..33f3388 100644 --- a/API.apib +++ b/API.apib @@ -5,27 +5,159 @@ HOST: https://api.revolt.chat # Data Structures +## RelationshipStatus (enum) ++ None ++ User ++ Friend ++ Outgoing ++ Incoming ++ Blocked ++ BlockedOther + +## Relationship (object) ++ _id: 01AN4Z07BY79KA1307SR9X4MV3 (string, required) ++ status (RelationshipStatus, required) - Explain in TODO. + +## Presence (enum) ++ Online ++ Idle ++ Busy ++ Invisible + +## UserStatus (object) ++ text (string) ++ presence (Presence) + ## User (object) + _id: 01AN4Z07BY79KA1307SR9X4MV3 (string, required) + username: insert (string, required) -+ avatar (File) ++ avatar (File) ++ relations (array[Relationship]) ++ badges (number) - This is a bitfield, see TODO. ++ status (UserStatus) - User's status and presence. ++ relationship (RelationshipStatus, required) - Explain in TODO. ++ online (boolean) + + # Group Users ### Fetch User [GET /users/{id}] +Fetch a user by their ID. + + Parameters - + id: - User ID + + id - User ID + Request + Headers - x-user-id: 01AN4Z07BY79KA1307SR9X4MV3 - x-session-token: 01AN4Z07BY79KA1307SR9X4MV3 + x-user-id: 01AN4Z07BY79KA1307SR9X4MV3 + x-session-token: L305OPR7FkGu28WUSEygHiHW6L7wiiU_EFu8IkvEwlZQ7Y_jkJSfr_z6Sc6_hjns + Response 200 (application/json) + Attributes (User) -## sussy balls +### Edit User [PATCH /users/@me] +Edit your user object. ++ Request (application/json) + + + Attributes + + status (UserStatus) + + profile (object) + + content (string) - Profile content, has a maximum length of 2000. + + background (string) - TODO + + avatar (string) - TODO + + remove (enum) + + ProfileContent + + ProfileBackground + + StatusText + + Avatar + + + Headers + x-user-id: 01AN4Z07BY79KA1307SR9X4MV3 + x-session-token: L305OPR7FkGu28WUSEygHiHW6L7wiiU_EFu8IkvEwlZQ7Y_jkJSfr_z6Sc6_hjns + ++ Response 200 + +### Change Username [PATCH /users/@me/username] +Change your username. + ++ Request (application/json) + + + Attributes + + username (string) + + password (string) + + + Schema + + { + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "username": { + "type": "string", + "minLength": 2, + "maxLength": 32, + "pattern": "^[a-zA-Z0-9_.]+$" + }, + "password": { + "type": "string", + "minLength": 8, + "maxLength": 72 + } + } + } + + + Headers + x-user-id: 01AN4Z07BY79KA1307SR9X4MV3 + x-session-token: L305OPR7FkGu28WUSEygHiHW6L7wiiU_EFu8IkvEwlZQ7Y_jkJSfr_z6Sc6_hjns + ++ Response 200 + +### Fetch profile [GET /users/{id}/profile] +Returns a user's profile. + +Requires `ViewProfile`. + ++ Parameters + + id - User ID + ++ Response 200 (image/png) + +### Fetch default avatar [GET /users/{id}/default_avatar] +Returns a default avatar based on given id. + ++ Parameters + + id - User ID + ++ Response 200 (image/png) +# Data Structures + +## SavedMessagesChannel (object) ++ _id: 01AN4Z07BY79KA1307SR9X4MV3 (string, required) ++ channel_type: SavedMessages (enum, required) ++ user (string, required) + +## DirectMessageChannel (object) ++ _id: 01AN4Z07BY79KA1307SR9X4MV3 (string, required) ++ channel_type: DirectMessage (enum, required) ++ active (boolean, required) + +# Group Channels + +### Fetch Channel [GET /channels/{id}] +Fetch a channel by its ID. + ++ Parameters + + id - Channel ID + ++ Request + + Headers + x-user-id: 01AN4Z07BY79KA1307SR9X4MV3 + x-session-token: L305OPR7FkGu28WUSEygHiHW6L7wiiU_EFu8IkvEwlZQ7Y_jkJSfr_z6Sc6_hjns + ++ Response 200 (application/json) + + Attributes (enum[SavedMessagesChannel, DirectMessageChannel]) # Data Structures ## File (object) diff --git a/TODO b/TODO new file mode 100644 index 0000000..49a6f8e --- /dev/null +++ b/TODO @@ -0,0 +1 @@ +Need to change empty response requests to 204. \ No newline at end of file diff --git a/src/auth/headers.md b/src/auth/headers.md new file mode 100644 index 0000000..174e729 --- /dev/null +++ b/src/auth/headers.md @@ -0,0 +1,3 @@ ++ Headers + x-user-id: :[ULID](../templates/ulid.md) + x-session-token: :[Token](../templates/token.md) \ No newline at end of file diff --git a/src/blueprint.md b/src/blueprint.md index 329aa01..5655bb9 100644 --- a/src/blueprint.md +++ b/src/blueprint.md @@ -4,4 +4,5 @@ HOST: https://api.revolt.chat # Revolt :[Users](resources/users.md) -:[sussy](resources/autumn.md) +:[Channels](resources/channels.md) +:[Autumn](resources/autumn.md) diff --git a/src/resources/autumn.md b/src/resources/autumn.md index d9a4d82..e652340 100644 --- a/src/resources/autumn.md +++ b/src/resources/autumn.md @@ -1,5 +1,3 @@ -## sussy balls - # Data Structures ## File (object) diff --git a/src/resources/channels.md b/src/resources/channels.md new file mode 100644 index 0000000..3879150 --- /dev/null +++ b/src/resources/channels.md @@ -0,0 +1,25 @@ +# Data Structures + +## SavedMessagesChannel (object) +:[_id](../fields/_id.md) ++ channel_type: SavedMessages (enum, required) ++ user (string, required) + +## DirectMessageChannel (object) +:[_id](../fields/_id.md) ++ channel_type: DirectMessage (enum, required) ++ active (boolean, required) + +# Group Channels + +### Fetch Channel [GET /channels/{id}] +Fetch a channel by its ID. + ++ Parameters + + id - Channel ID + ++ Request + :[rAuth](../auth/headers.md) + ++ Response 200 (application/json) + + Attributes (enum[SavedMessagesChannel, DirectMessageChannel]) diff --git a/src/resources/users.md b/src/resources/users.md index 43c0998..12878e0 100644 --- a/src/resources/users.md +++ b/src/resources/users.md @@ -1,21 +1,113 @@ # Data Structures +## RelationshipStatus (enum) ++ None ++ User ++ Friend ++ Outgoing ++ Incoming ++ Blocked ++ BlockedOther + +## Relationship (object) +:[_id](../fields/_id.md) ++ status (RelationshipStatus, required) - Explain in TODO. + +## Presence (enum) ++ Online ++ Idle ++ Busy ++ Invisible + +## UserStatus (object) ++ text (string) ++ presence (Presence) + ## User (object) :[_id](../fields/_id.md) + username: insert (string, required) -+ avatar (File) ++ avatar (File) ++ relations (array[Relationship]) ++ badges (number) - This is a bitfield, see TODO. ++ status (UserStatus) - User's status and presence. ++ relationship (RelationshipStatus, required) - Explain in TODO. ++ online (boolean) + + # Group Users ### Fetch User [GET /users/{id}] +Fetch a user by their ID. + + Parameters - + id: - User ID + + id - User ID + Request - + Headers - x-user-id: :[ULID](../templates/ulid.md) - x-session-token: :[ULID](../templates/ulid.md) + :[rAuth](../auth/headers.md) + Response 200 (application/json) + Attributes (User) +### Edit User [PATCH /users/@me] +Edit your user object. + ++ Request (application/json) + + + Attributes + + status (UserStatus) + + profile (object) + + content (string) - Profile content, has a maximum length of 2000. + + background (string) - TODO + + avatar (string) - TODO + + remove (enum) + + ProfileContent + + ProfileBackground + + StatusText + + Avatar + + :[rAuth](../auth/headers.md) + ++ Response 200 + +### Change Username [PATCH /users/@me/username] +Change your username. + ++ Request (application/json) + + + Attributes + + username (string) + + password (string) + + + Schema + + { + :[schema](../schema/$schema.md), + "type": "object", + "properties": { + :[username](../schema/username.md), + :[password](../schema/password.md) + } + } + + :[rAuth](../auth/headers.md) + ++ Response 200 + +### Fetch profile [GET /users/{id}/profile] +Returns a user's profile. + +Requires `ViewProfile`. + ++ Parameters + + id - User ID + ++ Response 200 (image/png) + +### Fetch default avatar [GET /users/{id}/default_avatar] +Returns a default avatar based on given id. + ++ Parameters + + id - User ID + ++ Response 200 (image/png) diff --git a/src/schema/$schema.md b/src/schema/$schema.md new file mode 100644 index 0000000..e36c126 --- /dev/null +++ b/src/schema/$schema.md @@ -0,0 +1 @@ +"$schema": "http://json-schema.org/draft-04/schema#" \ No newline at end of file diff --git a/src/schema/password.md b/src/schema/password.md new file mode 100644 index 0000000..c511dc5 --- /dev/null +++ b/src/schema/password.md @@ -0,0 +1,5 @@ + "password": { + "type": "string", + "minLength": 8, + "maxLength": 72 + } \ No newline at end of file diff --git a/src/schema/username.md b/src/schema/username.md new file mode 100644 index 0000000..2cf94fc --- /dev/null +++ b/src/schema/username.md @@ -0,0 +1,6 @@ + "username": { + "type": "string", + "minLength": 2, + "maxLength": 32, + "pattern": "^[a-zA-Z0-9_.]+$" + } \ No newline at end of file diff --git a/src/templates/token.md b/src/templates/token.md new file mode 100644 index 0000000..fc01677 --- /dev/null +++ b/src/templates/token.md @@ -0,0 +1 @@ +L305OPR7FkGu28WUSEygHiHW6L7wiiU_EFu8IkvEwlZQ7Y_jkJSfr_z6Sc6_hjns \ No newline at end of file