Skip to content

Conversation

@winrid
Copy link
Contributor

@winrid winrid commented Nov 20, 2025

  • BREAKING: Component/schema renames and restructures

    • Replaced many generated Pick_/Pick_Omit_/Pick_T* component names with explicit, stable component names (examples):
      • Pick_Omit_FComment.date_.PublicCommentPubSubFieldsKeys_ -> PubSubCommentBase
      • Pick_FComment.PublicCommentFieldsKeys_ -> PublicCommentBase
      • Pick_FComment.approved-or-commentHTML_ -> SetCommentTextResult
      • Pick_FComment.isDeleted-or-commentHTML-or-commenterName-or-userId_ -> DeletedCommentResultComment
      • Pick_APIComment.UpdatableCommentFields_ -> UpdatableCommentParams
      • Pick_TenantAuditLog.TenantAuditLogKeys_ -> APIAuditLog
    • Impact: Generated type names in the SDK will change. Any code that referenced the old generated type names will need to be updated to the new names.
  • BREAKING: API status enum consolidation

    • Removed components ImportedAPIStatus.SUCCESS and ImportedAPIStatus.FAILED and replaced their usage with a single APIStatus reference across many responses (SearchUsersResponse, APIError, GetUserPresenceStatusesResponse, ResetUserNotificationsResponse, GetUserNotificationCountResponse, HeaderState, UserNotificationWriteResponse, IgnoredResponse, APIEmptyResponse, GetPublicFeedPostsResponse, PublicAPIGetCommentTextResponse, PublicAPISetCommentTextResponse, SaveCommentResponseOptimized, PublicAPIDeleteCommentResponse, VoteDeleteResponse, GetCommentVoteUserNamesSuccessResponse, Comment positions responses, Block/Unblock responses, SaveCommentResponse and others).
    • Impact: Any generated enum/constants for ImportedAPIStatus.SUCCESS/FAILED are removed; code must use APIStatus instead. This is a breaking change for enum names/values in generated SDKs.
  • BREAKING: Significant comment model changes (FComment / PublicComment / APIComment / PubSubComment)

    • Many fields changed names, types, nullability and required sets across various comment-related schemas. Notable changes:
      • New explicit base components introduced (PubSubCommentBase, PublicCommentBase, APICommentBase) and APIComment now uses an allOf that requires date as a numeric double (timestamp) rather than string in one place.
      • Several fields that were previously plain strings are now nullable (e.g., userId now references UserId and is nullable in multiple models; commenterLink and avatarSrc are now nullable strings).
      • Many numeric fields (votes, votesUp, votesDown, viewCount, flagCount, rating) are now nullable and/or have changed formats (votes remain int32 but are now nullable; viewCount added as int64 nullable; rating marked nullable double).
      • New/changed properties added to comment models: domain (FDomain reference, nullable), url, pageTitle (nullable), expireAt (nullable date-time), reviewed, hasCode, approved, isBannedUser, anonUserId (nullable), isSpam moved around, isDeleted/isDeletedUser presence changed in locations.
      • The required property lists for PubSubComment/PublicComment/APIComment were modified (fields added/removed). For PublicCommentBase and APICommentBase the required set changed (e.g., PublicCommentBase now requires date, _id, commenterName, commentHTML, verified — verify exact set in updated spec). These required-field changes are breaking: payloads that omit now-required fields will fail validation and generated types will enforce different requirements.
      • The FComment/APIComment schema had numerous fields reorganized and new fields added such as aiDeterminedSpam, badges (nullable array), hashTags, mentions, moderationGroupIds (nullable array), tenantId, urlIdRaw, externalParentId nullable, fromProductId, fromProductId previously present in different place — overall the model shape changed substantially.
    • Impact: These are breaking changes for any code that relies on the exact comment object shape, required properties, or type shapes (e.g., date string -> numeric timestamp). Generated model types and validation behavior change.
  • BREAKING: Comment logs rework

    • Introduced new comment logging types: CommentLogType (enum of numeric codes), RepeatCommentHandlingAction, RepeatCommentCheckIgnoredReason, CommentLogData (complex object), and CommentLogEntry (object with d, t, da). Replaced earlier CommentLog array item schema with CommentLogEntry.
    • Comment model's logs array now contains CommentLogEntry items (previously was an untyped array). The shape and fields of log entries are now explicit.
    • Impact: Any code that inspected log entries will need to adapt to the new typed structure and enum values.
  • NON-BREAKING / MINOR: New optional fields added

    • Added boolean noNewRootComments to settings object (new optional flag).
    • Added commentsUpdated (int64) to a response where page info is returned.
    • Added notes (array of string) to user badge-related response.
    • Added new fields on comment models that are optional/nullable: viewCount, pageTitle, url, urlIdRaw, urlId, anonUserId (nullable), expireAt (nullable), reviewed, hasCode, approved, hashTags array, mentions array, moderationGroupIds array, feedbackIds array (nullable in some places), fromProductId, localDateString/localDateHours as nullable, and many more.
    • Added many optional/nullable metadata properties (meta object made nullable in several places).
    • Impact: These additions are backwards-compatible for consumers who only read existing properties; they may enable new features in the SDK.
  • PATCH / MINOR: Field nullability and optionality changes (could be breaking depending on strict clients)

    • Many fields that were previously required or non-nullable have been made nullable or optional (e.g., votes*, commenterLink, avatarSrc, badges arrays made nullable). In some cases fields were made nullable but also moved into or out of required lists — check the specific schema for required changes.
    • Impact: Looser validation for some fields (accepts null), but consumers that expected non-null may need to add null checks. Conversely, if required lists were changed to include new required properties, that is breaking (see above).
  • MINOR: Updatable comment parameters reworked

    • The UpdatableCommentParams schema was redefined and now includes explicit nullable fields for many updatable properties (pageTitle, userId reference to UserId and nullable, commenterEmail nullable, commenterLink nullable, parentId nullable, date numeric nullable, localDateString/Hours nullable, votes* nullable, expireAt nullable, verifiedDate nullable, externalParentId nullable, avatarSrc nullable, isPinned/isLocked nullable, flagCount nullable, displayLabel nullable, meta nullable, moderationGroupIds nullable, feedbackIds array).
    • Impact: This adds clarity and optionality to update endpoints; the new shape may not be fully backwards-compatible with old generated types (renamed component), so this is treated as a breaking rename of the generated type name.
  • MINOR: Audit log schema adjustments

    • APIAuditLog schema now includes url as nullable, ip as nullable, and objectDetails marked nullable (allOf Record_string.any_). AdditionalProperties false applied.
    • Impact: New optional fields and nullability are non-breaking but the type name replacement (Pick_TenantAuditLog... -> APIAuditLog) is a breaking change for generated type names.
  • MINOR: Response schema substitutions to APIStatus

    • Many response objects now reference APIStatus instead of the removed ImportedAPIStatus.* components. Functionally this centralizes status typing.
    • Impact: SDK enum names and references will change; this requires code updates where those enums were used.
  • OTHER NOTES and recommended actions for SDK consumers

    • Because of widespread type/component renames and required-field/type changes, this release contains breaking changes. Bump the major version to 2.0.0.
    • Action items for integrators:
      • Update generated model type names to the new component names (listed above and in the spec).
      • Replace usages of ImportedAPIStatus.SUCCESS / FAILED with APIStatus.
      • Audit code that constructs or consumes comment objects (FComment, PublicComment, APIComment, PubSubComment) — check for changed required fields and types (notably date types and nullability) and add appropriate conversions/null checks.
      • Update any code dealing with comment logs to consume CommentLogEntry and the new CommentLogType/CommentLogData enums/fields.

@winrid winrid merged commit c1e5722 into master Nov 20, 2025
@winrid winrid deleted the release-2025-11-20 branch November 20, 2025 19:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants