{"formatVersion":"1","kind":"dock_integration","slug":"zendesk-api","title":"Zendesk API","summary":"Import a Harbor-safe Zendesk starter set for ticket listing, single-ticket lookup, and approval-friendly ticket creation.","description":"A Dock-hosted Zendesk API starter integration for Harbor. Importing it creates a local http_api port shell plus a Harbor-safe Zendesk action set for ticket reads and reviewable ticket creation. Tokens remain local to Harbor Node.","version":"0.1.0","publisher":{"slug":"zendesk","name":"Zendesk","websiteUrl":"https://developer.zendesk.com/api-reference/ticketing/tickets/tickets/"},"category":"CRM","tags":["zendesk","support","tickets","customer-ops","helpdesk"],"compatibility":{"harborNode":">=0.1.0","notes":"Requires local operator-configured auth after import. Use a tenant-specific Zendesk subdomain base URL and a locally stored OAuth bearer token. Templates use input.path, input.query, and input.body at execution time."},"requiredPlan":"community","portTemplates":[{"kind":"http_api","label":"Zendesk API","description":"Zendesk API connection managed locally through Harbor.","baseUrl":"https://your-subdomain.zendesk.com/","authMode":"header_token","authHeaderName":"Authorization","authTokenPrefix":"Bearer"}],"actionTemplates":[{"slug":"list-tickets","label":"List Tickets","description":"List Zendesk tickets with typed pagination, sorting, and archive filter inputs.","method":"GET","path":"/api/v2/tickets","inputs":{"parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1},"description":"Optional offset-based page number. Use this or cursor pagination fields if Harbor later adds deep-object query support."},{"name":"per_page","in":"query","schema":{"type":"integer","minimum":1,"maximum":100},"default":25,"description":"Maximum number of tickets to return. Zendesk allows up to 100."},{"name":"sort_by","in":"query","schema":{"type":"string","enum":["id","subject","created_at","updated_at","status","requester","requester.name","group","assignee","assignee.name"]},"description":"Field used to sort the ticket list when using offset pagination."},{"name":"sort_order","in":"query","schema":{"type":"string","enum":["asc","desc"]},"description":"Sort direction for offset pagination."},{"name":"start_time","in":"query","schema":{"type":"integer","minimum":0},"description":"Optional Unix epoch filter for tickets created or updated after the given time."},{"name":"include","in":"query","schema":{"type":"string","maxLength":120},"description":"Optional comma-separated sideloads such as comment_count or custom_statuses."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"search-tickets","label":"Search Tickets","description":"Search Zendesk tickets using an explicit query string with typed pagination controls.","method":"GET","path":"/api/v2/search","inputs":{"parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":500},"description":"Zendesk search query string."},{"name":"page","in":"query","schema":{"type":"integer","minimum":1},"description":"Optional offset-based page number."},{"name":"per_page","in":"query","schema":{"type":"integer","minimum":1,"maximum":100},"default":25,"description":"Maximum number of results to return."}],"staticQuery":{"filter[type]":"ticket"}},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-ticket","label":"Get Ticket","description":"Retrieve a single Zendesk ticket by explicit ticket ID.","method":"GET","path":"/api/v2/tickets/{ticketId}","inputs":{"parameters":[{"name":"ticketId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Zendesk ticket ID to retrieve."},{"name":"include","in":"query","schema":{"type":"string","maxLength":120},"description":"Optional comma-separated sideloads to include with the ticket response."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"list-ticket-comments","label":"List Ticket Comments","description":"List comments for a specific Zendesk ticket using an explicit ticket ID.","method":"GET","path":"/api/v2/tickets/{ticketId}/comments","inputs":{"parameters":[{"name":"ticketId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Zendesk ticket ID whose comments should be listed."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"list-users","label":"List Users","description":"List Zendesk users with typed pagination and role filters.","method":"GET","path":"/api/v2/users","inputs":{"parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1},"description":"Optional offset-based page number."},{"name":"per_page","in":"query","schema":{"type":"integer","minimum":1,"maximum":100},"default":25,"description":"Maximum number of users to return."},{"name":"role","in":"query","schema":{"type":"string","enum":["end-user","agent","admin"]},"description":"Optional Zendesk role filter."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-user","label":"Get User","description":"Retrieve a single Zendesk user by explicit user ID.","method":"GET","path":"/api/v2/users/{userId}","inputs":{"parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Zendesk user ID to retrieve."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"create-ticket","label":"Create Ticket","description":"Create a Zendesk ticket using a bounded JSON request body under input.body.","method":"POST","path":"/api/v2/tickets","approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"update-ticket","label":"Update Ticket","description":"Update a Zendesk ticket using an explicit ticket ID and a bounded JSON request body.","method":"PUT","path":"/api/v2/tickets/{ticketId}","inputs":{"parameters":[{"name":"ticketId","in":"path","required":true,"schema":{"type":"integer","minimum":1},"description":"Zendesk ticket ID to update."}]},"approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"}],"workflowTemplates":[{"slug":"ticket-review-and-create","title":"Ticket Review And Create","summary":"Future workflow template for listing recent support tickets, inspecting a specific case, and operator-reviewed ticket creation."}],"helpText":"Import to Harbor, configure local auth, then validate and test list-tickets and get-ticket before enabling create-ticket. Keep create-ticket on approval unless your local policy explicitly allows operator-reviewed support intake.","installNotes":"Dock shares only safe metadata. Hidden auth must be configured locally inside Harbor after import. Zendesk ticket reads use input.path and typed input.query values, and create-ticket uses input.body JSON shaped as a Zendesk ticket payload."}