Skip to content

Add API endpoints to fetch seating plans and user seat info by external ID #58

@Celant

Description

@Celant

Feature Request

As an event using an external Passport identity provider, we could do with some API endpoints that let us:

  1. Retrieve a user’s internal ID from their external provider ID
  2. Fetch the seating plan for a specific user
  3. (Optionally) Fetch the full seating plan for an event

Proposed Endpoints

  1. List linked accounts
    GET /api/v1/linkedaccounts

    • Query parameters:
      • external_id (integer) - user’s ID in external system
      • social_provider (integer) - ID of the auth provider
    • Returns: internal user object with user_id
  2. Fetch tickets and seats for a user
    GET /api/v1/tickets

    • Query parameters:
      • event (integer) - event ID
      • user_id (integer) - internal user ID from linkedaccounts
    • Returns: list of tickets, each including:
      • seat_id
      • seating_plan_id?
      • x_position (number)
      • y_position (number)
      • any existing metadata
  3. Fetch entire seating plan
    GET /api/v1/seatingplan

    • Query parameters:
      • event (integer) - event ID
    • Returns: full cached plan, with each seat entry including:
      • seat_id
      • x_position
      • y_position
      • user_id (if occupied)
      • whatever extra metadata is available

Why This Matters

  • Makes it trivial to look up where any logged-in user is sitting
  • Enables integrations without manual lookups
  • Supports both individual seat queries and bulk retrieval of the seating plan

Acceptance Criteria

Endpoints are added which allow us to:

  • Determine the internal user ID from an external ID
  • Get a list of tickets/seats for a user from an internal user ID
  • Get the full seating plan for an event with enough data that allows us to see where an internal user ID is sat, and specifically, the users that are sat around them

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions