Synchroteam MCP by usefulapi
Read Synchroteam jobs, customers, sites, equipment and parts; create, schedule and complete jobs.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"synchroteam": {
"url": "https://synchroteam.usefulapi.io/mcp"
}
}
}원격 엔드포인트
https://synchroteam.usefulapi.io/mcpstreamable-http할 수 있는 일
도구 목록
도구 (33)
🟢synchroteam_list_customers(name, email, active, changed_since, sort, ...)
List or search customers (name wildcard, e-mail, active flag, change time). Returns name, address, contact, custom fields, tags. GET /customer/list.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"description": "Wildcard name search.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"email": {
"description": "Exact contact e-mail.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"active": {
"description": "Active customers (default true); false lists deactivated ones.",
"type": "boolean"
},
"changed_since": {
"description": "Only customers modified after this UTC date-time.",
"type": "string"
},
"sort": {
"type": "string",
"enum": [
"name",
"dateModified",
"dateCreated",
"myId"
]
},
"sort_order": {
"description": "Sort order (default ascending; invoices and quotations default to descending).",
"type": "string",
"enum": [
"ascending",
"descending"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_get_customer(by, value)
One customer by id, myId, exact name or e-mail, with address, contact, custom fields and tags. GET /customer/details.
입력 스키마
{
"type": "object",
"properties": {
"by": {
"type": "string",
"enum": [
"id",
"myId",
"name",
"email"
],
"description": "Which identifier `value` is."
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "The identifier."
}
},
"required": [
"by",
"value"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_list_sites(name, customer_id, customer_my_id, active, changed_since, ...)
List or search sites (a customer's locations): by name, customer, active flag, change time. GET /site/list.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"description": "Wildcard name search.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"customer_id": {
"description": "Only sites of this customer id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"customer_my_id": {
"description": "Only sites of the customer with this myId.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"active": {
"description": "Active sites (default true).",
"type": "boolean"
},
"changed_since": {
"description": "Only sites modified after this UTC date-time.",
"type": "string"
},
"sort": {
"type": "string",
"enum": [
"name",
"dateModified",
"dateCreated",
"myId"
]
},
"sort_order": {
"description": "Sort order (default ascending; invoices and quotations default to descending).",
"type": "string",
"enum": [
"ascending",
"descending"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_get_site(by, value)
One site by id, myId or exact name: address, contact, customer, custom fields, tags. GET /site/details.
입력 스키마
{
"type": "object",
"properties": {
"by": {
"type": "string",
"enum": [
"id",
"myId",
"name"
],
"description": "Which identifier `value` is."
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "The identifier."
}
},
"required": [
"by",
"value"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_list_equipment(name, customer_id, customer_my_id, site_id, site_my_id, ...)
List or search pieces of equipment (assets) by name, customer, site, active flag, change time. GET /equipment/list.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"description": "Wildcard name search.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"customer_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"customer_my_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"site_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"site_my_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"active": {
"description": "Active equipment (default true).",
"type": "boolean"
},
"changed_since": {
"description": "Only equipment modified after this UTC date-time.",
"type": "string"
},
"sort": {
"type": "string",
"enum": [
"name",
"dateModified",
"dateCreated",
"myId"
]
},
"sort_order": {
"description": "Sort order (default ascending; invoices and quotations default to descending).",
"type": "string",
"enum": [
"ascending",
"descending"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_get_equipment(by, value)
One piece of equipment by id, myId or exact name, with its customer and site. GET /equipment/details.
입력 스키마
{
"type": "object",
"properties": {
"by": {
"type": "string",
"enum": [
"id",
"myId",
"name"
],
"description": "Which identifier `value` is."
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "The identifier."
}
},
"required": [
"by",
"value"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_list_jobs(status, date_from, date_to, created_since, changed_since, ...)
List jobs (simplified: no report, parts or time entries) filtered by status, schedule window, technician, team, customer, site, equipment, job type or project. Use synchroteam_get_job for the full record. GET /job/list.
입력 스키마
{
"type": "object",
"properties": {
"status": {
"description": "One or more job statuses.",
"minItems": 1,
"maxItems": 8,
"type": "array",
"items": {
"type": "string",
"enum": [
"created",
"scheduled",
"synchronized",
"started",
"paused",
"completed",
"validated",
"cancelled"
]
}
},
"date_from": {
"description": "Jobs planned, ongoing or completed on or after this date-time.",
"type": "string"
},
"date_to": {
"description": "Jobs planned, ongoing or completed on or before this date-time.",
"type": "string"
},
"created_since": {
"description": "Jobs created on or after this date-time.",
"type": "string"
},
"changed_since": {
"description": "Jobs modified on or after this date-time.",
"type": "string"
},
"validated_since": {
"description": "Jobs validated on or after this date-time.",
"type": "string"
},
"my_id": {
"description": "Exact job myId.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"user_login": {
"description": "Technician login.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"user_id": {
"description": "Technician user id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"team_id": {
"description": "Jobs of technicians in this team id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"customer_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"customer_my_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"site_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"site_my_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"equipment_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"equipment_my_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"type_id": {
"description": "Job type id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"type_name": {
"description": "Job type name.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"project_id": {
"description": "Project id.",
"type": "string",
"minLength": 1,
"maxLength": 80
},
"has_photos": {
"description": "Only jobs that have (true) or lack (false) photos.",
"type": "boolean"
},
"sort": {
"type": "string",
"enum": [
"num",
"scheduledstart",
"scheduledend",
"actualstart",
"actualend",
"datemodified"
]
},
"sort_order": {
"description": "Sort order (default ascending; invoices and quotations default to descending).",
"type": "string",
"enum": [
"ascending",
"descending"
]
},
"show": {
"description": "Default active.",
"type": "string",
"enum": [
"active",
"deleted",
"all"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_get_job(by, value)
One job by num (the job number shown in the app), id or myId: status, customer/site/equipment, technician(s), schedule, actual times, time entries, parts used, report and custom fields. GET /job/details.
입력 스키마
{
"type": "object",
"properties": {
"by": {
"type": "string",
"enum": [
"num",
"id",
"myId"
],
"description": "Which identifier `value` is."
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "The identifier."
}
},
"required": [
"by",
"value"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_get_job_photos(by, value)
Photo links of a job (url, file name, comment, report iteration). Image bytes are never returned. GET /job/photos.
입력 스키마
{
"type": "object",
"properties": {
"by": {
"type": "string",
"enum": [
"num",
"id",
"myId"
],
"description": "Which identifier `value` is."
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "The identifier."
}
},
"required": [
"by",
"value"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_list_job_types(name, page, page_size)
List job types (name, default duration, priority, skills, default report). Use their id or name when creating a job. GET /jobtype/list.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"description": "Types whose name contains this.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_list_users(team_id, team_name, skilled_trade, show, page, ...)
List users: login, name, profile (technician, manager, administrator), teams, skills, last known location. Passwords are never returned. GET /user/list.
입력 스키마
{
"type": "object",
"properties": {
"team_id": {
"description": "Only users of this team id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"team_name": {
"description": "Only users of this team name.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"skilled_trade": {
"description": "Only users with this skill.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"show": {
"description": "Default active.",
"type": "string",
"enum": [
"active",
"deleted",
"all"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_get_user(by, value)
One user by login or id. GET /user/details.
입력 스키마
{
"type": "object",
"properties": {
"by": {
"type": "string",
"enum": [
"login",
"id"
],
"description": "Which identifier `value` is."
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The identifier."
}
},
"required": [
"by",
"value"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_list_teams(name, show, page, page_size)
List teams with member counts and tags. GET /team/list.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"description": "Teams whose name contains this.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"show": {
"type": "string",
"enum": [
"active",
"deleted",
"all"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_list_parts(category_id, category_name, is_tracked, is_serializable, status, ...)
List the parts and services catalog (reference, name, price, category, tax, tracked/serialized flags, type). GET /part/list.
입력 스키마
{
"type": "object",
"properties": {
"category_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"category_name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"is_tracked": {
"description": "Only parts tracked (true) or not tracked (false) in inventory.",
"type": "boolean"
},
"is_serializable": {
"type": "boolean"
},
"status": {
"type": "string",
"enum": [
"active",
"inactive"
]
},
"type": {
"type": "string",
"enum": [
"part",
"service",
"travel",
"other"
]
},
"changed_since": {
"description": "Only parts modified after this UTC date-time.",
"type": "string"
},
"sort": {
"type": "string",
"enum": [
"name",
"reference",
"category"
]
},
"sort_order": {
"description": "Sort order (default ascending; invoices and quotations default to descending).",
"type": "string",
"enum": [
"ascending",
"descending"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_get_part(by, value)
One part or service by id or reference. GET /part/details.
입력 스키마
{
"type": "object",
"properties": {
"by": {
"type": "string",
"enum": [
"id",
"reference"
],
"description": "Which identifier `value` is."
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The identifier."
}
},
"required": [
"by",
"value"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_list_depots(name, is_provider, is_default, sort, sort_order, ...)
List stock depots (warehouses and technician vans). The part quantities of one depot come from synchroteam_get_depot. GET /depot/list.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"description": "Wildcard name search.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"is_provider": {
"description": "Only depots that are (true) or are not (false) providers.",
"type": "boolean"
},
"is_default": {
"type": "boolean"
},
"sort": {
"type": "string",
"enum": [
"name",
"isProvider"
]
},
"sort_order": {
"description": "Sort order (default ascending; invoices and quotations default to descending).",
"type": "string",
"enum": [
"ascending",
"descending"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_get_depot(id)
One stock depot by id, with the quantity of each part it holds. GET /depot/details.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Depot id (a GUID from synchroteam_list_depots)."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_list_part_requests(is_urgent, is_sent, is_complete, is_deleted, created_since, ...)
List technicians' part requests (urgent, sent, completed, deleted flags). GET /partrequest/list.
입력 스키마
{
"type": "object",
"properties": {
"is_urgent": {
"type": "boolean"
},
"is_sent": {
"type": "boolean"
},
"is_complete": {
"type": "boolean"
},
"is_deleted": {
"type": "boolean"
},
"created_since": {
"type": "string",
"description": "Date-time as yyyy-mm-dd hh:mm:ss (a date alone means midnight). No timezone conversion is applied."
},
"changed_since": {
"type": "string",
"description": "Date-time as yyyy-mm-dd hh:mm:ss (a date alone means midnight). No timezone conversion is applied."
},
"sort_order": {
"description": "Sort order (default ascending; invoices and quotations default to descending).",
"type": "string",
"enum": [
"ascending",
"descending"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_list_invoices(status, customer_id, customer_my_id, site_id, site_my_id, ...)
List invoices (read only): number, status, customer, job, lines, totals. Filter by status, customer, site, job or time. GET /invoice/list.
입력 스키마
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"draft",
"new",
"sent",
"late",
"paid",
"cancelled"
]
},
"customer_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"customer_my_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"site_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"site_my_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"job_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"job_my_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"job_num": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"created_since": {
"type": "string",
"description": "Date-time as yyyy-mm-dd hh:mm:ss (a date alone means midnight). No timezone conversion is applied."
},
"changed_since": {
"type": "string",
"description": "Date-time as yyyy-mm-dd hh:mm:ss (a date alone means midnight). No timezone conversion is applied."
},
"paid_since": {
"type": "string",
"description": "Date-time as yyyy-mm-dd hh:mm:ss (a date alone means midnight). No timezone conversion is applied."
},
"sort_order": {
"description": "Sort order (default ascending; invoices and quotations default to descending).",
"type": "string",
"enum": [
"ascending",
"descending"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_get_invoice(by, value)
One invoice by id, reference or number, with its lines. GET /invoice/details.
입력 스키마
{
"type": "object",
"properties": {
"by": {
"type": "string",
"enum": [
"id",
"reference",
"num"
],
"description": "Which identifier `value` is."
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The identifier."
}
},
"required": [
"by",
"value"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_list_quotations(status, customer_id, customer_my_id, site_id, site_my_id, ...)
List quotations (read only): number, status, customer, job, lines, totals. GET /quotation/list.
입력 스키마
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"draft",
"new",
"sent",
"accepted"
]
},
"customer_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"customer_my_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"site_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"site_my_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"job_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"job_my_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"job_num": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"created_since": {
"type": "string",
"description": "Date-time as yyyy-mm-dd hh:mm:ss (a date alone means midnight). No timezone conversion is applied."
},
"changed_since": {
"type": "string",
"description": "Date-time as yyyy-mm-dd hh:mm:ss (a date alone means midnight). No timezone conversion is applied."
},
"sort_order": {
"description": "Sort order (default ascending; invoices and quotations default to descending).",
"type": "string",
"enum": [
"ascending",
"descending"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_get_quotation(by, value)
One quotation by id, reference or number, with its lines. GET /quotation/details.
입력 스키마
{
"type": "object",
"properties": {
"by": {
"type": "string",
"enum": [
"id",
"reference",
"num"
],
"description": "Which identifier `value` is."
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The identifier."
}
},
"required": [
"by",
"value"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_list_contracts(name, customer_id, customer_my_id, site_id, site_my_id, ...)
List service contracts by name, customer, site, period or active flag. GET /contract/list.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"customer_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"customer_my_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"site_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"site_my_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"start": {
"description": "Contracts on or after this date (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"end": {
"description": "Contracts on or before this date (yyyy-mm-dd).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"active": {
"description": "Active contracts (default true).",
"type": "boolean"
},
"sort": {
"type": "string",
"enum": [
"num",
"start",
"end",
"datemodified"
]
},
"sort_order": {
"description": "Sort order (default ascending; invoices and quotations default to descending).",
"type": "string",
"enum": [
"ascending",
"descending"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_list_projects(customer_id, customer_my_id, site_id, site_my_id, equipment_id, ...)
List projects (groups of jobs) by customer, site, equipment or project type. GET /project/list.
입력 스키마
{
"type": "object",
"properties": {
"customer_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"customer_my_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"site_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"site_my_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"equipment_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"equipment_my_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"type_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"type_name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"sort_order": {
"description": "Sort order (default ascending; invoices and quotations default to descending).",
"type": "string",
"enum": [
"ascending",
"descending"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢synchroteam_list_activities(start_date, end_date, activity_type_name, activity_type_category, user_id, ...)
List time entries and unavailabilities (travel, at work, clock, unavailable) of technicians. start_date and end_date go together and return anything overlapping that range. GET /activity/list.
입력 스키마
{
"type": "object",
"properties": {
"start_date": {
"description": "Range start (requires end_date).",
"type": "string"
},
"end_date": {
"description": "Range end (requires start_date).",
"type": "string"
},
"activity_type_name": {
"description": "Exact activity type name.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"activity_type_category": {
"type": "string",
"enum": [
"unavailability",
"atwork",
"travel",
"clock"
]
},
"user_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"user_login": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"team_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"sort": {
"type": "string",
"enum": [
"startDate",
"endDate",
"activityType_name",
"user_login"
]
},
"sort_order": {
"description": "Sort order (default ascending; invoices and quotations default to descending).",
"type": "string",
"enum": [
"ascending",
"descending"
]
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"page_size": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴synchroteam_create_customer(name, address, addressComplement, my_id, contact_first_name, ...)
WRITE: create a new customer (name and an address are required). If you pass myId and a customer with that myId already exists, nothing is created and an error is returned (use synchroteam_update_customer). POST /customer/send.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Customer name."
},
"address": {
"description": "Full address on one line (e.g. '6605 Fisher Avenue, Falls Church, VA 22046, United States').",
"type": "string",
"minLength": 1,
"maxLength": 400
},
"addressComplement": {
"description": "Complementary address line (unit, floor...).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"my_id": {
"description": "Your own reference for this customer.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"contact_first_name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"contact_last_name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"contact_email": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"contact_phone": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"contact_fax": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"vat_number": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴synchroteam_update_customer(id, name, address, addressComplement, contact_first_name, ...)
WRITE: change fields of an existing customer by its numeric id. Only the fields you pass are changed; nothing is cleared. The customer id must exist (an unknown id fails). POST /customer/send.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Customer id (synchroteam_list_customers)."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"address": {
"description": "Full address on one line (e.g. '6605 Fisher Avenue, Falls Church, VA 22046, United States').",
"type": "string",
"minLength": 1,
"maxLength": 400
},
"addressComplement": {
"description": "Complementary address line (unit, floor...).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"contact_first_name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"contact_last_name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"contact_email": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"contact_phone": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"contact_fax": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"vat_number": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴synchroteam_create_site(name, address, addressComplement, customer, my_id, ...)
WRITE: create a new site (a location of a customer). Needs a name, an address and the customer (id or myId). If myId already exists nothing is created and an error is returned. POST /site/send.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Site name."
},
"address": {
"description": "Full address on one line (e.g. '6605 Fisher Avenue, Falls Church, VA 22046, United States').",
"type": "string",
"minLength": 1,
"maxLength": 400
},
"addressComplement": {
"description": "Complementary address line (unit, floor...).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"customer": {
"type": "object",
"properties": {
"id": {
"description": "Synchroteam id.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 80
}
]
},
"myId": {
"description": "Your own reference (myId).",
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"description": "The customer: exactly one of id or myId."
},
"my_id": {
"description": "Your own reference for this site.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"contact_name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"contact_email": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"contact_phone": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"contact_mobile": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"required": [
"name",
"customer"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴synchroteam_create_equipment(name, site, customer, my_id)
WRITE: create a new piece of equipment under a site or a customer (give exactly one of site or customer; both is refused). If myId already exists nothing is created and an error is returned. POST /equipment/send.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Equipment name."
},
"site": {
"description": "The site: exactly one of id or myId.",
"type": "object",
"properties": {
"id": {
"description": "Synchroteam id.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 80
}
]
},
"myId": {
"description": "Your own reference (myId).",
"type": "string",
"minLength": 1,
"maxLength": 100
}
}
},
"customer": {
"description": "The customer (when there is no site): exactly one of id or myId.",
"type": "object",
"properties": {
"id": {
"description": "Synchroteam id.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 80
}
]
},
"myId": {
"description": "Your own reference (myId).",
"type": "string",
"minLength": 1,
"maxLength": 100
}
}
},
"my_id": {
"description": "Your own reference for this equipment.",
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴synchroteam_create_job(customer, site, equipment, type, description, ...)
WRITE: create a new job for a customer (status created, not yet scheduled; use synchroteam_schedule_job to assign a technician and time). The customer is required (id, myId or exact name); site, equipment and job type are optional. If myId already exists nothing is created and an error is returned. Synchroteam may send the account's 'job created' notifications (email/SMS/webhook, possibly to the customer), as configured. POST /job/send.
입력 스키마
{
"type": "object",
"properties": {
"customer": {
"type": "object",
"properties": {
"id": {
"description": "Synchroteam id.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 80
}
]
},
"myId": {
"description": "Your own reference (myId).",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"name": {
"description": "Exact name (customers and job types only).",
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"description": "The customer: exactly one of id, myId or name."
},
"site": {
"description": "The site: exactly one of id or myId.",
"type": "object",
"properties": {
"id": {
"description": "Synchroteam id.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 80
}
]
},
"myId": {
"description": "Your own reference (myId).",
"type": "string",
"minLength": 1,
"maxLength": 100
}
}
},
"equipment": {
"description": "The equipment: exactly one of id or myId.",
"type": "object",
"properties": {
"id": {
"description": "Synchroteam id.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 80
}
]
},
"myId": {
"description": "Your own reference (myId).",
"type": "string",
"minLength": 1,
"maxLength": 100
}
}
},
"type": {
"description": "Job type: exactly one of id or name (synchroteam_list_job_types).",
"type": "object",
"properties": {
"id": {
"description": "Synchroteam id.",
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
{
"type": "string",
"minLength": 1,
"maxLength": 80
}
]
},
"name": {
"description": "Exact name (customers and job types only).",
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
},
"description": {
"description": "Job description.",
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"priority": {
"description": "Default medium.",
"type": "string",
"enum": [
"low",
"medium",
"high"
]
},
"my_id": {
"description": "Your own reference for this job.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"address": {
"description": "Full address on one line (e.g. '6605 Fisher Avenue, Falls Church, VA 22046, United States').",
"type": "string",
"minLength": 1,
"maxLength": 400
},
"addressComplement": {
"description": "Complementary address line (unit, floor...).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"contact_first_name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"contact_last_name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"contact_email": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"contact_phone": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"contact_mobile": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"skills": {
"description": "Required skills.",
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
}
},
"required": [
"customer"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴synchroteam_schedule_job(id, my_id, num, scheduled_start, scheduled_end, ...)
WRITE: schedule a job for a technician between two times (also re-schedules a scheduled or paused job). Synchroteam may notify technicians and/or customers (email/SMS/webhook) as configured in the account's notification settings (SMS uses the account's paid credits). Identify the job by exactly one of id, my_id or num. POST /job/schedule.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"description": "Job id.",
"type": "string",
"minLength": 1,
"maxLength": 80
},
"my_id": {
"description": "Job myId.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"num": {
"description": "Job number.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"scheduled_start": {
"type": "string",
"description": "Start, yyyy-mm-dd hh:mm:ss."
},
"scheduled_end": {
"type": "string",
"description": "End, yyyy-mm-dd hh:mm:ss (after the start)."
},
"technician": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"login": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"description": "The technician: exactly one of id or login (synchroteam_list_users)."
},
"other_technician_logins": {
"description": "Logins of additional technicians.",
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
}
},
"required": [
"scheduled_start",
"scheduled_end",
"technician"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴synchroteam_start_job(id, my_id, num)
WRITE: mark a job as started (status started, actual start now). If the job's technician already has another started job, Synchroteam pauses that one. Starting may trigger the account's 'job started' notifications (email/SMS/webhook to managers, technicians or the customer). Identify the job by exactly one of id, my_id or num. POST /job/start.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"description": "Job id.",
"type": "string",
"minLength": 1,
"maxLength": 80
},
"my_id": {
"description": "Job myId.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"num": {
"description": "Job number.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴synchroteam_complete_job(id, my_id, num, actual_start, actual_end)
WRITE: mark a job as completed, optionally with the real start and end times (give actual_start and actual_end together: Synchroteam may refuse the call with only one of them). Completing may trigger the account's 'job completed' notifications (email/SMS/webhook to managers, technicians or the customer), as configured in Synchroteam. Identify the job by exactly one of id, my_id or num. POST /job/complete.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"description": "Job id.",
"type": "string",
"minLength": 1,
"maxLength": 80
},
"my_id": {
"description": "Job myId.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"num": {
"description": "Job number.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"actual_start": {
"description": "Real start, yyyy-mm-dd hh:mm:ss.",
"type": "string"
},
"actual_end": {
"description": "Real end, yyyy-mm-dd hh:mm:ss.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}커뮤니티
증거