Skip to content

Add curated support for photo invites #36

@BASIC-BIT

Description

@BASIC-BIT

Summary

Add curated support for VRChat photo invites.

The current unified/bulk invite work intentionally keeps photo invites out of scope because VRChat's photo invite endpoint uses multipart/form-data, while the generic generated write client JSON-serializes request bodies.

Context

VRChat exposes:

  • POST /invite/{userId}/photo (inviteUserWithPhoto)
  • POST /requestInvite/{userId}/photo (requestInviteWithPhoto)

The OpenAPI body shape is multipart:

  • data: normal invite/request-invite payload
  • image: PNG binary

Our generated write tooling is not enough for this because it sends JSON and sets content-type: application/json.

Proposed Scope

Add a curated photo invite implementation that:

  • Accepts one target user initially; consider bulk using the same image after the single-target path is stable.
  • Accepts users as either usr_... IDs or exact display names, matching the new curated invite behavior.
  • Accepts destination using the same shape as vrchat_invite: here, full location, worldId + instanceId, or bare instanceId where valid.
  • Accepts imagePath for a local PNG file.
  • Reuses the invite message / overwriteMessageSlot flow where possible.
  • Builds multipart/form-data directly instead of using the generic JSON write client.
  • Returns structured per-target results if/when bulk support is added.

Acceptance Criteria

  • Photo invite sends use multipart/form-data with data and image parts.
  • Validation rejects missing/non-PNG/non-readable image paths with friendly guidance.
  • Generated raw photo invite tools are either documented as not preferred or skipped in favor of curated tools.
  • Tests cover multipart request construction without requiring a live VRChat call.
  • Docs/tool catalog describe photo invite behavior and limitations.

Notes

Keep this separate from the first unified invite rollout so the core bulk/text invite path can stay mergeable without adding file upload complexity.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions