From c03fb8d7699c998cafb416cab81513c3aec5fbeb Mon Sep 17 00:00:00 2001 From: Vinyarion <38413862+VinyarionHyarmendacil@users.noreply.github.com> Date: Thu, 18 Jan 2024 11:58:32 -0600 Subject: [PATCH] Squashed commit of the following: commit e350518e23ba20e35fd43fda617ae9245bb74618 Author: Aries Date: Fri Jan 5 09:51:21 2024 -0700 Update openapi.yaml (#269) commit 26135897cb8275708602904fae730cd1bd2d39d3 Author: Miner28_3 Date: Fri Jan 5 00:26:23 2024 +0100 Group Search API (#268) * Group Search API * Fix Copy-Pasting issues commit b461db360677d1f44460ccc59a22b1de1a55c1ea Author: Aries Date: Sat Dec 30 11:02:16 2023 -0700 Release 1.16.0 (#267) commit 4a87e106aa60594215ebe327f1850d32c1728462 Author: Miner28_3 Date: Thu Dec 28 19:31:12 2023 +0100 FIx UnityPackage nullable fields (#266) commit 46aaca83f7c043c32d342f26f50d784d04cc8cd2 Author: Miner28_3 Date: Wed Dec 27 18:11:00 2023 +0100 Remove all regex patterns and Update API Fields (#264) * Update InstanceID, WorldID regex * Remove all regex patterns from schemas * Remove regex patterns from parameters * Add missing params to CurrentUser * Update UnityPackage * Update World and LimitedWorld (Add UdonProductId) * Remove last regex patterns --------- Co-authored-by: JU5TDIE <60735440+JU5TDIE@users.noreply.github.com> commit 648402539982410445f8f3b3faad2c512569e179 Author: Rexios Date: Tue Oct 3 22:10:52 2023 -0400 Release 1.15.0 (#261) commit 0a25d5f48d050a21888428bc8cbf3bc5abffe01e Author: Rexios Date: Tue Oct 3 18:24:59 2023 -0400 Don't require unity packages (#260) commit bb6bdbba0a888f5b2808059a7bda769a795bc368 Author: Rexios Date: Thu Sep 21 00:40:39 2023 -0400 Version bump (#258) commit 968c5654c0c8ec313c8899f83f894f704e816669 Author: Rexios Date: Thu Sep 21 00:07:39 2023 -0400 Add group instance type (#257) commit dc2cbe2ec7da0527710560f54e882f9d5f76b4b5 Author: Rexios Date: Tue Sep 19 15:56:21 2023 -0400 Bump version (#256) commit 6f21fa872fc6c35bb265ad21997d6139cac7b6de Author: Miner28_3 Date: Mon Sep 18 21:20:53 2023 +0200 Update API Fields (#255) * Update LimitedUser to remove fallback * Add recommended capacity to world * Remove Min-max values from capacity fields --- openapi/components/parameters.yaml | 5 -- openapi/components/paths/groups.yaml | 20 ++++++++ .../requests/FinishFileDataUploadRequest.yaml | 2 - .../groups/LimitedGroupListResponse.yaml | 7 +++ openapi/components/schemas/AvatarID.yaml | 1 - openapi/components/schemas/CurrentUser.yaml | 18 +++++++ .../components/schemas/FavoriteGroupID.yaml | 1 - openapi/components/schemas/FavoriteID.yaml | 1 - openapi/components/schemas/FileID.yaml | 1 - .../schemas/GroupAnnouncementID.yaml | 1 - .../components/schemas/GroupAuditLogID.yaml | 1 - .../schemas/GroupDiscriminator.yaml | 1 - .../components/schemas/GroupGalleryID.yaml | 1 - .../schemas/GroupGalleryImageID.yaml | 1 - openapi/components/schemas/GroupID.yaml | 1 - openapi/components/schemas/GroupMemberID.yaml | 1 - openapi/components/schemas/GroupRoleID.yaml | 1 - .../components/schemas/GroupShortCode.yaml | 1 - openapi/components/schemas/InstanceID.yaml | 3 +- openapi/components/schemas/InstanceType.yaml | 1 + .../components/schemas/InviteMessageID.yaml | 1 - openapi/components/schemas/License.yaml | 1 - .../components/schemas/LicenseGroupID.yaml | 1 - openapi/components/schemas/LimitedGroup.yaml | 49 +++++++++++++++++++ openapi/components/schemas/LimitedUser.yaml | 1 - openapi/components/schemas/LimitedWorld.yaml | 9 +++- .../components/schemas/NotificationID.yaml | 1 - openapi/components/schemas/PermissionID.yaml | 1 - .../schemas/PlayerModerationID.yaml | 1 - openapi/components/schemas/ProductID.yaml | 1 - openapi/components/schemas/TransactionID.yaml | 1 - openapi/components/schemas/UdonProductId.yaml | 4 ++ openapi/components/schemas/UnityPackage.yaml | 10 +++- .../components/schemas/UnityPackageID.yaml | 1 - openapi/components/schemas/World.yaml | 11 +++-- openapi/components/schemas/WorldID.yaml | 1 - openapi/openapi.yaml | 10 ++-- 37 files changed, 128 insertions(+), 45 deletions(-) create mode 100644 openapi/components/responses/groups/LimitedGroupListResponse.yaml create mode 100644 openapi/components/schemas/LimitedGroup.yaml create mode 100644 openapi/components/schemas/UdonProductId.yaml diff --git a/openapi/components/parameters.yaml b/openapi/components/parameters.yaml index 7e70281d..170a4bbe 100644 --- a/openapi/components/parameters.yaml +++ b/openapi/components/parameters.yaml @@ -67,7 +67,6 @@ fileId: schema: type: string example: file_00000000-0000-0000-0000-000000000000 - pattern: 'file_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' description: Must be a valid file ID. groupId: name: groupId @@ -76,7 +75,6 @@ groupId: schema: type: string example: grp_00000000-0000-0000-0000-000000000000 - pattern: 'grp_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' description: Must be a valid group ID. groupRoleId: name: groupRoleId @@ -85,7 +83,6 @@ groupRoleId: schema: type: string example: grol_00000000-0000-0000-0000-000000000000 - pattern: 'grol_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' description: Must be a valid group role ID. groupGalleryId: name: groupGalleryId @@ -94,7 +91,6 @@ groupGalleryId: schema: type: string example: ggal_00000000-0000-0000-0000-000000000000 - pattern: 'ggal_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' description: Must be a valid group gallery ID. groupGalleryImageId: name: groupGalleryImageId @@ -103,7 +99,6 @@ groupGalleryImageId: schema: type: string example: ggim_00000000-0000-0000-0000-000000000000 - pattern: 'ggim_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' description: Must be a valid group gallery image ID. versionId: name: versionId diff --git a/openapi/components/paths/groups.yaml b/openapi/components/paths/groups.yaml index f17e6765..a71f1d90 100644 --- a/openapi/components/paths/groups.yaml +++ b/openapi/components/paths/groups.yaml @@ -5,6 +5,26 @@ info: description: Group Docs Here paths: /groups: + get: + summary: Search Group + description: Searches Groups by name or shortCode + operationId: searchGroups + tags: + - groups + parameters: + - in: query + name: query + schema: + type: string + required: false + description: Query to search for, can be either Group Name or Group shortCode + - $ref: ../parameters.yaml#/offset + - $ref: ../parameters.yaml#/number + responses: + '200': + $ref: ../responses/groups/LimitedGroupListResponse.yaml + '401': + $ref: ../responses/MissingCredentialsError.yaml post: summary: Create Group description: Creates a Group and returns a Group object. **Requires VRC+ Subscription.** diff --git a/openapi/components/requests/FinishFileDataUploadRequest.yaml b/openapi/components/requests/FinishFileDataUploadRequest.yaml index 2aa8ddf5..c902fec4 100644 --- a/openapi/components/requests/FinishFileDataUploadRequest.yaml +++ b/openapi/components/requests/FinishFileDataUploadRequest.yaml @@ -17,7 +17,6 @@ properties: deprecated: true description: 'Always a zero in string form, despite how many parts uploaded.' maxLength: 1 - pattern: '0' maxParts: type: string minLength: 1 @@ -26,7 +25,6 @@ properties: default: '0' example: '0' maxLength: 1 - pattern: '0' required: - nextPartNumber - maxParts \ No newline at end of file diff --git a/openapi/components/responses/groups/LimitedGroupListResponse.yaml b/openapi/components/responses/groups/LimitedGroupListResponse.yaml new file mode 100644 index 00000000..0923dff4 --- /dev/null +++ b/openapi/components/responses/groups/LimitedGroupListResponse.yaml @@ -0,0 +1,7 @@ +description: Returns a list of LimitedGroup objects. +content: + application/json: + schema: + type: array + items: + $ref: ../../schemas/LimitedGroup.yaml \ No newline at end of file diff --git a/openapi/components/schemas/AvatarID.yaml b/openapi/components/schemas/AvatarID.yaml index 0d8381a3..218ab03e 100644 --- a/openapi/components/schemas/AvatarID.yaml +++ b/openapi/components/schemas/AvatarID.yaml @@ -1,4 +1,3 @@ example: avtr_912d66a4-4714-43b8-8407-7de2cafbf55b -pattern: 'avtr_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' title: AvatarID type: string diff --git a/openapi/components/schemas/CurrentUser.yaml b/openapi/components/schemas/CurrentUser.yaml index 5f8a47b3..d467223e 100644 --- a/openapi/components/schemas/CurrentUser.yaml +++ b/openapi/components/schemas/CurrentUser.yaml @@ -39,6 +39,10 @@ properties: $ref: ./CurrentAvatarImageUrl.yaml currentAvatarThumbnailImageUrl: $ref: ./CurrentAvatarThumbnailImageUrl.yaml + currentAvatarTags: + type: array + items: + $ref: ./Tag.yaml date_joined: format: date type: string @@ -64,6 +68,14 @@ properties: type: array hasBirthday: type: boolean + hideContentFilterSettings: + type: boolean + userLanguage: + nullable: true + type: string + userLanguageCode: + nullable: true + type: string hasEmail: type: boolean hasLoggedInFromClient: @@ -91,6 +103,12 @@ properties: type: string oculusId: type: string + googleId: + type: string + picoId: + type: string + viveId: + type: string offlineFriends: items: $ref: ./UserID.yaml diff --git a/openapi/components/schemas/FavoriteGroupID.yaml b/openapi/components/schemas/FavoriteGroupID.yaml index abf2f5e3..f5b1adcb 100644 --- a/openapi/components/schemas/FavoriteGroupID.yaml +++ b/openapi/components/schemas/FavoriteGroupID.yaml @@ -1,4 +1,3 @@ example: fvgrp_8a02a44b-dc3a-4a9a-bc77-77fa37996fc7 -pattern: 'fvgrp_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' title: FavoriteGroupID type: string diff --git a/openapi/components/schemas/FavoriteID.yaml b/openapi/components/schemas/FavoriteID.yaml index db0abd31..3eee5c47 100644 --- a/openapi/components/schemas/FavoriteID.yaml +++ b/openapi/components/schemas/FavoriteID.yaml @@ -1,4 +1,3 @@ example: fvrt_9568d189-8776-44a5-a8c8-defc981e44de -pattern: 'fvrt_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' title: FavoriteID type: string diff --git a/openapi/components/schemas/FileID.yaml b/openapi/components/schemas/FileID.yaml index dce51bc8..1caa5805 100644 --- a/openapi/components/schemas/FileID.yaml +++ b/openapi/components/schemas/FileID.yaml @@ -1,4 +1,3 @@ example: file_ce35d830-e20a-4df0-a6d4-5aaef4508044 -pattern: 'file_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' title: FileID type: string diff --git a/openapi/components/schemas/GroupAnnouncementID.yaml b/openapi/components/schemas/GroupAnnouncementID.yaml index 1b30cce8..bed1b121 100644 --- a/openapi/components/schemas/GroupAnnouncementID.yaml +++ b/openapi/components/schemas/GroupAnnouncementID.yaml @@ -1,4 +1,3 @@ example: gpos_71a7ff59-112c-4e78-a990-c7cc650776e5 -pattern: 'gpos_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' title: GroupAnnouncementID type: string diff --git a/openapi/components/schemas/GroupAuditLogID.yaml b/openapi/components/schemas/GroupAuditLogID.yaml index c2297ddb..65c2f70b 100644 --- a/openapi/components/schemas/GroupAuditLogID.yaml +++ b/openapi/components/schemas/GroupAuditLogID.yaml @@ -1,4 +1,3 @@ example: gaud_71a7ff59-112c-4e78-a990-c7cc650776e5 -pattern: 'gaud_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' title: GroupAuditLogID type: string diff --git a/openapi/components/schemas/GroupDiscriminator.yaml b/openapi/components/schemas/GroupDiscriminator.yaml index 8cb609c8..2fafaf43 100644 --- a/openapi/components/schemas/GroupDiscriminator.yaml +++ b/openapi/components/schemas/GroupDiscriminator.yaml @@ -1,4 +1,3 @@ example: '1234' -pattern: '^[0-9]{4}$' title: GroupDiscriminator type: string diff --git a/openapi/components/schemas/GroupGalleryID.yaml b/openapi/components/schemas/GroupGalleryID.yaml index 08ce83f1..abf17e3b 100644 --- a/openapi/components/schemas/GroupGalleryID.yaml +++ b/openapi/components/schemas/GroupGalleryID.yaml @@ -1,4 +1,3 @@ example: ggal_a03a4b55-4ca6-4490-9519-40ba6351a233 -pattern: 'ggal_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' title: GroupGalleryID type: string diff --git a/openapi/components/schemas/GroupGalleryImageID.yaml b/openapi/components/schemas/GroupGalleryImageID.yaml index 923fbaa4..38f03b55 100644 --- a/openapi/components/schemas/GroupGalleryImageID.yaml +++ b/openapi/components/schemas/GroupGalleryImageID.yaml @@ -1,4 +1,3 @@ example: ggim_71a7ff59-112c-4e78-a990-c7cc650776e5 -pattern: 'ggim_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' title: GroupGalleryImageID type: string diff --git a/openapi/components/schemas/GroupID.yaml b/openapi/components/schemas/GroupID.yaml index 2b0f6a8c..cce852c2 100644 --- a/openapi/components/schemas/GroupID.yaml +++ b/openapi/components/schemas/GroupID.yaml @@ -1,4 +1,3 @@ example: grp_71a7ff59-112c-4e78-a990-c7cc650776e5 -pattern: 'grp_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' title: GroupID type: string diff --git a/openapi/components/schemas/GroupMemberID.yaml b/openapi/components/schemas/GroupMemberID.yaml index 897d73aa..0dc3cc05 100644 --- a/openapi/components/schemas/GroupMemberID.yaml +++ b/openapi/components/schemas/GroupMemberID.yaml @@ -1,4 +1,3 @@ example: gmem_95cdb3b4-4643-4eb6-bdab-46a4e1e5ce37 -pattern: 'gmem_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' title: GroupMemberID type: string diff --git a/openapi/components/schemas/GroupRoleID.yaml b/openapi/components/schemas/GroupRoleID.yaml index 29bb1449..ca6c93ee 100644 --- a/openapi/components/schemas/GroupRoleID.yaml +++ b/openapi/components/schemas/GroupRoleID.yaml @@ -1,4 +1,3 @@ example: grol_459d3911-f672-44bc-b84d-e54ffe7960fe -pattern: 'grol_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' title: GroupRoleID type: string diff --git a/openapi/components/schemas/GroupShortCode.yaml b/openapi/components/schemas/GroupShortCode.yaml index 48944873..a9661482 100644 --- a/openapi/components/schemas/GroupShortCode.yaml +++ b/openapi/components/schemas/GroupShortCode.yaml @@ -1,4 +1,3 @@ example: ABC123 -pattern: '^[A-Z0-9]{3,6}$' title: GroupShortCode type: string diff --git a/openapi/components/schemas/InstanceID.yaml b/openapi/components/schemas/InstanceID.yaml index 08d7c5c5..b9a596af 100644 --- a/openapi/components/schemas/InstanceID.yaml +++ b/openapi/components/schemas/InstanceID.yaml @@ -1,5 +1,4 @@ type: string -example: 'wrld_ba913a96-fac4-4048-a062-9aa5db092812:12345~hidden(usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469)~region(eu)~nonce(27e8414a-59a0-4f3d-af1f-f27557eb49a2)' -pattern: '(private|offline|(wrld|wld)_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}:(\d+)(~region\(([\w]+)\))?(~([\w]+)\(usr_([\w-]+)\)((\~canRequestInvite)?)(~region\(([\w].+)\))?~nonce\((.+)\))?)' +example: '12345~hidden(usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469)~region(eu)~nonce(27e8414a-59a0-4f3d-af1f-f27557eb49a2)' title: InstanceID description: InstanceID can be "offline" on User profiles if you are not friends with that user and "private" if you are friends and user is in private instance. diff --git a/openapi/components/schemas/InstanceType.yaml b/openapi/components/schemas/InstanceType.yaml index a9b1db60..3f137836 100644 --- a/openapi/components/schemas/InstanceType.yaml +++ b/openapi/components/schemas/InstanceType.yaml @@ -6,4 +6,5 @@ enum: - hidden - friends - private + - group description: '' diff --git a/openapi/components/schemas/InviteMessageID.yaml b/openapi/components/schemas/InviteMessageID.yaml index f0f68608..f0895894 100644 --- a/openapi/components/schemas/InviteMessageID.yaml +++ b/openapi/components/schemas/InviteMessageID.yaml @@ -1,4 +1,3 @@ example: invm_24a1c14d-5e24-48e5-90e3-c3f712420ffa -pattern: '(default|invm_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})' title: InviteMessageID type: string diff --git a/openapi/components/schemas/License.yaml b/openapi/components/schemas/License.yaml index 4f95dc7f..d4f7fa8f 100644 --- a/openapi/components/schemas/License.yaml +++ b/openapi/components/schemas/License.yaml @@ -5,7 +5,6 @@ properties: type: string description: 'Either a AvatarID, LicenseGroupID, PermissionID or ProductID. This depends on the `forType` field.' minLength: 1 - pattern: '(avtr|lgrp|prms|prod)_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' forType: $ref: ./LicenseType.yaml forName: diff --git a/openapi/components/schemas/LicenseGroupID.yaml b/openapi/components/schemas/LicenseGroupID.yaml index 50038a6d..1b94a6db 100644 --- a/openapi/components/schemas/LicenseGroupID.yaml +++ b/openapi/components/schemas/LicenseGroupID.yaml @@ -1,4 +1,3 @@ example: lgrp_608513da-b213-4e15-80af-bd88c27f0979 -pattern: 'lgrp_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' title: LicenseGroupID type: string diff --git a/openapi/components/schemas/LimitedGroup.yaml b/openapi/components/schemas/LimitedGroup.yaml new file mode 100644 index 00000000..8383b0f8 --- /dev/null +++ b/openapi/components/schemas/LimitedGroup.yaml @@ -0,0 +1,49 @@ +title: LimitedGroup +type: object +properties: + id: + $ref: ./GroupID.yaml + name: + type: string + shortCode: + $ref: ./GroupShortCode.yaml + discriminator: + $ref: ./GroupDiscriminator.yaml + description: + type: string + iconUrl: + type: string + nullable: true + bannerUrl: + type: string + nullable: true + ownerId: + $ref: ./UserID.yaml + rules: + type: string + nullable: true + iconId: + type: string + nullable: true + bannerId: + type: string + nullable: true + memberCount: + type: integer + tags: + description: ' ' + type: array + items: + $ref: ./Tag.yaml + createdAt: + type: string + format: date-time + membershipStatus: + $ref: ./GroupMemberStatus.yaml + isSearchable: + type: boolean + galleries: + description: ' ' + type: array + items: + $ref: ./GroupGallery.yaml diff --git a/openapi/components/schemas/LimitedUser.yaml b/openapi/components/schemas/LimitedUser.yaml index 075f88de..ca8d72bf 100644 --- a/openapi/components/schemas/LimitedUser.yaml +++ b/openapi/components/schemas/LimitedUser.yaml @@ -48,7 +48,6 @@ required: - statusDescription - currentAvatarImageUrl - currentAvatarThumbnailImageUrl - - fallbackAvatar - developerType - last_platform - status diff --git a/openapi/components/schemas/LimitedWorld.yaml b/openapi/components/schemas/LimitedWorld.yaml index 1d8a0a6e..9e819e10 100644 --- a/openapi/components/schemas/LimitedWorld.yaml +++ b/openapi/components/schemas/LimitedWorld.yaml @@ -7,8 +7,9 @@ properties: type: string capacity: example: 8 - maximum: 40 - minimum: 0 + type: integer + recommendedCapacity: + example: 16 type: integer created_at: format: date-time @@ -72,6 +73,10 @@ properties: updated_at: format: date-time type: string + udonProducts: + type: array + items: + $ref: ./UdonProductId.yaml required: - id - name diff --git a/openapi/components/schemas/NotificationID.yaml b/openapi/components/schemas/NotificationID.yaml index 88b0f73d..79534912 100644 --- a/openapi/components/schemas/NotificationID.yaml +++ b/openapi/components/schemas/NotificationID.yaml @@ -1,4 +1,3 @@ example: not_00000000-0000-0000-0000-000000000000 -pattern: '(not|frq)_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' title: NotificationID type: string diff --git a/openapi/components/schemas/PermissionID.yaml b/openapi/components/schemas/PermissionID.yaml index 33042402..944ce64b 100644 --- a/openapi/components/schemas/PermissionID.yaml +++ b/openapi/components/schemas/PermissionID.yaml @@ -1,4 +1,3 @@ example: prms_804ba021-9f47-4e25-9847-1f42fdb2e6ff -pattern: 'prms_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' title: PermissionID type: string diff --git a/openapi/components/schemas/PlayerModerationID.yaml b/openapi/components/schemas/PlayerModerationID.yaml index b685d3ca..ad81eb4f 100644 --- a/openapi/components/schemas/PlayerModerationID.yaml +++ b/openapi/components/schemas/PlayerModerationID.yaml @@ -1,4 +1,3 @@ example: pmod_25551a8d-6f5d-430a-88d3-9c0ce08b5244 -pattern: 'pmod_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' title: PlayerModerationID type: string diff --git a/openapi/components/schemas/ProductID.yaml b/openapi/components/schemas/ProductID.yaml index 7593b475..210c5f21 100644 --- a/openapi/components/schemas/ProductID.yaml +++ b/openapi/components/schemas/ProductID.yaml @@ -1,4 +1,3 @@ example: prod_bfbc2315-247a-44d7-bfea-5237f8d56cb4 -pattern: 'prod_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' title: ProductID type: string diff --git a/openapi/components/schemas/TransactionID.yaml b/openapi/components/schemas/TransactionID.yaml index 43583a23..8c316912 100644 --- a/openapi/components/schemas/TransactionID.yaml +++ b/openapi/components/schemas/TransactionID.yaml @@ -1,4 +1,3 @@ example: txn_e5c72948-e735-4880-8245-24b2a41198b0 -pattern: 'txn_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' title: TransactionID type: string diff --git a/openapi/components/schemas/UdonProductId.yaml b/openapi/components/schemas/UdonProductId.yaml new file mode 100644 index 00000000..55d5933c --- /dev/null +++ b/openapi/components/schemas/UdonProductId.yaml @@ -0,0 +1,4 @@ +example: prod_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 +title: UdonProductId +type: string +description: 'A unique ID of a Udon Product' diff --git a/openapi/components/schemas/UnityPackage.yaml b/openapi/components/schemas/UnityPackage.yaml index b4997363..64cf9bbf 100644 --- a/openapi/components/schemas/UnityPackage.yaml +++ b/openapi/components/schemas/UnityPackage.yaml @@ -11,9 +11,12 @@ example: unitySortNumber: 20180414000 unityVersion: 2018.4.14f1 properties: + id: + $ref: ./UnityPackageID.yaml assetUrl: minLength: 1 type: string + nullable: true assetUrlObject: type: object assetVersion: @@ -22,8 +25,6 @@ properties: created_at: format: date-time type: string - id: - $ref: ./UnityPackageID.yaml platform: $ref: ./Platform.yaml pluginUrl: @@ -39,6 +40,11 @@ properties: example: 2018.4.12f1 minLength: 1 type: string + impostorUrl: + type: string + nullable: true + scanStatus: + type: string required: - id - unityVersion diff --git a/openapi/components/schemas/UnityPackageID.yaml b/openapi/components/schemas/UnityPackageID.yaml index 907acf9f..4314636e 100644 --- a/openapi/components/schemas/UnityPackageID.yaml +++ b/openapi/components/schemas/UnityPackageID.yaml @@ -1,4 +1,3 @@ example: unp_52b12c39-4163-457d-a4a9-630e7aff1bff -pattern: '(unp)_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' title: UnityPackageID type: string diff --git a/openapi/components/schemas/World.yaml b/openapi/components/schemas/World.yaml index f99b2529..7e32c0a4 100644 --- a/openapi/components/schemas/World.yaml +++ b/openapi/components/schemas/World.yaml @@ -9,8 +9,9 @@ properties: type: string capacity: example: 8 - maximum: 40 - minimum: 0 + type: integer + recommendedCapacity: + example: 4 type: integer created_at: format: date-time @@ -115,10 +116,15 @@ properties: example: 9988675 minimum: 0 type: integer + udonProducts: + type: array + items: + $ref: ./UdonProductId.yaml required: - authorId - authorName - capacity + - recommendedCapacity - created_at - description - featured @@ -134,7 +140,6 @@ required: - releaseStatus - tags - thumbnailImageUrl - - unityPackages - updated_at - version - visits diff --git a/openapi/components/schemas/WorldID.yaml b/openapi/components/schemas/WorldID.yaml index 7a1d368c..b8125e91 100644 --- a/openapi/components/schemas/WorldID.yaml +++ b/openapi/components/schemas/WorldID.yaml @@ -1,5 +1,4 @@ example: wrld_ba913a96-fac4-4048-a062-9aa5db092812 -pattern: '(^$|offline|(wrld|wld)_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})' title: WorldID type: string description: WorldID be "offline" on User profiles if you are not friends with that user. diff --git a/openapi/openapi.yaml b/openapi/openapi.yaml index 710fb982..681e58d4 100644 --- a/openapi/openapi.yaml +++ b/openapi/openapi.yaml @@ -1,18 +1,18 @@ openapi: 3.0.3 info: title: VRChat API Documentation - version: 1.12.0 + version: 1.16.2 contact: name: Unofficial VRChat API Documentation Project - url: 'https://github.com/VRChatAPI' + url: "https://github.com/VRChatAPI" email: vrchatapi.lpv0t@aries.fyi - termsOfService: 'https://vrchat.com/legal/' + termsOfService: "https://vrchat.com/legal/" license: - url: 'https://github.com/vrchatapi/specification/blob/master/LICENSE' + url: "https://github.com/vrchatapi/specification/blob/master/LICENSE" name: MIT description: "![VRChat API Banner](https://vrchatapi.github.io/assets/img/api_banner_1500x400.png)\n\n# Welcome to the VRChat API\n\nBefore we begin, we would like to state this is a **COMMUNITY DRIVEN PROJECT**.\nThis means that everything you read on here was written by the community itself and is **not** officially supported by VRChat.\nThe documentation is provided \"AS IS\", and any action you take towards VRChat is completely your own responsibility.\n\nThe documentation and additional libraries SHALL ONLY be used for applications interacting with VRChat's API in accordance\nwith their [Terms of Service](https://hello.vrchat.com/legal) and [Community Guidelines](https://hello.vrchat.com/community-guidelines), and MUST NOT be used for modifying the client, \"avatar ripping\", or other illegal activities.\nMalicious usage or spamming the API may result in account termination.\nCertain parts of the API are also more sensitive than others, for example moderation, so please tread extra carefully and read the warnings when present.\n\n![Tupper Policy on API](https://i.imgur.com/yLlW7Ok.png)\n\nFinally, use of the API using applications other than the approved methods (website, VRChat application, Unity SDK) is not officially supported.\nVRChat provides no guarantee or support for external applications using the API. Access to API endpoints may break **at any time, without notice**.\nTherefore, please **do not ping** VRChat Staff in the VRChat Discord if you are having API problems, as they do not provide API support.\nWe will make a best effort in keeping this documentation and associated language libraries up to date, but things might be outdated or missing.\nIf you find that something is no longer valid, please contact us on Discord or [create an issue](https://github.com/vrchatapi/specification/issues) and tell us so we can fix it.\n\n# Getting Started\n\nThe VRChat API can be used to programmatically retrieve or update information regarding your profile, friends, avatars, worlds and more.\nThe API consists of two parts, \"Photon\" which is only used in-game, and the \"Web API\" which is used by both the game and the website.\nThis documentation focuses only on the Web API.\n\nThe API is designed around the REST ideology, providing semi-simple and usually predictable URIs to access and modify objects.\nRequests support standard HTTP methods like GET, PUT, POST, and DELETE and standard status codes.\nResponse bodies are always UTF-8 encoded JSON objects, unless explicitly documented otherwise.\n\n
\n \U0001F6D1 Warning! Do not touch Photon!
\n Photon is only used by the in-game client and should not be touched. Doing so may result in permanent account termination.\n
\n\n
\n ℹ️ API Key and Authentication
\n The API Key has always been the same and is currently JlE5Jldo5Jibnk5O5hTx6XVqsJu4WJ26.\n Read Authentication for how to log in.\n
\n\n# Using the API\n\nFor simply exploring what the API can do it is strongly recommended to download [Insomnia](https://insomnia.rest/download), a free and open-source\nAPI client that's great for sending requests to the API in an orderly fashion.\nInsomnia allows you to send data in the format that's required for VRChat's API.\nIt is also possible to try out the API in your browser, by first logging in at [vrchat.com/home](https://vrchat.com/home/) and then going to\n[vrchat.com/api/1/auth/user](https://vrchat.com/api/1/auth/user), but the information will be much harder to work with.\n\nFor more permanent operation such as software development it is instead recommended to use one of the existing language SDKs.\nThis community project maintains API libraries in several languages, which allows you to interact with the API with simple function calls\nrather than having to implement the HTTP protocol yourself. Most of these libraries are automatically generated from the API specification,\nsometimes with additional helpful wrapper code to make usage easier. This allows them to be almost automatically updated and expanded upon\nas soon as a new feature is introduced in the specification itself. The libraries can be found on [GitHub](https://github.com/vrchatapi) or following:\n\n* [NodeJS (JavaScript)](https://www.npmjs.com/package/vrchat)\n* [Dart](https://pub.dev/packages/vrchat_dart)\n* [Rust](https://crates.io/crates/vrchatapi)\n* [C#](https://github.com/vrchatapi/vrchatapi-csharp)\n* [Python](https://github.com/vrchatapi/vrchatapi-python)\n\n# Pagination\n\nMost endpoints enforce pagination, meaning they will only return 10 entries by default, and never more than 100.
\nUsing both the limit and offset parameters allows you to easily paginate through a large number of objects.\n\n| Query Parameter | Type | Description |\n| ----------|--|------- |\n| `n` | integer | The number of objects to return. This value often defaults to 10. Highest limit is always 100.|\n| `offset` | integer | A zero-based offset from the default object sorting.|\n\nIf a request returns fewer objects than the `limit` parameter, there are no more items available to return.\n\n# Contribution\n\nDo you want to get involved in the documentation effort? Do you want to help improve one of the language API libraries?\nThis project is an [OPEN Open Source Project](https://openopensource.org)! This means that individuals making significant and valuable contributions are given\ncommit-access to the project. It also means we are very open and welcoming of new people making contributions, unlike some more guarded open-source projects.\n\n[![Discord](https://img.shields.io/static/v1?label=vrchatapi&message=discord&color=blueviolet&style=for-the-badge)](https://discord.gg/qjZE9C9fkB)" servers: - - url: 'https://api.vrchat.cloud/api/1' + - url: "https://api.vrchat.cloud/api/1" paths: $ref: ./components/paths.yaml components: