MCP 服务器

kickserv

io.usefulapi/kickserv
商业与运营 销售与 CRM 公开且可连接 MCP 2026-07-28

此 MCP 可以做什么

Manages Kickserv customers, field-service jobs, tasks, notes, charges, employee assignments and technician time entries.

kickserv_add_customer_note
Add a note to a customer
WRITE: add a note to a customer. Set `public` to true to make it visible to the customer. Kickserv: POST /{account}/customers/{customer_number}/notes.xml.
可能执行破坏性操作
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['customer_number', 'note'], 'properties': {'note': {'type': 'string', 'maxLength': 20000, 'minLength': 1, 'description': 'Note text.'}, 'public': {'type': 'boolean', 'description': 'True to make the note public (customer-visible).'}, 'customer_number': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Customer number.', 'exclusiveMinimum': 0}}}
kickserv_add_job_charge
Add a charge to a job
WRITE: add a charge (line item — a product, service or part) to a job. This changes the job's estimate/invoice total; it does NOT charge the customer's card. Pick `item_id` from kickserv_list_items. Kickserv: POST /{account}/jobs/{job_number}/job_charges.xml.
可能执行破坏性操作
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['job_number', 'job_charge_type_id'], 'properties': {'details': {'type': 'string', 'maxLength': 5000, 'description': 'Line-item details.'}, 'item_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Item `id` from kickserv_list_items.', 'exclusiveMinimum': 0}, 'discount': {'type': 'number', 'maximum': 10000000, 'minimum': 0, 'description': 'Discount.'}, 'quantity': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'Quantity.'}, 'job_number': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Job number.', 'exclusiveMinimum': 0}, 'description': {'type': 'string', 'maxLength': 1000, 'description': 'Line-item description.'}, 'price_per_unit': {'type': 'number', 'maximum': 10000000, 'minimum': 0, 'description': 'Unit price.'}, 'job_charge_type_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Job charge type id.', 'exclusiveMinimum': 0}}}
kickserv_add_job_note
Add a note to a job
WRITE: add a note to a job. Set `public` to true to make it visible to the customer. Kickserv: POST /{account}/jobs/{job_number}/notes.xml.
可能执行破坏性操作
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['job_number', 'note'], 'properties': {'note': {'type': 'string', 'maxLength': 20000, 'minLength': 1, 'description': 'Note text.'}, 'public': {'type': 'boolean', 'description': 'True to make the note public (customer-visible).'}, 'job_number': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Job number.', 'exclusiveMinimum': 0}}}
kickserv_create_customer
Create a customer
WRITE: create a new customer. Kickserv assigns the customer number. Kickserv: POST /{account}/customers.xml.
可能执行破坏性操作
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name'], 'properties': {'fax': {'type': 'string', 'maxLength': 64, 'description': 'Fax number.'}, 'name': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Customer name (required).'}, 'mobile': {'type': 'string', 'maxLength': 64, 'description': 'Mobile number.'}, 'company': {'type': 'boolean', 'description': 'True if the customer is a company rather than a person.'}, 'contact': {'type': 'string', 'maxLength': 255, 'description': 'Primary contact name.'}, 'is_active': {'type': 'boolean', 'description': 'False to mark the customer inactive (reversible).'}, 'last_name': {'type': 'string', 'maxLength': 255, 'description': 'Contact last name.'}, 'first_name': {'type': 'string', 'maxLength': 255, 'description': 'Contact first name.'}, 'alt_contact': {'type': 'string', 'maxLength': 255, 'description': 'Alternate contact name.'}, 'billing_city': {'type': 'string', 'maxLength': 128, 'description': 'Billing city.'}, 'company_name': {'type': 'string', 'maxLength': 255, 'description': 'Company name.'}, 'phone_number': {'type': 'string', 'maxLength': 64, 'description': 'Phone number.'}, 'service_city': {'type': 'string', 'maxLength': 128, 'description': 'Service city.'}, 'billing_state': {'type': 'string', 'maxLength': 64, 'description': 'Billing state.'}, 'email_address': {'type': 'string', 'format': 'email', 'pattern': "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'maxLength': 255, 'description': 'Email address.'}, 'service_state': {'type': 'string', 'maxLength': 64, 'description': 'Service state (2-letter abbreviation in the US).'}, 'account_number': {'type': 'string', 'maxLength': 64, 'description': 'Your own account number for the customer.'}, 'notify_via_sms': {'type': 'boolean', 'description': 'Send the customer SMS notifications.'}, 'billing_address': {'type': 'string', 'maxLength': 255, 'description': 'Billing address (where invoices go), line 1.'}, 'billing_country': {'type': 'string', 'maxLength': 64, 'description': 'Billing country.'}, 'service_address': {'type': 'string', 'maxLength': 255, 'description': 'Service address (where the work happens), line 1.'}, 'service_country': {'type': 'string', 'maxLength': 64, 'description': 'Service country (2-letter code).'}, 'alt_phone_number': {'type': 'string', 'maxLength': 64, 'description': 'Alternate phone number.'}, 'billing_zip_code': {'type': 'string', 'maxLength': 32, 'description': 'Billing ZIP/postal code.'}, 'customer_type_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Customer type id.', 'exclusiveMinimum': 0}, 'notify_via_email': {'type': 'boolean', 'description': 'Send the customer email notifications.'}, 'service_zip_code': {'type': 'string', 'maxLength': 32, 'description': 'Service ZIP/postal code.'}, 'billing_address_2': {'type': 'string', 'maxLength': 255, 'description': 'Billing address line 2.'}, 'service_address_2': {'type': 'string', 'maxLength': 255, 'description': 'Service address line 2.'}, 'customer_source_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Customer source (lead source) id.', 'exclusiveMinimum': 0}, 'special_instructions': {'type': 'string', 'maxLength': 5000, 'description': 'Special instructions shown to technicians.'}}}
kickserv_create_job
Create a job
WRITE: create a job (work order) for a customer. `customer_id` is the customer's internal `id` (from kickserv_get_customer), not the customer number; `job_type_id` is the job category. Set `estimate` to create it as an estimate. Kickserv: POST /{account}/jobs.xml.
可能执行破坏性操作
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['customer_id', 'job_type_id'], 'properties': {'name': {'type': 'string', 'maxLength': 255, 'description': 'Job name/title.'}, 'ends_at': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'When the job ends. A date/time string Kickserv can parse, e.g. `2026-10-02 09:30` or `10/2/2026 09:30am`.'}, 'duration': {'type': 'number', 'maximum': 100000, 'minimum': 0, 'description': 'Job duration.'}, 'estimate': {'type': 'boolean', 'description': 'True to create the job as an estimate.'}, 'po_number': {'type': 'string', 'maxLength': 64, 'description': 'Customer purchase-order number.'}, 'customer_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': "The customer's internal `id` (NOT the customer_number).", 'exclusiveMinimum': 0}, 'description': {'type': 'string', 'maxLength': 10000, 'description': 'Job description / work to be done.'}, 'job_type_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Job category (job type) id.', 'exclusiveMinimum': 0}, 'employee_ids': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'maxItems': 50, 'description': 'Employee `id`s (from kickserv_list_employees) to assign. Replaces the current assignment.'}, 'scheduled_on': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'When the job is scheduled. A date/time string Kickserv can parse, e.g. `2026-10-02 09:30` or `10/2/2026 09:30am`.'}}}
kickserv_create_task
Create a task
WRITE: create a task (appointment / to-do) on a job and optionally assign employees. `job_id` is the job's internal `id` (from kickserv_get_job), not the job number. Kickserv: POST /{account}/tasks.xml.
可能执行破坏性操作
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['job_id', 'name', 'task_type_id'], 'properties': {'name': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Task name.'}, 'job_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': "The job's internal `id` (NOT the job_number).", 'exclusiveMinimum': 0}, 'ends_at': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'When the task ends. A date/time string Kickserv can parse, e.g. `2026-10-02 09:30` or `10/2/2026 09:30am`.'}, 'duration': {'type': 'integer', 'maximum': 100000, 'minimum': 0, 'description': 'Task duration.'}, 'customer_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': "The customer's internal `id`.", 'exclusiveMinimum': 0}, 'description': {'type': 'string', 'maxLength': 10000, 'description': 'Task description.'}, 'employee_ids': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'maxItems': 50, 'description': 'Employee `id`s (from kickserv_list_employees) to assign. Replaces the current assignment.'}, 'scheduled_at': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'When the task is scheduled. A date/time string Kickserv can parse, e.g. `2026-10-02 09:30` or `10/2/2026 09:30am`.'}, 'task_type_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Task type id.', 'exclusiveMinimum': 0}}}
kickserv_get_customer
Get a customer
Fetch one customer by customer number, optionally with related contacts, jobs, tasks and notes. The result's `id` is what job/task create calls need as `customer_id`. Kickserv: GET /{account}/customers/{customer_number}.xml.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['customer_number'], 'properties': {'include': {'type': 'array', 'items': {'enum': ['contacts', 'jobs', 'tasks', 'notes', 'tax_entity', 'custom_field_assignments'], 'type': 'string'}, 'description': 'Related data to embed: contacts, jobs, tasks, notes, tax_entity, custom_field_assignments.'}, 'customer_number': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Customer number (as shown in Kickserv).', 'exclusiveMinimum': 0}}}
kickserv_get_job
Get a job
Fetch one job by job number, optionally with its customer, assigned employees, job charges (line items), time entries and notes. Kickserv: GET /{account}/jobs/{job_number}.xml.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['job_number'], 'properties': {'include': {'type': 'array', 'items': {'enum': ['customer', 'employees', 'job_charges', 'time_entries', 'notes', 'job_type', 'job_status', 'tax_entity', 'custom_field_assignments'], 'type': 'string'}, 'description': 'Related data to embed: customer, employees, job_charges, time_entries, notes, job_type, job_status, tax_entity, custom_field_assignments.'}, 'job_number': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Job number (as shown in Kickserv).', 'exclusiveMinimum': 0}}}
kickserv_get_task
Get a task
Fetch one task (appointment / to-do attached to a job) by id. Kickserv: GET /{account}/tasks/{task_id}.xml.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['task_id'], 'properties': {'task_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Task id.', 'exclusiveMinimum': 0}}}
kickserv_list_customer_jobs
List a customer's jobs
List the jobs for one customer, 30 per page. Kickserv: GET /{account}/customers/{customer_number}/jobs.xml.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['customer_number'], 'properties': {'only': {'type': 'string', 'pattern': '^[a-z0-9_]+(,[a-z0-9_]+)*$', 'description': 'Comma-separated list of columns to return, e.g. `customer_number,name`. Kickserv recommends this: it makes responses much smaller and faster.'}, 'page': {'type': 'integer', 'maximum': 10000, 'minimum': 1, 'description': 'Page number (Kickserv returns 30 records per page). Omit for page 1.'}, 'include': {'type': 'array', 'items': {'enum': ['customer', 'employees', 'job_charges', 'time_entries', 'notes', 'job_type', 'job_status', 'tax_entity', 'custom_field_assignments'], 'type': 'string'}, 'description': 'Related data to embed: customer, employees, job_charges, time_entries, notes, job_type, job_status, tax_entity, custom_field_assignments.'}, 'customer_number': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Customer number.', 'exclusiveMinimum': 0}}}
kickserv_list_customer_notes
List a customer's notes
List the notes on one customer. Kickserv: GET /{account}/customers/{customer_number}/notes.xml.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['customer_number'], 'properties': {'customer_number': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Customer number.', 'exclusiveMinimum': 0}}}
kickserv_list_customers
List customers
List or search customers, 30 per page. Every filter is an exact match on that field. Use `only` to keep the response small. Kickserv: GET /{account}/customers.xml.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'name': {'type': 'string', 'maxLength': 255, 'description': 'Exact customer name.'}, 'only': {'type': 'string', 'pattern': '^[a-z0-9_]+(,[a-z0-9_]+)*$', 'description': 'Comma-separated list of columns to return, e.g. `customer_number,name`. Kickserv recommends this: it makes responses much smaller and faster.'}, 'page': {'type': 'integer', 'maximum': 10000, 'minimum': 1, 'description': 'Page number (Kickserv returns 30 records per page). Omit for page 1.'}, 'include': {'type': 'array', 'items': {'enum': ['contacts', 'jobs', 'tasks', 'notes', 'tax_entity', 'custom_field_assignments'], 'type': 'string'}, 'description': 'Related data to embed: contacts, jobs, tasks, notes, tax_entity, custom_field_assignments.'}, 'billing_city': {'type': 'string', 'maxLength': 128, 'description': 'Billing city.'}, 'phone_number': {'type': 'string', 'maxLength': 64, 'description': 'Exact phone number, e.g. 800-555-1212.'}, 'service_city': {'type': 'string', 'maxLength': 128, 'description': 'Service city.'}, 'billing_state': {'type': 'string', 'maxLength': 64, 'description': 'Billing state.'}, 'email_address': {'type': 'string', 'maxLength': 255, 'description': 'Exact email address.'}, 'service_state': {'type': 'string', 'maxLength': 64, 'description': 'Service state (2-letter abbreviation).'}, 'customer_number': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Customer number.', 'exclusiveMinimum': 0}, 'service_zip_code': {'type': 'string', 'maxLength': 32, 'description': 'Service ZIP (full zip+4 if the record has one).'}}}
kickserv_list_employees
List employees
List all employees (technicians and office staff), active and inactive. Use their `id` for job/task assignment and time entries, and `employee_number` to filter jobs. Kickserv: GET /{account}/employees.xml.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
kickserv_list_items
List items
List products/services (the price list used for job charges), 30 per page. Active items only by default. Kickserv: GET /{account}/items.xml.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'name': {'type': 'string', 'maxLength': 255, 'description': 'Filter by item name.'}, 'page': {'type': 'integer', 'maximum': 10000, 'minimum': 1, 'description': 'Page number (Kickserv returns 30 records per page). Omit for page 1.'}, 'which': {'enum': ['active', 'inactive', 'all'], 'type': 'string', 'description': 'Which items to return: active (default), inactive, or all.'}}}
kickserv_list_job_notes
List a job's notes
List the notes on one job. Kickserv: GET /{account}/jobs/{job_number}/notes.xml.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['job_number'], 'properties': {'job_number': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Job number.', 'exclusiveMinimum': 0}}}
kickserv_list_jobs
List jobs
List jobs (work orders, estimates, invoices), 30 per page, filterable by schedule window, status, assigned employee, category (job type) or job status. Kickserv: GET /{account}/jobs.xml.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'only': {'type': 'string', 'pattern': '^[a-z0-9_]+(,[a-z0-9_]+)*$', 'description': 'Comma-separated list of columns to return, e.g. `customer_number,name`. Kickserv recommends this: it makes responses much smaller and faster.'}, 'page': {'type': 'integer', 'maximum': 10000, 'minimum': 1, 'description': 'Page number (Kickserv returns 30 records per page). Omit for page 1.'}, 'status': {'enum': ['unscheduled', 'scheduled', 'in_progress', 'on_hold', 'canceled', 'complete'], 'type': 'string', 'description': 'Job status.'}, 'include': {'type': 'array', 'items': {'enum': ['customer', 'employees', 'job_charges', 'time_entries', 'notes', 'job_type', 'job_status', 'tax_entity', 'custom_field_assignments'], 'type': 'string'}, 'description': 'Related data to embed: customer, employees, job_charges, time_entries, notes, job_type, job_status, tax_entity, custom_field_assignments.'}, 'scheduled': {'enum': ['today', 'tomorrow', 'yesterday', 'this_week', 'next_week', 'last_week', 'this_month', 'next_month', 'last_month', 'this_year', 'last_year'], 'type': 'string', 'description': 'Scheduled-date window, e.g. today or this_week.'}, 'job_type_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Only jobs in this category (job type id).', 'exclusiveMinimum': 0}, 'job_status_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Only jobs with this custom job status id.', 'exclusiveMinimum': 0}, 'employee_number': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Only jobs assigned to this employee number.', 'exclusiveMinimum': 0}}}
kickserv_list_job_time_entries
List a job's time entries
List the time entries (hours logged by technicians) on one job. Kickserv: GET /{account}/jobs/{job_number}/time_entries.xml.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['job_number'], 'properties': {'job_number': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Job number.', 'exclusiveMinimum': 0}}}
kickserv_log_time_entry
Log time on a job
WRITE: log hours worked by an employee on a job. `employee_id` is the employee's `id` from kickserv_list_employees. Kickserv: POST /{account}/jobs/{job_number}/time_entries.xml.
可能执行破坏性操作
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['job_number', 'employee_id', 'started_on', 'number_of_hours'], 'properties': {'note': {'type': 'string', 'maxLength': 5000, 'description': 'Note about the work.'}, 'mileage': {'type': 'number', 'maximum': 100000, 'minimum': 0, 'description': 'Mileage driven.'}, 'billable': {'type': 'boolean', 'description': 'Whether the time is billable.'}, 'ended_on': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'When the work ended. A date/time string Kickserv can parse, e.g. `2026-10-02 09:30` or `10/2/2026 09:30am`.'}, 'job_number': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Job number.', 'exclusiveMinimum': 0}, 'started_on': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'When the work started, e.g. `2026-10-02 13:00` or `10/02/2026 01:00pm`.'}, 'employee_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': "The employee's `id`.", 'exclusiveMinimum': 0}, 'number_of_hours': {'type': 'number', 'maximum': 1000, 'description': 'Hours worked, e.g. 1.25.', 'exclusiveMinimum': 0}, 'time_entry_type_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Time entry type id.', 'exclusiveMinimum': 0}}}
kickserv_update_customer
Update a customer
WRITE: update fields on an existing customer. Only the fields you pass change. Balances, credit limit and custom fields are not settable here. Kickserv: PATCH /{account}/customers/{customer_number}.xml.
可能执行破坏性操作
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['customer_number'], 'properties': {'fax': {'type': 'string', 'maxLength': 64, 'description': 'Fax number.'}, 'name': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'New customer name.'}, 'mobile': {'type': 'string', 'maxLength': 64, 'description': 'Mobile number.'}, 'company': {'type': 'boolean', 'description': 'True if the customer is a company rather than a person.'}, 'contact': {'type': 'string', 'maxLength': 255, 'description': 'Primary contact name.'}, 'is_active': {'type': 'boolean', 'description': 'False to mark the customer inactive (reversible).'}, 'last_name': {'type': 'string', 'maxLength': 255, 'description': 'Contact last name.'}, 'first_name': {'type': 'string', 'maxLength': 255, 'description': 'Contact first name.'}, 'alt_contact': {'type': 'string', 'maxLength': 255, 'description': 'Alternate contact name.'}, 'billing_city': {'type': 'string', 'maxLength': 128, 'description': 'Billing city.'}, 'company_name': {'type': 'string', 'maxLength': 255, 'description': 'Company name.'}, 'phone_number': {'type': 'string', 'maxLength': 64, 'description': 'Phone number.'}, 'service_city': {'type': 'string', 'maxLength': 128, 'description': 'Service city.'}, 'billing_state': {'type': 'string', 'maxLength': 64, 'description': 'Billing state.'}, 'email_address': {'type': 'string', 'format': 'email', 'pattern': "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'maxLength': 255, 'description': 'Email address.'}, 'service_state': {'type': 'string', 'maxLength': 64, 'description': 'Service state (2-letter abbreviation in the US).'}, 'account_number': {'type': 'string', 'maxLength': 64, 'description': 'Your own account number for the customer.'}, 'notify_via_sms': {'type': 'boolean', 'description': 'Send the customer SMS notifications.'}, 'billing_address': {'type': 'string', 'maxLength': 255, 'description': 'Billing address (where invoices go), line 1.'}, 'billing_country': {'type': 'string', 'maxLength': 64, 'description': 'Billing country.'}, 'customer_number': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Customer number to update.', 'exclusiveMinimum': 0}, 'service_address': {'type': 'string', 'maxLength': 255, 'description': 'Service address (where the work happens), line 1.'}, 'service_country': {'type': 'string', 'maxLength': 64, 'description': 'Service country (2-letter code).'}, 'alt_phone_number': {'type': 'string', 'maxLength': 64, 'description': 'Alternate phone number.'}, 'billing_zip_code': {'type': 'string', 'maxLength': 32, 'description': 'Billing ZIP/postal code.'}, 'customer_type_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Customer type id.', 'exclusiveMinimum': 0}, 'notify_via_email': {'type': 'boolean', 'description': 'Send the customer email notifications.'}, 'service_zip_code': {'type': 'string', 'maxLength': 32, 'description': 'Service ZIP/postal code.'}, 'billing_address_2': {'type': 'string', 'maxLength': 255, 'description': 'Billing address line 2.'}, 'service_address_2': {'type': 'string', 'maxLength': 255, 'description': 'Service address line 2.'}, 'customer_source_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Customer source (lead source) id.', 'exclusiveMinimum': 0}, 'special_instructions': {'type': 'string', 'maxLength': 5000, 'description': 'Special instructions shown to technicians.'}}}
kickserv_update_job
Update a job
WRITE: update an existing job — reschedule it, rename it, change its description, category or custom job status, or reassign employees (employee_ids replaces the assignment). Totals, tax and payment fields are not settable here. Kickserv: PATCH /{account}/jobs/{job_number}.xml.
可能执行破坏性操作
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['job_number'], 'properties': {'name': {'type': 'string', 'maxLength': 255, 'description': 'Job name/title.'}, 'ends_at': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'When the job ends. A date/time string Kickserv can parse, e.g. `2026-10-02 09:30` or `10/2/2026 09:30am`.'}, 'duration': {'type': 'number', 'maximum': 100000, 'minimum': 0, 'description': 'Job duration.'}, 'po_number': {'type': 'string', 'maxLength': 64, 'description': 'Customer purchase-order number.'}, 'job_number': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Job number to update.', 'exclusiveMinimum': 0}, 'description': {'type': 'string', 'maxLength': 10000, 'description': 'Job description / work to be done.'}, 'job_type_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'New job category (job type) id.', 'exclusiveMinimum': 0}, 'employee_ids': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'maxItems': 50, 'description': 'Employee `id`s (from kickserv_list_employees) to assign. Replaces the current assignment.'}, 'scheduled_on': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'When the job is scheduled. A date/time string Kickserv can parse, e.g. `2026-10-02 09:30` or `10/2/2026 09:30am`.'}, 'job_status_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'New custom job status id.', 'exclusiveMinimum': 0}}}
已添加
kickserv_add_job_charge
2026年10月2日 02:40
已添加
kickserv_log_time_entry
2026年10月2日 02:40
已添加
kickserv_create_task
2026年10月2日 02:40
已添加
kickserv_add_job_note
2026年10月2日 02:40
已添加
kickserv_update_job
2026年10月2日 02:40
已添加
kickserv_create_job
2026年10月2日 02:40
已添加
kickserv_add_customer_note
2026年10月2日 02:40
已添加
kickserv_update_customer
2026年10月2日 02:40
已添加
kickserv_create_customer
2026年10月2日 02:40
已添加
kickserv_list_items
2026年10月2日 02:40
已添加
kickserv_list_employees
2026年10月2日 02:40
已添加
kickserv_get_task
2026年10月2日 02:40
已添加
kickserv_list_job_time_entries
2026年10月2日 02:40
已添加
kickserv_list_job_notes
2026年10月2日 02:40
已添加
kickserv_list_customer_notes
2026年10月2日 02:40
已添加
kickserv_get_job
2026年10月2日 02:40
已添加
kickserv_list_jobs
2026年10月2日 02:40
已添加
kickserv_list_customer_jobs
2026年10月2日 02:40
已添加
kickserv_get_customer
2026年10月2日 02:40
已添加
kickserv_list_customers
2026年10月2日 02:40