| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459 |
- {
- "id": "zoho-tasks",
- "name": "Zoho Tasks",
- "description": "Zoho Projects task management integration for EU data center",
- "version": "2.2.0",
- "author": "Ferenc Szontagh & Zoë",
- "sdkVersion": 1,
- "entry": "index.js",
- "runtime": "quickjs",
- "permissions": {
- "allowNetwork": true,
- "allowStorage": true
- },
- "config": [
- { "key": "client_id", "label": "Zoho OAuth Client ID", "required": true, "secret": true },
- { "key": "client_secret", "label": "Zoho OAuth Client Secret", "required": true, "secret": true },
- { "key": "portal_url", "label": "Zoho Projects Portal URL (e.g. https://projects.zoho.eu/portal/myportal)", "required": false, "secret": false }
- ],
- "tools": [
- {
- "name": "zoho_auth",
- "description": "Authenticate with Zoho Projects (EU). One-time setup exchanges a grant token for refresh+access tokens; status checks current token; resolve_portal picks the portal the plugin operates against.",
- "parameters": {
- "oneOf": [
- {
- "type": "object",
- "properties": {
- "action": { "const": "setup", "description": "Exchange a Zoho grant_token for refresh + access tokens. Run ONCE." },
- "grant_token": { "type": "string", "description": "Grant token from Zoho Developer Console (Self Client → Generate)." }
- },
- "required": ["action", "grant_token"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "status", "description": "Check authentication status and token validity." }
- },
- "required": ["action"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "resolve_portal", "description": "Resolve a portal URL or display name to its numeric portal_id and persist it in plugin config." },
- "portal_url": { "type": "string", "description": "Full portal URL or portal name slug." },
- "portal_name": { "type": "string", "description": "Portal display name to match." }
- },
- "required": ["action"],
- "additionalProperties": false
- }
- ]
- }
- },
- {
- "name": "zoho_project",
- "description": "Read-only project queries + reference data needed for task authoring (user zpuids, status ids).",
- "parameters": {
- "oneOf": [
- {
- "type": "object",
- "properties": {
- "action": { "const": "list", "description": "List all accessible projects in the portal." },
- "index": { "type": "number", "description": "Page index (default 1)." }
- },
- "required": ["action"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "get", "description": "Get details for a single project." },
- "project_id": { "type": "string" }
- },
- "required": ["action", "project_id"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "users", "description": "List portal users. Returns zpuid, name, email — resolve these before assigning a task owner." },
- "user_type": { "type": "string", "description": "active or inactive (optional)." },
- "index": { "type": "number", "description": "Page index (default 1)." }
- },
- "required": ["action"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "statuses", "description": "List project-local task status IDs. Required input for zoho_task status_id." },
- "project_id": { "type": "string" }
- },
- "required": ["action", "project_id"],
- "additionalProperties": false
- }
- ]
- }
- },
- {
- "name": "zoho_task",
- "description": "Manage tasks. Resolve owner zpuid via zoho_project action=users; resolve status_id via zoho_project action=statuses.",
- "parameters": {
- "oneOf": [
- {
- "type": "object",
- "properties": {
- "action": { "const": "list", "description": "List tasks in a project with optional filters." },
- "project_id": { "type": "string" },
- "status": { "type": "string", "description": "all, completed, notcompleted (default all)." },
- "priority": { "type": "string", "description": "all, none, low, medium, high." },
- "owner": { "type": "string", "description": "all or zpuid." },
- "milestone_id": { "type": "string" },
- "tasklist_id": { "type": "string" },
- "index": { "type": "number", "description": "Page index (default 1)." }
- },
- "required": ["action", "project_id"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "get", "description": "Get full details of a single task." },
- "project_id": { "type": "string" },
- "task_id": { "type": "string" }
- },
- "required": ["action", "project_id", "task_id"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "create", "description": "Create a new task." },
- "project_id": { "type": "string" },
- "name": { "type": "string", "description": "Task name/title." },
- "description": { "type": "string", "description": "HTML allowed." },
- "person_responsible": { "type": "string", "description": "Owner zpuid(s), comma-separated." },
- "priority": { "type": "string", "description": "none, low, medium, high." },
- "start_date": { "type": "string", "description": "MM-DD-YYYY." },
- "end_date": { "type": "string", "description": "MM-DD-YYYY." },
- "tasklist_id": { "type": "string" },
- "milestone_id": { "type": "string" },
- "status_id": { "type": "string", "description": "From zoho_project action=statuses." },
- "parent_task_id": { "type": "string", "description": "If set, the new task becomes a subtask of this one." },
- "billing_type": { "type": "string", "description": "billable, non_billable." },
- "percent_complete": { "type": "string", "description": "0-100." }
- },
- "required": ["action", "project_id", "name"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "update", "description": "Modify an existing task." },
- "project_id": { "type": "string" },
- "task_id": { "type": "string" },
- "name": { "type": "string" },
- "description": { "type": "string", "description": "HTML allowed." },
- "person_responsible": { "type": "string", "description": "Owner zpuid(s), comma-separated." },
- "priority": { "type": "string", "description": "none, low, medium, high." },
- "start_date": { "type": "string", "description": "MM-DD-YYYY." },
- "end_date": { "type": "string", "description": "MM-DD-YYYY." },
- "tasklist_id": { "type": "string" },
- "milestone_id": { "type": "string" },
- "status_id": { "type": "string" },
- "billing_type": { "type": "string" },
- "percent_complete": { "type": "string" }
- },
- "required": ["action", "project_id", "task_id"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "delete", "description": "Delete a task." },
- "project_id": { "type": "string" },
- "task_id": { "type": "string" }
- },
- "required": ["action", "project_id", "task_id"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "subtasks", "description": "List subtasks of a given task." },
- "project_id": { "type": "string" },
- "task_id": { "type": "string" }
- },
- "required": ["action", "project_id", "task_id"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "my", "description": "Tasks assigned to the authenticated user across all projects." },
- "status": { "type": "string", "description": "all, completed, notcompleted." },
- "priority": { "type": "string" },
- "index": { "type": "number" }
- },
- "required": ["action"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "search", "description": "Keyword search across all projects (or a single project if project_id is set)." },
- "query": { "type": "string" },
- "project_id": { "type": "string" }
- },
- "required": ["action", "query"],
- "additionalProperties": false
- }
- ]
- }
- },
- {
- "name": "zoho_comment",
- "description": "Manage task comments.",
- "parameters": {
- "oneOf": [
- {
- "type": "object",
- "properties": {
- "action": { "const": "list", "description": "List comments on a task." },
- "project_id": { "type": "string" },
- "task_id": { "type": "string" },
- "index": { "type": "number" }
- },
- "required": ["action", "project_id", "task_id"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "add", "description": "Add a comment to a task." },
- "project_id": { "type": "string" },
- "task_id": { "type": "string" },
- "content": { "type": "string", "description": "HTML allowed." }
- },
- "required": ["action", "project_id", "task_id", "content"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "update", "description": "Update an existing comment." },
- "project_id": { "type": "string" },
- "task_id": { "type": "string" },
- "comment_id": { "type": "string" },
- "content": { "type": "string", "description": "HTML allowed." }
- },
- "required": ["action", "project_id", "task_id", "comment_id", "content"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "delete", "description": "Delete a comment." },
- "project_id": { "type": "string" },
- "task_id": { "type": "string" },
- "comment_id": { "type": "string" }
- },
- "required": ["action", "project_id", "task_id", "comment_id"],
- "additionalProperties": false
- }
- ]
- }
- },
- {
- "name": "zoho_milestone",
- "description": "Manage project milestones.",
- "parameters": {
- "oneOf": [
- {
- "type": "object",
- "properties": {
- "action": { "const": "list", "description": "List milestones in a project." },
- "project_id": { "type": "string" },
- "status": { "type": "string", "description": "internal, external, upcoming, delayed, completed, all." },
- "index": { "type": "number" }
- },
- "required": ["action", "project_id"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "create", "description": "Create a new milestone." },
- "project_id": { "type": "string" },
- "name": { "type": "string" },
- "start_date": { "type": "string", "description": "MM-DD-YYYY." },
- "end_date": { "type": "string", "description": "MM-DD-YYYY." },
- "owner": { "type": "string", "description": "Owner zpuid." },
- "flag": { "type": "string", "description": "internal or external." },
- "milestone_type": { "type": "string", "description": "general or custom." }
- },
- "required": ["action", "project_id", "name"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "update", "description": "Update a milestone." },
- "project_id": { "type": "string" },
- "milestone_id": { "type": "string" },
- "name": { "type": "string" },
- "start_date": { "type": "string" },
- "end_date": { "type": "string" },
- "owner": { "type": "string" },
- "flag": { "type": "string" },
- "status": { "type": "string", "description": "active, archived, completed." }
- },
- "required": ["action", "project_id", "milestone_id"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "delete", "description": "Delete a milestone." },
- "project_id": { "type": "string" },
- "milestone_id": { "type": "string" }
- },
- "required": ["action", "project_id", "milestone_id"],
- "additionalProperties": false
- }
- ]
- }
- },
- {
- "name": "zoho_tasklist",
- "description": "Manage tasklists within a project (or list portal-wide).",
- "parameters": {
- "oneOf": [
- {
- "type": "object",
- "properties": {
- "action": { "const": "list", "description": "List tasklists in a project, or portal-wide if project_id is omitted." },
- "project_id": { "type": "string" },
- "flag": { "type": "string", "description": "internal or external." },
- "index": { "type": "number" }
- },
- "required": ["action"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "get", "description": "Get details of a single tasklist." },
- "project_id": { "type": "string" },
- "tasklist_id": { "type": "string" }
- },
- "required": ["action", "project_id", "tasklist_id"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "create", "description": "Create a new tasklist." },
- "project_id": { "type": "string" },
- "name": { "type": "string" },
- "milestone_id": { "type": "string" },
- "flag": { "type": "string", "description": "internal or external." },
- "status": { "type": "string", "description": "active or archived." }
- },
- "required": ["action", "project_id", "name"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "update", "description": "Update a tasklist." },
- "project_id": { "type": "string" },
- "tasklist_id": { "type": "string" },
- "name": { "type": "string" },
- "milestone_id": { "type": "string" },
- "flag": { "type": "string" },
- "status": { "type": "string" }
- },
- "required": ["action", "project_id", "tasklist_id"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "delete", "description": "Delete a tasklist." },
- "project_id": { "type": "string" },
- "tasklist_id": { "type": "string" }
- },
- "required": ["action", "project_id", "tasklist_id"],
- "additionalProperties": false
- }
- ]
- }
- },
- {
- "name": "zoho_timesheet",
- "description": "Manage time log entries against tasks.",
- "parameters": {
- "oneOf": [
- {
- "type": "object",
- "properties": {
- "action": { "const": "list", "description": "List timesheet entries for a project, optionally filtered by task and date range." },
- "project_id": { "type": "string" },
- "task_id": { "type": "string", "description": "Filter by task id (optional)." },
- "from_date": { "type": "string", "description": "MM-DD-YYYY. Default: 30 days ago." },
- "to_date": { "type": "string", "description": "MM-DD-YYYY. Default: today." },
- "index": { "type": "number", "description": "Page index (default 1)." }
- },
- "required": ["action", "project_id"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "create", "description": "Log time against a task." },
- "project_id": { "type": "string" },
- "task_id": { "type": "string" },
- "hours": { "type": "number", "description": "Hours worked (decimals allowed, e.g. 1.5)." },
- "minutes": { "type": "number", "description": "Additional minutes (optional)." },
- "date": { "type": "string", "description": "MM-DD-YYYY. Default: today." },
- "notes": { "type": "string", "description": "Description of the work done." },
- "bill_status": { "type": "string", "description": "Billable or Non Billable. Default: Billable." }
- },
- "required": ["action", "project_id", "task_id", "hours"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "update", "description": "Modify an existing time log entry." },
- "project_id": { "type": "string" },
- "log_id": { "type": "string" },
- "hours": { "type": "number" },
- "minutes": { "type": "number" },
- "date": { "type": "string", "description": "MM-DD-YYYY." },
- "notes": { "type": "string" },
- "log_name": { "type": "string" },
- "bill_status": { "type": "string" }
- },
- "required": ["action", "project_id", "log_id"],
- "additionalProperties": false
- },
- {
- "type": "object",
- "properties": {
- "action": { "const": "delete", "description": "Delete a time log entry." },
- "project_id": { "type": "string" },
- "log_id": { "type": "string" }
- },
- "required": ["action", "project_id", "log_id"],
- "additionalProperties": false
- }
- ]
- }
- }
- ],
- "skills": ["zoho-tasks"]
- }
|