Teachworks MCP by usefulapi
Read Teachworks students, families, tutors, lessons, invoices and payments; book lessons.
我該用這個嗎
品質與安全性
發現項目(3)
- LOW在 teachworks_get_employee_earnings 中
- LOW在 teachworks_create_child_student 中
- LOW在 teachworks_add_student_to_lesson 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"teachworks": {
"url": "https://teachworks.usefulapi.io/mcp"
}
}
}遠端端點
https://teachworks.usefulapi.io/mcpstreamable-http它能做什麼
工具清單
工具(24)
🟢teachworks_list_students(customer_id, first_name, last_name, email, phone_number, ...)
List or search students (child students of families and independent students) with their school, grade, subjects, status, billing method and default teachers. GET /students.
輸入結構描述
{
"type": "object",
"properties": {
"customer_id": {
"description": "Only students of this customer/family id.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"first_name": {
"description": "Search by first name.",
"type": "string"
},
"last_name": {
"description": "Search by last name.",
"type": "string"
},
"email": {
"description": "Search by email.",
"type": "string"
},
"phone_number": {
"description": "Search by phone number.",
"type": "string"
},
"school": {
"description": "Search by school.",
"type": "string"
},
"grade": {
"description": "Search by grade.",
"type": "string"
},
"subject": {
"description": "Search by subject.",
"type": "string"
},
"type": {
"description": "family = child students, independent = independent students.",
"type": "string",
"enum": [
"family",
"independent"
]
},
"status": {
"type": "string",
"enum": [
"Active",
"Inactive",
"Prospective"
]
},
"page": {
"description": "Page number (1-based, default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Records per page (default 20, max 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 50
},
"direction": {
"description": "Sort by id ascending (default) or descending (newest first).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢teachworks_get_student(student_id)
Retrieve one student profile: contact details, school/grade, billing, custom fields, default teachers/services. GET /students/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"student_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
],
"description": "Student id."
}
},
"required": [
"student_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢teachworks_list_customers(first_name, last_name, email, phone_number, city, ...)
List or search customers — the billed profiles: families (with child students) and independent students. Returns contact details, status and last invoice date. GET /customers.
輸入結構描述
{
"type": "object",
"properties": {
"first_name": {
"description": "Search by first name.",
"type": "string"
},
"last_name": {
"description": "Search by last name.",
"type": "string"
},
"email": {
"description": "Search by email.",
"type": "string"
},
"phone_number": {
"description": "Search by phone number.",
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"zip": {
"type": "string"
},
"country": {
"type": "string"
},
"type": {
"description": "family or independent.",
"type": "string",
"enum": [
"family",
"independent"
]
},
"status": {
"type": "string",
"enum": [
"Active",
"Inactive",
"Prospective"
]
},
"page": {
"description": "Page number (1-based, default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Records per page (default 20, max 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 50
},
"direction": {
"description": "Sort by id ascending (default) or descending (newest first).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢teachworks_get_customer(customer_id)
Retrieve one customer (family or independent student) with contact details and custom fields. GET /customers/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"customer_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
],
"description": "Customer id."
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢teachworks_list_employees(first_name, last_name, email, city, state, ...)
List or search employees — teachers/tutors and administrative staff — with subjects, status and wage settings. GET /employees.
輸入結構描述
{
"type": "object",
"properties": {
"first_name": {
"description": "Search by first name.",
"type": "string"
},
"last_name": {
"description": "Search by last name.",
"type": "string"
},
"email": {
"description": "Search by email.",
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"zip": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"Active",
"Inactive",
"Prospective"
]
},
"subject": {
"description": "Search by subject taught.",
"type": "string"
},
"page": {
"description": "Page number (1-based, default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Records per page (default 20, max 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 50
},
"direction": {
"description": "Sort by id ascending (default) or descending (newest first).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢teachworks_get_employee(employee_id)
Retrieve one employee (teacher or staff): contact details, subjects, wage type, bio, permissions. GET /employees/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"employee_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
],
"description": "Employee id."
}
},
"required": [
"employee_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢teachworks_get_employee_earnings(employee_id, status, date_from, date_to)
Total earnings of one employee (lessons, other events, other compensation, total) for an optional lesson status and date range. GET /employees/{id}/earnings.
輸入結構描述
{
"type": "object",
"properties": {
"employee_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
],
"description": "Employee id."
},
"status": {
"description": "Only lessons with this status.",
"type": "string",
"enum": [
"Scheduled",
"Attended",
"Cancelled",
"Missed"
]
},
"date_from": {
"description": "Lessons starting on or after this date.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"date_to": {
"description": "Lessons starting on or before this date.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"employee_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢teachworks_get_lesson_totals(kind, id, measure, status, date_from, ...)
Lesson totals for one student, customer or employee: count (default), duration in minutes, or (employees only) earnings, broken down by status, for an optional status and date range. GET /{students|customers|employees}/{id}/lesson_totals.
輸入結構描述
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"student",
"customer",
"employee"
],
"description": "Whose lessons to total."
},
"id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
],
"description": "The student, customer or employee id."
},
"measure": {
"description": "count (default), duration (minutes) or earnings (employees only).",
"type": "string",
"enum": [
"count",
"duration",
"earnings"
]
},
"status": {
"description": "Only lessons with this status.",
"type": "string",
"enum": [
"Scheduled",
"Attended",
"Cancelled",
"Missed"
]
},
"date_from": {
"description": "Lessons starting on or after this date.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"date_to": {
"description": "Lessons starting on or before this date.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"kind",
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢teachworks_list_lessons(employee_id, student_id, location_id, location_or_parent_location_id, service_id, ...)
List lessons (the calendar) with teacher, service, location, start/end, duration, status and participants. Filter by teacher, student, location, service, status and date range. GET /lessons.
輸入結構描述
{
"type": "object",
"properties": {
"employee_id": {
"description": "Only lessons taught by this teacher (employee id).",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"student_id": {
"description": "Only lessons with this student.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"location_id": {
"description": "Only lessons at this location (exact).",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"location_or_parent_location_id": {
"description": "Lessons at this location or any of its sub-locations.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"service_id": {
"description": "Only lessons of this service.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"series_id": {
"description": "Only lessons of this repeating series.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"name": {
"description": "Search by lesson name.",
"type": "string"
},
"status": {
"type": "string",
"enum": [
"Scheduled",
"Attended",
"Cancelled",
"Missed"
]
},
"custom_status": {
"description": "Search by custom status (Custom Statuses add-on).",
"type": "string"
},
"from_date": {
"description": "Lessons starting on exactly this date.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"date_from": {
"description": "Lessons starting on or after this date.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"date_to": {
"description": "Lessons starting on or before this date.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"joinable": {
"description": "true = only lessons marked joinable.",
"type": "boolean"
},
"include_deleted": {
"description": "true = include deleted lessons.",
"type": "boolean"
},
"page": {
"description": "Page number (1-based, default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Records per page (default 20, max 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 50
},
"direction": {
"description": "Sort by id ascending (default) or descending (newest first).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢teachworks_get_lesson(lesson_id)
Retrieve one lesson with its participants (students, statuses, charges, notes), teacher, wage and cost. GET /lessons/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"lesson_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
],
"description": "Lesson id."
}
},
"required": [
"lesson_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢teachworks_list_other_events(employee_id, location_id, series_id, from_date, date_from, ...)
List non-lesson calendar events (meetings, open houses, staff work) with location, times and participants. GET /other_events.
輸入結構描述
{
"type": "object",
"properties": {
"employee_id": {
"description": "Only events of this employee.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"location_id": {
"description": "Only events at this location.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"series_id": {
"description": "Only events of this repeating series.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"from_date": {
"description": "Events starting on exactly this date.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"date_from": {
"description": "Events starting on or after this date.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"date_to": {
"description": "Events starting on or before this date.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"page": {
"description": "Page number (1-based, default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Records per page (default 20, max 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 50
},
"direction": {
"description": "Sort by id ascending (default) or descending (newest first).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢teachworks_list_availabilities(employee_id, day, page, per_page, direction)
List teachers' weekly availability slots (day of week + start/end time). Use before scheduling a lesson. GET /availabilities.
輸入結構描述
{
"type": "object",
"properties": {
"employee_id": {
"description": "Only this teacher's availability.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"day": {
"description": "Day of week, Sunday = 0 … Saturday = 6.",
"type": "integer",
"minimum": 0,
"maximum": 6
},
"page": {
"description": "Page number (1-based, default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Records per page (default 20, max 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 50
},
"direction": {
"description": "Sort by id ascending (default) or descending (newest first).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢teachworks_list_invoices(customer_id, number, status, date_from, date_to, ...)
List invoices with customer, number, dates, status (Saved, Approved, Paid, Void) and totals. Filter by customer, status, invoice date or due date range. GET /invoices.
輸入結構描述
{
"type": "object",
"properties": {
"customer_id": {
"description": "Only invoices of this customer.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"number": {
"description": "Invoice number.",
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "string"
}
]
},
"status": {
"type": "string",
"enum": [
"Saved",
"Approved",
"Paid",
"Void"
]
},
"date_from": {
"description": "Invoice date on or after.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"date_to": {
"description": "Invoice date on or before.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"due_from": {
"description": "Due date on or after.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"due_to": {
"description": "Due date on or before (e.g. today, to find overdue invoices together with status Approved).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"page": {
"description": "Page number (1-based, default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Records per page (default 20, max 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 50
},
"direction": {
"description": "Sort by id ascending (default) or descending (newest first).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢teachworks_get_invoice(invoice_id)
Retrieve one invoice with its line items (lessons, charges), taxes and totals. GET /invoices/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"invoice_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
],
"description": "Invoice id."
}
},
"required": [
"invoice_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢teachworks_list_payments(customer_id, date_from, date_to, page, per_page, ...)
List customer payments (amount, method, date, refunds, invoice allocations). Filter by customer and date range. GET /payments.
輸入結構描述
{
"type": "object",
"properties": {
"customer_id": {
"description": "Only payments of this customer.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"date_from": {
"description": "Payment date on or after.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"date_to": {
"description": "Payment date on or before.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"page": {
"description": "Page number (1-based, default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Records per page (default 20, max 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 50
},
"direction": {
"description": "Sort by id ascending (default) or descending (newest first).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢teachworks_get_payment(payment_id)
Retrieve one payment with its refunds and the invoices it is allocated to. GET /payments/{id}.
輸入結構描述
{
"type": "object",
"properties": {
"payment_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
],
"description": "Payment id."
}
},
"required": [
"payment_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢teachworks_list_locations(name, page, per_page, direction)
List locations and sub-locations (rooms) where lessons take place. GET /locations.
輸入結構描述
{
"type": "object",
"properties": {
"name": {
"description": "Search by name.",
"type": "string"
},
"page": {
"description": "Page number (1-based, default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Records per page (default 20, max 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 50
},
"direction": {
"description": "Sort by id ascending (default) or descending (newest first).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢teachworks_list_services(name, page, per_page, direction)
List services (lesson types such as 'Math Tutoring') with their default cost and wage. GET /services.
輸入結構描述
{
"type": "object",
"properties": {
"name": {
"description": "Search by name.",
"type": "string"
},
"page": {
"description": "Page number (1-based, default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Records per page (default 20, max 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 50
},
"direction": {
"description": "Sort by id ascending (default) or descending (newest first).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢teachworks_list_subjects(name, page, per_page, direction)
List standard subjects (used on student and teacher profiles). GET /subjects.
輸入結構描述
{
"type": "object",
"properties": {
"name": {
"description": "Search by name (partial match).",
"type": "string"
},
"page": {
"description": "Page number (1-based, default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"per_page": {
"description": "Records per page (default 20, max 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 50
},
"direction": {
"description": "Sort by id ascending (default) or descending (newest first).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴teachworks_create_family(first_name, last_name, email, mobile_phone, home_phone, ...)
WRITE: create a family customer (the billed parent profile that child students belong to). Add children afterwards with teachworks_create_child_student. POST /customers/family.
輸入結構描述
{
"type": "object",
"properties": {
"first_name": {
"type": "string",
"minLength": 1,
"description": "Parent first name(s), e.g. 'Frank & Tina'."
},
"last_name": {
"type": "string",
"minLength": 1,
"description": "Family last name."
},
"email": {
"description": "Primary email (notifications, user account).",
"type": "string"
},
"mobile_phone": {
"type": "string"
},
"home_phone": {
"type": "string"
},
"address": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"zip": {
"type": "string"
},
"country": {
"type": "string"
},
"status": {
"description": "Defaults to Active; use Prospective for leads.",
"type": "string",
"enum": [
"Active",
"Inactive",
"Prospective"
]
},
"additional_notes": {
"type": "string"
}
},
"required": [
"first_name",
"last_name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴teachworks_create_child_student(customer_id, first_name, last_name, email, mobile_phone, ...)
WRITE: create a child student under an existing family (the family is billed for their lessons). POST /students.
輸入結構描述
{
"type": "object",
"properties": {
"customer_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
],
"description": "The family (customer) id the student belongs to."
},
"first_name": {
"type": "string",
"minLength": 1
},
"last_name": {
"type": "string",
"minLength": 1
},
"email": {
"type": "string"
},
"mobile_phone": {
"type": "string"
},
"school": {
"type": "string"
},
"grade": {
"type": "string"
},
"birth_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"status": {
"type": "string",
"enum": [
"Active",
"Inactive",
"Prospective"
]
},
"default_location_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"default_teacher_ids": {
"description": "Default teacher (employee) ids.",
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
}
},
"default_service_ids": {
"description": "Default service ids.",
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
}
},
"standard_subject_ids": {
"description": "Subject ids.",
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
}
},
"additional_notes": {
"type": "string"
}
},
"required": [
"customer_id",
"first_name",
"last_name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴teachworks_create_lesson(employee_id, student_ids, service_id, location_id, from_date, ...)
WRITE: schedule a single lesson on the calendar for one or more students with a teacher, service and location. Check teachworks_list_availabilities and teachworks_list_lessons first to avoid conflicts. POST /lessons.
輸入結構描述
{
"type": "object",
"properties": {
"employee_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
],
"description": "Teacher (employee) id."
},
"student_ids": {
"minItems": 1,
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"description": "Student ids attending."
},
"service_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
],
"description": "Service id (sets the default cost and wage)."
},
"location_id": {
"description": "Location id.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
]
},
"from_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Start date."
},
"from_time": {
"type": "string",
"pattern": "^\\d{1,2}:\\d{2}(:\\d{2})?$",
"description": "Start time, e.g. 16:00."
},
"to_date": {
"description": "End date (defaults to from_date).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"to_time": {
"type": "string",
"pattern": "^\\d{1,2}:\\d{2}(:\\d{2})?$",
"description": "End time, e.g. 17:00."
},
"name": {
"description": "Lesson name (defaults per Teachworks settings).",
"type": "string"
},
"description": {
"type": "string"
},
"time_zone": {
"description": "Rails time zone name, e.g. 'Eastern Time (US & Canada)' (defaults to the account's).",
"type": "string"
},
"spaces": {
"description": "Number of student spaces (group lessons).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"employee_id",
"student_ids",
"service_id",
"from_date",
"from_time",
"to_time"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴teachworks_add_student_to_lesson(lesson_id, student_id)
WRITE: add a student to an existing lesson (the lesson must still be Scheduled). PUT /lessons/{id}/add_student.
輸入結構描述
{
"type": "object",
"properties": {
"lesson_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
],
"description": "Lesson id."
},
"student_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
],
"description": "Student id to add."
}
},
"required": [
"lesson_id",
"student_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴teachworks_create_payment(customer_id, amount, date, payment_method, description)
WRITE: record a payment received from a customer (bookkeeping only — it does not charge a card). POST /payments.
輸入結構描述
{
"type": "object",
"properties": {
"customer_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"pattern": "^\\d+$"
}
],
"description": "Customer that paid."
},
"amount": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Amount paid."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Payment date."
},
"payment_method": {
"type": "string",
"enum": [
"Cash",
"Check",
"Credit Card",
"Debit Card",
"Bank Transfer",
"PayPal",
"Other"
]
},
"description": {
"description": "Details, e.g. 'Payment for INV-0216'.",
"type": "string"
}
},
"required": [
"customer_id",
"amount",
"date"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社群
證據