Skip to content

Fetching Record Information (records/resolve) #41

Closed

Description

@leogdion
No description provided.

Activity

  1. leogdion commented on May 25, 2026

    @leogdion
    MemberAuthor

    Gap analysis (CloudKit JS / Web Services vs openapi.yaml)

    A coverage review confirms this endpoint is unimplemented: there is no record-resolve / shortGUID resolution path in openapi.yaml, and none of the supporting response schemas exist.

    What needs to be done

    1. New endpoint — maps to CloudKit.Database.fetchRecordInfos (cloudkitjs.md:808-810): given a shortGUID, return the root record plus its share info. Resolves shared records.

    2. New schemas:

    • RecordInfo — rootRecord + share (see CloudKit.RecordInfo, cloudkitjs.md:4114-4117).
    • RecordInfosResponse — results: [RecordInfo] (see CloudKit.RecordInfosResponse, cloudkitjs.md:105-107).

    Related

    • Depends on the Share / ShareParticipant schema groundwork tracked in Accepting Share Records (records/accept) #42 (shared by both sharing endpoints).
    • Reminder: change openapi.yaml and regenerate via ./Scripts/generate-openapi.sh; never hand-edit Sources/MistKitOpenAPI/.
  2. leogdion commented on Aug 20, 2026

    @leogdion
    MemberAuthor

    Moving from the v1.0.0-beta.3 milestone to v1.0.0-beta.4 — work not yet complete.

  3. leogdion commented on Aug 20, 2026

    @leogdion
    MemberAuthor

    Verification caveat for #428

    Flagging a limitation in how records/resolve was specified, so it gets weighed in review rather than discovered later.

    No live-service call was made, and Apple's archived reference carries no verbatim JSON examples for this endpoint. The field names in openapi.yaml come from the type dictionaries on Types.html and FetchingRecordInformation.html — not from an observed payload. Local .claude/docs/webservices.md omits the endpoint entirely.

    That is weaker evidence than the repo usually works from. The practical risk is a field name that is subtly wrong and only fails against the real service.

    potentialMatchList is the least-documented field and the one I'd scrutinize first. It is modeled all-optional so an unexpected shape degrades rather than throws, but that also means a wrong shape would fail quietly — decoding to empty rather than erroring.

    Suggested gate before this ships in a release: one live records/resolve call against a real container with a genuine short GUID, with the middleware at .debug (com.brightdigit.MistKit.middleware) to capture the raw response body, compared field-by-field against the committed schema. MistDemo can drive it.

    Also noted in #428: share creation is modeled in the schema (createShortGUID, forRecord, publicPermission, participants on RecordRequest) but has no curated CloudKitService convenience method. That was left out deliberately rather than expanded into this PR — worth its own issue if you want a first-class share-creation API.

    🤖 Generated with Claude Code

  4. leogdion commented on Aug 28, 2026

    @leogdion
    MemberAuthor

    Resolved on v1.0.0-beta.4 via #428 (commit 9e6b9d6). records/resolve implemented as resolveShares(_:).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions