Test/spec updates checks - #595
Open
ariesclark wants to merge 11 commits into
Open
Conversation
This reverts commit d7998f8.
ariesclark
force-pushed
the
test/spec-updates-checks
branch
from
August 9, 2026 11:33
7b8a829 to
62bb0b8
Compare
commit: |
Contributor
There was a problem hiding this comment.
Pull request overview
Updates the OpenAPI specification to better match observed VRChat API behavior, including new/updated schemas, new endpoints, and a consolidation of many “not found / not implemented / validation” error responses into shared response components.
Changes:
- Add and refine schemas across users, worlds, groups, economy, notifications, inventory, and InfoPush payloads.
- Add new authentication endpoints (
/oauth/redirectCode,/sso/{provider}) and broaden/clarify several existing path responses (400/403/404 behavior, deprecations). - Replace many bespoke per-route 404 response files with shared
ResourceNotFoundError, plus introduceRouteNotImplementedErrorandRequestValidationError.
Reviewed changes
Copilot reviewed 118 out of 118 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| openapi/components/tags.yaml | Adds a deprecated tag to categorize no-longer-served routes. |
| openapi/components/schemas/World.yaml | Adds/adjusts world fields and instance tuple sizing. |
| openapi/components/schemas/User.yaml | Adds user fields, updates friendRequestStatus typing, removes deprecated username. |
| openapi/components/schemas/Transaction.yaml | Allows agreement to be string or object under jsonschema generation. |
| openapi/components/schemas/Subscription.yaml | Adds gifted-bundle related fields and periodAmount. |
| openapi/components/schemas/StoreShelf.yaml | Adds shelf image FileID references. |
| openapi/components/schemas/SsoToken.yaml | New schema for third-party SSO token responses. |
| openapi/components/schemas/SsoProvider.yaml | New enum schema for supported SSO providers. |
| openapi/components/schemas/SentNotification.yaml | Uses NotificationEmpty and updates senderUsername docs. |
| openapi/components/schemas/RouteNotImplemented.yaml | New schema for “not implemented” 404 body shape. |
| openapi/components/schemas/RepresentedGroup.yaml | Adds nameplate fields. |
| openapi/components/schemas/ReportReason.yaml | Adds policy field and updates required fields. |
| openapi/components/schemas/ReportCategory.yaml | Adds ipsArticle/order and re-formats schema. |
| openapi/components/schemas/PublicProfile.yaml | Simplifies representedGroup to direct $ref + nullable. |
| openapi/components/schemas/ProductListingAttributionCreator.yaml | New schema for listing attribution creator/publisher. |
| openapi/components/schemas/ProductListingAttribution.yaml | New schema to group attribution fields. |
| openapi/components/schemas/ProductListing.yaml | Adds attribution/collab fields, refines products/storeIds typing. |
| openapi/components/schemas/PrivateProfile.yaml | Adds friendRequestStatus and makes note nullable. |
| openapi/components/schemas/OAuthRedirectCode.yaml | New schema for OAuth redirect code responses. |
| openapi/components/schemas/NotificationV2DataEmpty.yaml | Removes old “empty payload” schema (replaced by NotificationEmpty). |
| openapi/components/schemas/NotificationV2.yaml | Switches empty union branch to NotificationEmpty and adds fields/nullability. |
| openapi/components/schemas/NotificationEmpty.yaml | New constrained empty-object schema for union branches. |
| openapi/components/schemas/NotificationDetailEmpty.yaml | Removes old “empty details” schema (replaced by NotificationEmpty). |
| openapi/components/schemas/Notification.yaml | Updates senderUsername docs and nullability. |
| openapi/components/schemas/MutualFriend.yaml | Adds banner/icon/effect-related fields. |
| openapi/components/schemas/LocalizedString.yaml | New schema for localized key + fallback text. |
| openapi/components/schemas/LimitedWorld.yaml | Adds disabledPropAbilities. |
| openapi/components/schemas/LimitedUserGroups.yaml | Adds nameplate fields. |
| openapi/components/schemas/LimitedUserFriend.yaml | Adds banner/icon/effect fields and discordId. |
| openapi/components/schemas/LimitedGroup.yaml | Adds nameplate fields. |
| openapi/components/schemas/JamSubmission.yaml | Renames/adds ratingsScore field. |
| openapi/components/schemas/Jam.yaml | Adds created_at and type fields. |
| openapi/components/schemas/InventoryTemplate.yaml | Adds attribution/dropStatus and adjusts required fields. |
| openapi/components/schemas/InventoryMetadata.yaml | Adds propKind. |
| openapi/components/schemas/InventoryItem.yaml | Adds acquisition/attribution/last_equipped. |
| openapi/components/schemas/InventoryDrop.yaml | Replaces status with dropStatus and adjusts required fields. |
| openapi/components/schemas/Instance.yaml | Adds language/prop ability fields and more nullability. |
| openapi/components/schemas/InfoPushIpsQuery.yaml | New schema for InfoPush query parameters. |
| openapi/components/schemas/InfoPushExperiment.yaml | New schema for InfoPush experiment payload. |
| openapi/components/schemas/InfoPushEmbeddedLink.yaml | New schema for embedded link data. |
| openapi/components/schemas/InfoPushDataSearch.yaml | New schema for InfoPush search data. |
| openapi/components/schemas/InfoPushDataClickable.yaml | Expands supported clickable action enums. |
| openapi/components/schemas/InfoPushDataCategory.yaml | New/expanded category payload, supports LocalizedString name. |
| openapi/components/schemas/InfoPushDataArticleContent.yaml | Adds article content fields (id/title/videoUrl). |
| openapi/components/schemas/InfoPushDataArticle.yaml | Expands article structure to arrays and link lists. |
| openapi/components/schemas/InfoPushData.yaml | Major expansion of InfoPush data fields + LocalizedString support. |
| openapi/components/schemas/InfoPush.yaml | Adds clientMinVersion, experiment, regions, requireClientTags, nullable dates. |
| openapi/components/schemas/GroupRoleTemplateValues.yaml | Refactors role template roles to dedicated schema items. |
| openapi/components/schemas/GroupRoleTemplateRole.yaml | New schema for role template role entries. |
| openapi/components/schemas/GroupRole.yaml | Adds defaultRole and isAddedOnJoin. |
| openapi/components/schemas/GroupPost.yaml | Renames roleId to roleIds. |
| openapi/components/schemas/GroupPermission.yaml | Adds dependsOn field. |
| openapi/components/schemas/GroupAnnouncement.yaml | Adds clarifying description and additional fields (editorId/roleIds/visibility). |
| openapi/components/schemas/Group.yaml | Reformats schema and adds nameplate fields. |
| openapi/components/schemas/FriendRequestStatus.yaml | New schema for friendRequestStatus semantics. |
| openapi/components/schemas/FileAnalysisAvatarStats.yaml | Adds raycastCount. |
| openapi/components/schemas/FavoritedWorld.yaml | Adds disabledPropAbilities. |
| openapi/components/schemas/EconomyBalances.yaml | Adjusts required fields. |
| openapi/components/schemas/DynamicContentRow.yaml | Major expansion of row filtering/sorting fields; updates tag vs tags behavior. |
| openapi/components/schemas/CurrentUserPresence.yaml | Adds avatarImageUrl/banner/icon/effect fields. |
| openapi/components/schemas/CurrentUser.yaml | Adds many fields and clarifies username semantics; adds worldId. |
| openapi/components/schemas/CalendarEventDiscovery.yaml | Adjusts required fields. |
| openapi/components/schemas/CalendarEvent.yaml | Adds occurrenceModified. |
| openapi/components/schemas/BareError.yaml | New schema for “message-only” error bodies. |
| openapi/components/schemas/Avatar.yaml | Adds attribution and reflows long descriptions. |
| openapi/components/schemas/APIConfigProfileDefaults.yaml | New schema for default theme colors. |
| openapi/components/schemas/APIConfigLoadingScreenWeights.yaml | New schema for loading-screen category weights. |
| openapi/components/schemas/APIConfigEventShelfCampaign.yaml | New schema for event shelf campaigns. |
| openapi/components/schemas/APIConfigEvents.yaml | Adds useSparseRotationForPlayerSerialization. |
| openapi/components/schemas/APIConfigAudioConfig.yaml | Adds new audio config fields. |
| openapi/components/schemas/APIConfig.yaml | Adds many config fields, enables additionalProperties, refines docs and required list. |
| openapi/components/responses/worlds/WorldNotFoundError.yaml | Removes route-specific 404 response (migrated to shared response). |
| openapi/components/responses/users/UserResponse.yaml | Allows UserResponse to be User or CurrentUser under jsonschema generation. |
| openapi/components/responses/users/UpdateOtherUserForbiddenError.yaml | New 403 response for updating other users. |
| openapi/components/responses/users/PersistenceOwnershipError.yaml | New bare-error response for persistence ownership checks. |
| openapi/components/responses/RouteNotImplementedError.yaml | New shared response for “route not implemented” 404 behavior. |
| openapi/components/responses/ResourceNotFoundError.yaml | New shared 404 response replacing many bespoke files. |
| openapi/components/responses/RequestValidationError.yaml | New shared 400 response for validation failures. |
| openapi/components/responses/props/NoSuchPropError.yaml | Removes route-specific 404 response (migrated to shared response). |
| openapi/components/responses/notifications/NotificationNotFoundError.yaml | Removes route-specific 404 response (migrated to shared response). |
| openapi/components/responses/notifications/HideNotificationSuccess.yaml | Adds schema for hide-notification success response. |
| openapi/components/responses/jams/JamNotFoundError.yaml | Removes route-specific 404 response (migrated to shared response). |
| openapi/components/responses/instances/InstanceNotFoundError.yaml | Removes route-specific 404 response (migrated to shared response). |
| openapi/components/responses/groups/GroupPostsResponse.yaml | Adds total to group posts response. |
| openapi/components/responses/groups/GroupNotFoundError.yaml | Removes route-specific 404 response (migrated to shared response). |
| openapi/components/responses/friends/UserDoesntExistError.yaml | Removes route-specific 404 response (migrated to shared response). |
| openapi/components/responses/files/FileNotFoundError.yaml | Removes route-specific 404 response (migrated to shared response). |
| openapi/components/responses/files/FileDeletedError.yaml | Removes route-specific 404 response (migrated to shared response). |
| openapi/components/responses/favorites/FavoriteNotFoundError.yaml | Removes route-specific 404 response (migrated to shared response). |
| openapi/components/responses/economy/StoresUnavailableError.yaml | Adds 403 response for unavailable stores. |
| openapi/components/responses/economy/ProductListingsForbiddenError.yaml | Adds 403 response for product listings access denial. |
| openapi/components/responses/economy/AccountStateError.yaml | Adds 400 response for invalid account state. |
| openapi/components/responses/calendar/CalendarEventNotFoundError.yaml | Removes route-specific 404 response (migrated to shared response). |
| openapi/components/responses/avatars/AvatarNotFoundError.yaml | Removes route-specific 404 response (migrated to shared response). |
| openapi/components/responses/authentication/SsoTokenResponse.yaml | Adds response wrapper for SSO token. |
| openapi/components/responses/authentication/SsoProviderUnsupportedError.yaml | Adds 400 for unsupported SSO provider. |
| openapi/components/responses/authentication/OAuthRedirectCodeResponse.yaml | Adds response wrapper for OAuth redirect code. |
| openapi/components/requests/UpdateWorldRequest.yaml | Adds new updatable world fields. |
| openapi/components/requests/CreateInstanceRequest.yaml | Adjusts displayName nullability. |
| openapi/components/requests/CreateGroupAnnouncementRequest.yaml | Fixes required fields for group announcement creation. |
| openapi/components/paths/worlds.yaml | Consolidates error responses and adds /worlds/{worldId}/deleteTags. |
| openapi/components/paths/users.yaml | Adds shared 404/403 responses, tags deprecated admin endpoint, clarifies docs. |
| openapi/components/paths/props.yaml | Consolidates errors and marks publish status endpoints deprecated/route-not-implemented. |
| openapi/components/paths/notifications.yaml | Consolidates 404s and corrects hide response schema. |
| openapi/components/paths/miscellaneous.yaml | Adds 401 to health check and 400 to infoPush. |
| openapi/components/paths/jams.yaml | Consolidates errors and adds 400 validation response. |
| openapi/components/paths/invite.yaml | Consolidates 404s and adds explicit 403 responses. |
| openapi/components/paths/instances.yaml | Adds 400 validation response, consolidates 404s, allows optional auth on some gets. |
| openapi/components/paths/groups.yaml | Large refactor to shared errors and expanded 400/403/404 coverage. |
| openapi/components/paths/friends.yaml | Consolidates 404s. |
| openapi/components/paths/files.yaml | Consolidates 404s. |
| openapi/components/paths/favorites.yaml | Adds favoriteGroupTypeQuery param and consolidates errors. |
| openapi/components/paths/economy.yaml | Adds new query params, shared errors, and deprecates some no-longer-served routes. |
| openapi/components/paths/calendar.yaml | Consolidates 404s and allows optional auth for discovery endpoints. |
| openapi/components/paths/avatars.yaml | Consolidates errors and adds shared 400 validation response. |
| openapi/components/paths/authentication.yaml | Adds new /oauth/redirectCode and /sso/{provider} endpoints. |
| openapi/components/paths.yaml | Wires new auth/world paths into the root paths index. |
| openapi/components/parameters.yaml | Adds favoriteGroupTypeQuery and ssoProvider parameters; refines sellerId docs. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+47
to
+48
| example: "event:grp_00000000-0000-0000-0000-000000000000,cal_00000000-0000-0000\ | ||
| -0000-000000000000" |
Comment on lines
+1121
to
+1124
| "403": | ||
| $ref: ../responses/groups/GroupNotMemberError.yaml | ||
| "404": | ||
| $ref: ../responses/groups/GroupNotMemberError.yaml |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.