diff --git a/openapi/components/requests/CreateGroupGalleryRequest.yaml b/openapi/components/requests/CreateGroupGalleryRequest.yaml index 474e1033..11a85ea0 100644 --- a/openapi/components/requests/CreateGroupGalleryRequest.yaml +++ b/openapi/components/requests/CreateGroupGalleryRequest.yaml @@ -17,27 +17,23 @@ properties: example: Example Gallery minLength: 1 roleIdsToAutoApprove: - type: array + type: [array, "null"] description: " " - nullable: true items: $ref: ../schemas/GroupRoleID.yaml roleIdsToManage: - type: array + type: [array, "null"] description: " " - nullable: true items: $ref: ../schemas/GroupRoleID.yaml roleIdsToSubmit: - type: array + type: [array, "null"] description: " " - nullable: true items: $ref: ../schemas/GroupRoleID.yaml roleIdsToView: - type: array + type: [array, "null"] description: " " - nullable: true items: $ref: ../schemas/GroupRoleID.yaml required: diff --git a/openapi/components/requests/CreateGroupRequest.yaml b/openapi/components/requests/CreateGroupRequest.yaml index 94c5e75b..459193b8 100644 --- a/openapi/components/requests/CreateGroupRequest.yaml +++ b/openapi/components/requests/CreateGroupRequest.yaml @@ -2,16 +2,14 @@ title: CreateGroupRequest type: object properties: bannerId: - type: string - nullable: true + type: ["null", string] default: null description: type: string maxLength: 250 minLength: 0 iconId: - type: string - nullable: true + type: ["null", string] default: null joinState: $ref: ../schemas/GroupJoinState.yaml diff --git a/openapi/components/requests/CreateInstanceRequest.yaml b/openapi/components/requests/CreateInstanceRequest.yaml index d95396ed..59cb291f 100644 --- a/openapi/components/requests/CreateInstanceRequest.yaml +++ b/openapi/components/requests/CreateInstanceRequest.yaml @@ -29,16 +29,14 @@ properties: description: Currently unused, but will eventually be a flag to set if the closing of the instance should kick people. default: false instancePersistenceEnabled: - type: boolean - nullable: true + type: [boolean, "null"] inviteOnly: type: boolean default: false ownerId: $ref: ../schemas/InstanceOwnerId.yaml playerPersistenceEnabled: - type: boolean - nullable: true + type: [boolean, "null"] queueEnabled: type: boolean default: false diff --git a/openapi/components/requests/UpdateGroupGalleryRequest.yaml b/openapi/components/requests/UpdateGroupGalleryRequest.yaml index 018d092b..2d6ba59c 100644 --- a/openapi/components/requests/UpdateGroupGalleryRequest.yaml +++ b/openapi/components/requests/UpdateGroupGalleryRequest.yaml @@ -17,26 +17,22 @@ properties: example: Example Gallery minLength: 1 roleIdsToAutoApprove: - type: array + type: [array, "null"] description: " " - nullable: true items: $ref: ../schemas/GroupRoleID.yaml roleIdsToManage: - type: array + type: [array, "null"] description: " " - nullable: true items: $ref: ../schemas/GroupRoleID.yaml roleIdsToSubmit: - type: array + type: [array, "null"] description: " " - nullable: true items: $ref: ../schemas/GroupRoleID.yaml roleIdsToView: - type: array + type: [array, "null"] description: " " - nullable: true items: $ref: ../schemas/GroupRoleID.yaml diff --git a/openapi/components/requests/UpdateGroupRequest.yaml b/openapi/components/requests/UpdateGroupRequest.yaml index edac1f94..33c4fff1 100644 --- a/openapi/components/requests/UpdateGroupRequest.yaml +++ b/openapi/components/requests/UpdateGroupRequest.yaml @@ -2,16 +2,14 @@ title: UpdateGroupRequest type: object properties: bannerId: - type: string - nullable: true + type: ["null", string] default: null description: type: string maxLength: 250 minLength: 0 iconId: - type: string - nullable: true + type: ["null", string] default: null joinState: $ref: ../schemas/GroupJoinState.yaml diff --git a/openapi/components/requests/UpdateWorldRequest.yaml b/openapi/components/requests/UpdateWorldRequest.yaml index d8ef5f1d..10ebb6c3 100644 --- a/openapi/components/requests/UpdateWorldRequest.yaml +++ b/openapi/components/requests/UpdateWorldRequest.yaml @@ -32,8 +32,7 @@ properties: platform: $ref: ../schemas/Platform.yaml previewYoutubeId: - type: string - nullable: true + type: ["null", string] recommendedCapacity: type: integer example: 4 diff --git a/openapi/components/responses/authentication/CurrentUserLoginResponse.yaml b/openapi/components/responses/authentication/CurrentUserLoginResponse.yaml index 74cd94c9..4196cffd 100644 --- a/openapi/components/responses/authentication/CurrentUserLoginResponse.yaml +++ b/openapi/components/responses/authentication/CurrentUserLoginResponse.yaml @@ -5,6 +5,7 @@ content: x-if: when: jsonschema then: + title: LoginOr2fa oneOf: - $ref: ../../schemas/CurrentUser.yaml - $ref: ../../schemas/RequiresTwoFactorAuth.yaml diff --git a/openapi/components/responses/economy/UpdateTiliaTOSResponse.yaml b/openapi/components/responses/economy/UpdateTiliaTOSResponse.yaml index 2a61250d..bd884bfa 100644 --- a/openapi/components/responses/economy/UpdateTiliaTOSResponse.yaml +++ b/openapi/components/responses/economy/UpdateTiliaTOSResponse.yaml @@ -2,5 +2,4 @@ description: Returns a UserSubscription object. content: application/json: schema: - type: object - nullable: true + type: ["null", object] diff --git a/openapi/components/responses/groups/GroupGalleryImageListResponse.yaml b/openapi/components/responses/groups/GroupGalleryImageListResponse.yaml index 2bdfdaf2..4dd5bd91 100644 --- a/openapi/components/responses/groups/GroupGalleryImageListResponse.yaml +++ b/openapi/components/responses/groups/GroupGalleryImageListResponse.yaml @@ -2,6 +2,7 @@ description: Returns a list of GroupGalleryImage objects, wrapped in a paginated content: application/json: schema: + title: GroupGalleryImageListResponse oneOf: - type: array items: diff --git a/openapi/components/responses/groups/GroupMemberSearchResponse.yaml b/openapi/components/responses/groups/GroupMemberSearchResponse.yaml index 2676e57c..0d27e35e 100644 --- a/openapi/components/responses/groups/GroupMemberSearchResponse.yaml +++ b/openapi/components/responses/groups/GroupMemberSearchResponse.yaml @@ -2,6 +2,7 @@ description: Returns a list of GroupMember objects from a search. content: application/json: schema: + title: GroupMemberSearchResponse type: object properties: results: diff --git a/openapi/components/responses/groups/GroupPostsResponse.yaml b/openapi/components/responses/groups/GroupPostsResponse.yaml index d19c03b1..35bd8245 100644 --- a/openapi/components/responses/groups/GroupPostsResponse.yaml +++ b/openapi/components/responses/groups/GroupPostsResponse.yaml @@ -2,6 +2,7 @@ description: Returns a GroupPost Array. content: application/json: schema: + title: GroupPostsResponse type: object properties: posts: diff --git a/openapi/components/responses/users/UserGroupInstanceListResponse.yaml b/openapi/components/responses/users/UserGroupInstanceListResponse.yaml index 68234e7b..7b0f9d41 100644 --- a/openapi/components/responses/users/UserGroupInstanceListResponse.yaml +++ b/openapi/components/responses/users/UserGroupInstanceListResponse.yaml @@ -2,6 +2,7 @@ description: Returns a list of Instance objects with a fetched at time. content: application/json: schema: + title: UserGroupInstanceListResponse type: object properties: fetchedAt: diff --git a/openapi/components/responses/users/UserResponse.yaml b/openapi/components/responses/users/UserResponse.yaml index 7e1ca8b9..e80ff481 100644 --- a/openapi/components/responses/users/UserResponse.yaml +++ b/openapi/components/responses/users/UserResponse.yaml @@ -10,6 +10,7 @@ content: x-if: when: jsonschema then: + title: UserResponse oneOf: - $ref: ../../schemas/User.yaml - $ref: ../../schemas/CurrentUser.yaml diff --git a/openapi/components/schemas/AccountDeletionLog.yaml b/openapi/components/schemas/AccountDeletionLog.yaml index cbca3b38..d6019b8d 100644 --- a/openapi/components/schemas/AccountDeletionLog.yaml +++ b/openapi/components/schemas/AccountDeletionLog.yaml @@ -6,9 +6,8 @@ properties: description: Date and time of the deletion request. format: date-time deletionScheduled: - type: string + type: ["null", string] description: When the deletion is scheduled to happen, standard is 14 days after the request. - nullable: true format: date-time message: type: string diff --git a/openapi/components/schemas/AdminAssetBundle.yaml b/openapi/components/schemas/AdminAssetBundle.yaml index 11ad3e15..d4393fd4 100644 --- a/openapi/components/schemas/AdminAssetBundle.yaml +++ b/openapi/components/schemas/AdminAssetBundle.yaml @@ -29,8 +29,7 @@ properties: thumbnailImageUrl: type: string unityPackageUrl: - type: string - nullable: true + type: ["null", string] unityPackages: type: array items: diff --git a/openapi/components/schemas/Avatar.yaml b/openapi/components/schemas/Avatar.yaml index 765ba15d..2e1db8ae 100644 --- a/openapi/components/schemas/Avatar.yaml +++ b/openapi/components/schemas/Avatar.yaml @@ -40,8 +40,7 @@ properties: type: string minLength: 1 listingDate: - type: string - nullable: true + type: ["null", string] lock: type: boolean lowestPrice: @@ -95,11 +94,9 @@ properties: type: object properties: primary: - type: string - nullable: true + type: ["null", string] secondary: - type: string - nullable: true + type: ["null", string] supplementary: type: array items: diff --git a/openapi/components/schemas/Badge.yaml b/openapi/components/schemas/Badge.yaml index 75f400e9..19eb3378 100644 --- a/openapi/components/schemas/Badge.yaml +++ b/openapi/components/schemas/Badge.yaml @@ -2,9 +2,8 @@ title: Badge type: object properties: assignedAt: - type: string + type: ["null", string] description: only present in CurrentUser badges - nullable: true format: date-time badgeDescription: type: string @@ -16,17 +15,15 @@ properties: badgeName: type: string hidden: - type: boolean + type: [boolean, "null"] description: only present in CurrentUser badges - nullable: true isQuantifiable: type: boolean showcased: type: boolean updatedAt: - type: string + type: ["null", string] description: only present in CurrentUser badges - nullable: true format: date-time required: - badgeDescription diff --git a/openapi/components/schemas/CalendarEvent.yaml b/openapi/components/schemas/CalendarEvent.yaml index 8cfd6fbf..aa671de5 100644 --- a/openapi/components/schemas/CalendarEvent.yaml +++ b/openapi/components/schemas/CalendarEvent.yaml @@ -12,8 +12,7 @@ properties: type: string format: date-time deletedAt: - type: string - nullable: true + type: ["null", string] format: date-time description: type: string @@ -35,8 +34,7 @@ properties: $ref: ./FileID.yaml nullable: true imageUrl: - type: string - nullable: true + type: ["null", string] interestedUserCount: type: integer isDraft: @@ -49,8 +47,7 @@ properties: occurrenceKind: $ref: ./CalendarEventOccurrenceKind.yaml occurrenceModified: - type: boolean - nullable: true + type: [boolean, "null"] ownerId: $ref: ./GroupID.yaml platforms: @@ -60,15 +57,13 @@ properties: recurrence: $ref: ./CalendarEventRecurrence.yaml roleIds: - type: array + type: [array, "null"] description: Group roles that may join this event - nullable: true items: $ref: ./GroupRoleID.yaml seriesId: - type: string + type: ["null", string] description: So far unused, always "null" - nullable: true startsAt: type: string format: date-time diff --git a/openapi/components/schemas/CalendarEventRecurrence.yaml b/openapi/components/schemas/CalendarEventRecurrence.yaml index 54aa32a1..e0299299 100644 --- a/openapi/components/schemas/CalendarEventRecurrence.yaml +++ b/openapi/components/schemas/CalendarEventRecurrence.yaml @@ -1,7 +1,6 @@ title: CalendarEventRecurrence -type: object +type: ["null", object] description: Details about how a recurring event will be scheduled. If the event is to be scheduled indefinitely, this will lack an "end" property. -nullable: true properties: daysOfWeek: type: array diff --git a/openapi/components/schemas/CurrentUser.yaml b/openapi/components/schemas/CurrentUser.yaml index 33176f62..f687ee46 100644 --- a/openapi/components/schemas/CurrentUser.yaml +++ b/openapi/components/schemas/CurrentUser.yaml @@ -10,13 +10,11 @@ properties: example: 7 minimum: 0 accountDeletionDate: - type: string - nullable: true + type: ["null", string] format: date accountDeletionLog: - type: array + type: [array, "null"] description: " " - nullable: true items: $ref: ./AccountDeletionLog.yaml activeFriends: @@ -141,8 +139,7 @@ properties: type: string format: date-time last_mobile: - type: string - nullable: true + type: ["null", string] format: date-time last_platform: $ref: ./Platform.yaml @@ -201,8 +198,7 @@ properties: items: type: string queuedInstance: - type: string - nullable: true + type: ["null", string] receiveMobileInvitations: type: boolean state: @@ -239,8 +235,7 @@ properties: twoFactorAuthEnabled: type: boolean twoFactorAuthEnabledDate: - type: string - nullable: true + type: ["null", string] format: date-time unsubscribe: type: boolean @@ -248,11 +243,9 @@ properties: type: string format: date-time userLanguage: - type: string - nullable: true + type: ["null", string] userLanguageCode: - type: string - nullable: true + type: ["null", string] username: type: string description: Your own unique name, used during login. Distinct from diff --git a/openapi/components/schemas/CurrentUserPresence.yaml b/openapi/components/schemas/CurrentUserPresence.yaml index fd3f167f..e9eac611 100644 --- a/openapi/components/schemas/CurrentUserPresence.yaml +++ b/openapi/components/schemas/CurrentUserPresence.yaml @@ -4,8 +4,7 @@ properties: avatarImageUrl: type: string avatarThumbnail: - type: string - nullable: true + type: ["null", string] banner: type: string bannerColor: @@ -21,8 +20,7 @@ properties: displayName: type: string groups: - type: array - nullable: true + type: [array, "null"] items: $ref: ./GroupID.yaml iconFrame: @@ -32,15 +30,12 @@ properties: id: $ref: ./UserID.yaml instance: - type: string - nullable: true + type: ["null", string] instanceType: - type: string + type: ["null", string] description: either an InstanceType or an empty string - nullable: true isRejoining: - type: string - nullable: true + type: ["null", string] nameplateEffect: type: string platform: @@ -50,21 +45,17 @@ properties: profileEffect: type: string profilePicOverride: - type: string - nullable: true + type: ["null", string] status: - type: string + type: ["null", string] description: either a UserStatus or empty string - nullable: true travelingToInstance: - type: string - nullable: true + type: ["null", string] travelingToWorld: $ref: ./LocationID.yaml nullable: true userIcon: - type: string - nullable: true + type: ["null", string] world: $ref: ./WorldID.yaml nullable: true diff --git a/openapi/components/schemas/DynamicContentRow.yaml b/openapi/components/schemas/DynamicContentRow.yaml index 11a20134..aad3c796 100644 --- a/openapi/components/schemas/DynamicContentRow.yaml +++ b/openapi/components/schemas/DynamicContentRow.yaml @@ -2,13 +2,11 @@ title: DynamicContentRow type: object properties: anyStyle: - type: array - nullable: true + type: [array, "null"] items: type: string anyTag: - type: array - nullable: true + type: [array, "null"] items: type: string avatarSpecific: @@ -56,8 +54,7 @@ properties: nonFeaturedResults: type: string notag: - type: array - nullable: true + type: [array, "null"] items: type: string params: @@ -71,8 +68,7 @@ properties: description: 'Usually "ThisPlatformSupported", but can also be other values such as "all" or platform specific identifiers.' minLength: 1 region: - type: string - nullable: true + type: ["null", string] scope: type: string example: all @@ -85,8 +81,7 @@ properties: - type: "null" - $ref: ./LocalizedString.yaml else: - type: string - nullable: true + type: ["null", string] sortHeading: type: string minLength: 1 @@ -97,18 +92,15 @@ properties: type: string minLength: 1 style: - type: string - nullable: true + type: ["null", string] tag: - type: string + type: ["null", string] description: |- Tag to filter content for this row. Not a `Tag`: that type forbids the empty string, which this field uses for a row that is not tag-filtered. - nullable: true example: admin_spotlight_pc tags: - type: array - nullable: true + type: [array, "null"] items: $ref: ./Tag.yaml type: diff --git a/openapi/components/schemas/EconomyAccount.yaml b/openapi/components/schemas/EconomyAccount.yaml index 75529322..1d3aa4cd 100644 --- a/openapi/components/schemas/EconomyAccount.yaml +++ b/openapi/components/schemas/EconomyAccount.yaml @@ -1,21 +1,16 @@ title: EconomyAccount -type: object -nullable: true +type: ["null", object] properties: accountActivatedOn: - type: string - nullable: true + type: ["null", string] format: date-time accountId: - type: integer - nullable: true + type: [integer, "null"] accountSellerRegisteredOn: - type: string - nullable: true + type: ["null", string] format: date-time accountSellerStatus: - type: string - nullable: true + type: ["null", string] blocked: type: boolean canEarn: @@ -27,16 +22,13 @@ properties: limits: $ref: ./EconomyAccountLimits.yaml skrillEmail: - type: string - nullable: true + type: ["null", string] source: type: string tiliaId: - type: string - nullable: true + type: ["null", string] tiliaType: - type: string - nullable: true + type: ["null", string] userId: $ref: ./UserID.yaml required: diff --git a/openapi/components/schemas/EconomyPayout.yaml b/openapi/components/schemas/EconomyPayout.yaml index 380eb8e6..5d418384 100644 --- a/openapi/components/schemas/EconomyPayout.yaml +++ b/openapi/components/schemas/EconomyPayout.yaml @@ -22,24 +22,18 @@ properties: type: string format: date-time platformPaymentGuid: - type: string - nullable: true + type: ["null", string] platformPaymentMethod: - type: string - nullable: true + type: ["null", string] reversalDate: - type: string - nullable: true + type: ["null", string] format: date-time reversalReason: - type: string - nullable: true + type: ["null", string] reversalReasonCode: - type: integer - nullable: true + type: [integer, "null"] reversalTransactionId: - type: integer - nullable: true + type: [integer, "null"] transactionId: type: integer required: diff --git a/openapi/components/schemas/FavoritedWorld.yaml b/openapi/components/schemas/FavoritedWorld.yaml index de7e4584..663965fb 100644 --- a/openapi/components/schemas/FavoritedWorld.yaml +++ b/openapi/components/schemas/FavoritedWorld.yaml @@ -68,8 +68,7 @@ properties: example: 8 minimum: 0 previewYoutubeId: - type: string - nullable: true + type: ["null", string] publicationDate: type: string example: none diff --git a/openapi/components/schemas/Feedback.yaml b/openapi/components/schemas/Feedback.yaml index a6a84c9f..415fe5ef 100644 --- a/openapi/components/schemas/Feedback.yaml +++ b/openapi/components/schemas/Feedback.yaml @@ -9,8 +9,7 @@ properties: $ref: ./UserID.yaml nullable: true contentAuthorName: - type: string - nullable: true + type: ["null", string] contentId: type: string contentName: @@ -18,11 +17,9 @@ properties: contentType: type: string contentVersion: - type: integer - nullable: true + type: [integer, "null"] description: - type: string - nullable: true + type: ["null", string] id: $ref: ./FeedbackID.yaml reason: diff --git a/openapi/components/schemas/Group.yaml b/openapi/components/schemas/Group.yaml index be0d9ff4..923a7d1d 100644 --- a/openapi/components/schemas/Group.yaml +++ b/openapi/components/schemas/Group.yaml @@ -16,11 +16,9 @@ properties: items: type: string bannerId: - type: string - nullable: true + type: ["null", string] bannerUrl: - type: string - nullable: true + type: ["null", string] createdAt: type: string format: date-time @@ -33,11 +31,9 @@ properties: items: $ref: ./GroupGallery.yaml iconId: - type: string - nullable: true + type: ["null", string] iconUrl: - type: string - nullable: true + type: ["null", string] id: $ref: ./GroupID.yaml isVerified: @@ -50,8 +46,7 @@ properties: items: type: string lastPostCreatedAt: - type: string - nullable: true + type: ["null", string] format: date-time links: type: array @@ -78,14 +73,12 @@ properties: privacy: $ref: ./GroupPrivacy.yaml roles: - type: array + type: [array, "null"] description: Only returned if ?includeRoles=true is specified. - nullable: true items: $ref: ./GroupRole.yaml rules: - type: string - nullable: true + type: ["null", string] shortCode: $ref: ./GroupShortCode.yaml storeId: diff --git a/openapi/components/schemas/GroupAnnouncement.yaml b/openapi/components/schemas/GroupAnnouncement.yaml index d7e680dd..59e85210 100644 --- a/openapi/components/schemas/GroupAnnouncement.yaml +++ b/openapi/components/schemas/GroupAnnouncement.yaml @@ -8,8 +8,7 @@ properties: $ref: ./UserID.yaml nullable: true createdAt: - type: string - nullable: true + type: ["null", string] format: date-time editorId: $ref: ./UserID.yaml @@ -24,19 +23,15 @@ properties: $ref: ./FileID.yaml nullable: true imageUrl: - type: string - nullable: true + type: ["null", string] roleIds: $ref: ./GroupRoleIDList.yaml text: - type: string - nullable: true + type: ["null", string] title: - type: string - nullable: true + type: ["null", string] updatedAt: - type: string - nullable: true + type: ["null", string] format: date-time visibility: type: string diff --git a/openapi/components/schemas/GroupGallery.yaml b/openapi/components/schemas/GroupGallery.yaml index c1eee254..036aa831 100644 --- a/openapi/components/schemas/GroupGallery.yaml +++ b/openapi/components/schemas/GroupGallery.yaml @@ -22,27 +22,23 @@ properties: example: Example Gallery minLength: 1 roleIdsToAutoApprove: - type: array + type: [array, "null"] description: " " - nullable: true items: $ref: ./GroupRoleID.yaml roleIdsToManage: - type: array + type: [array, "null"] description: " " - nullable: true items: $ref: ./GroupRoleID.yaml roleIdsToSubmit: - type: array + type: [array, "null"] description: " " - nullable: true items: $ref: ./GroupRoleID.yaml roleIdsToView: - type: array + type: [array, "null"] description: " " - nullable: true items: $ref: ./GroupRoleID.yaml updatedAt: diff --git a/openapi/components/schemas/GroupMember.yaml b/openapi/components/schemas/GroupMember.yaml index 8d357905..bfb0e610 100644 --- a/openapi/components/schemas/GroupMember.yaml +++ b/openapi/components/schemas/GroupMember.yaml @@ -1,25 +1,20 @@ title: GroupMember -type: object +type: ["null", object] description: May be null when attempting to retrieve group membership for a user who is not part of the group -nullable: true properties: acceptedByDisplayName: - type: string + type: ["null", string] description: Only missing when explicitly fetching own user. - nullable: true acceptedById: - type: string + type: ["null", string] description: Only missing when explicitly fetching own user. - nullable: true bannedAt: - type: string + type: ["null", string] description: Only missing when explicitly fetching own user. - nullable: true format: date-time createdAt: - type: string + type: ["null", string] description: Only missing when explicitly fetching own user. - nullable: true format: date-time groupId: $ref: ./GroupID.yaml @@ -40,21 +35,18 @@ properties: type: boolean description: Only missing when explicitly fetching own user. joinedAt: - type: string - nullable: true + type: ["null", string] format: date-time lastPostReadAt: - type: string - nullable: true + type: ["null", string] format: date-time mRoleIds: type: array items: $ref: ./GroupRoleID.yaml managerNotes: - type: string + type: ["null", string] description: Only missing when explicitly fetching own user. - nullable: true membershipStatus: $ref: ./GroupMemberStatus.yaml roleIds: diff --git a/openapi/components/schemas/GroupMemberLimitedUser.yaml b/openapi/components/schemas/GroupMemberLimitedUser.yaml index 6b70ab59..e6418178 100644 --- a/openapi/components/schemas/GroupMemberLimitedUser.yaml +++ b/openapi/components/schemas/GroupMemberLimitedUser.yaml @@ -1,7 +1,6 @@ title: GroupMemberLimitedUser -type: object +type: ["null", object] description: "Only visible via the /groups/:groupId/members endpoint, **not** when fetching a specific user." -nullable: true properties: bannerColor: $ref: ./Color.yaml diff --git a/openapi/components/schemas/GroupMyMember.yaml b/openapi/components/schemas/GroupMyMember.yaml index 7b50caa5..c423850f 100644 --- a/openapi/components/schemas/GroupMyMember.yaml +++ b/openapi/components/schemas/GroupMyMember.yaml @@ -2,14 +2,11 @@ title: GroupMyMember type: object properties: acceptedByDisplayName: - type: string - nullable: true + type: ["null", string] acceptedById: - type: string - nullable: true + type: ["null", string] bannedAt: - type: string - nullable: true + type: ["null", string] createdAt: type: string format: date-time @@ -35,8 +32,7 @@ properties: type: string format: date-time lastPostReadAt: - type: string - nullable: true + type: ["null", string] format: date-time mRoleIds: type: array diff --git a/openapi/components/schemas/GroupPost.yaml b/openapi/components/schemas/GroupPost.yaml index 83431991..c321362b 100644 --- a/openapi/components/schemas/GroupPost.yaml +++ b/openapi/components/schemas/GroupPost.yaml @@ -17,8 +17,7 @@ properties: $ref: ./FileID.yaml nullable: true imageUrl: - type: string - nullable: true + type: ["null", string] roleIds: $ref: ./GroupRoleIDList.yaml text: diff --git a/openapi/components/schemas/InfoPush.yaml b/openapi/components/schemas/InfoPush.yaml index fd52b754..28d8bc58 100644 --- a/openapi/components/schemas/InfoPush.yaml +++ b/openapi/components/schemas/InfoPush.yaml @@ -9,8 +9,7 @@ properties: data: $ref: ./InfoPushData.yaml endDate: - type: string - nullable: true + type: ["null", string] format: date-time experiment: $ref: ./InfoPushExperiment.yaml @@ -38,9 +37,8 @@ properties: items: type: string startDate: - type: string + type: ["null", string] description: "" - nullable: true format: date-time tags: type: array diff --git a/openapi/components/schemas/InfoPushData.yaml b/openapi/components/schemas/InfoPushData.yaml index f9abb2c8..5199b5b2 100644 --- a/openapi/components/schemas/InfoPushData.yaml +++ b/openapi/components/schemas/InfoPushData.yaml @@ -45,8 +45,7 @@ properties: iconImageUrl: type: string imageUrl: - type: string - nullable: true + type: ["null", string] ipsQuery: $ref: ./InfoPushIpsQuery.yaml isNew: @@ -68,9 +67,8 @@ properties: $ref: ./InfoPushDataClickable.yaml overrideName: {} rows: - type: integer + type: [integer, "null"] description: Number of rows to render. - nullable: true search: $ref: ./InfoPushDataSearch.yaml shortName: @@ -82,13 +80,11 @@ properties: - type: "null" - $ref: ./LocalizedString.yaml else: - type: string - nullable: true + type: ["null", string] template: type: string thumbnailImageUrl: - type: string - nullable: true + type: ["null", string] tooltipDescription: x-if: when: jsonschema diff --git a/openapi/components/schemas/Instance.yaml b/openapi/components/schemas/Instance.yaml index 71a3e1b6..b86e527e 100644 --- a/openapi/components/schemas/Instance.yaml +++ b/openapi/components/schemas/Instance.yaml @@ -10,11 +10,9 @@ properties: default: true example: true ageGate: - type: boolean - nullable: true + type: [boolean, "null"] calendarEntryId: - type: string - nullable: true + type: ["null", string] canRequestInvite: type: boolean default: true @@ -32,8 +30,7 @@ properties: description: Always returns "unknown". minLength: 1 closedAt: - type: string - nullable: true + type: ["null", string] format: date-time contentSettings: $ref: ./InstanceContentSettings.yaml @@ -44,14 +41,12 @@ properties: $ref: ./UserID.yaml nullable: true description: - type: string - nullable: true + type: ["null", string] disabledPropAbilities: type: array items: {} displayName: - type: string - nullable: true + type: ["null", string] dominantLanguage: type: string friends: @@ -60,13 +55,11 @@ properties: type: boolean default: false gameServerVersion: - type: integer - nullable: true + type: [integer, "null"] groupAccessType: $ref: ./GroupAccessType.yaml hardClose: - type: boolean - nullable: true + type: [boolean, "null"] hasCapacityForYou: type: boolean hidden: @@ -76,8 +69,7 @@ properties: instanceId: $ref: ./InstanceID.yaml instancePersistenceEnabled: - type: boolean - nullable: true + type: [boolean, "null"] languageRatio: type: object additionalProperties: true @@ -94,8 +86,7 @@ properties: location: $ref: ./LocationID.yaml minimumAvatarPerformance: - type: string - nullable: true + type: ["null", string] n_users: type: integer example: 6 @@ -116,8 +107,7 @@ properties: platforms: $ref: ./InstancePlatforms.yaml playerPersistenceEnabled: - type: boolean - nullable: true + type: [boolean, "null"] private: $ref: ./UserID.yaml queueEnabled: @@ -139,8 +129,7 @@ properties: example: 7eavhhng minLength: 1 shortName: - type: string - nullable: true + type: ["null", string] example: 02u7yz8j minLength: 1 strict: diff --git a/openapi/components/schemas/InstanceOwnerId.yaml b/openapi/components/schemas/InstanceOwnerId.yaml index ea10736c..0ef34e71 100644 --- a/openapi/components/schemas/InstanceOwnerId.yaml +++ b/openapi/components/schemas/InstanceOwnerId.yaml @@ -1,5 +1,4 @@ title: InstanceOwnerId -type: string +type: ["null", string] description: A groupId if the instance type is "group", null if instance type is public, or a userId otherwise -nullable: true example: usr_c1644b5b-3ca4-45b4-97c6-a2a0de70d469 diff --git a/openapi/components/schemas/InstanceShortNameResponse.yaml b/openapi/components/schemas/InstanceShortNameResponse.yaml index 25e37b6f..77edf7ec 100644 --- a/openapi/components/schemas/InstanceShortNameResponse.yaml +++ b/openapi/components/schemas/InstanceShortNameResponse.yaml @@ -6,8 +6,7 @@ properties: example: 7eavhhng minLength: 1 shortName: - type: string - nullable: true + type: ["null", string] example: 02u7yz8j minLength: 1 required: diff --git a/openapi/components/schemas/InventoryDrop.yaml b/openapi/components/schemas/InventoryDrop.yaml index 19c2fb80..52900229 100644 --- a/openapi/components/schemas/InventoryDrop.yaml +++ b/openapi/components/schemas/InventoryDrop.yaml @@ -8,8 +8,7 @@ properties: example: "2025-06-10T20:37:31.837Z" format: date-time dropExpiryDate: - type: string - nullable: true + type: ["null", string] format: date-time dropStatus: type: string diff --git a/openapi/components/schemas/InventoryItem.yaml b/openapi/components/schemas/InventoryItem.yaml index 9b18c308..3d458276 100644 --- a/openapi/components/schemas/InventoryItem.yaml +++ b/openapi/components/schemas/InventoryItem.yaml @@ -23,8 +23,7 @@ properties: items: $ref: ./InventoryEquipSlot.yaml expiryDate: - type: string - nullable: true + type: ["null", string] example: "2025-06-13T05:00:45.455Z" format: date-time flags: diff --git a/openapi/components/schemas/Jam.yaml b/openapi/components/schemas/Jam.yaml index b0b2a2d0..bce2e98a 100644 --- a/openapi/components/schemas/Jam.yaml +++ b/openapi/components/schemas/Jam.yaml @@ -26,25 +26,20 @@ properties: type: object properties: closed: - type: string - nullable: true + type: ["null", string] format: date-time submissionsClosed: - type: string - nullable: true + type: ["null", string] format: date-time submissionsOpened: - type: string - nullable: true + type: ["null", string] format: date-time winnersSelected: - type: string - nullable: true + type: ["null", string] example: null format: date-time submissionContentGateDate: - type: string - nullable: true + type: ["null", string] format: date-time submissionContentGated: type: boolean diff --git a/openapi/components/schemas/LimitedGroup.yaml b/openapi/components/schemas/LimitedGroup.yaml index e7015f78..3b7e40c6 100644 --- a/openapi/components/schemas/LimitedGroup.yaml +++ b/openapi/components/schemas/LimitedGroup.yaml @@ -2,11 +2,9 @@ title: LimitedGroup type: object properties: bannerId: - type: string - nullable: true + type: ["null", string] bannerUrl: - type: string - nullable: true + type: ["null", string] createdAt: type: string format: date-time @@ -20,11 +18,9 @@ properties: items: $ref: ./GroupGallery.yaml iconId: - type: string - nullable: true + type: ["null", string] iconUrl: - type: string - nullable: true + type: ["null", string] id: $ref: ./GroupID.yaml isSearchable: @@ -40,8 +36,7 @@ properties: ownerId: $ref: ./UserID.yaml rules: - type: string - nullable: true + type: ["null", string] shortCode: $ref: ./GroupShortCode.yaml tags: diff --git a/openapi/components/schemas/LimitedUnityPackage.yaml b/openapi/components/schemas/LimitedUnityPackage.yaml index 3489c046..05d74a84 100644 --- a/openapi/components/schemas/LimitedUnityPackage.yaml +++ b/openapi/components/schemas/LimitedUnityPackage.yaml @@ -3,8 +3,7 @@ type: object description: "" properties: created_at: - type: string - nullable: true + type: ["null", string] format: date-time platform: $ref: ./Platform.yaml diff --git a/openapi/components/schemas/LimitedUserFriend.yaml b/openapi/components/schemas/LimitedUserFriend.yaml index 2f3c310d..051f4ce4 100644 --- a/openapi/components/schemas/LimitedUserFriend.yaml +++ b/openapi/components/schemas/LimitedUserFriend.yaml @@ -25,16 +25,13 @@ properties: isFriend: type: boolean last_activity: - type: string - nullable: true + type: ["null", string] format: date-time last_login: - type: string - nullable: true + type: ["null", string] format: date-time last_mobile: - type: string - nullable: true + type: ["null", string] format: date-time last_platform: $ref: ./Platform.yaml diff --git a/openapi/components/schemas/LimitedUserGroups.yaml b/openapi/components/schemas/LimitedUserGroups.yaml index 7774afb4..76abffdd 100644 --- a/openapi/components/schemas/LimitedUserGroups.yaml +++ b/openapi/components/schemas/LimitedUserGroups.yaml @@ -2,11 +2,9 @@ title: LimitedUserGroups type: object properties: bannerId: - type: string - nullable: true + type: ["null", string] bannerUrl: - type: string - nullable: true + type: ["null", string] description: type: string discriminator: @@ -14,22 +12,18 @@ properties: groupId: $ref: ./GroupID.yaml iconId: - type: string - nullable: true + type: ["null", string] iconUrl: - type: string - nullable: true + type: ["null", string] id: $ref: ./GroupMemberID.yaml isRepresenting: type: boolean lastPostCreatedAt: - type: string - nullable: true + type: ["null", string] format: date-time lastPostReadAt: - type: string - nullable: true + type: ["null", string] format: date-time memberCount: type: integer diff --git a/openapi/components/schemas/LimitedUserInstance.yaml b/openapi/components/schemas/LimitedUserInstance.yaml index a2f2e311..6e1f3cc4 100644 --- a/openapi/components/schemas/LimitedUserInstance.yaml +++ b/openapi/components/schemas/LimitedUserInstance.yaml @@ -24,8 +24,7 @@ properties: currentAvatarThumbnailImageUrl: $ref: ./CurrentAvatarThumbnailImageUrl.yaml date_joined: - type: string - nullable: true + type: ["null", string] format: date-time developerType: $ref: ./DeveloperType.yaml @@ -40,12 +39,10 @@ properties: isFriend: type: boolean last_activity: - type: string - nullable: true + type: ["null", string] format: date-time last_mobile: - type: string - nullable: true + type: ["null", string] format: date-time last_platform: $ref: ./Platform.yaml diff --git a/openapi/components/schemas/LimitedWorld.yaml b/openapi/components/schemas/LimitedWorld.yaml index d61d6eb6..a70c4e19 100644 --- a/openapi/components/schemas/LimitedWorld.yaml +++ b/openapi/components/schemas/LimitedWorld.yaml @@ -59,8 +59,7 @@ properties: example: 8 minimum: 0 previewYoutubeId: - type: string - nullable: true + type: ["null", string] publicationDate: type: string example: none diff --git a/openapi/components/schemas/ModerationReport.yaml b/openapi/components/schemas/ModerationReport.yaml index 0c832c4d..9394369d 100644 --- a/openapi/components/schemas/ModerationReport.yaml +++ b/openapi/components/schemas/ModerationReport.yaml @@ -11,8 +11,7 @@ properties: contentName: type: string contentThumbnailImageUrl: - type: string - nullable: true + type: ["null", string] description: type: string description: The subjective reason for the report diff --git a/openapi/components/schemas/Notification.yaml b/openapi/components/schemas/Notification.yaml index 4637ed91..40ad479f 100644 --- a/openapi/components/schemas/Notification.yaml +++ b/openapi/components/schemas/Notification.yaml @@ -7,9 +7,28 @@ properties: format: date-time details: type: string - description: "**NOTICE:** This is not a JSON object when received from the REST API, but it is when received from the Websocket API. When received from the REST API, this is a json **encoded** object, meaning you have to json-de-encode to get the NotificationDetail object depending on the NotificationType." - default: "{}" - example: "OneOf: {}, NotificationDetailBoop, NotificationDetailInvite, NotificationDetailInviteResponse, NotificationDetailRequestInvite, NotificationDetailRequestInviteResponse, NotificationDetailVoteToKick" + description: JSON-encoded NotificationDetail + contentMediaType: application/json + x-if: + when: jsonschema + then: + contentSchema: + oneOf: + - $ref: ./NotificationDetailBoop.yaml + - $ref: ./NotificationDetailInvite.yaml + - $ref: ./NotificationDetailInviteResponse.yaml + - $ref: ./NotificationDetailRequestInvite.yaml + - $ref: ./NotificationDetailRequestInviteResponse.yaml + - $ref: ./NotificationDetailVoteToKick.yaml + discriminator: + propertyName: type + mapping: + boop: ./NotificationDetailBoop.yaml + invite: ./NotificationDetailInvite.yaml + invite-response: ./NotificationDetailInviteResponse.yaml + request-invite: ./NotificationDetailRequestInvite.yaml + request-invite-response: ./NotificationDetailRequestInviteResponse.yaml + vote-to-kick: ./NotificationDetailVoteToKick.yaml id: type: string minLength: 1 @@ -27,9 +46,8 @@ properties: senderUserId: $ref: ./UserID.yaml senderUsername: - type: string + type: ["null", string] description: The name of the user who sent the notification. - nullable: true minLength: 1 type: $ref: ./NotificationType.yaml diff --git a/openapi/components/schemas/NotificationV2.yaml b/openapi/components/schemas/NotificationV2.yaml index 99ce7b4f..b607fe0e 100644 --- a/openapi/components/schemas/NotificationV2.yaml +++ b/openapi/components/schemas/NotificationV2.yaml @@ -30,38 +30,31 @@ properties: type: string format: date-time expiryAfterSeen: - type: integer - nullable: true + type: [integer, "null"] id: type: string ignoreDND: type: boolean imageUrl: - type: string - nullable: true + type: ["null", string] isSystem: type: boolean link: - type: string - nullable: true + type: ["null", string] example: "event:grp_00000000-0000-0000-0000-000000000000,cal_00000000-0000-0000\ -0000-000000000000" linkText: - type: string - nullable: true + type: ["null", string] linkTextKey: - type: string - nullable: true + type: ["null", string] message: type: string messageKey: - type: string - nullable: true + type: ["null", string] receiverUserId: $ref: ./UserID.yaml relatedNotificationsId: - type: string - nullable: true + type: ["null", string] example: cal_00000000-0000-0000-0000-000000000000 requireSeen: type: boolean @@ -75,13 +68,11 @@ properties: $ref: ./UserID.yaml nullable: true senderUsername: - type: string - nullable: true + type: ["null", string] title: type: string titleKey: - type: string - nullable: true + type: ["null", string] type: $ref: ./NotificationV2Type.yaml updatedAt: diff --git a/openapi/components/schemas/NotificationV2DetailsBoop.yaml b/openapi/components/schemas/NotificationV2DetailsBoop.yaml index c9f5de1b..c280f218 100644 --- a/openapi/components/schemas/NotificationV2DetailsBoop.yaml +++ b/openapi/components/schemas/NotificationV2DetailsBoop.yaml @@ -5,8 +5,7 @@ properties: emojiId: $ref: ../schemas/EmojiID.yaml emojiVersion: - type: integer - nullable: true + type: [integer, "null"] inventoryItemId: $ref: ../schemas/InventoryItemID.yaml required: diff --git a/openapi/components/schemas/NotificationV2Response.yaml b/openapi/components/schemas/NotificationV2Response.yaml index 3a12a9ad..9a424d65 100644 --- a/openapi/components/schemas/NotificationV2Response.yaml +++ b/openapi/components/schemas/NotificationV2Response.yaml @@ -8,8 +8,7 @@ properties: text: type: string textKey: - type: string - nullable: true + type: ["null", string] type: $ref: ./NotificationV2ResponseType.yaml required: diff --git a/openapi/components/schemas/PrivateProfile.yaml b/openapi/components/schemas/PrivateProfile.yaml index 0447a6dc..996fdfd0 100644 --- a/openapi/components/schemas/PrivateProfile.yaml +++ b/openapi/components/schemas/PrivateProfile.yaml @@ -10,8 +10,7 @@ properties: isFriend: type: boolean note: - type: string - nullable: true + type: ["null", string] status: $ref: ./UserStatus.yaml statusDescription: diff --git a/openapi/components/schemas/Product.yaml b/openapi/components/schemas/Product.yaml index eb9fcd07..22001650 100644 --- a/openapi/components/schemas/Product.yaml +++ b/openapi/components/schemas/Product.yaml @@ -26,8 +26,7 @@ properties: $ref: ./FileID.yaml nullable: true imageUrl: - type: string - nullable: true + type: ["null", string] parentListings: type: array items: @@ -49,8 +48,7 @@ properties: items: $ref: ./Tag.yaml updated: - type: string - nullable: true + type: ["null", string] format: date-time useForSubscriberList: type: boolean diff --git a/openapi/components/schemas/ProductListing.yaml b/openapi/components/schemas/ProductListing.yaml index 2b75a471..ad608eec 100644 --- a/openapi/components/schemas/ProductListing.yaml +++ b/openapi/components/schemas/ProductListing.yaml @@ -10,8 +10,7 @@ properties: buyerRefundable: type: boolean collabUserDisplayName: - type: string - nullable: true + type: ["null", string] collabUserId: $ref: ./UserID.yaml created: @@ -22,19 +21,16 @@ properties: displayName: type: string duration: - type: integer - nullable: true + type: [integer, "null"] durationType: - type: string - nullable: true + type: ["null", string] groupIcon: $ref: ./FileID.yaml nullable: true groupId: $ref: ./GroupID.yaml groupName: - type: string - nullable: true + type: ["null", string] hasAvatar: type: boolean hasCompanion: @@ -53,8 +49,7 @@ properties: $ref: ./FileID.yaml nullable: true imageUrl: - type: string - nullable: true + type: ["null", string] listingType: $ref: ./ProductListingType.yaml listingVariants: @@ -114,8 +109,7 @@ properties: vrcPlusDiscountPrice: type: integer whenToExpire: - type: string - nullable: true + type: ["null", string] format: date-time required: - active diff --git a/openapi/components/schemas/ProductPurchase.yaml b/openapi/components/schemas/ProductPurchase.yaml index 7d9862e5..39965037 100644 --- a/openapi/components/schemas/ProductPurchase.yaml +++ b/openapi/components/schemas/ProductPurchase.yaml @@ -58,8 +58,7 @@ properties: purchaseDurationType: type: string purchaseEndDate: - type: string - nullable: true + type: ["null", string] format: date-time purchaseFee: type: integer @@ -72,12 +71,10 @@ properties: purchaseQuantity: type: integer purchaseStartDate: - type: string - nullable: true + type: ["null", string] format: date-time purchaseToken: - type: object - nullable: true + type: ["null", object] purchaseType: type: string purchaseUnitPrice: diff --git a/openapi/components/schemas/ProductPurchaseProduct.yaml b/openapi/components/schemas/ProductPurchaseProduct.yaml index f0bf8a44..c8519384 100644 --- a/openapi/components/schemas/ProductPurchaseProduct.yaml +++ b/openapi/components/schemas/ProductPurchaseProduct.yaml @@ -9,8 +9,7 @@ properties: $ref: ./FileID.yaml nullable: true licenseId: - type: string - nullable: true + type: ["null", string] productType: $ref: ./ProductType.yaml required: diff --git a/openapi/components/schemas/ProfileRepresentedGroup.yaml b/openapi/components/schemas/ProfileRepresentedGroup.yaml index 259972c4..a493a8f7 100644 --- a/openapi/components/schemas/ProfileRepresentedGroup.yaml +++ b/openapi/components/schemas/ProfileRepresentedGroup.yaml @@ -2,11 +2,9 @@ title: ProfileRepresentedGroup type: object properties: bannerUrl: - type: string - nullable: true + type: ["null", string] iconUrl: - type: string - nullable: true + type: ["null", string] id: $ref: ./GroupID.yaml name: diff --git a/openapi/components/schemas/Prop.yaml b/openapi/components/schemas/Prop.yaml index 43a7df88..8d4e0bb5 100644 --- a/openapi/components/schemas/Prop.yaml +++ b/openapi/components/schemas/Prop.yaml @@ -34,8 +34,7 @@ properties: thumbnailImageUrl: type: string unityPackageUrl: - type: string - nullable: true + type: ["null", string] unityPackages: type: array items: diff --git a/openapi/components/schemas/RepresentedGroup.yaml b/openapi/components/schemas/RepresentedGroup.yaml index 350516df..2e5a6816 100644 --- a/openapi/components/schemas/RepresentedGroup.yaml +++ b/openapi/components/schemas/RepresentedGroup.yaml @@ -2,11 +2,9 @@ title: RepresentedGroup type: object properties: bannerId: - type: string - nullable: true + type: ["null", string] bannerUrl: - type: string - nullable: true + type: ["null", string] description: type: string discriminator: @@ -14,11 +12,9 @@ properties: groupId: $ref: ./GroupID.yaml iconId: - type: string - nullable: true + type: ["null", string] iconUrl: - type: string - nullable: true + type: ["null", string] isRepresenting: type: boolean memberCount: diff --git a/openapi/components/schemas/StoreContext.yaml b/openapi/components/schemas/StoreContext.yaml index 47d9f011..c5bc779f 100644 --- a/openapi/components/schemas/StoreContext.yaml +++ b/openapi/components/schemas/StoreContext.yaml @@ -4,8 +4,7 @@ properties: id: type: string imageUrl: - type: string - nullable: true + type: ["null", string] name: type: string required: diff --git a/openapi/components/schemas/Transaction.yaml b/openapi/components/schemas/Transaction.yaml index 4205596b..827e9df9 100644 --- a/openapi/components/schemas/Transaction.yaml +++ b/openapi/components/schemas/Transaction.yaml @@ -15,8 +15,7 @@ properties: type: string format: date-time error: - type: string - nullable: true + type: ["null", string] id: $ref: ./TransactionID.yaml isGift: diff --git a/openapi/components/schemas/UnityPackage.yaml b/openapi/components/schemas/UnityPackage.yaml index 9cd143cf..cde7c86b 100644 --- a/openapi/components/schemas/UnityPackage.yaml +++ b/openapi/components/schemas/UnityPackage.yaml @@ -3,8 +3,7 @@ type: object description: "" properties: assetUrl: - type: string - nullable: true + type: ["null", string] example: https://api.vrchat.cloud/api/1/file/file_cd0caa7b-69ba-4715-8dfe-7d667a9d2537/65/file assetUrlObject: type: object @@ -14,15 +13,13 @@ properties: example: 4 minimum: 0 created_at: - type: string - nullable: true + type: ["null", string] example: "2020-09-10T06:13:27.777Z" format: date-time id: $ref: ./UnityPackageID.yaml impostorUrl: - type: string - nullable: true + type: ["null", string] impostorizerVersion: type: string example: 0.17.0 @@ -51,8 +48,7 @@ properties: variant: type: string worldSignature: - type: string - nullable: true + type: ["null", string] example: AHiPAWerwCpeYrxDthF5TU2SdUWEWnm43UAn8PKRXlS8k8tVRQ== required: - assetVersion diff --git a/openapi/components/schemas/User.yaml b/openapi/components/schemas/User.yaml index 62ca3ded..bdc2b19e 100644 --- a/openapi/components/schemas/User.yaml +++ b/openapi/components/schemas/User.yaml @@ -6,11 +6,9 @@ properties: acceptedTOSVersion: type: integer accountDeletionDate: - type: string - nullable: true + type: ["null", string] accountDeletionLog: - type: array - nullable: true + type: [array, "null"] items: {} ageVerificationStatus: $ref: ./AgeVerificationStatus.yaml @@ -60,8 +58,7 @@ properties: type: string description: Either a date-time or empty string. last_mobile: - type: string - nullable: true + type: ["null", string] last_platform: $ref: ./Platform.yaml location: diff --git a/openapi/components/schemas/WebsocketClearNotification.yaml b/openapi/components/schemas/WebsocketClearNotification.yaml new file mode 100644 index 00000000..a723ee56 --- /dev/null +++ b/openapi/components/schemas/WebsocketClearNotification.yaml @@ -0,0 +1,4 @@ +title: WebsocketClearNotification +type: object +# Todo: is this correct, or is some special handling nessesary in WebsocketMessageNormal? +additionalProperties: false diff --git a/openapi/components/schemas/WebsocketContentRefresh.yaml b/openapi/components/schemas/WebsocketContentRefresh.yaml new file mode 100644 index 00000000..968f5dee --- /dev/null +++ b/openapi/components/schemas/WebsocketContentRefresh.yaml @@ -0,0 +1,21 @@ +title: WebsocketContentRefresh +type: object +properties: + actionType: + $ref: ./WebsocketContentRefreshActionType.yaml + contentType: + $ref: ./WebsocketContentRefreshContentType.yaml + fileId: + $ref: ./FileID.yaml + itemId: + # TODO: is this correct? + $ref: ./InventoryTemplateID.yaml + itemType: + # TODO: is this correct? + $ref: ./InventoryItemType.yaml +required: + - actionType + - contentType + - fileId + - itemId + - itemType diff --git a/openapi/components/schemas/WebsocketContentRefreshActionType.yaml b/openapi/components/schemas/WebsocketContentRefreshActionType.yaml new file mode 100644 index 00000000..e172e5ec --- /dev/null +++ b/openapi/components/schemas/WebsocketContentRefreshActionType.yaml @@ -0,0 +1,8 @@ +title: WebsocketContentRefreshActionType +type: string +enum: + - add + - created + - delete + - deleted +example: created diff --git a/openapi/components/schemas/WebsocketContentRefreshContentType.yaml b/openapi/components/schemas/WebsocketContentRefreshContentType.yaml new file mode 100644 index 00000000..a9ca170b --- /dev/null +++ b/openapi/components/schemas/WebsocketContentRefreshContentType.yaml @@ -0,0 +1,3 @@ +title: WebsocketContentRefreshContentType +type: string +# Todo: How to type this, since this is technically a non-exhaustive enum? diff --git a/openapi/components/schemas/WebsocketContentRefreshEncoded.yaml b/openapi/components/schemas/WebsocketContentRefreshEncoded.yaml new file mode 100644 index 00000000..306f27c4 --- /dev/null +++ b/openapi/components/schemas/WebsocketContentRefreshEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketContentRefreshEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketContentRefresh.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketFriendActive.yaml b/openapi/components/schemas/WebsocketFriendActive.yaml new file mode 100644 index 00000000..294fc5d2 --- /dev/null +++ b/openapi/components/schemas/WebsocketFriendActive.yaml @@ -0,0 +1,13 @@ +title: WebsocketFriendActive +type: object +properties: + platform: + $ref: ./Platform.yaml + user: + $ref: ./User.yaml + userId: + $ref: ./UserID.yaml +required: + - platform + - user + - userId diff --git a/openapi/components/schemas/WebsocketFriendActiveEncoded.yaml b/openapi/components/schemas/WebsocketFriendActiveEncoded.yaml new file mode 100644 index 00000000..681d6269 --- /dev/null +++ b/openapi/components/schemas/WebsocketFriendActiveEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketFriendActiveEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketFriendActive.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketFriendAdd.yaml b/openapi/components/schemas/WebsocketFriendAdd.yaml new file mode 100644 index 00000000..0703a2e7 --- /dev/null +++ b/openapi/components/schemas/WebsocketFriendAdd.yaml @@ -0,0 +1,10 @@ +title: WebsocketFriendAdd +type: object +properties: + user: + $ref: ./User.yaml + userId: + $ref: ./UserID.yaml +required: + - user + - userId diff --git a/openapi/components/schemas/WebsocketFriendAddEncoded.yaml b/openapi/components/schemas/WebsocketFriendAddEncoded.yaml new file mode 100644 index 00000000..961e70bd --- /dev/null +++ b/openapi/components/schemas/WebsocketFriendAddEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketFriendAddEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketFriendAdd.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketFriendDelete.yaml b/openapi/components/schemas/WebsocketFriendDelete.yaml new file mode 100644 index 00000000..d30c989b --- /dev/null +++ b/openapi/components/schemas/WebsocketFriendDelete.yaml @@ -0,0 +1,7 @@ +title: WebsocketFriendDelete +type: object +properties: + userId: + $ref: ./UserID.yaml +required: + - userId diff --git a/openapi/components/schemas/WebsocketFriendDeleteEncoded.yaml b/openapi/components/schemas/WebsocketFriendDeleteEncoded.yaml new file mode 100644 index 00000000..f0389c23 --- /dev/null +++ b/openapi/components/schemas/WebsocketFriendDeleteEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketFriendDeleteEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketFriendDelete.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketFriendLocation.yaml b/openapi/components/schemas/WebsocketFriendLocation.yaml new file mode 100644 index 00000000..f052dfdd --- /dev/null +++ b/openapi/components/schemas/WebsocketFriendLocation.yaml @@ -0,0 +1,22 @@ +title: WebsocketFriendLocation +type: object +properties: + canRequestInvite: + type: boolean + location: + $ref: ./LocationID.yaml + travelingToLocation: + $ref: ./LocationID.yaml + user: + $ref: ./User.yaml + userId: + $ref: ./UserID.yaml + worldId: + $ref: ./WorldID.yaml +required: + - canRequestInvite + - location + - travelingToLocation + - user + - userId + - worldId diff --git a/openapi/components/schemas/WebsocketFriendLocationEncoded.yaml b/openapi/components/schemas/WebsocketFriendLocationEncoded.yaml new file mode 100644 index 00000000..bd073b41 --- /dev/null +++ b/openapi/components/schemas/WebsocketFriendLocationEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketFriendLocationEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketFriendLocation.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketFriendOffline.yaml b/openapi/components/schemas/WebsocketFriendOffline.yaml new file mode 100644 index 00000000..93a8c9d4 --- /dev/null +++ b/openapi/components/schemas/WebsocketFriendOffline.yaml @@ -0,0 +1,10 @@ +title: WebsocketFriendOffline +type: object +properties: + platform: + $ref: ./Platform.yaml + userId: + $ref: ./UserID.yaml +required: + - platform + - userId diff --git a/openapi/components/schemas/WebsocketFriendOfflineEncoded.yaml b/openapi/components/schemas/WebsocketFriendOfflineEncoded.yaml new file mode 100644 index 00000000..46ee7bac --- /dev/null +++ b/openapi/components/schemas/WebsocketFriendOfflineEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketFriendOfflineEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketFriendOffline.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketFriendOnline.yaml b/openapi/components/schemas/WebsocketFriendOnline.yaml new file mode 100644 index 00000000..9f51e998 --- /dev/null +++ b/openapi/components/schemas/WebsocketFriendOnline.yaml @@ -0,0 +1,16 @@ +title: WebsocketFriendOnline +type: object +properties: + canRequestInvite: + type: boolean + location: + $ref: ./LocationID.yaml + platform: + $ref: ./Platform.yaml + userId: + $ref: ./UserID.yaml +required: + - canRequestInvite + - location + - platform + - userId diff --git a/openapi/components/schemas/WebsocketFriendOnlineEncoded.yaml b/openapi/components/schemas/WebsocketFriendOnlineEncoded.yaml new file mode 100644 index 00000000..185506b9 --- /dev/null +++ b/openapi/components/schemas/WebsocketFriendOnlineEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketFriendOnlineEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketFriendOnline.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketFriendUpdate.yaml b/openapi/components/schemas/WebsocketFriendUpdate.yaml new file mode 100644 index 00000000..b6e6b8e4 --- /dev/null +++ b/openapi/components/schemas/WebsocketFriendUpdate.yaml @@ -0,0 +1,10 @@ +title: WebsocketFriendUpdate +type: object +properties: + user: + $ref: ./User.yaml + userId: + $ref: ./UserID.yaml +required: + - user + - userId diff --git a/openapi/components/schemas/WebsocketFriendUpdateEncoded.yaml b/openapi/components/schemas/WebsocketFriendUpdateEncoded.yaml new file mode 100644 index 00000000..a700984e --- /dev/null +++ b/openapi/components/schemas/WebsocketFriendUpdateEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketFriendUpdateEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketFriendUpdate.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketGroupJoined.yaml b/openapi/components/schemas/WebsocketGroupJoined.yaml new file mode 100644 index 00000000..2014e644 --- /dev/null +++ b/openapi/components/schemas/WebsocketGroupJoined.yaml @@ -0,0 +1,7 @@ +title: WebsocketGroupJoined +type: object +properties: + groupId: + $ref: ./GroupID.yaml +required: + - groupId diff --git a/openapi/components/schemas/WebsocketGroupJoinedEncoded.yaml b/openapi/components/schemas/WebsocketGroupJoinedEncoded.yaml new file mode 100644 index 00000000..1604bf57 --- /dev/null +++ b/openapi/components/schemas/WebsocketGroupJoinedEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketGroupJoinedEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketGroupJoined.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketGroupLeft.yaml b/openapi/components/schemas/WebsocketGroupLeft.yaml new file mode 100644 index 00000000..2d1613f3 --- /dev/null +++ b/openapi/components/schemas/WebsocketGroupLeft.yaml @@ -0,0 +1,7 @@ +title: WebsocketGroupLeft +type: object +properties: + groupId: + $ref: ./GroupID.yaml +required: + - groupId diff --git a/openapi/components/schemas/WebsocketGroupLeftEncoded.yaml b/openapi/components/schemas/WebsocketGroupLeftEncoded.yaml new file mode 100644 index 00000000..0e7f2471 --- /dev/null +++ b/openapi/components/schemas/WebsocketGroupLeftEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketGroupLeftEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketGroupLeft.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketGroupMemberUpdated.yaml b/openapi/components/schemas/WebsocketGroupMemberUpdated.yaml new file mode 100644 index 00000000..e9cea6bf --- /dev/null +++ b/openapi/components/schemas/WebsocketGroupMemberUpdated.yaml @@ -0,0 +1,7 @@ +title: WebsocketGroupMemberUpdated +type: object +properties: + member: + $ref: ./GroupMemberLimitedUser.yaml +required: + - member diff --git a/openapi/components/schemas/WebsocketGroupMemberUpdatedEncoded.yaml b/openapi/components/schemas/WebsocketGroupMemberUpdatedEncoded.yaml new file mode 100644 index 00000000..0b0a31c9 --- /dev/null +++ b/openapi/components/schemas/WebsocketGroupMemberUpdatedEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketGroupMemberUpdatedEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketGroupMemberUpdated.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketGroupRoleUpdated.yaml b/openapi/components/schemas/WebsocketGroupRoleUpdated.yaml new file mode 100644 index 00000000..bdfa8302 --- /dev/null +++ b/openapi/components/schemas/WebsocketGroupRoleUpdated.yaml @@ -0,0 +1,7 @@ +title: WebsocketGroupRoleUpdated +type: object +properties: + role: + $ref: ./GroupRole.yaml +required: + - role diff --git a/openapi/components/schemas/WebsocketGroupRoleUpdatedEncoded.yaml b/openapi/components/schemas/WebsocketGroupRoleUpdatedEncoded.yaml new file mode 100644 index 00000000..62103f7d --- /dev/null +++ b/openapi/components/schemas/WebsocketGroupRoleUpdatedEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketGroupRoleUpdatedEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketGroupRoleUpdated.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketHideNotification.yaml b/openapi/components/schemas/WebsocketHideNotification.yaml new file mode 100644 index 00000000..199ba5f4 --- /dev/null +++ b/openapi/components/schemas/WebsocketHideNotification.yaml @@ -0,0 +1,7 @@ +title: WebsocketHideNotification +type: object +properties: + content: + $ref: ./NotificationID.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketInstanceQueueJoined.yaml b/openapi/components/schemas/WebsocketInstanceQueueJoined.yaml new file mode 100644 index 00000000..a8c96408 --- /dev/null +++ b/openapi/components/schemas/WebsocketInstanceQueueJoined.yaml @@ -0,0 +1,10 @@ +title: WebsocketInstanceQueueJoined +type: object +properties: + location: + $ref: ./LocationID.yaml + position: + type: integer +required: + - location + - position diff --git a/openapi/components/schemas/WebsocketInstanceQueueJoinedEncoded.yaml b/openapi/components/schemas/WebsocketInstanceQueueJoinedEncoded.yaml new file mode 100644 index 00000000..eabb4155 --- /dev/null +++ b/openapi/components/schemas/WebsocketInstanceQueueJoinedEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketInstanceQueueJoinedEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketInstanceQueueJoined.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketInstanceQueueReady.yaml b/openapi/components/schemas/WebsocketInstanceQueueReady.yaml new file mode 100644 index 00000000..d2647997 --- /dev/null +++ b/openapi/components/schemas/WebsocketInstanceQueueReady.yaml @@ -0,0 +1,11 @@ +title: WebsocketInstanceQueueReady +type: object +properties: + expiry: + type: string + format: date-time + location: + $ref: ./LocationID.yaml +required: + - expiry + - location diff --git a/openapi/components/schemas/WebsocketInstanceQueueReadyEncoded.yaml b/openapi/components/schemas/WebsocketInstanceQueueReadyEncoded.yaml new file mode 100644 index 00000000..137eb22b --- /dev/null +++ b/openapi/components/schemas/WebsocketInstanceQueueReadyEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketInstanceQueueReadyEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketInstanceQueueReady.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketMessage.yaml b/openapi/components/schemas/WebsocketMessage.yaml new file mode 100644 index 00000000..a677b36b --- /dev/null +++ b/openapi/components/schemas/WebsocketMessage.yaml @@ -0,0 +1,9 @@ +title: WebsocketMessage +x-if: + when: jsonschema + then: + oneOf: + - $ref: ./WebsocketMessageNormal.yaml + - $ref: ./WebsocketMessageDoubleJson.yaml + else: + type: object diff --git a/openapi/components/schemas/WebsocketMessageDoubleJson.yaml b/openapi/components/schemas/WebsocketMessageDoubleJson.yaml new file mode 100644 index 00000000..4065abe9 --- /dev/null +++ b/openapi/components/schemas/WebsocketMessageDoubleJson.yaml @@ -0,0 +1,61 @@ +title: WebsocketMessageDoubleJson +x-if: + when: jsonschema + then: + oneOf: + - $ref: ./WebsocketContentRefreshEncoded.yaml + - $ref: ./WebsocketFriendActiveEncoded.yaml + - $ref: ./WebsocketFriendAddEncoded.yaml + - $ref: ./WebsocketFriendDeleteEncoded.yaml + - $ref: ./WebsocketFriendLocationEncoded.yaml + - $ref: ./WebsocketFriendOfflineEncoded.yaml + - $ref: ./WebsocketFriendOnlineEncoded.yaml + - $ref: ./WebsocketFriendUpdateEncoded.yaml + - $ref: ./WebsocketGroupJoinedEncoded.yaml + - $ref: ./WebsocketGroupLeftEncoded.yaml + - $ref: ./WebsocketGroupMemberUpdatedEncoded.yaml + - $ref: ./WebsocketGroupRoleUpdatedEncoded.yaml + - $ref: ./WebsocketInstanceQueueJoinedEncoded.yaml + - $ref: ./WebsocketInstanceQueueReadyEncoded.yaml + - $ref: ./WebsocketNotificationEncoded.yaml + - $ref: ./WebsocketNotificationV2Encoded.yaml + - $ref: ./WebsocketNotificationV2DeleteEncoded.yaml + - $ref: ./WebsocketNotificationV2UpdateEncoded.yaml + - $ref: ./WebsocketResponseNotificationEncoded.yaml + - $ref: ./WebsocketUserBadgeAssignedEncoded.yaml + - $ref: ./WebsocketUserBadgeUnassignedEncoded.yaml + - $ref: ./WebsocketUserLocationEncoded.yaml + - $ref: ./WebsocketUserUpdateEncoded.yaml + discriminator: + propertyName: type + mapping: + content-refresh: ./WebsocketContentRefreshEncoded.yaml + friend-active: ./WebsocketFriendActiveEncoded.yaml + friend-add: ./WebsocketFriendAddEncoded.yaml + friend-delete: ./WebsocketFriendDeleteEncoded.yaml + friend-location: ./WebsocketFriendLocationEncoded.yaml + friend-offline: ./WebsocketFriendOfflineEncoded.yaml + friend-online: ./WebsocketFriendOnlineEncoded.yaml + friend-update: ./WebsocketFriendUpdateEncoded.yaml + group-joined: ./WebsocketGroupJoinedEncoded.yaml + group-left: ./WebsocketGroupLeftEncoded.yaml + group-member-updated: ./WebsocketGroupMemberUpdatedEncoded.yaml + group-role-updated: ./WebsocketGroupRoleUpdatedEncoded.yaml + instance-queue-joined: ./WebsocketInstanceQueueJoinedEncoded.yaml + instance-queue-ready: ./WebsocketInstanceQueueReadyEncoded.yaml + notification: ./WebsocketNotificationEncoded.yaml + notification-v2: ./WebsocketNotificationV2Encoded.yaml + notification-v2-delete: ./WebsocketNotificationV2DeleteEncoded.yaml + notification-v2-update: ./WebsocketNotificationV2UpdateEncoded.yaml + response-notification: ./WebsocketResponseNotificationEncoded.yaml + user-badge-assigned: ./WebsocketUserBadgeAssignedEncoded.yaml + user-badge-unassigned: ./WebsocketUserBadgeUnassignedEncoded.yaml + user-location: ./WebsocketUserLocationEncoded.yaml + user-update: ./WebsocketUserUpdateEncoded.yaml + else: + type: object + properties: + type: + type: string + content: + type: string diff --git a/openapi/components/schemas/WebsocketMessageNormal.yaml b/openapi/components/schemas/WebsocketMessageNormal.yaml new file mode 100644 index 00000000..7e412926 --- /dev/null +++ b/openapi/components/schemas/WebsocketMessageNormal.yaml @@ -0,0 +1,16 @@ +title: WebsocketMessageNormal +x-if: + when: jsonschema + then: + oneOf: + - $ref: ./WebsocketSeeNotification.yaml + - $ref: ./WebsocketHideNotification.yaml + - $ref: ./WebsocketClearNotification.yaml + discriminator: + propertyName: type + mapping: + see-notification: ./WebsocketSeeNotification.yaml + hide-notification: ./WebsocketHideNotification.yaml + clear-notification: ./WebsocketClearNotification.yaml + else: + type: object diff --git a/openapi/components/schemas/WebsocketNotification.yaml b/openapi/components/schemas/WebsocketNotification.yaml new file mode 100644 index 00000000..c6c1fdd1 --- /dev/null +++ b/openapi/components/schemas/WebsocketNotification.yaml @@ -0,0 +1,57 @@ +title: WebsocketNotification +type: object +properties: + created_at: + type: string + format: date-time + details: + x-if: + when: jsonschema + then: + oneOf: + - $ref: ./NotificationDetailBoop.yaml + - $ref: ./NotificationDetailInvite.yaml + - $ref: ./NotificationDetailInviteResponse.yaml + - $ref: ./NotificationDetailRequestInvite.yaml + - $ref: ./NotificationDetailRequestInviteResponse.yaml + - $ref: ./NotificationDetailVoteToKick.yaml + discriminator: + propertyName: type + mapping: + boop: ./NotificationDetailBoop.yaml + invite: ./NotificationDetailInvite.yaml + invite-response: ./NotificationDetailInviteResponse.yaml + request-invite: ./NotificationDetailRequestInvite.yaml + request-invite-response: ./NotificationDetailRequestInviteResponse.yaml + vote-to-kick: ./NotificationDetailVoteToKick.yaml + else: + title: NotificationDetails + type: object + id: + type: string + minLength: 1 + message: + type: string + example: This is a generated invite to VRChat Hub + receiverUserId: + $ref: ./UserID.yaml + description: Not included in notification objects received from the REST API + seen: + type: boolean + description: Not included in notification objects received from the Websocket API + default: false + senderUserId: + $ref: ./UserID.yaml + senderUsername: + type: ["null", string] + description: The name of the user who sent the notification. + minLength: 1 + type: + $ref: ./NotificationType.yaml +required: + - created_at + - details + - id + - message + - senderUserId + - type diff --git a/openapi/components/schemas/WebsocketNotificationEncoded.yaml b/openapi/components/schemas/WebsocketNotificationEncoded.yaml new file mode 100644 index 00000000..1b53a44c --- /dev/null +++ b/openapi/components/schemas/WebsocketNotificationEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketNotificationEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketNotification.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketNotificationV2Delete.yaml b/openapi/components/schemas/WebsocketNotificationV2Delete.yaml new file mode 100644 index 00000000..b4b4bee8 --- /dev/null +++ b/openapi/components/schemas/WebsocketNotificationV2Delete.yaml @@ -0,0 +1,10 @@ +title: WebsocketNotificationV2Delete +type: object +properties: + id: + $ref: ./NotificationID.yaml + version: + type: integer +required: + - id + - version diff --git a/openapi/components/schemas/WebsocketNotificationV2DeleteEncoded.yaml b/openapi/components/schemas/WebsocketNotificationV2DeleteEncoded.yaml new file mode 100644 index 00000000..d43ad845 --- /dev/null +++ b/openapi/components/schemas/WebsocketNotificationV2DeleteEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketNotificationV2DeleteEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketNotificationV2Delete.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketNotificationV2Encoded.yaml b/openapi/components/schemas/WebsocketNotificationV2Encoded.yaml new file mode 100644 index 00000000..3bf72f79 --- /dev/null +++ b/openapi/components/schemas/WebsocketNotificationV2Encoded.yaml @@ -0,0 +1,10 @@ +title: NotificationV2Encoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./NotificationV2.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketNotificationV2Update.yaml b/openapi/components/schemas/WebsocketNotificationV2Update.yaml new file mode 100644 index 00000000..173402b0 --- /dev/null +++ b/openapi/components/schemas/WebsocketNotificationV2Update.yaml @@ -0,0 +1,15 @@ +title: WebsocketNotificationV2Update +type: object +properties: + id: + $ref: ./NotificationID.yaml + updates: + title: WebsocketNotificationV2Updates + # Todo: type this better + type: object + version: + type: integer +required: + - id + - updates + - version diff --git a/openapi/components/schemas/WebsocketNotificationV2UpdateEncoded.yaml b/openapi/components/schemas/WebsocketNotificationV2UpdateEncoded.yaml new file mode 100644 index 00000000..ee89d3b3 --- /dev/null +++ b/openapi/components/schemas/WebsocketNotificationV2UpdateEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketNotificationV2UpdateEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketNotificationV2Update.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketResponseNotification.yaml b/openapi/components/schemas/WebsocketResponseNotification.yaml new file mode 100644 index 00000000..c15c648f --- /dev/null +++ b/openapi/components/schemas/WebsocketResponseNotification.yaml @@ -0,0 +1,13 @@ +title: WebsocketResponseNotification +type: object +properties: + notificationId: + type: string + receiverId: + $ref: ./UserID.yaml + responseId: + $ref: ./UserID.yaml +required: + - notificationId + - receiverId + - responseId diff --git a/openapi/components/schemas/WebsocketResponseNotificationEncoded.yaml b/openapi/components/schemas/WebsocketResponseNotificationEncoded.yaml new file mode 100644 index 00000000..8caf44d6 --- /dev/null +++ b/openapi/components/schemas/WebsocketResponseNotificationEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketResponseNotificationEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketResponseNotification.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketSeeNotification.yaml b/openapi/components/schemas/WebsocketSeeNotification.yaml new file mode 100644 index 00000000..459e4d2e --- /dev/null +++ b/openapi/components/schemas/WebsocketSeeNotification.yaml @@ -0,0 +1,7 @@ +title: WebsocketSeeNotification +type: object +properties: + content: + $ref: ./NotificationID.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketUserBadgeAssigned.yaml b/openapi/components/schemas/WebsocketUserBadgeAssigned.yaml new file mode 100644 index 00000000..ee4b61ea --- /dev/null +++ b/openapi/components/schemas/WebsocketUserBadgeAssigned.yaml @@ -0,0 +1,7 @@ +title: WebsocketUserBadgeAssigned +type: object +properties: + badge: + $ref: ./Badge.yaml +required: + - badge diff --git a/openapi/components/schemas/WebsocketUserBadgeAssignedEncoded.yaml b/openapi/components/schemas/WebsocketUserBadgeAssignedEncoded.yaml new file mode 100644 index 00000000..d54bab49 --- /dev/null +++ b/openapi/components/schemas/WebsocketUserBadgeAssignedEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketUserBadgeAssignedEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketUserBadgeAssigned.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketUserBadgeUnassigned.yaml b/openapi/components/schemas/WebsocketUserBadgeUnassigned.yaml new file mode 100644 index 00000000..d95332a7 --- /dev/null +++ b/openapi/components/schemas/WebsocketUserBadgeUnassigned.yaml @@ -0,0 +1,7 @@ +title: WebsocketUserBadgeUnassigned +type: object +properties: + badgeId: + $ref: ./BadgeID.yaml +required: + - badgeId diff --git a/openapi/components/schemas/WebsocketUserBadgeUnassignedEncoded.yaml b/openapi/components/schemas/WebsocketUserBadgeUnassignedEncoded.yaml new file mode 100644 index 00000000..0777a882 --- /dev/null +++ b/openapi/components/schemas/WebsocketUserBadgeUnassignedEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketUserBadgeUnassignedEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketUserBadgeUnassigned.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketUserLocation.yaml b/openapi/components/schemas/WebsocketUserLocation.yaml new file mode 100644 index 00000000..732dfeb6 --- /dev/null +++ b/openapi/components/schemas/WebsocketUserLocation.yaml @@ -0,0 +1,19 @@ +title: WebsocketUserLocation +type: object +properties: + instance: + $ref: ./InstanceID.yaml + location: + $ref: ./LocationID.yaml + travelingToLocation: + $ref: ./LocationID.yaml + user: + $ref: ./User.yaml + userId: + $ref: ./UserID.yaml +required: + - instance + - location + - travelingToLocation + - user + - userId diff --git a/openapi/components/schemas/WebsocketUserLocationEncoded.yaml b/openapi/components/schemas/WebsocketUserLocationEncoded.yaml new file mode 100644 index 00000000..e3147ed8 --- /dev/null +++ b/openapi/components/schemas/WebsocketUserLocationEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketUserLocationEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketUserLocation.yaml +required: + - content diff --git a/openapi/components/schemas/WebsocketUserUpdate.yaml b/openapi/components/schemas/WebsocketUserUpdate.yaml new file mode 100644 index 00000000..50346146 --- /dev/null +++ b/openapi/components/schemas/WebsocketUserUpdate.yaml @@ -0,0 +1,10 @@ +title: WebsocketUserUpdate +type: object +properties: + user: + $ref: ./User.yaml + userId: + $ref: ./UserID.yaml +required: + - user + - userId diff --git a/openapi/components/schemas/WebsocketUserUpdateEncoded.yaml b/openapi/components/schemas/WebsocketUserUpdateEncoded.yaml new file mode 100644 index 00000000..cd29a5cd --- /dev/null +++ b/openapi/components/schemas/WebsocketUserUpdateEncoded.yaml @@ -0,0 +1,10 @@ +title: WebsocketUserUpdateEncoded +type: object +properties: + content: + type: string + contentMediaType: application/json + contentSchema: + $ref: ./WebsocketUserUpdate.yaml +required: + - content diff --git a/openapi/components/schemas/World.yaml b/openapi/components/schemas/World.yaml index 51d83853..42fa6b1c 100644 --- a/openapi/components/schemas/World.yaml +++ b/openapi/components/schemas/World.yaml @@ -78,8 +78,7 @@ properties: example: 8 minimum: 0 previewYoutubeId: - type: string - nullable: true + type: ["null", string] privateOccupants: type: integer description: Will always be `0` when unauthenticated. diff --git a/openapi/components/schemas/_index.yaml b/openapi/components/schemas/_index.yaml index 41423318..0ad63b06 100644 --- a/openapi/components/schemas/_index.yaml +++ b/openapi/components/schemas/_index.yaml @@ -1,3 +1,5 @@ +NotificationDetailBoop: + $ref: ./NotificationDetailBoop.yaml NotificationDetailInvite: $ref: ./NotificationDetailInvite.yaml NotificationDetailInviteResponse: @@ -8,3 +10,109 @@ NotificationDetailRequestInviteResponse: $ref: ./NotificationDetailRequestInviteResponse.yaml NotificationDetailVoteToKick: $ref: ./NotificationDetailVoteToKick.yaml + +NotificationV2: + $ref: ./NotificationV2.yaml + +WebsocketClearNotification: + $ref: ./WebsocketClearNotification.yaml +WebsocketContentRefresh: + $ref: ./WebsocketContentRefresh.yaml +WebsocketContentRefreshEncoded: + $ref: ./WebsocketContentRefreshEncoded.yaml +WebsocketFriendActive: + $ref: ./WebsocketFriendActive.yaml +WebsocketFriendActiveEncoded: + $ref: ./WebsocketFriendActiveEncoded.yaml +WebsocketFriendAdd: + $ref: ./WebsocketFriendAdd.yaml +WebsocketFriendAddEncoded: + $ref: ./WebsocketFriendAddEncoded.yaml +WebsocketFriendDelete: + $ref: ./WebsocketFriendDelete.yaml +WebsocketFriendDeleteEncoded: + $ref: ./WebsocketFriendDeleteEncoded.yaml +WebsocketFriendLocation: + $ref: ./WebsocketFriendLocation.yaml +WebsocketFriendLocationEncoded: + $ref: ./WebsocketFriendLocationEncoded.yaml +WebsocketFriendOffline: + $ref: ./WebsocketFriendOffline.yaml +WebsocketFriendOfflineEncoded: + $ref: ./WebsocketFriendOfflineEncoded.yaml +WebsocketFriendOnline: + $ref: ./WebsocketFriendOnline.yaml +WebsocketFriendOnlineEncoded: + $ref: ./WebsocketFriendOnlineEncoded.yaml +WebsocketFriendUpdate: + $ref: ./WebsocketFriendUpdate.yaml +WebsocketFriendUpdateEncoded: + $ref: ./WebsocketFriendUpdateEncoded.yaml +WebsocketGroupJoined: + $ref: ./WebsocketGroupJoined.yaml +WebsocketGroupJoinedEncoded: + $ref: ./WebsocketGroupJoinedEncoded.yaml +WebsocketGroupLeft: + $ref: ./WebsocketGroupLeft.yaml +WebsocketGroupLeftEncoded: + $ref: ./WebsocketGroupLeftEncoded.yaml +WebsocketGroupMemberUpdated: + $ref: ./WebsocketGroupMemberUpdated.yaml +WebsocketGroupMemberUpdatedEncoded: + $ref: ./WebsocketGroupMemberUpdatedEncoded.yaml +WebsocketGroupRoleUpdated: + $ref: ./WebsocketGroupRoleUpdated.yaml +WebsocketGroupRoleUpdatedEncoded: + $ref: ./WebsocketGroupRoleUpdatedEncoded.yaml +WebsocketHideNotification: + $ref: ./WebsocketHideNotification.yaml +WebsocketInstanceQueueJoined: + $ref: ./WebsocketInstanceQueueJoined.yaml +WebsocketInstanceQueueJoinedEncoded: + $ref: ./WebsocketInstanceQueueJoinedEncoded.yaml +WebsocketInstanceQueueReady: + $ref: ./WebsocketInstanceQueueReady.yaml +WebsocketInstanceQueueReadyEncoded: + $ref: ./WebsocketInstanceQueueReadyEncoded.yaml +WebsocketMessage: + $ref: ./WebsocketMessage.yaml +WebsocketMessageDoubleJson: + $ref: ./WebsocketMessageDoubleJson.yaml +WebsocketMessageNormal: + $ref: ./WebsocketMessageNormal.yaml +WebsocketNotification: + $ref: ./WebsocketNotification.yaml +WebsocketNotificationEncoded: + $ref: ./WebsocketNotificationEncoded.yaml +WebsocketNotificationV2Delete: + $ref: ./WebsocketNotificationV2Delete.yaml +WebsocketNotificationV2DeleteEncoded: + $ref: ./WebsocketNotificationV2DeleteEncoded.yaml +WebsocketNotificationV2Encoded: + $ref: ./WebsocketNotificationV2Encoded.yaml +WebsocketNotificationV2Update: + $ref: ./WebsocketNotificationV2Update.yaml +WebsocketNotificationV2UpdateEncoded: + $ref: ./WebsocketNotificationV2UpdateEncoded.yaml +WebsocketResponseNotification: + $ref: ./WebsocketResponseNotification.yaml +WebsocketResponseNotificationEncoded: + $ref: ./WebsocketResponseNotificationEncoded.yaml +WebsocketSeeNotification: + $ref: ./WebsocketSeeNotification.yaml +WebsocketUserBadgeAssigned: + $ref: ./WebsocketUserBadgeAssigned.yaml +WebsocketUserBadgeAssignedEncoded: + $ref: ./WebsocketUserBadgeAssignedEncoded.yaml +WebsocketUserBadgeUnassigned: + $ref: ./WebsocketUserBadgeUnassigned.yaml +WebsocketUserBadgeUnassignedEncoded: + $ref: ./WebsocketUserBadgeUnassignedEncoded.yaml +WebsocketUserLocation: + $ref: ./WebsocketUserLocation.yaml +WebsocketUserLocationEncoded: + $ref: ./WebsocketUserLocationEncoded.yaml +WebsocketUserUpdate: + $ref: ./WebsocketUserUpdate.yaml +WebsocketUserUpdateEncoded: + $ref: ./WebsocketUserUpdateEncoded.yaml diff --git a/openapi/openapi.yaml b/openapi/openapi.yaml index 43285413..a9f08c5d 100644 --- a/openapi/openapi.yaml +++ b/openapi/openapi.yaml @@ -1,4 +1,4 @@ -openapi: 3.0.3 +openapi: 3.1.0 info: title: VRChat API Documentation version: 1.21.0 diff --git a/package.json b/package.json index c0ea29b1..94b7c8c0 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "@ariesclark/eslint-config": "^3.1.1", "@eslint-react/eslint-plugin": "^2.3.9", "@jamesacarr/eslint-formatter-github-actions": "^0.2.0", - "@redocly/cli": "^2.53.1", + "@redocly/cli": "^2.53.2", "@redocly/openapi-core": "^2.53.1", "@stoplight/spectral-cli": "^6.15.0", "@stoplight/spectral-core": "^1.20.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f9e17329..7c135b59 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,8 +27,8 @@ importers: specifier: ^0.2.0 version: 0.2.0 '@redocly/cli': - specifier: ^2.53.1 - version: 2.53.1 + specifier: ^2.53.2 + version: 2.53.2 '@redocly/openapi-core': specifier: ^2.53.1 version: 2.53.1 @@ -1113,8 +1113,8 @@ packages: '@redocly/ajv@8.18.3': resolution: {integrity: sha512-l42u0of3hY98sN2A+M4qTX1O/KrpgGH32Hu9kP2GtHyD5Dfqq86PKFLe5dwaD8DEnNmlOlll2BAmeEtf0DaySg==} - '@redocly/cli@2.53.1': - resolution: {integrity: sha512-NzfSDjHZMMY5qvoXWT5Xz3qIdEEzlxjukU1hytgxY0UMTVroCLm8xprzVjDcMW/2L/P6zgP3vzIZBqS0tG69eA==} + '@redocly/cli@2.53.2': + resolution: {integrity: sha512-ay2jLuWvKssw1Au1A0fyDR//plK83GxV80TfA08iB9W/5AVosgB+WFv0JzglU4PiXf1fQjtsoXhZwZLx28VGrw==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} hasBin: true @@ -5108,7 +5108,7 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - '@redocly/cli@2.53.1': {} + '@redocly/cli@2.53.2': {} '@redocly/config@0.56.0': dependencies: