Resources Overview

Understand how resources (staff, equipment, rooms) work in OnSched and how to configure their availability and capabilities.

Environment tip: All examples use v3.onsched.com for production. Replace the host with api-stage.onsched.com when calling the staging environment.

What Are Resources?

Resources are the people, equipment, or spaces that deliver services. They represent:

  • Staff – Stylists, consultants, therapists, instructors, doctors
  • Equipment – Vehicles, machines, tools, devices
  • Spaces – Rooms, courts, studios, tables
  • Virtual assets – Video licenses, phone lines, virtual meeting rooms

Every appointment requires at least one resource. Resources have schedules, connect to external calendars, and determine when services are available.

Core Properties

Name and Description

  • name (required) – Display name ("Dr. Smith", "Conference Room A", "Bike #12")
  • description (optional) – Additional details, specializations, or notes

Names appear in booking confirmations and customer notifications.

Contact Information

  • email (optional) – Resource's email address
  • phone (optional) – Phone number for SMS notifications

Used for:

  • Sending appointment notifications
  • Calendar sync (Google, Outlook)
  • Staff communication

Notification Preferences

  • notificationType (enum) – How the resource receives appointment alerts
    • EMAIL – Email notifications only
    • SMS – Text message notifications only
    • ALL – Both email and SMS
    • NONE – No notifications

Configure per resource so staff get alerts their preferred way.

Timezone

  • timezone (string) – IANA timezone (e.g., America/New_York)

Used to calculate:

  • Resource's local working hours
  • When to send notifications
  • Availability in user's local time

Defaults to location or company timezone if not set.

Image

  • imageUrl (string) – URL to resource photo or icon

Display in booking interfaces so customers know who they're booking with.

Capacity Settings

Bookings Per Slot

  • bookingsPerSlot (integer) – How many simultaneous appointments this resource can handle (default: 1)

Most resources have capacity of 1 (can serve one customer at a time). Higher values allow:

  • Group bookings (instructor teaches multiple students)
  • Shared equipment (multiple people can use simultaneously)
  • Pooled resources (multiple units of same equipment)

See Max Capacity for group booking details.

Booking Limit

  • bookingLimit (integer) – Maximum appointments this resource can have within a time window (default: 0 = unlimited)

Prevents overbooking even if schedule allows it. Use to:

  • Limit staff workload
  • Cap equipment usage
  • Restrict bookings per day/week

See Booking Limits for configuration.

Availability Configuration

Resources can define availability using two models:

Schedule-Based Availability (Default)

Resource is available during:

  • Weekly schedules – Recurring weekly hours (e.g., Mon-Fri 9am-5pm)
  • Single allocations – One-time availability blocks (e.g., working Saturday this week only)
  • Recurring blocks – Repeating time blocks with rules (e.g., first Monday of every month)

This is the most common model. Set availabilityType: schedule or leave default.

Allocation-Based Availability

Resource is unavailable by default UNLESS explicitly allocated:

  • Only times defined in allocations are available
  • Everything else is blocked
  • Useful for resources that work irregular schedules

Set availabilityType: allocation.

Example:

A consultant works project-based hours:

  • Week 1: Available Mon-Wed 10am-2pm
  • Week 2: Not available
  • Week 3: Available Fri 1pm-6pm

Use allocation-based availability and create allocations for each working period.

Creating a Resource

Basic Resource

curl -X POST https://v3.onsched.com/v3/resource \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Sarah Johnson",
    "email": "[email protected]",
    "phone": "+15550123",
    "notificationType": "ALL",
    "timezone": "America/New_York",
    "CompanyId": "company-uuid"
  }'

Response:

{
  "id": "resource-uuid",
  "name": "Sarah Johnson",
  "email": "[email protected]",
  "phone": "+15550123",
  "notificationType": "ALL",
  "timezone": "America/New_York",
  "bookingsPerSlot": 1,
  "createdAt": "2025-11-25T10:00:00Z"
}

Equipment Resource

curl -X POST https://v3.onsched.com/v3/resource \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Treadmill #5",
    "description": "Located in cardio section",
    "notificationType": "NONE",
    "bookingsPerSlot": 1,
    "CompanyId": "company-uuid"
  }'

Equipment typically doesn't need email/phone since it won't receive notifications.

Group Resource (Instructor)

curl -X POST https://v3.onsched.com/v3/resource \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Instructor Mike",
    "email": "[email protected]",
    "notificationType": "EMAIL",
    "bookingsPerSlot": 20,
    "CompanyId": "company-uuid"
  }'

This instructor can handle 20 customers simultaneously in group classes.

Updating Resources

Use PUT /v3/resource/:id:

curl -X PUT https://v3.onsched.com/v3/resource/RESOURCE_ID \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "+15550999",
    "notificationType": "SMS"
  }'

Changes apply to future appointments. Existing appointments retain original configuration.

Listing Resources

Retrieve resources with filtering:

# All company resources
curl https://v3.onsched.com/v3/resources?limit=50 \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

# Resources at a specific location
curl https://v3.onsched.com/v3/resources?LocationId=LOCATION_ID \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

# Resources for a service
curl https://v3.onsched.com/v3/service/SERVICE_ID/resources?LocationId=LOCATION_ID \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Response includes pagination and full resource details.

Deleting Resources

Resources use soft-delete:

curl -X DELETE https://v3.onsched.com/v3/resource/RESOURCE_ID \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Deleted resources:

  • No longer appear in availability
  • Remain linked to historical appointments
  • Can be restored if needed

Best practice: Instead of deleting, mark inactive resources with custom fields or remove service links.

Resource Schedules

Resources need operating hours to appear in availability. Define schedules using:

Weekly Unavailability

Standard weekly hours (e.g., Monday-Friday 9am-5pm).

These define when a resource is NOT available. Everything else is considered available (within location operating hours).

Weekly Allocations

Explicit time blocks when resource is available (for allocation-based resources).

Single Allocations

One-time availability blocks (working extra hours, covering shifts).

Out of Office

Blocks of unavailability (vacation, sick days, training).

See:

External Calendar Sync

Resources can sync with Google Calendar or Outlook:

  • Two-way sync – OnSched appointments appear in external calendar, external events block OnSched availability
  • Real-time blocking – External meetings prevent double-booking
  • Automatic updates – Cancellations and reschedules sync both ways

To enable:

  1. Resource must have email address
  2. Connect calendar via dashboard or API
  3. Authorize OnSched to access the calendar
  4. Events sync automatically

See External Calendar Sync for setup.

Custom Fields

Extend resources with additional data:

{
  "name": "Dr. Martinez",
  "CustomFields": {
    "specialization": "orthodontics",
    "languages": "en,es",
    "yearsExperience": "15",
    "licenseNumber": "12345"
  }
}

Use custom fields for:

  • Staff credentials and certifications
  • Equipment specifications
  • Room amenities
  • Integration metadata

Relationship with Other Entities

Resources ↔ Services

Resources link to services they can deliver. Without this link, services won't show availability.

See Linked Resources.

Resources ↔ Locations

Resources work at one or more locations. Use:

  • Service links to associate resource with services at specific locations
  • Allocations to define when resource is at each location

See Linked Locations.

Resources ↔ Appointments

Appointments assign resources to fulfill services:

  • Automatically via round robin
  • Manually via ResourceIds parameter

See Round Robin Booking.

Common Resource Types

Staff Members

Configuration:

  • Name, email, phone
  • notification Type: ALL or EMAIL
  • Link to services they perform
  • Weekly schedule or allocations
  • Optional: Connect external calendar

Example: Hairstylist, consultant, instructor, therapist

Equipment

