Skip to content
Development
Command

/schedule-entry

Create a schedule entry/appointment in ConnectWise PSA

From plugin
msp-claude-plugins
39200 skills141 agents200 commands
Install
$ npx -y skills add wyre-technology/msp-claude-plugins --agent claude-code

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/schedule-entry

Context preview

What this command does when you run it.

Create a schedule entry/appointment in ConnectWise PSA

Command definition

schedule-entry.md
description: Create a schedule entry/appointment in ConnectWise PSA
argument-hint: "<name> <start_date> <end_date> [member] [ticket_id] [type] [location] [reminder_minutes] [status]"
arguments: [name, start_date, end_date, member, ticket_id, type, location, reminder_minutes, status]

Create ConnectWise PSA Schedule Entry

Create a schedule entry/appointment in ConnectWise, optionally linked to a ticket.

Prerequisites

  • Valid ConnectWise PSA API credentials configured
  • User must have schedule creation permissions
  • Member must have schedule access

Steps

1. **Validate date/time inputs**

  • Parse start_date and end_date
  • Validate end_date is after start_date
  • Check for schedule conflicts (if enabled)

2. **Resolve member (if provided)**

   GET /system/members?conditions=identifier='{member}'
  • Default to current authenticated user if not specified

3. **Validate ticket (if ticket_id provided)**

   GET /service/tickets/{ticket_id}
  • Confirm ticket exists and is accessible

4. **Resolve schedule type (if provided)**

   GET /schedule/types?conditions=name='{type}'

5. **Resolve schedule status (if provided)**

   GET /schedule/statuses?conditions=name='{status}'

6. **Create schedule entry**

   POST /schedule/entries
   Content-Type: application/json

   {
     "name": "<name>",
     "dateStart": "<start_date>",
     "dateEnd": "<end_date>",
     "member": {"identifier": "<member>"},
     "objectId": <ticket_id>,
     "type": {"id": <type_id>},
     "where": {"id": <location_id>},
     "status": {"id": <status_id>},
     "reminder": {
       "minutes": <reminder_minutes>
     }
   }

7. **Return confirmation with calendar details**

Parameters

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | name | string | Yes | - | Entry name/subject | | start_date | datetime | Yes | - | Start date and time | | end_date | datetime | Yes | - | End date and time | | member | string | No | Current user | Member identifier | | ticket_id | integer | No | - | Associated ticket ID | | type | string | No | - | Schedule type | | location | string | No | - | Location/address | | reminder_minutes | integer | No | - | Minutes before reminder | | status | string | No | - | Schedule status |

Examples

Basic Schedule Entry

/schedule-entry "Server Maintenance" "2026-02-10 09:00" "2026-02-10 12:00"

Linked to Ticket

/schedule-entry "Server Maintenance" "2026-02-10 09:00" "2026-02-10 12:00" --ticket_id 12345

On-site Appointment

/schedule-entry "On-site Support" "2026-02-11 14:00" "2026-02-11 17:00" --location "123 Main St, Anytown, USA" --type "Service"

Schedule for Another Member

/schedule-entry "Customer Meeting" "2026-02-12 10:00" "2026-02-12 11:00" --member jsmith

With Reminder

/schedule-entry "Project Kickoff" "2026-02-15 09:00" "2026-02-15 10:00" --reminder_minutes 30

Tentative Appointment

/schedule-entry "Potential Site Visit" "2026-02-20 13:00" "2026-02-20 16:00" --status "Tentative"

Full Example

/schedule-entry "Quarterly Review Meeting" "2026-02-28 14:00" "2026-02-28 15:30" --member jsmith --type "Meeting" --location "Customer Site - 456 Oak Ave" --reminder_minutes 60 --status "Firm"

Output

Successful Creation

Schedule Entry Created Successfully

Entry ID:       34567
Name:           Server Maintenance
Type:           Service

Time:
  Start:        2026-02-10 09:00
  End:          2026-02-10 12:00
  Duration:     3 hours

Member:         Jane Technician (jtechnician)
Status:         Firm

Linked Ticket:  #12345 - Server maintenance required
Company:        Acme Corporation

Calendar URL:   https://na.myconnectwise.net/v4_6_release/services/system_io/Schedule/fv_sch200_schedule.rails

iCal Export:    Available (use --export-ical)

With Location

Schedule Entry Created Successfully

Entry ID:       34568
Name:           On-site Support
Type:           Service

Time:
  Start:        2026-02-11 14:00
  End:          2026-02-11 17:00
  Duration:     3 hours

Member:         Jane Technician (jtechnician)
Status:         Firm

Location:
  Address:      123 Main St, Anytown, USA

  Directions:   https://maps.google.com/?q=123+Main+St,+Anytown,+USA

Reminder:       30 minutes before (2026-02-11 13:30)

With Ticket Link

Schedule Entry Created Successfully

Entry ID:       34569
Name:           Server Maintenance
Type:           Service

Time:
  Start:        2026-02-10 09:00
  End:          2026-02-10 12:00
  Duration:     3 hours

Linked Ticket:
  ID:           #12345
  Summary:      Server maintenance required
  Company:      Acme Corporation
  Contact:      John Smith (john.smith@acme.com)
  Priority:     Medium (3)
  Status:       Scheduled

Note: Ticket status updated to "Scheduled"

API Authentication

# Base64 encode credentials: company+publicKey:privateKey
AUTH=$(echo -n "${CW_COMPANY}+${CW_PUBLIC_KEY}:${CW_PRIVATE_KEY}" | base64)

# Create schedule entry
curl -s -X POST \
  "https://${CW_HOST}/v4_6_release/apis/3.0/schedule/entries" \
  -H "Authorization: Basic ${AUTH}" \
  -H "clientId: ${CW_CLIENT_ID}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Server Maintenance",
    "dateStart": "2026-02-10T09:00:00Z",
    "dateEnd": "2026-02-10T12:00:00Z",
    "member": {"identifier": "jtechnician"},
    "objectId": 12345,
    "type": {"id": 1},
    "status": {"id": 1}
  }'

# Get schedule types
curl -s -X GET \
  "https://${CW_HOST}/v4_6_release/apis/3.0/schedule/types" \
  -H "Authorization: Basic ${AUTH}" \
  -H "clientId: ${CW_CLIENT_ID}" \
  -H "Content-Type: application/json"

# Get schedule statuses
curl -s -X GET \
  "https://${CW_HOST}/v4_6_release/apis/3.0/schedule/statuses" \
  -H "Authorization: Basic ${AUTH}" \
  -H "clientId: ${CW_CLIENT_ID}" \
  -H "
Read more
Ships withmsp-claude-plugins

One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: mcp.wyre.ai

Get the whole plugin, auto-invoked
Stats
39
Stars
0
Views
17
Forks
Active
Maintenance
Astro
Language
Apache-2.0
License
1d ago
Last commit
6mo ago
Created

Repo: wyre-technology/msp-claude-plugins