AI Monorepo API

tRPC API Documentation

141
Total Endpoints
141
Public Endpoints
69 Queries β€’ 72 Mutations
0
Protected Endpoints
0 Queries β€’ 0 Mutations

Analytics

query
Scheduled Today analytics.scheduledToday
Analytics

Distinct talent, locations, and entry count for today's schedule.

Input Schema
{
  today: any
}
Output Schema
{
  talentCount: number
  locationCount: number
  scheduleCount: number
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Talent Count analytics.talentCount
Analytics

Roster size split into on-site (active) vs off-roster (hidden) talent.

Output Schema
{
  total: number
  active: number
  hidden: number
}
Test Endpoint
query
Weekly Breakdown analytics.weeklyBreakdown
Analytics

Schedule count per day for the current week (Mon–Sun).

Input Schema
{
  today: any
}
Output Schema
Array<{
  date: string
  value: number
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Weekly Talent Count analytics.weeklyTalentCount
Analytics

Distinct talent scheduled at least one day this week (Mon–Sun).

Input Schema
{
  today: any
}
Output Schema
number
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Talents by Location analytics.talentsByLocation
Analytics

Unique talent count per location for the current week.

Input Schema
{
  today: any
}
Output Schema
Array<{
  name: string
  value: number
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Incomplete Profiles analytics.incompleteProfiles
Analytics

Count of roster talent missing each profile field.

Output Schema
Array<{
  name: string
  value: number
}>
Test Endpoint

Appointment

query
Appointments by Schedule appointment.bySchedule
Appointment

A schedule with its appointments and the derived day totals β€” the daily tracker detail summary (Due / Paid / Balance + the Credit/Paid/Miss state)

Input Schema
{
  scheduleId: string
}
Output Schema
{
  schedule: {
    id: string
    talentId: string
    talentName: string
    locationId: string
    locationName: string
    city: string
    date: string | any
    category: "Hotel" | "Airbnb" | "Condo"
    talentBookOnFee: number | null
    flatFee: number | null
    bookOn: number | null
    notes?: string | null
  }
  appointments: Array<{
    id: string
    scheduleId: string
    startTime: string | null
    clientId: string
    clientName: string
    menuId: string | null
    menuLabel: string | null
    fee: number
    discount: number
    bookedByUserId: string | null
    bookerName: string | null
    bookerPay: number
    confirmed: boolean
    services: Array<{
      id: string
      appointmentId: string
      menuServiceId: string
      serviceName: string
      fee: number
    }>
    notes?: string | null
    cancelledAt: string | any | null
  }>
  due: number
  paid: number
  balance: number
  status: "credit" | "paid" | "miss"
  cancellationIncome: number
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Appointment by Id appointment.byId
Appointment

One appointment for the edit form

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  scheduleId: string
  startTime: string | null
  clientId: string
  clientName: string
  menuId: string | null
  menuLabel: string | null
  fee: number
  discount: number
  bookedByUserId: string | null
  bookerName: string | null
  bookerPay: number
  confirmed: boolean
  services: Array<{
    id: string
    appointmentId: string
    menuServiceId: string
    serviceName: string
    fee: number
  }>
  notes?: string | null
  cancelledAt: string | any | null
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Appointments by Client appointment.byClient
Appointment

A client's appointments in this brand (newest first) β€” the picker for applying a credit to a booking (LUX-113)

Input Schema
{
  clientId: string
}
Output Schema
Array<{
  id: string
  date: string | any
  startTime: string | null
  talentName: string
  locationName: string
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Create Appointment appointment.create
Appointment

Books an appointment; fee and per-line service fees are captured from the menu catalog, never from the client

Input Schema
{
  scheduleId: string
  clientId: string
  menuId: string
  bookedByUserId: string
  startTime?: string | null
  discount: number
  confirmed: boolean
  notes?: string | null
  services: Array<{
    menuServiceId: string
  }>
}
Output Schema
{
  id: string
  scheduleId: string
  startTime: string | null
  clientId: string
  clientName: string
  menuId: string | null
  menuLabel: string | null
  fee: number
  discount: number
  bookedByUserId: string | null
  bookerName: string | null
  bookerPay: number
  confirmed: boolean
  services: Array<{
    id: string
    appointmentId: string
    menuServiceId: string
    serviceName: string
    fee: number
  }>
  notes?: string | null
  cancelledAt: string | any | null
}
Test Endpoint
Optional fields (click to add):
startTime notes
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Import a Day of Appointments appointment.importDay
Appointment

Historical import only (LUX-120): replaces a schedule-day's synthesized appointments + their payments, and upserts the day's book-on onto its daily report β€” one transaction, so the day lands whole or not at all (D92). The DOCUMENTED D67 EXCEPTION β€” the only write that accepts an explicit fee, because the sheet's total is history and re-capturing it from the talent's current Menu.fee would import today's price. Idempotent: only rows marked imported are replaced, never an operator's real booking. 404 unless the schedule belongs to the requesting company

Input Schema
{
  scheduleId: string
  clientId: string
  bookedByUserId?: string | null
  callCount: number
  serviceTotal: number
  payments: Array<{
    method: "EMT" | "AmazonGiftCard" | "Cash"
    amount: number
  }>
  bookOn: number
}
Output Schema
{
  replaced: number
  dayExisted: boolean
  appointments: Array<{
    id: string
    scheduleId: string
    startTime: string | null
    clientId: string
    clientName: string
    menuId: string | null
    menuLabel: string | null
    fee: number
    discount: number
    bookedByUserId: string | null
    bookerName: string | null
    bookerPay: number
    confirmed: boolean
    services: Array<{
      id: string
      appointmentId: string
      menuServiceId: string
      serviceName: string
      fee: number
    }>
    notes?: string | null
    cancelledAt: string | any | null
  }>
}
Test Endpoint
Optional fields (click to add):
bookedByUserId
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Update Appointment appointment.update
Appointment

Edits an appointment; re-captures the fee and replaces the service lines

Input Schema
{
  scheduleId: string
  clientId: string
  menuId: string
  bookedByUserId: string
  startTime?: string | null
  discount: number
  confirmed: boolean
  notes?: string | null
  services: Array<{
    menuServiceId: string
  }>
  id: string
}
Output Schema
{
  id: string
  scheduleId: string
  startTime: string | null
  clientId: string
  clientName: string
  menuId: string | null
  menuLabel: string | null
  fee: number
  discount: number
  bookedByUserId: string | null
  bookerName: string | null
  bookerPay: number
  confirmed: boolean
  services: Array<{
    id: string
    appointmentId: string
    menuServiceId: string
    serviceName: string
    fee: number
  }>
  notes?: string | null
  cancelledAt: string | any | null
}
Test Endpoint
Optional fields (click to add):
startTime notes
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Delete Appointment appointment.delete
Appointment

Removes an appointment

Input Schema
{
  id: string
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Daily Tracker List appointment.dailyTrackerList
Appointment

Schedules in a date range with the derived Due, Paid, Balance and the Credit/Paid/Miss state, computed server-side

Input Schema
{
  startDate: any
  endDate: any
}
Output Schema
Array<{
  scheduleId: string
  date: string | any
  talentName: string
  locationName: string
  city: string
  calls: number
  due: number
  paid: number
  balance: number
  status: "credit" | "paid" | "miss"
  bookOn: number | null
  cancellationIncome: number
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Appointments by Date Range appointment.byDateRange
Appointment

Every appointment in a date range across the company's talents, joined to its schedule for display β€” the browse-by-date list (loaded wide, filtered client-side)

Input Schema
{
  startDate: any
  endDate: any
}
Output Schema
Array<{
  id: string
  scheduleId: string
  startTime: string | null
  clientId: string
  clientName: string
  menuId: string | null
  menuLabel: string | null
  fee: number
  discount: number
  bookedByUserId: string | null
  bookerName: string | null
  bookerPay: number
  confirmed: boolean
  services: Array<{
    id: string
    appointmentId: string
    menuServiceId: string
    serviceName: string
    fee: number
  }>
  notes?: string | null
  cancelledAt: string | any | null
  date: string | any
  talentId: string
  talentName: string
  locationName: string
  city: string
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

Auth

mutation
Login auth.login
Auth

Authenticate with email and password

Input Schema
{
  email: string
  password: string
}
Output Schema
{
  token: string | null
  user: {
    id: string
    email: string
    name: string | null
    image: string | null
    emailVerified: boolean
  }
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

Booker

query
List Bookers booker.list
Bookers

Returns all bookers (Users with role 'booker'), name ascending, each with its pay rate (null until set)

Output Schema
Array<{
  id: string
  name: string
  payRate: number | null
}>
Test Endpoint
mutation
Set Booker Pay Rate booker.setPayRate
Bookers

Sets a booker's pay rate β€” whole dollars per booked appointment (D76); upserts by user. New appointments stamp this rate; past ones are unchanged

Input Schema
{
  userId: string
  amount: number
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

City

query
List Cities city.list
Cities

Returns the requesting company's cities in display order

Output Schema
Array<{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string
  sortOrder: number
}>
Test Endpoint
mutation
Reorder Cities city.reorder
Cities

Batch-update the display order of city sections for the requesting company

Input Schema
{
  orderedIds: string[]
}
Output Schema
Array<{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string
  sortOrder: number
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Create City city.create
Cities

Onboards a city by name for the requesting company; returns the existing city if the name is already used

Input Schema
{
  name: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string
  sortOrder: number
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Rename City city.rename
Cities

Renames a city owned by the requesting company; 404 unless it belongs to the company, 409 if the name is already used

Input Schema
{
  id: string
  name: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string
  sortOrder: number
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Delete City city.delete
Cities

Deletes a city owned by the requesting company; 404 unless it belongs to the company, 400 while it still has locations

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string
  sortOrder: number
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

Client

query
List Clients client.list
Clients

Returns all clients (global across brands)

Output Schema
Array<{
  id: string
  createdAt: string | any
  updatedAt: string | any
  code: string
  name: string
  phone: string
  email: string | null
  ageRange: string | null
  ethnicity: string | null
  notes: string | null
  cafHandle: string | null
  perbHandle: string | null
  isBlacklisted: boolean
  blacklistReason: "NoShow" | "TimeWaster" | "Aggressive" | "NoDeposit" | "NonCooperative" | "HygieneIssues" | null
}>
Test Endpoint
query
Get Client by ID client.byId
Clients

Returns a client by ID, with the brands they booked through

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  code: string
  name: string
  phone: string
  email: string | null
  ageRange: string | null
  ethnicity: string | null
  notes: string | null
  cafHandle: string | null
  perbHandle: string | null
  isBlacklisted: boolean
  blacklistReason: "NoShow" | "TimeWaster" | "Aggressive" | "NoDeposit" | "NonCooperative" | "HygieneIssues" | null
  brands: string[]
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Create Client client.create
Clients

Creates a client β€” phone is the global dedup key

Input Schema
{
  name: string
  phone: string
  email?: string | null
  ageRange?: "20-30" | "30-40" | "40-50" | "50+" | null
  ethnicity?: string | null
  notes?: string | null
  cafHandle?: string | null
  perbHandle?: string | null
  isBlacklisted?: boolean
  blacklistReason?: "NoShow" | "TimeWaster" | "Aggressive" | "NoDeposit" | "NonCooperative" | "HygieneIssues" | null
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  code: string
  name: string
  phone: string
  email: string | null
  ageRange: string | null
  ethnicity: string | null
  notes: string | null
  cafHandle: string | null
  perbHandle: string | null
  isBlacklisted: boolean
  blacklistReason: "NoShow" | "TimeWaster" | "Aggressive" | "NoDeposit" | "NonCooperative" | "HygieneIssues" | null
}
Test Endpoint
Optional fields (click to add):
email ageRange ethnicity notes cafHandle perbHandle isBlacklisted blacklistReason
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Update Client client.update
Clients

Updates a client

Input Schema
{
  name?: string
  phone?: string
  email?: string | null
  ageRange?: "20-30" | "30-40" | "40-50" | "50+" | null
  ethnicity?: string | null
  notes?: string | null
  cafHandle?: string | null
  perbHandle?: string | null
  isBlacklisted?: boolean
  blacklistReason?: "NoShow" | "TimeWaster" | "Aggressive" | "NoDeposit" | "NonCooperative" | "HygieneIssues" | null
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  code: string
  name: string
  phone: string
  email: string | null
  ageRange: string | null
  ethnicity: string | null
  notes: string | null
  cafHandle: string | null
  perbHandle: string | null
  isBlacklisted: boolean
  blacklistReason: "NoShow" | "TimeWaster" | "Aggressive" | "NoDeposit" | "NonCooperative" | "HygieneIssues" | null
}
Test Endpoint
Optional fields (click to add):
name phone email ageRange ethnicity notes cafHandle perbHandle isBlacklisted blacklistReason
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
List Client Exclusions client.listExclusions
Clients

Returns the ids of talents on a client's Don't-See list

Input Schema
{
  clientId: string
}
Output Schema
string[]
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Set Client Exclusions client.setExclusions
Clients

Replaces a client's Don't-See list β€” the talents who won't see this client

Input Schema
{
  clientId: string
  talentIds: string[]
}
Output Schema
string[]
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

ClientCredit

query
Client Credits clientCredit.byClient
ClientCredit

A client's prepaid / cancellation credits in this brand, newest first

Input Schema
{
  clientId: string
}
Output Schema
Array<{
  id: string
  clientId: string
  amount: number
  status: "held" | "applied" | "cancellationFee"
  talentAmount: number | null
  bookerFee: number | null
  agencyAmount: number | null
  note: string | null
  createdAt: string | any
  appliedBooking: {
    id: string
    date: string | any
    talentName: string
    locationName: string
  } | any | null
  cancelledBooking: {
    id: string
    date: string | any
    talentName: string
    locationName: string
  } | any | null
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Record Client Credit clientCredit.create
ClientCredit

Records a client prepayment as a held credit (>= $50 minimum, D87) β€” never a Payment

Input Schema
{
  clientId: string
  amount: number
  note?: string
}
Output Schema
{
  id: string
  clientId: string
  amount: number
  status: "held" | "applied" | "cancellationFee"
  talentAmount: number | null
  bookerFee: number | null
  agencyAmount: number | null
  note: string | null
  createdAt: string | any
  appliedBooking: {
    id: string
    date: string | any
    talentName: string
    locationName: string
  } | any | null
  cancelledBooking: {
    id: string
    date: string | any
    talentName: string
    locationName: string
  } | any | null
}
Test Endpoint
Optional fields (click to add):
note
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Apply Client Credit clientCredit.applyToBooking
ClientCredit

Applies a held credit to a booking β€” creates a Payment(method:Credit) for the full amount so the tracker Paid rolls up (D87)

Input Schema
{
  id: string
  appointmentId: string
}
Output Schema
{
  id: string
  clientId: string
  amount: number
  status: "held" | "applied" | "cancellationFee"
  talentAmount: number | null
  bookerFee: number | null
  agencyAmount: number | null
  note: string | null
  createdAt: string | any
  appliedBooking: {
    id: string
    date: string | any
    talentName: string
    locationName: string
  } | any | null
  cancelledBooking: {
    id: string
    date: string | any
    talentName: string
    locationName: string
  } | any | null
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Elect Cancellation Fee clientCredit.electCancellationFee
ClientCredit

Uses a held credit as a cancellation fee behind a specific cancelled booking β€” stamps the talent Β½ / booker $25 / agency surplus split and links the booking so the talent-day income + booker-week $25 report; no Payment (D87/D95)

Input Schema
{
  id: string
  cancelledAppointmentId: string
}
Output Schema
{
  id: string
  clientId: string
  amount: number
  status: "held" | "applied" | "cancellationFee"
  talentAmount: number | null
  bookerFee: number | null
  agencyAmount: number | null
  note: string | null
  createdAt: string | any
  appliedBooking: {
    id: string
    date: string | any
    talentName: string
    locationName: string
  } | any | null
  cancelledBooking: {
    id: string
    date: string | any
    talentName: string
    locationName: string
  } | any | null
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Delete Client Credit clientCredit.delete
ClientCredit

Removes a mistaken held credit β€” a consumed (applied / cancellation-fee) credit is immutable

Input Schema
{
  id: string
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

Company

query
List Companies company.list
Companies

Returns all companies

Output Schema
Array<{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string
  slug: string
  defaultPhoneNumberId: string | null
  imageBrand: "LuxWatermark" | "Clean"
}>
Test Endpoint
query
Current Company Default Phone company.currentDefaultPhone
Companies

Returns the requesting company's default (house) phone, or null when unset β€” the public fallback for talent contact numbers

Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string | null
  number: string
} | null
Test Endpoint
mutation
Create Company company.create
Companies

Creates a new company

Input Schema
{
  name: string
  slug: string
  defaultPhoneNumberId?: string | null
  imageBrand?: "LuxWatermark" | "Clean"
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string
  slug: string
  defaultPhoneNumberId: string | null
  imageBrand: "LuxWatermark" | "Clean"
}
Test Endpoint
Optional fields (click to add):
defaultPhoneNumberId imageBrand
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Update Company company.update
Companies

Updates a company

Input Schema
{
  name?: string
  slug?: string
  defaultPhoneNumberId?: string | null
  imageBrand?: "LuxWatermark" | "Clean"
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string
  slug: string
  defaultPhoneNumberId: string | null
  imageBrand: "LuxWatermark" | "Clean"
}
Test Endpoint
Optional fields (click to add):
name slug defaultPhoneNumberId imageBrand
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Delete Company company.delete
Companies

Blocked β€” companies cannot be deleted via the API

Input Schema
{
  id: string
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

Expense

query
Expenses by Date Range expense.byDateRange
Expense

Ad-hoc expenses in a date range (by the date incurred), newest first β€” the list + the weekly report money-out

Input Schema
{
  startDate: any
  endDate: any
}
Output Schema
Array<{
  id: string
  amount: number
  category: "Admin" | "Cleaning" | "Photoshoot" | "Marketing" | "Owner" | "Supplies" | "InitialSetup" | "Accommodation"
  incurredOn: string | any
  note: string | null
  allocations: Array<{
    locationId: string
    locationName: string
    city: string
    amount: number
  }>
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Get Expense expense.byId
Expense

One expense with its allocations, or null when not this company’s

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  amount: number
  category: "Admin" | "Cleaning" | "Photoshoot" | "Marketing" | "Owner" | "Supplies" | "InitialSetup" | "Accommodation"
  incurredOn: string | any
  note: string | null
  allocations: Array<{
    locationId: string
    locationName: string
    city: string
    amount: number
  }>
} | null
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Create Expense expense.create
Expense

Records an expense across 0/1/many locations β€” the server splits the amount evenly (0 locations = a general cost); allocation shares are derived, never client-sent

Input Schema
{
  amount: number
  category: "Admin" | "Cleaning" | "Photoshoot" | "Marketing" | "Owner" | "Supplies" | "InitialSetup" | "Accommodation"
  incurredOn: any
  note?: string
  locationIds: string[]
}
Output Schema
{
  id: string
  amount: number
  category: "Admin" | "Cleaning" | "Photoshoot" | "Marketing" | "Owner" | "Supplies" | "InitialSetup" | "Accommodation"
  incurredOn: string | any
  note: string | null
  allocations: Array<{
    locationId: string
    locationName: string
    city: string
    amount: number
  }>
}
Test Endpoint
Optional fields (click to add):
note
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Update Expense expense.update
Expense

Updates an expense and replaces its allocation; 404 unless it belongs to the requesting company

Input Schema
{
  amount: number
  category: "Admin" | "Cleaning" | "Photoshoot" | "Marketing" | "Owner" | "Supplies" | "InitialSetup" | "Accommodation"
  incurredOn: any
  note?: string
  locationIds: string[]
  id: string
}
Output Schema
{
  id: string
  amount: number
  category: "Admin" | "Cleaning" | "Photoshoot" | "Marketing" | "Owner" | "Supplies" | "InitialSetup" | "Accommodation"
  incurredOn: string | any
  note: string | null
  allocations: Array<{
    locationId: string
    locationName: string
    city: string
    amount: number
  }>
}
Test Endpoint
Optional fields (click to add):
note
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Delete Expense expense.delete
Expense

Removes an expense and its allocations

Input Schema
{
  id: string
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

FinanceDashboard

query
Finance Dashboard financeDashboard.byPeriod
FinanceDashboard

Owner business-health roll-up over a period (day / week / month / quarter / year): gross (Ξ£ Due), expenses (ad-hoc + prorated fixed costs), net, and collected cash β€” each with a delta vs the prior period, plus a trend, by-city and by-category breakdown

Input Schema
{
  periodKind: "day" | "week" | "month" | "quarter" | "year"
  anchorDate: string
}
Output Schema
{
  periodKind: "day" | "week" | "month" | "quarter" | "year"
  range: {
    startDate: string | any
    endDate: string | any
  }
  kpis: {
    gross: {
      value: number
      previous: number
      delta: number
    }
    expenses: {
      value: number
      previous: number
      delta: number
    }
    net: {
      value: number
      previous: number
      delta: number
    }
    collectedCash: {
      value: number
      previous: number
      delta: number
    }
    cashProfit: {
      value: number
      previous: number
      delta: number
    }
  }
  trend: Array<{
    date: string | any
    gross: number
    expenses: number
    net: number
    collectedCash: number
  }>
  byCity: Array<{
    city: string
    gross: number
    net: number
  }>
  businessWide: number
  byCategory: Array<{
    category: "Admin" | "Cleaning" | "Photoshoot" | "Marketing" | "Owner" | "Supplies" | "InitialSetup" | "Accommodation" | "Rent" | "Utilities" | "Internet" | "Insurance" | "Misc"
    amount: number
  }>
  bookerPay: number
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Finance Locations financeDashboard.locations
FinanceDashboard

Per-location leaderboard over a period: each non-Hotel location’s revenue (Ξ£ Due), prorated fixed costs, allocated expenses, profit and booked-day utilization β€” ranked client-side by profit / margin / profit-per-booked-day

Input Schema
{
  periodKind: "day" | "week" | "month" | "quarter" | "year"
  anchorDate: string
}
Output Schema
Array<{
  locationId: string
  locationName: string
  city: string
  revenue: number
  fixedCosts: number
  allocatedExpenses: number
  bookerPay: number
  profit: number
  bookedDays: number
  daysInPeriod: number
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Finance Location Detail financeDashboard.locationDetail
FinanceDashboard

One location’s monthly trend (revenue vs expenses), cost composition (fixed lines + assigned expenses), cumulative investment-vs-return (payback), and booked-day utilization over the last 12 months

Input Schema
{
  locationId: string
  anchorDate: string
}
Output Schema
{
  locationId: string
  locationName: string
  city: string
  months: Array<{
    period: string
    revenue: number
    expenses: number
    fixedCosts: number
    allocatedExpenses: number
    bookerPay: number
    bookedDays: number
    daysInMonth: number
  }>
  costComposition: {
    rent: number
    utilities: number
    internet: number
    insurance: number
    cleaning: number
    supplies: number
    misc: number
    allocatedExpenses: number
    bookerPay: number
  }
  costCompositionByMonth: Array<{
    rent: number
    utilities: number
    internet: number
    insurance: number
    cleaning: number
    supplies: number
    misc: number
    allocatedExpenses: number
    bookerPay: number
    period: string
  }>
  investmentReturn: Array<{
    period: string
    cumulativeInvested: number
    cumulativeRevenue: number
  }>
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

DailyReport

mutation
Save Daily Report dailyReport.save
DailyReport

Upserts a schedule-day's book-on (+ the airbnb/hotel per-date flat fee). The book-on is stored as sent β€” an editable per-day override (D64). 404 unless the schedule belongs to the requesting company

Input Schema
{
  scheduleId: string
  flatFee?: number | null
  bookOn: number
}
Output Schema
{
  id: string
  scheduleId: string
  flatFee: number | null
  bookOn: number
}
Test Endpoint
Optional fields (click to add):
flatFee
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

File

query
List Failed Images file.listFailed
Files

Returns root images with failed processing status

Output Schema
any[]
Test Endpoint
mutation
Retry Image Processing file.retryProcessing
Files

Retries processing for a failed image by re-generating missing variants

Input Schema
{
  imageId: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  fileId: string
  talentId: string
  variant: "Original" | "Thumbnail" | "Large"
  imageBrand: "LuxWatermark" | "Clean" | null
  status: "Processing" | "Completed" | "Failed"
  errorMessage: string | null
  width: number | null
  height: number | null
  sortOrder: number
  sourceImageId: string | null
  file: {
    id: string
    createdAt: string | any
    updatedAt: string | any
    name: string
    mimeType: string
    size: number
    blobKey: string
    container: string
    url: string | null
    uploadedById: string | null
  } | null
  variants: any[]
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

Debug

query
Sentry Test debug.sentryTest
Debug

Throws a test error for Sentry

Test Endpoint

Image

query
Get Images by Talent image.byTalent
Images

Returns all images for a talent belonging to the requesting company

Input Schema
{
  talentId: string
}
Output Schema
any[]
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Get Talent Thumbnail image.thumbnailByTalent
Images

Returns the thumbnail image URL for a talent belonging to the requesting company

Input Schema
{
  talentId: string
}
Output Schema
{
  url: string | null
  variant: "Original" | "Thumbnail" | "Large" | null
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Create Image image.create
Images

Creates a new image

Input Schema
{
  fileId: string
  variant?: "Original" | "Thumbnail" | "Large"
  imageBrand?: "LuxWatermark" | "Clean" | null
  width?: number | null
  height?: number | null
  sortOrder?: number
  talentId: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  fileId: string
  talentId: string
  variant: "Original" | "Thumbnail" | "Large"
  imageBrand: "LuxWatermark" | "Clean" | null
  status: "Processing" | "Completed" | "Failed"
  errorMessage: string | null
  width: number | null
  height: number | null
  sortOrder: number
  sourceImageId: string | null
  file: {
    id: string
    createdAt: string | any
    updatedAt: string | any
    name: string
    mimeType: string
    size: number
    blobKey: string
    container: string
    url: string | null
    uploadedById: string | null
  } | null
  variants: any[]
}
Test Endpoint
Optional fields (click to add):
variant imageBrand width height sortOrder
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Update Image image.update
Images

Updates an existing image

Input Schema
{
  width?: number | null
  height?: number | null
  sortOrder?: number
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  fileId: string
  talentId: string
  variant: "Original" | "Thumbnail" | "Large"
  imageBrand: "LuxWatermark" | "Clean" | null
  status: "Processing" | "Completed" | "Failed"
  errorMessage: string | null
  width: number | null
  height: number | null
  sortOrder: number
  sourceImageId: string | null
  file: {
    id: string
    createdAt: string | any
    updatedAt: string | any
    name: string
    mimeType: string
    size: number
    blobKey: string
    container: string
    url: string | null
    uploadedById: string | null
  } | null
  variants: any[]
}
Test Endpoint
Optional fields (click to add):
width height sortOrder
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Reorder Images image.reorder
Images

Batch-update sort order for a set of images

Input Schema
{
  orderedIds: string[]
}
Output Schema
any[]
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Get Image Download URL image.downloadUrl
Images

Returns a short-lived SAS URL for downloading the original blob

Input Schema
{
  id: string
}
Output Schema
{
  url: string
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Reprocess Talent Images image.reprocessForTalent
Images

Re-derives a talent's photos for every brand their companies display (e.g. the clean set after adding a LUX model to VIP Kitty). Idempotent β€” only missing brand variants are rendered.

Input Schema
{
  talentId: string
}
Output Schema
{
  rendered: number
  skipped: number
  failed: number
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Delete Image image.delete
Images

Deletes an image and its variants from DB and blob storage

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  fileId: string
  talentId: string
  variant: "Original" | "Thumbnail" | "Large"
  imageBrand: "LuxWatermark" | "Clean" | null
  status: "Processing" | "Completed" | "Failed"
  errorMessage: string | null
  width: number | null
  height: number | null
  sortOrder: number
  sourceImageId: string | null
  file: {
    id: string
    createdAt: string | any
    updatedAt: string | any
    name: string
    mimeType: string
    size: number
    blobKey: string
    container: string
    url: string | null
    uploadedById: string | null
  } | null
  variants: any[]
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

Location

query
List Locations location.list
Locations

Returns the requesting company's locations

Output Schema
Array<{
  id: string
  createdAt: string | any
  updatedAt: string | any
  city: string | any
  name: string
  category: "Hotel" | "Airbnb" | "Condo"
  unitNumber: string | null
  street: string | null
  province: "AB" | "BC" | "MB" | "NB" | "NL" | "NS" | "NT" | "NU" | "ON" | "PE" | "QC" | "SK" | "YT" | null
  postalCode: string | null
  phoneNumberId: string | null
  phoneNumber?: {
    id: string
    createdAt: string | any
    updatedAt: string | any
    name: string | null
    number: string
  } | null
}>
Test Endpoint
query
Get Location by ID location.byId
Locations

Returns a location by ID; 404 unless it belongs to the requesting company

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  city: string | any
  name: string
  category: "Hotel" | "Airbnb" | "Condo"
  unitNumber: string | null
  street: string | null
  province: "AB" | "BC" | "MB" | "NB" | "NL" | "NS" | "NT" | "NU" | "ON" | "PE" | "QC" | "SK" | "YT" | null
  postalCode: string | null
  phoneNumberId: string | null
  phoneNumber?: {
    id: string
    createdAt: string | any
    updatedAt: string | any
    name: string | null
    number: string
  } | null
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Get Locations by City location.byCity
Locations

Returns the requesting company's locations by city name

Input Schema
{
  city: string
}
Output Schema
Array<{
  id: string
  createdAt: string | any
  updatedAt: string | any
  city: string | any
  name: string
  category: "Hotel" | "Airbnb" | "Condo"
  unitNumber: string | null
  street: string | null
  province: "AB" | "BC" | "MB" | "NB" | "NL" | "NS" | "NT" | "NU" | "ON" | "PE" | "QC" | "SK" | "YT" | null
  postalCode: string | null
  phoneNumberId: string | null
  phoneNumber?: {
    id: string
    createdAt: string | any
    updatedAt: string | any
    name: string | null
    number: string
  } | null
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Create Location location.create
Locations

Creates a location owned by the requesting company

Input Schema
{
  city: string
  name: string
  category: "Hotel" | "Airbnb" | "Condo"
  unitNumber?: string | null
  street?: string | null
  province?: "AB" | "BC" | "MB" | "NB" | "NL" | "NS" | "NT" | "NU" | "ON" | "PE" | "QC" | "SK" | "YT" | null
  postalCode?: string | "" | null
  phoneNumberId?: string | null
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  city: string | any
  name: string
  category: "Hotel" | "Airbnb" | "Condo"
  unitNumber: string | null
  street: string | null
  province: "AB" | "BC" | "MB" | "NB" | "NL" | "NS" | "NT" | "NU" | "ON" | "PE" | "QC" | "SK" | "YT" | null
  postalCode: string | null
  phoneNumberId: string | null
  phoneNumber?: {
    id: string
    createdAt: string | any
    updatedAt: string | any
    name: string | null
    number: string
  } | null
}
Test Endpoint
Optional fields (click to add):
unitNumber street province postalCode phoneNumberId
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Reorder Locations location.reorder
Locations

Batch-update the display order of locations within a city for the requesting company

Input Schema
{
  orderedIds: string[]
}
Output Schema
Array<{
  id: string
  createdAt: string | any
  updatedAt: string | any
  city: string | any
  name: string
  category: "Hotel" | "Airbnb" | "Condo"
  unitNumber: string | null
  street: string | null
  province: "AB" | "BC" | "MB" | "NB" | "NL" | "NS" | "NT" | "NU" | "ON" | "PE" | "QC" | "SK" | "YT" | null
  postalCode: string | null
  phoneNumberId: string | null
  phoneNumber?: {
    id: string
    createdAt: string | any
    updatedAt: string | any
    name: string | null
    number: string
  } | null
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Update Location location.update
Locations

Updates a location owned by the requesting company

Input Schema
{
  city?: string
  name?: string
  category?: "Hotel" | "Airbnb" | "Condo"
  unitNumber?: string | null
  street?: string | null
  province?: "AB" | "BC" | "MB" | "NB" | "NL" | "NS" | "NT" | "NU" | "ON" | "PE" | "QC" | "SK" | "YT" | null
  postalCode?: string | "" | null
  phoneNumberId?: string | null
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  city: string | any
  name: string
  category: "Hotel" | "Airbnb" | "Condo"
  unitNumber: string | null
  street: string | null
  province: "AB" | "BC" | "MB" | "NB" | "NL" | "NS" | "NT" | "NU" | "ON" | "PE" | "QC" | "SK" | "YT" | null
  postalCode: string | null
  phoneNumberId: string | null
  phoneNumber?: {
    id: string
    createdAt: string | any
    updatedAt: string | any
    name: string | null
    number: string
  } | null
}
Test Endpoint
Optional fields (click to add):
city name category unitNumber street province postalCode phoneNumberId
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Delete Location location.delete
Locations

Deletes a location owned by the requesting company

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  city: string | any
  name: string
  category: "Hotel" | "Airbnb" | "Condo"
  unitNumber: string | null
  street: string | null
  province: "AB" | "BC" | "MB" | "NB" | "NL" | "NS" | "NT" | "NU" | "ON" | "PE" | "QC" | "SK" | "YT" | null
  postalCode: string | null
  phoneNumberId: string | null
  phoneNumber?: {
    id: string
    createdAt: string | any
    updatedAt: string | any
    name: string | null
    number: string
  } | null
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

LocationFixedCost

query
Get Location Fixed Costs locationFixedCost.byPeriod
LocationFixedCost

A location's operating costs for a month (YYYY-MM), or null when none are set

Input Schema
{
  locationId: string
  period: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  locationId: string
  period: string
  rent: number
  utilities: number
  internet: number
  insurance: number
  cleaning: number
  supplies: number
  misc: number
} | null
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Latest Fixed Costs (excluding a month) locationFixedCost.latest
LocationFixedCost

The most recent month with costs other than the given one β€” the source for "copy latest month"; null when no other month has costs

Input Schema
{
  locationId: string
  period: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  locationId: string
  period: string
  rent: number
  utilities: number
  internet: number
  insurance: number
  cleaning: number
  supplies: number
  misc: number
} | null
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Save Location Fixed Costs locationFixedCost.save
LocationFixedCost

Upserts a month's operating costs; 404 unless the location belongs to the requesting company

Input Schema
{
  locationId: string
  period: string
  rent: number
  utilities: number
  internet: number
  insurance: number
  cleaning: number
  supplies: number
  misc: number
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  locationId: string
  period: string
  rent: number
  utilities: number
  internet: number
  insurance: number
  cleaning: number
  supplies: number
  misc: number
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

LocationNote

query
Get Location Notes for a Week (Admin) locationNote.week
Location Notes

Returns the requesting company's location notes whose date falls in the window, scoped via location ownership.

Input Schema
{
  startDate: any
  endDate: any
}
Output Schema
Array<{
  id: string
  locationId: string
  date: string | any
  text: string
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Create Location Note locationNote.create
Location Notes

Creates a note pinned to one of the requesting company's locations on a specific day.

Input Schema
{
  locationId: string
  date: any
  text: string
}
Output Schema
{
  id: string
  locationId: string
  date: string | any
  text: string
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Update Location Note locationNote.update
Location Notes

Updates a note on one of the requesting company's locations.

Input Schema
{
  text?: string
  id: string
}
Output Schema
{
  id: string
  locationId: string
  date: string | any
  text: string
}
Test Endpoint
Optional fields (click to add):
text
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Delete Location Note locationNote.delete
Location Notes

Deletes a note on one of the requesting company's locations.

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  locationId: string
  date: string | any
  text: string
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

LocationPnl

query
Location P&L locationPnl.byPeriod
LocationPnl

Per-location profit for a month: revenue (Ξ£ Due, incl. book-on) βˆ’ fixed costs βˆ’ allocated expenses βˆ’ booker pay

Input Schema
{
  period: string
}
Output Schema
Array<{
  locationId: string
  locationName: string
  city: string
  revenue: number
  fixedCosts: number
  allocatedExpenses: number
  bookerPay: number
  profit: number
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

Menu

MenuService

Payment

query
Payments by Appointment payment.byAppointment
Payment

An appointment's recorded payment lines (the Payments card) β€” one or many per appointment, e.g. an e-transfer + cash split

Input Schema
{
  appointmentId: string
}
Output Schema
Array<{
  id: string
  appointmentId: string
  method: "EMT" | "AmazonGiftCard" | "Cash" | "Credit"
  amount: number
  isDeposit: boolean
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Record Payment payment.create
Payment

Records a payment line against an appointment. Only the first line may be a deposit; the client comes from the appointment, never sent

Input Schema
{
  appointmentId: string
  method: "EMT" | "AmazonGiftCard" | "Cash"
  amount: number
  isDeposit: boolean
}
Output Schema
{
  id: string
  appointmentId: string
  method: "EMT" | "AmazonGiftCard" | "Cash" | "Credit"
  amount: number
  isDeposit: boolean
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Delete Payment payment.delete
Payment

Removes a payment line

Input Schema
{
  id: string
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

PhoneNumber

query
List Phone Numbers phoneNumber.list
Phone Numbers

Returns all phone numbers

Output Schema
Array<{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string | null
  number: string
}>
Test Endpoint
query
Get Phone Number by ID phoneNumber.getById
Phone Numbers

Returns a phone number by ID

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string | null
  number: string
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Create Phone Number phoneNumber.create
Phone Numbers

Creates a new phone number

Input Schema
{
  name?: string | null
  number: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string | null
  number: string
}
Test Endpoint
Optional fields (click to add):
name
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Update Phone Number phoneNumber.update
Phone Numbers

Updates an existing phone number

Input Schema
{
  name?: string | null
  number?: string
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string | null
  number: string
}
Test Endpoint
Optional fields (click to add):
name number
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Delete Phone Number phoneNumber.delete
Phone Numbers

Deletes a phone number

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string | null
  number: string
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

Review

query
List Reviews by Talent review.byTalent
Reviews

Returns all reviews for a talent, newest first

Input Schema
{
  talentId: string
}
Output Schema
Array<{
  id: string
  createdAt: string | any
  updatedAt: string | any
  talentId: string
  content: string
  createdByName: string | null
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Create Review review.create
Reviews

Creates a new talent review

Input Schema
{
  talentId: string
  content: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  talentId: string
  content: string
  createdByName: string | null
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Update Review review.update
Reviews

Updates a review

Input Schema
{
  content: string
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  talentId: string
  content: string
  createdByName: string | null
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Delete Review review.delete
Reviews

Deletes a review

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  talentId: string
  content: string
  createdByName: string | null
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

Schedule

query
Get Today's Schedules schedule.forToday
Schedules

Returns the requesting company's schedules for today with talent data

Input Schema
{
  today: any
}
Output Schema
Array<{
  id: string
  locationId: string
  date: string | any
  startTime: string | null
  endTime: string | null
  location: {
    id: string
    city: string | any
    name: string
    phoneNumberId: string | null
    phoneNumber?: {
      id: string
      name: string | null
      number: string
    } | null
    deletedAt: string | any | null
  }
  talentId: string
  talent: {
    id: string
    nickname: string
    thumbnailUrl: string | null
  }
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Get Visiting Soon schedule.visitingSoon
Schedules

Returns pre-grouped visiting-soon entries (next 60 days)

Input Schema
{
  today: any
}
Output Schema
Array<{
  talentId: string
  nickname: string
  city: string
  dateLabel: string
  thumbnailUrl: string | null
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Get Schedules by Date Range schedule.byDateRange
Schedules

Returns the requesting company's schedules in a date range with talent and location data

Input Schema
{
  startDate: any
  endDate: any
}
Output Schema
Array<{
  id: string
  locationId: string
  date: string | any
  startTime: string | null
  endTime: string | null
  location: {
    id: string
    city: string | any
    name: string
    phoneNumberId: string | null
    phoneNumber?: {
      id: string
      name: string | null
      number: string
    } | null
    deletedAt: string | any | null
  }
  talentId: string
  talent: {
    id: string
    nickname: string
    thumbnailUrl: string | null
  }
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Get Week Grid (Public) schedule.weekGrid
Schedules

Returns a week of the requesting company's schedules pre-grouped by city β†’ location β†’ date. Drops soft-deleted-location rows.

Input Schema
{
  startDate: any
  endDate: any
}
Output Schema
Array<{
  city: string
  locations: Array<{
    locationId: string
    locationName: string
    deleted: boolean
    days: Array<{
      date: string | any
      entries: Array<{
        id: string
        locationId: string
        date: string | any
        startTime: string | null
        endTime: string | null
        location: {
          id: string
          city: string | any
          name: string
          phoneNumberId: string | null
          phoneNumber?: {
            id: string
            name: string | null
            number: string
          } | null
          deletedAt: string | any | null
        }
        talentId: string
        talent: {
          id: string
          nickname: string
          thumbnailUrl: string | null
        }
      }>
    }>
  }>
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Get Schedules by Talent schedule.byTalent
Schedules

Returns all schedules for a talent

Input Schema
{
  talentId: string
}
Output Schema
Array<{
  id: string
  locationId: string
  date: string | any
  startTime: string | null
  endTime: string | null
  notes: string | null
  location: {
    id: string
    city: string | any
    name: string
    phoneNumberId: string | null
    phoneNumber?: {
      id: string
      name: string | null
      number: string
    } | null
    deletedAt: string | any | null
  }
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Get Schedules by Location schedule.byLocation
Schedules

Returns all schedules for a location

Input Schema
{
  locationId: string
}
Output Schema
Array<{
  id: string
  locationId: string
  date: string | any
  startTime: string | null
  endTime: string | null
  notes: string | null
  location: {
    id: string
    city: string | any
    name: string
    phoneNumberId: string | null
    phoneNumber?: {
      id: string
      name: string | null
      number: string
    } | null
    deletedAt: string | any | null
  }
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Get Week Grid (Admin) schedule.weekGridAdmin
Schedules

Returns the admin schedule grid for a week in one call: cities β†’ locations β†’ date-bucketed entries. Includes every live location (empty ones carry days: []) plus soft-deleted locations that have rows in the window (flagged deleted). Replaces the old weekLocationsAdmin bucket list + per-location locationWeekAdmin fan-out β€” one server fetch, one client query.

Input Schema
{
  startDate: any
  endDate: any
}
Output Schema
Array<{
  city: string
  cityId: string
  locations: Array<{
    locationId: string
    locationName: string
    deleted: boolean
    days: Array<{
      date: string | any
      entries: Array<{
        id: string
        locationId: string
        date: string | any
        startTime: string | null
        endTime: string | null
        notes: string | null
        location: {
          id: string
          city: string | any
          name: string
          phoneNumberId: string | null
          phoneNumber?: {
            id: string
            name: string | null
            number: string
          } | null
          deletedAt: string | any | null
        }
        talentId: string
        talent: {
          id: string
          nickname: string
          thumbnailUrl: string | null
        }
      }>
    }>
  }>
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Get Schedules by Date Range (Admin) schedule.byDateRangeAll
Schedules

Returns the selected company's schedules in a date range (admin; location-ownership, no roster gate)

Input Schema
{
  startDate: any
  endDate: any
}
Output Schema
Array<{
  id: string
  locationId: string
  date: string | any
  startTime: string | null
  endTime: string | null
  notes: string | null
  location: {
    id: string
    city: string | any
    name: string
    phoneNumberId: string | null
    phoneNumber?: {
      id: string
      name: string | null
      number: string
    } | null
    deletedAt: string | any | null
  }
  talentId: string
  talent: {
    id: string
    nickname: string
    thumbnailUrl: string | null
  }
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Create Schedule schedule.create
Schedules

Creates a new schedule

Input Schema
{
  locationId: string
  date: any
  startTime?: string | null
  endTime?: string | null
  notes?: string | null
  talentId: string
}
Output Schema
{
  id: string
  locationId: string
  date: string | any
  startTime: string | null
  endTime: string | null
  notes: string | null
  location: {
    id: string
    city: string | any
    name: string
    phoneNumberId: string | null
    phoneNumber?: {
      id: string
      name: string | null
      number: string
    } | null
    deletedAt: string | any | null
  }
}
Test Endpoint
Optional fields (click to add):
startTime endTime notes
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Upsert Schedule schedule.upsert
Schedules

Get-or-create a schedule by its natural key (talent + location + date). Idempotent β€” returns the row and whether it was newly created. The historical import (LUX-120) uses this as its per-day anchor.

Input Schema
{
  locationId: string
  date: any
  startTime?: string | null
  endTime?: string | null
  notes?: string | null
  talentId: string
}
Output Schema
{
  created: boolean
  schedule: {
    id: string
    locationId: string
    date: string | any
    startTime: string | null
    endTime: string | null
    notes: string | null
    location: {
      id: string
      city: string | any
      name: string
      phoneNumberId: string | null
      phoneNumber?: {
        id: string
        name: string | null
        number: string
      } | null
      deletedAt: string | any | null
    }
  }
}
Test Endpoint
Optional fields (click to add):
startTime endTime notes
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Update Schedule schedule.update
Schedules

Updates an existing schedule

Input Schema
{
  locationId?: string
  date?: any
  startTime?: string | null
  endTime?: string | null
  notes?: string | null
  id: string
}
Output Schema
{
  id: string
  locationId: string
  date: string | any
  startTime: string | null
  endTime: string | null
  notes: string | null
  location: {
    id: string
    city: string | any
    name: string
    phoneNumberId: string | null
    phoneNumber?: {
      id: string
      name: string | null
      number: string
    } | null
    deletedAt: string | any | null
  }
}
Test Endpoint
Optional fields (click to add):
locationId date startTime endTime notes
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Delete Schedule schedule.delete
Schedules

Deletes a schedule

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  locationId: string
  date: string | any
  startTime: string | null
  endTime: string | null
  notes: string | null
  location: {
    id: string
    city: string | any
    name: string
    phoneNumberId: string | null
    phoneNumber?: {
      id: string
      name: string | null
      number: string
    } | null
    deletedAt: string | any | null
  }
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

Service

query
List Services service.list
Services

Returns all services with talent counts

Output Schema
Array<{
  id: string
  name: string
  createdAt: string | any
  talentCount: number
}>
Test Endpoint
query
Get Service by ID service.byId
Services

Returns a service by ID

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  name: string
  createdAt: string | any
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Create Service service.create
Services

Creates a new service

Input Schema
{
  name: string
}
Output Schema
{
  id: string
  name: string
  createdAt: string | any
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Update Service service.update
Services

Updates a service

Input Schema
{
  name?: string
  id: string
}
Output Schema
{
  id: string
  name: string
  createdAt: string | any
}
Test Endpoint
Optional fields (click to add):
name
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Delete Service service.delete
Services

Deletes a service

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  name: string
  createdAt: string | any
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

Tag

query
List Tags tag.list
Tags

Returns all tags

Output Schema
Array<{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string
}>
Test Endpoint
query
Get Tag by ID tag.byId
Tags

Returns a tag by ID

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Create Tag tag.create
Tags

Creates a new tag

Input Schema
{
  name: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Update Tag tag.update
Tags

Updates a tag

Input Schema
{
  name?: string
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string
}
Test Endpoint
Optional fields (click to add):
name
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Delete Tag tag.delete
Tags

Deletes a tag

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  name: string
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

Talent

query
List Talents talent.list
Talents

Returns the requesting company’s talents for the public roster, including service names for the filter UI

Output Schema
Array<{
  id: string
  createdAt: string | any
  updatedAt: string | any
  nickname: string
  age: number | null
  height: string | null
  weight: string | null
  measurements: string | null
  nationality: string | null
  hair: string | null
  eyes: string | null
  tattoos: boolean | null
  enhanced: boolean | null
  cupSize: string | null
  duos: boolean | null
  tagline: string | null
  bio: string | null
  badge: "Visiting" | "Star" | "Vip" | "New" | null
  defaultPhoneNumberId: string | null
  phoneNumberExpiresAt: string | any | null
  defaultPhoneNumber?: {
    id: string
    createdAt: string | any
    updatedAt: string | any
    name: string | null
    number: string
  } | null
  tags: Array<{
    tag: {
      id: string
      createdAt: string | any
      updatedAt: string | any
      name: string
    }
  }>
  images: any[]
  menuServices: Array<{
    service: {
      name: string
    }
  }>
}>
Test Endpoint
query
Available Today talent.availableToday
Talents

Returns the requesting company’s talents (with images) scheduled for today, including the city they are in today

Input Schema
{
  today: any
}
Output Schema
Array<{
  id: string
  createdAt: string | any
  updatedAt: string | any
  nickname: string
  age: number | null
  height: string | null
  weight: string | null
  measurements: string | null
  nationality: string | null
  hair: string | null
  eyes: string | null
  tattoos: boolean | null
  enhanced: boolean | null
  cupSize: string | null
  duos: boolean | null
  tagline: string | null
  bio: string | null
  badge: "Visiting" | "Star" | "Vip" | "New" | null
  defaultPhoneNumberId: string | null
  phoneNumberExpiresAt: string | any | null
  defaultPhoneNumber?: {
    id: string
    createdAt: string | any
    updatedAt: string | any
    name: string | null
    number: string
  } | null
  tags: Array<{
    tag: {
      id: string
      createdAt: string | any
      updatedAt: string | any
      name: string
    }
  }>
  images: any[]
  city: string
  startTime: string | null
  endTime: string | null
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Get Talent by ID talent.byId
Talents

Returns a talent by ID with relations; 404 unless the talent belongs to the requesting company

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  nickname: string
  age: number | null
  height: string | null
  weight: string | null
  measurements: string | null
  nationality: string | null
  hair: string | null
  eyes: string | null
  tattoos: boolean | null
  enhanced: boolean | null
  cupSize: string | null
  duos: boolean | null
  tagline: string | null
  bio: string | null
  badge: "Visiting" | "Star" | "Vip" | "New" | null
  defaultPhoneNumberId: string | null
  phoneNumberExpiresAt: string | any | null
  defaultPhoneNumber?: {
    id: string
    createdAt: string | any
    updatedAt: string | any
    name: string | null
    number: string
  } | null
  tags: Array<{
    tag: {
      id: string
      createdAt: string | any
      updatedAt: string | any
      name: string
    }
  }>
  menus: Array<{
    id: string
    createdAt: string | any
    updatedAt: string | any
    type: "Regular" | "Vip"
    durationMinutes: number
    price: number
  }>
  menuServices: Array<{
    id: string
    serviceId: string
    excludedFromPromo: boolean
    includedInVip: boolean
    price: number | null
    service: {
      id: string
      name: string
      createdAt: string | any
    }
  }>
  schedules: Array<{
    id: string
    locationId: string
    date: string | any
    startTime: string | null
    endTime: string | null
    location: {
      id: string
      city: string | any
      name: string
      phoneNumberId: string | null
      phoneNumber?: {
        id: string
        name: string | null
        number: string
      } | null
      deletedAt: string | any | null
    }
  }>
  images: any[]
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Get Talent by Nickname talent.byNickname
Talents

Returns a talent by nickname with relations; 404 unless the talent belongs to the requesting company

Input Schema
{
  nickname: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  nickname: string
  age: number | null
  height: string | null
  weight: string | null
  measurements: string | null
  nationality: string | null
  hair: string | null
  eyes: string | null
  tattoos: boolean | null
  enhanced: boolean | null
  cupSize: string | null
  duos: boolean | null
  tagline: string | null
  bio: string | null
  badge: "Visiting" | "Star" | "Vip" | "New" | null
  defaultPhoneNumberId: string | null
  phoneNumberExpiresAt: string | any | null
  defaultPhoneNumber?: {
    id: string
    createdAt: string | any
    updatedAt: string | any
    name: string | null
    number: string
  } | null
  tags: Array<{
    tag: {
      id: string
      createdAt: string | any
      updatedAt: string | any
      name: string
    }
  }>
  menus: Array<{
    id: string
    createdAt: string | any
    updatedAt: string | any
    type: "Regular" | "Vip"
    durationMinutes: number
    price: number
  }>
  menuServices: Array<{
    id: string
    serviceId: string
    excludedFromPromo: boolean
    includedInVip: boolean
    price: number | null
    service: {
      id: string
      name: string
      createdAt: string | any
    }
  }>
  schedules: Array<{
    id: string
    locationId: string
    date: string | any
    startTime: string | null
    endTime: string | null
    location: {
      id: string
      city: string | any
      name: string
      phoneNumberId: string | null
      phoneNumber?: {
        id: string
        name: string | null
        number: string
      } | null
      deletedAt: string | any | null
    }
  }>
  images: any[]
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
List Talent Summaries talent.listSummary
Talents

Returns lightweight talent list (all companies) with a `member` flag for the requesting company

Output Schema
Array<{
  id: string
  createdAt: string | any
  updatedAt: string | any
  nickname: string
  badge: "Visiting" | "Star" | "Vip" | "New" | null
  tagline: string | null
  member: boolean
}>
Test Endpoint
query
Get Talent by Nickname (Admin) talent.byNicknameAll
Talents

Returns a talent by nickname across all companies, with a `member` flag for the requesting company

Input Schema
{
  nickname: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  nickname: string
  age: number | null
  height: string | null
  weight: string | null
  measurements: string | null
  nationality: string | null
  hair: string | null
  eyes: string | null
  tattoos: boolean | null
  enhanced: boolean | null
  cupSize: string | null
  duos: boolean | null
  tagline: string | null
  bio: string | null
  badge: "Visiting" | "Star" | "Vip" | "New" | null
  defaultPhoneNumberId: string | null
  phoneNumberExpiresAt: string | any | null
  defaultPhoneNumber?: {
    id: string
    createdAt: string | any
    updatedAt: string | any
    name: string | null
    number: string
  } | null
  tags: Array<{
    tag: {
      id: string
      createdAt: string | any
      updatedAt: string | any
      name: string
    }
  }>
  menus: Array<{
    id: string
    createdAt: string | any
    updatedAt: string | any
    type: "Regular" | "Vip"
    durationMinutes: number
    price: number
  }>
  menuServices: Array<{
    id: string
    serviceId: string
    excludedFromPromo: boolean
    includedInVip: boolean
    price: number | null
    service: {
      id: string
      name: string
      createdAt: string | any
    }
  }>
  schedules: Array<{
    id: string
    locationId: string
    date: string | any
    startTime: string | null
    endTime: string | null
    notes: string | null
    location: {
      id: string
      city: string | any
      name: string
      phoneNumberId: string | null
      phoneNumber?: {
        id: string
        name: string | null
        number: string
      } | null
      deletedAt: string | any | null
    }
  }>
  images: any[]
  member: boolean
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Get Talent Notes (Admin) talent.notesById
Talents

Admin-only forum-ad notes for a talent

Input Schema
{
  id: string
}
Output Schema
{
  notes: string | null
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
List Talent Memberships talent.memberships
Talents

Returns the companies a talent belongs to

Input Schema
{
  talentId: string
}
Output Schema
Array<{
  companyId: string
  companySlug: string
  companyName: string
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Set Talent Membership talent.setMembership
Talents

Adds a talent to or removes a talent from a company; returns the updated membership list

Input Schema
{
  talentId: string
  companyId: string
  member: boolean
}
Output Schema
Array<{
  companyId: string
  companySlug: string
  companyName: string
}>
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
List Talent Exclusions talent.listExclusions
Talents

Returns the ids of clients on a talent's Don't-See list

Input Schema
{
  talentId: string
}
Output Schema
string[]
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Set Talent Exclusions talent.setExclusions
Talents

Replaces a talent's Don't-See list β€” the clients this talent won't see

Input Schema
{
  talentId: string
  clientIds: string[]
}
Output Schema
string[]
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Create Talent talent.create
Talents

Creates a new talent

Input Schema
{
  nickname: string
  age?: number | null
  height?: string | null
  weight?: string | null
  measurements?: string | null
  nationality?: string | null
  hair?: string | null
  eyes?: string | null
  tattoos?: boolean | null
  enhanced?: boolean | null
  cupSize?: string | null
  duos?: boolean | null
  tagline?: string | null
  bio?: string | null
  badge?: "Visiting" | "Star" | "Vip" | "New" | null
  defaultPhoneNumberId?: string | null
  phoneNumberExpiresAt?: any | null
  notes?: string | null
  tags?: string[]
  menus?: Array<{
    type: "Regular" | "Vip"
    durationMinutes: number
    price: number
  }>
  menuServices?: Array<{
    serviceId: string
    price?: number | null
  }>
  images?: Array<{
    fileId: string
    variant?: "Original" | "Thumbnail" | "Large"
    imageBrand?: "LuxWatermark" | "Clean" | null
    width?: number | null
    height?: number | null
    sortOrder?: number
  }>
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  nickname: string
  age: number | null
  height: string | null
  weight: string | null
  measurements: string | null
  nationality: string | null
  hair: string | null
  eyes: string | null
  tattoos: boolean | null
  enhanced: boolean | null
  cupSize: string | null
  duos: boolean | null
  tagline: string | null
  bio: string | null
  badge: "Visiting" | "Star" | "Vip" | "New" | null
  defaultPhoneNumberId: string | null
  phoneNumberExpiresAt: string | any | null
}
Test Endpoint
Optional fields (click to add):
age height weight measurements nationality hair eyes tattoos enhanced cupSize duos tagline bio badge defaultPhoneNumberId phoneNumberExpiresAt notes tags menus menuServices images
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Update Talent talent.update
Talents

Updates an existing talent

Input Schema
{
  nickname?: string
  age?: number | null
  height?: string | null
  weight?: string | null
  measurements?: string | null
  nationality?: string | null
  hair?: string | null
  eyes?: string | null
  tattoos?: boolean | null
  enhanced?: boolean | null
  cupSize?: string | null
  duos?: boolean | null
  tagline?: string | null
  bio?: string | null
  badge?: "Visiting" | "Star" | "Vip" | "New" | null
  defaultPhoneNumberId?: string | null
  phoneNumberExpiresAt?: any | null
  notes?: string | null
  tags?: string[]
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  nickname: string
  age: number | null
  height: string | null
  weight: string | null
  measurements: string | null
  nationality: string | null
  hair: string | null
  eyes: string | null
  tattoos: boolean | null
  enhanced: boolean | null
  cupSize: string | null
  duos: boolean | null
  tagline: string | null
  bio: string | null
  badge: "Visiting" | "Star" | "Vip" | "New" | null
  defaultPhoneNumberId: string | null
  phoneNumberExpiresAt: string | any | null
}
Test Endpoint
Optional fields (click to add):
nickname age height weight measurements nationality hair eyes tattoos enhanced cupSize duos tagline bio badge defaultPhoneNumberId phoneNumberExpiresAt notes tags
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Delete Talent talent.delete
Talents

Deletes a talent

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  nickname: string
  age: number | null
  height: string | null
  weight: string | null
  measurements: string | null
  nationality: string | null
  hair: string | null
  eyes: string | null
  tattoos: boolean | null
  enhanced: boolean | null
  cupSize: string | null
  duos: boolean | null
  tagline: string | null
  bio: string | null
  badge: "Visiting" | "Star" | "Vip" | "New" | null
  defaultPhoneNumberId: string | null
  phoneNumberExpiresAt: string | any | null
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.

User

query
Get Current User user.me
Users

Returns the authenticated user profile

Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  email: string
  name: string | null
  role: string | null
}
Test Endpoint
mutation
Create User user.create
Users

Creates a new user via the auth admin API

Input Schema
{
  email: string
  name: string
  password: string
  role: "user" | "admin" | "booker"
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  email: string
  name: string | null
  role: string | null
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
Get User by ID user.getById
Users

Returns a user by their ID

Input Schema
{
  id: string
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  email: string
  name: string | null
  role: string | null
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Update User user.update
Users

Updates an existing user

Input Schema
{
  id: string
  data: {
    email?: string
    name?: string
    role?: "user" | "admin" | "booker"
  }
}
Output Schema
{
  id: string
  createdAt: string | any
  updatedAt: string | any
  email: string
  name: string | null
  role: string | null
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
mutation
Set User Password user.setPassword
Users

Sets a new password for a user via the auth admin API

Input Schema
{
  userId: string
  newPassword: string
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.
query
List Users user.list
Users

Returns all users

Output Schema
Array<{
  id: string
  createdAt: string | any
  updatedAt: string | any
  email: string
  name: string | null
  role: string | null
}>
Test Endpoint

WeeklyReport

query
Weekly Report weeklyReport.byWeek
WeeklyReport

Collected cash (by rail, per city), booker pay, and expenses (by category) rolled up over a week β€” the Mon–Sun bounds are sent by the client

Input Schema
{
  startDate: any
  endDate: any
}
Output Schema
{
  weekStart: string | any
  weekEnd: string | any
  moneyIn: {
    cash: number
    emt: number
    giftCard: number
    credit: number
    total: number
  }
  bookerPay: number
  cancellationAgency: number
  expensesByCategory: Record<string, number>
  totalExpenses: number
  generalExpenses: number
  totalOut: number
  net: number
  cities: Array<{
    city: string
    moneyIn: {
      cash: number
      emt: number
      giftCard: number
      credit: number
      total: number
    }
    bookerPay: number
    cancellationAgency: number
    expenses: number
  }>
}
Test Endpoint
πŸ’‘ Tip: Schema is pre-filled with required fields. Click badges above to add optional fields.