{
  "service": "zendesk",
  "displayName": "Zendesk",
  "categories": [
    "Communication",
    "Productivity"
  ],
  "authTypes": [
    "oauth2",
    "api_key"
  ],
  "auth": [
    {
      "type": "oauth2",
      "authorizationUrl": "https://{subdomain}.zendesk.com/oauth/authorizations/new",
      "tokenUrl": "https://{subdomain}.zendesk.com/oauth/tokens",
      "refreshTokenUrl": "https://{subdomain}.zendesk.com/oauth/tokens",
      "scopes": [
        "read",
        "write"
      ],
      "tokenEndpointAuthMethod": "client_secret_post",
      "clientConfigFields": [
        {
          "key": "subdomain",
          "label": "Subdomain",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "your-workspace",
          "description": "The Zendesk account subdomain used to build https://<subdomain>.zendesk.com requests.",
          "location": "extra"
        }
      ]
    },
    {
      "type": "api_key",
      "label": "API Token",
      "placeholder": "zendesk_api_token",
      "description": "Zendesk API token used with Basic auth as <email>/token together with the account subdomain. Generate it in Admin Center > Apps and integrations > APIs > API tokens.",
      "extraFields": [
        {
          "key": "subdomain",
          "label": "Subdomain",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "your-workspace",
          "description": "The Zendesk account subdomain used to build https://<subdomain>.zendesk.com API requests."
        },
        {
          "key": "email",
          "label": "Email",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "agent@example.com",
          "description": "The Zendesk user email paired with the API token for Basic auth."
        }
      ]
    }
  ],
  "homepageUrl": "https://www.zendesk.com",
  "actions": [
    {
      "id": "zendesk.create_ticket",
      "service": "zendesk",
      "name": "create_ticket",
      "description": "Create a Zendesk ticket with an initial comment.",
      "requiredScopes": [
        "write"
      ],
      "providerPermissions": [
        "write"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "subject": {
            "type": "string",
            "description": "Ticket subject line."
          },
          "description": {
            "type": "string",
            "description": "Plain-text body used for the initial or appended ticket comment."
          },
          "htmlDescription": {
            "type": "string",
            "description": "HTML body used for the initial or appended ticket comment."
          },
          "commentPublic": {
            "type": "boolean",
            "description": "Whether the generated comment is public when a comment is included."
          },
          "status": {
            "type": "string",
            "enum": [
              "new",
              "open",
              "pending",
              "hold",
              "solved"
            ],
            "description": "Zendesk ticket status accepted by update operations."
          },
          "priority": {
            "type": "string",
            "enum": [
              "urgent",
              "high",
              "normal",
              "low"
            ],
            "description": "Zendesk ticket priority."
          },
          "ticketType": {
            "type": "string",
            "enum": [
              "problem",
              "incident",
              "question",
              "task"
            ],
            "description": "Zendesk ticket type."
          },
          "assigneeId": {
            "type": "integer",
            "minimum": 1,
            "description": "Agent identifier assigned to the ticket."
          },
          "groupId": {
            "type": "integer",
            "minimum": 1,
            "description": "Group identifier assigned to the ticket."
          },
          "organizationId": {
            "type": "integer",
            "minimum": 1,
            "description": "Organization identifier for the ticket."
          },
          "requesterId": {
            "type": "integer",
            "minimum": 1,
            "description": "Existing requester identifier."
          },
          "externalId": {
            "type": "string",
            "description": "External identifier linked to the ticket."
          },
          "dueAt": {
            "type": "string",
            "description": "Task due timestamp in ISO 8601 format.",
            "format": "date-time"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "Zendesk tag value."
            },
            "description": "Zendesk tag values."
          },
          "customFields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Zendesk custom field identifier."
                },
                "value": {
                  "description": "Value assigned to the custom field."
                }
              },
              "additionalProperties": false,
              "description": "Zendesk custom field update."
            },
            "description": "Custom field values applied to the ticket."
          },
          "requester": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "Requester display name."
              },
              "email": {
                "type": "string",
                "description": "Requester email address.",
                "format": "email"
              }
            },
            "additionalProperties": false,
            "required": [
              "email"
            ],
            "description": "Requester object used when creating a ticket."
          }
        },
        "additionalProperties": false,
        "required": [
          "subject"
        ],
        "description": "Input parameters for creating a Zendesk ticket."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ticket": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Normalized Zendesk ticket."
          }
        },
        "additionalProperties": false,
        "description": "Zendesk ticket mutation response wrapper."
      },
      "followUpActions": [
        "zendesk.get_ticket"
      ]
    },
    {
      "id": "zendesk.get_current_user",
      "service": "zendesk",
      "name": "get_current_user",
      "description": "Get the current authenticated Zendesk user.",
      "requiredScopes": [
        "read"
      ],
      "providerPermissions": [
        "read"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Input parameters for reading the current Zendesk user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "minimum": 1,
                "description": "Zendesk user identifier."
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "User display name, or null when Zendesk omits it."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "email": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "User primary email, or null when Zendesk omits it."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "role": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Zendesk role string, or null when Zendesk omits it."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Additional Zendesk object fields."
              }
            },
            "additionalProperties": true,
            "description": "Normalized Zendesk user."
          }
        },
        "additionalProperties": false,
        "description": "Zendesk current user response wrapper."
      }
    },
    {
      "id": "zendesk.get_organization",
      "service": "zendesk",
      "name": "get_organization",
      "description": "Get a Zendesk organization by identifier.",
      "requiredScopes": [
        "read"
      ],
      "providerPermissions": [
        "read"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "organizationId": {
            "type": "integer",
            "minimum": 1,
            "description": "Zendesk organization identifier."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for reading a single Zendesk organization."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "organization": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "minimum": 1,
                "description": "Zendesk organization identifier."
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Organization name, or null when Zendesk omits it."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Additional Zendesk object fields."
              }
            },
            "additionalProperties": true,
            "description": "Normalized Zendesk organization."
          }
        },
        "additionalProperties": false,
        "description": "Zendesk single organization response wrapper."
      }
    },
    {
      "id": "zendesk.get_ticket",
      "service": "zendesk",
      "name": "get_ticket",
      "description": "Get a Zendesk ticket and its comments by identifier.",
      "requiredScopes": [
        "read"
      ],
      "providerPermissions": [
        "read"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ticketId": {
            "type": "integer",
            "minimum": 1,
            "description": "Zendesk ticket identifier."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for reading a single Zendesk ticket."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ticket": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Normalized Zendesk ticket."
          },
          "comments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Zendesk ticket comment identifier."
                },
                "body": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Plain-text comment body, or null when Zendesk omits it."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "htmlBody": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "HTML comment body, or null when Zendesk omits it."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Additional Zendesk object fields."
                }
              },
              "additionalProperties": true,
              "description": "Normalized Zendesk ticket comment."
            },
            "description": "Comments attached to the ticket."
          }
        },
        "additionalProperties": false,
        "description": "Zendesk ticket detail response wrapper."
      },
      "followUpActions": [
        "zendesk.reply_to_ticket"
      ]
    },
    {
      "id": "zendesk.get_user",
      "service": "zendesk",
      "name": "get_user",
      "description": "Get a Zendesk user by identifier.",
      "requiredScopes": [
        "read"
      ],
      "providerPermissions": [
        "read"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "integer",
            "minimum": 1,
            "description": "Zendesk user identifier."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for reading a single Zendesk user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "user": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "minimum": 1,
                "description": "Zendesk user identifier."
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "User display name, or null when Zendesk omits it."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "email": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "User primary email, or null when Zendesk omits it."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "role": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Zendesk role string, or null when Zendesk omits it."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Additional Zendesk object fields."
              }
            },
            "additionalProperties": true,
            "description": "Normalized Zendesk user."
          }
        },
        "additionalProperties": false,
        "description": "Zendesk single user response wrapper."
      }
    },
    {
      "id": "zendesk.list_organizations",
      "service": "zendesk",
      "name": "list_organizations",
      "description": "List Zendesk organizations with pagination.",
      "requiredScopes": [
        "read"
      ],
      "providerPermissions": [
        "read"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Offset pagination page number."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum records to return for offset pagination."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Zendesk organizations."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "organizations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Zendesk organization identifier."
                },
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Organization name, or null when Zendesk omits it."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Additional Zendesk object fields."
                }
              },
              "additionalProperties": true,
              "description": "Normalized Zendesk organization."
            },
            "description": "Organizations returned by Zendesk."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "count": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Total count reported by Zendesk, or null when the endpoint does not provide it."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "hasMore": {
                "type": "boolean",
                "description": "Whether Zendesk indicates that more records are available."
              },
              "nextPage": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the next Zendesk page, or null when there is no next page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "previousPage": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the previous Zendesk page, or null when there is no previous page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "afterCursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Cursor for the next page, or null when cursor pagination is not in use."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "beforeCursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Cursor for the previous page, or null when cursor pagination is not in use."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false,
            "description": "Normalized pagination metadata returned by Zendesk."
          }
        },
        "additionalProperties": false,
        "description": "Zendesk organization list response wrapper."
      }
    },
    {
      "id": "zendesk.list_tickets",
      "service": "zendesk",
      "name": "list_tickets",
      "description": "List Zendesk tickets with offset or cursor pagination.",
      "requiredScopes": [
        "read"
      ],
      "providerPermissions": [
        "read"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Offset pagination page number."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum records to return for offset pagination."
          },
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum records to return for cursor pagination."
          },
          "pageAfter": {
            "type": "string",
            "description": "Opaque cursor returned by the previous Zendesk page."
          },
          "pageBefore": {
            "type": "string",
            "description": "Opaque cursor for retrieving the previous Zendesk page."
          },
          "externalId": {
            "type": "string",
            "description": "External identifier used to filter tickets."
          },
          "sortBy": {
            "type": "string",
            "description": "Zendesk field used to sort tickets."
          },
          "sortOrder": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "Zendesk sort direction."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Zendesk tickets."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "tickets": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Normalized Zendesk ticket."
            },
            "description": "Tickets returned by Zendesk."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "count": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Total count reported by Zendesk, or null when the endpoint does not provide it."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "hasMore": {
                "type": "boolean",
                "description": "Whether Zendesk indicates that more records are available."
              },
              "nextPage": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the next Zendesk page, or null when there is no next page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "previousPage": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the previous Zendesk page, or null when there is no previous page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "afterCursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Cursor for the next page, or null when cursor pagination is not in use."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "beforeCursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Cursor for the previous page, or null when cursor pagination is not in use."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false,
            "description": "Normalized pagination metadata returned by Zendesk."
          }
        },
        "additionalProperties": false,
        "description": "Zendesk ticket list response wrapper."
      }
    },
    {
      "id": "zendesk.list_users",
      "service": "zendesk",
      "name": "list_users",
      "description": "List Zendesk users with optional role and pagination filters.",
      "requiredScopes": [
        "read"
      ],
      "providerPermissions": [
        "read"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Offset pagination page number."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum records to return for offset pagination."
          },
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum records to return for cursor pagination."
          },
          "pageAfter": {
            "type": "string",
            "description": "Opaque cursor returned by the previous Zendesk page."
          },
          "pageBefore": {
            "type": "string",
            "description": "Opaque cursor for retrieving the previous Zendesk page."
          },
          "role": {
            "type": "string",
            "enum": [
              "end-user",
              "agent",
              "admin"
            ],
            "description": "Zendesk user role."
          },
          "roleList": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "end-user",
                "agent",
                "admin"
              ],
              "description": "User role included in the filter."
            },
            "description": "Roles included in the user filter."
          },
          "externalId": {
            "type": "string",
            "description": "External identifier used to filter users."
          },
          "permissionSet": {
            "type": "integer",
            "minimum": 1,
            "description": "Zendesk custom role identifier."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Zendesk users."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Zendesk user identifier."
                },
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "User display name, or null when Zendesk omits it."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "email": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "User primary email, or null when Zendesk omits it."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "role": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Zendesk role string, or null when Zendesk omits it."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Additional Zendesk object fields."
                }
              },
              "additionalProperties": true,
              "description": "Normalized Zendesk user."
            },
            "description": "Users returned by Zendesk."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "count": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Total count reported by Zendesk, or null when the endpoint does not provide it."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "hasMore": {
                "type": "boolean",
                "description": "Whether Zendesk indicates that more records are available."
              },
              "nextPage": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the next Zendesk page, or null when there is no next page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "previousPage": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "URL for the previous Zendesk page, or null when there is no previous page."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "afterCursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Cursor for the next page, or null when cursor pagination is not in use."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "beforeCursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Cursor for the previous page, or null when cursor pagination is not in use."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false,
            "description": "Normalized pagination metadata returned by Zendesk."
          }
        },
        "additionalProperties": false,
        "description": "Zendesk user list response wrapper."
      }
    },
    {
      "id": "zendesk.reply_to_ticket",
      "service": "zendesk",
      "name": "reply_to_ticket",
      "description": "Append a public reply or internal note to a Zendesk ticket.",
      "requiredScopes": [
        "write"
      ],
      "providerPermissions": [
        "write"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ticketId": {
            "type": "integer",
            "minimum": 1,
            "description": "Zendesk ticket identifier."
          },
          "body": {
            "type": "string",
            "minLength": 1,
            "description": "Comment body to append to the ticket."
          },
          "public": {
            "type": "boolean",
            "description": "Whether the appended comment is public. Defaults to true."
          },
          "assigneeId": {
            "type": "integer",
            "minimum": 1,
            "description": "Agent identifier assigned together with the reply."
          }
        },
        "additionalProperties": false,
        "required": [
          "ticketId",
          "body"
        ],
        "description": "Input parameters for replying to a Zendesk ticket."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ticket": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Normalized Zendesk ticket."
          }
        },
        "additionalProperties": false,
        "description": "Zendesk ticket mutation response wrapper."
      }
    },
    {
      "id": "zendesk.search_users",
      "service": "zendesk",
      "name": "search_users",
      "description": "Search Zendesk users by email address or name.",
      "requiredScopes": [
        "read"
      ],
      "providerPermissions": [
        "read"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "User email used for the Zendesk search.",
            "format": "email"
          },
          "name": {
            "type": "string",
            "description": "User name fragment used for the Zendesk search."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "Offset pagination page number."
          },
          "perPage": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum records to return for offset pagination."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for searching Zendesk users."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Zendesk user identifier."
                },
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "User display name, or null when Zendesk omits it."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "email": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "User primary email, or null when Zendesk omits it."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "role": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Zendesk role string, or null when Zendesk omits it."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Additional Zendesk object fields."
                }
              },
              "additionalProperties": true,
              "description": "Normalized Zendesk user."
            },
            "description": "Users returned by the search."
          },
          "count": {
            "type": "integer",
            "description": "Total number of matching users."
          },
          "nextPage": {
            "anyOf": [
              {
                "type": "string",
                "description": "URL for the next Zendesk page, or null when there is no next page."
              },
              {
                "type": "null"
              }
            ]
          },
          "previousPage": {
            "anyOf": [
              {
                "type": "string",
                "description": "URL for the previous Zendesk page, or null when there is no previous page."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "Zendesk user search response wrapper."
      }
    },
    {
      "id": "zendesk.update_ticket",
      "service": "zendesk",
      "name": "update_ticket",
      "description": "Update fields on an existing Zendesk ticket.",
      "requiredScopes": [
        "write"
      ],
      "providerPermissions": [
        "write"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ticketId": {
            "type": "integer",
            "minimum": 1,
            "description": "Zendesk ticket identifier."
          },
          "subject": {
            "type": "string",
            "description": "Ticket subject line."
          },
          "description": {
            "type": "string",
            "description": "Plain-text body used for the initial or appended ticket comment."
          },
          "htmlDescription": {
            "type": "string",
            "description": "HTML body used for the initial or appended ticket comment."
          },
          "commentPublic": {
            "type": "boolean",
            "description": "Whether the generated comment is public when a comment is included."
          },
          "status": {
            "type": "string",
            "enum": [
              "new",
              "open",
              "pending",
              "hold",
              "solved"
            ],
            "description": "Zendesk ticket status accepted by update operations."
          },
          "priority": {
            "type": "string",
            "enum": [
              "urgent",
              "high",
              "normal",
              "low"
            ],
            "description": "Zendesk ticket priority."
          },
          "ticketType": {
            "type": "string",
            "enum": [
              "problem",
              "incident",
              "question",
              "task"
            ],
            "description": "Zendesk ticket type."
          },
          "assigneeId": {
            "type": "integer",
            "minimum": 1,
            "description": "Agent identifier assigned to the ticket."
          },
          "groupId": {
            "type": "integer",
            "minimum": 1,
            "description": "Group identifier assigned to the ticket."
          },
          "organizationId": {
            "type": "integer",
            "minimum": 1,
            "description": "Organization identifier for the ticket."
          },
          "requesterId": {
            "type": "integer",
            "minimum": 1,
            "description": "Existing requester identifier."
          },
          "externalId": {
            "type": "string",
            "description": "External identifier linked to the ticket."
          },
          "dueAt": {
            "type": "string",
            "description": "Task due timestamp in ISO 8601 format.",
            "format": "date-time"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "Zendesk tag value."
            },
            "description": "Zendesk tag values."
          },
          "customFields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Zendesk custom field identifier."
                },
                "value": {
                  "description": "Value assigned to the custom field."
                }
              },
              "additionalProperties": false,
              "description": "Zendesk custom field update."
            },
            "description": "Custom field values applied to the ticket."
          },
          "safeUpdate": {
            "type": "boolean",
            "description": "Whether to enable optimistic locking for ticket updates."
          },
          "updatedStamp": {
            "type": "string",
            "description": "Last known ticket updated_at timestamp used with safeUpdate.",
            "format": "date-time"
          },
          "metadata": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Additional Zendesk object fields."
          }
        },
        "additionalProperties": false,
        "required": [
          "ticketId"
        ],
        "description": "Input parameters for updating a Zendesk ticket."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ticket": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Normalized Zendesk ticket."
          }
        },
        "additionalProperties": false,
        "description": "Zendesk ticket mutation response wrapper."
      }
    }
  ]
}