Configuration:

  • Descriptive name (include unit number if multiple)
  • notificationType: NONE (equipment doesn't get notifications)
  • bookingsPerSlot if multiple can use simultaneously
  • Link to services that require the equipment

Example: Treadmill, vehicle, projector, instrument

Rooms or Spaces

Configuration:

  • Room name/number
  • notificationType: NONE
  • bookingsPerSlot = room capacity (if multiple simultaneous bookings allowed)
  • Link to services held in that room

Example: Conference room, exam room, studio, court

Virtual Resources

Configuration:

  • License or account name
  • Email if applicable (for automated meeting links)
  • bookingsPerSlot based on license limits
  • Link to virtual services

Example: Zoom license, phone line, video consultation slot

Resource Assignment Modes

When multiple resources can fulfill a service, OnSched uses round robin logic:

  • RANDOM – Pick any available resource
  • BALANCED – Choose resource with fewest bookings in search window
  • NONE – Require specific resources (or all specified resources for multi-resource appointments)

See Round Robin Booking for details.

Multi-Location Resources

Resources can work at multiple locations with different schedules:

Example:

Consultant works:

  • Monday/Tuesday: Location A
  • Wednesday/Thursday: Location B
  • Friday: Location C

Configuration:

  1. Create one resource record
  2. Link to services at all three locations
  3. Use weekly allocations to define when at each location

See Linked Locations.

Best Practices

Naming Conventions

  • Staff: Use real names ("Dr. Alice Smith")
  • Equipment: Include identifier ("Bike #5", "Treadmill 3")
  • Rooms: Use clear labels ("Conference Room A", "Exam Room 2")

Avoid generic names like "Resource 1"—customers see these in confirmations.

Contact Information

  • Always provide email for staff (enables notifications and calendar sync)
  • Provide phone only if SMS notifications are desired
  • Omit contact info for equipment/rooms

Timezone Accuracy

  • Set resource timezone matching where they physically work
  • Update timezone if resource relocates
  • Use location timezone as fallback

Capacity Settings

  • Most resources should have bookingsPerSlot: 1
  • Only increase for true simultaneous capacity (instructors, shared equipment)
  • Don't confuse bookingsPerSlot with booking limits (see Booking Limits)

Regular Maintenance

  • Review resource list quarterly
  • Archive departed staff
  • Update contact information
  • Verify service links are current

Troubleshooting

Resource not appearing in availability

Check:

  1. Resource is linked to requested service at the location
  2. Resource has availability defined (weekly schedule or allocations)
  3. Resource isn't fully booked during search window
  4. Resource isn't marked out of office
  5. External calendar (if synced) isn't blocking all times

Notifications not sending to resource

Check:

  1. Resource has valid email/phone
  2. notificationType is not NONE
  3. Location has notifications enabled
  4. Email/SMS gateway is configured (check with support if needed)

Calendar sync not working

Check:

  1. Resource has email address
  2. External calendar is connected and authorized
  3. Calendar permissions include read/write
  4. No authentication errors (re-authorize if needed)

See External Calendar Sync.

Resource showing availability when they shouldn't

Check:

  1. Resource doesn't have out-of-office block during that time
  2. Weekly unavailability is configured correctly
  3. Allocation model matches expectations (schedule vs allocation-based)
  4. Location operating hours aren't broader than intended

Common Questions

Can resources have different rates or prices?

OnSched doesn't directly handle pricing per resource. Options:

  • Store pricing in CustomFields
  • Use different services for different resource tiers
  • Handle pricing in your application layer

Can a resource work at multiple locations?

Yes! Link the resource to services at multiple locations and use allocations to define when they're at each location.

How do I handle part-time staff?

  • Create resource record
  • Define limited weekly hours via unavailability
  • Or use single allocations for specific shifts

Can I limit how many appointments a resource has?

Yes, use bookingLimit to cap total bookings. See Booking Limits.

What happens if a resource is double-booked?

OnSched prevents this through availability validation. If external calendar sync is enabled, external events also block availability automatically.

Related Documentation

Resources are the operational backbone of OnSched. Configure them thoughtfully, keep them updated, and your availability and booking systems will run smoothly.