Skip to content

Conversation

@sewnie
Copy link

@sewnie sewnie commented Oct 30, 2025

Changes

Using oapi-codegen against the full OpenAPI specification and go-swagger against Legacy APIs, I've found a few specification violations in regards to the Legacy APIs, which I have fixed in this PR:

  • Thumbnails Api v1:
    • Multiple paths contain query parameter isCircular, defined as boolean, but is defined with enum string
      values ("true" and "false"), and a default string value.
  • Inventory Api v1:
    • /v1/packages/{packageId}/assets incorrectly defines parameter packageId as packageID.
  • Thumbnails resizer: parameter filterType defined as a query but is actually part of the path.

However, there are some things that are not fixed in this PR that are in violation of OpenAPI, which I can not fix as I need to know the underlying server implementation or original specification:

  • Trades v1:
    • Duplicate paths /v1/trades/{tradeId} or {tradeStatusType}
  • LocalizationTables v1:
    • Duplicate paths /v1/localization-table/tables/{tableId} or {assetId}
    • Path /v1/localization-table/tables/{tableId}/entry-count parameter entryFormat has
      default value of type int and not a string.

Additionally, For the separated legacy API specifications (Not part of the OpenAPI spec, but the standalone specifications):

  • Matchmaking: Specification defined as Swagger 2.0 and uses OpenAPI 3.0 specific fields
  • Presence: Specification is not Swagger 2.0 but OpenAPI 2.0 with missing information.

While out of the scope of the PR, I would like to mention that these provide broken contracts:

Model names for Legacy APIs are also inconsistent and a little difficult to name, for example, a model could be named as such:

  • Roblox.{API}.Api.[Request|Response].{Model}[Request|Response]Model
  • Roblox.{API}.Api.Models.{Model}[Request|Response]
  • Roblox.Web.WebAPI.Api{Model}[Request|Response]Model
  • Roblox.Web.[Request|Response]s.{Source}.{Model}[Request|Response]

Making the legacy models have naming similar to OpenCloud (eg. CreatorStoreProduct over Roblox.AccountInformation.Api.Models.BirthdateResponse) would be helpful, but not a requirement.

The full OpenAPI specification is unsuitable for the legacy APIs, as each legacy API is it's own service under a specific host, and makes code generation difficult, since it is combined with the OpenCloud API (eg. an OpenCloud API and a Legacy API are both defined as functions with no separation inbetween).

While working on manually implementing these endpoints myself, I noticed that the official server does not gurantee the API contract for certain legacy APIs. Unfortunately, I can not recall which endpoints specifically, and I could be incorrect.

Checks

By submitting your pull request for review, you agree to the following:

  • This contribution was created in whole or in part by me, and I have the right to submit it under the terms of this repository's open source licenses.
  • I understand and agree that this contribution and a record of it are public, maintained indefinitely, and may be redistributed under the terms of this repository's open source licenses.
  • To the best of my knowledge, all proposed changes are accurate.

@sewnie sewnie requested a review from a team as a code owner October 30, 2025 19:59
@github-actions github-actions bot added cloud changes requested This pull request has changes requested prior to merging labels Oct 30, 2025
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @sewnie, thanks so much for helping improve the Roblox creator documentation! Our technical writing team will review your pull request soon. In the meantime, please ensure you've read through the README.md, contribution guidelines, and style recommendations.

@aetter
Copy link
Contributor

aetter commented Nov 11, 2025

Hey @sewnie, this is great stuff, thanks for reporting. We generate these JSON files based on a whole bunch of internal definitions and tooling, so I'm going to close this PR in favor of your forum thread. That said, I think the diff here will be useful, so I've sent it along to the developer, as well. Thanks again!

@aetter aetter closed this Nov 11, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changes requested This pull request has changes requested prior to merging cloud

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants