Search phonebook contacts (CTI + centralized)

Add MCP server to your AI tool

Allow AI tools and LLMs to interact with the API documentation portal through MCP.

MCP server URL

https://bump.sh/nethesis/doc/nethcti-middleware/mcp

Standard setup for AI tools providing an mcp.json file

mcp.json
{
  "NethVoice - NethCTI middleware MCP server": {
    "url": "https://bump.sh/nethesis/doc/nethcti-middleware/mcp"
  }
}

Close
GET /phonebook/search/{term}

Legacy-compatible union search across the authenticated user's CTI phonebook and the centralized phonebook. Requires the phonebook capability. Results are returned in a {count, rows, last_sync_at} envelope.

Ordering (issue #7124): with no sort (the current default for nethvoice-cti and phone-island) the legacy order "company ASC, name ASC" is preserved so existing callers are not affected.

Path parameters

  • term string

    Free-text search term. May be empty to match all visible contacts.

Query parameters

  • view string

    Result shape. Omit for a flat person+company list; person returns only real-name contacts; company groups results by company.

    Values are person or company.

  • sort string

    Sort key (issue #7124). surname is an alias of lastname; name an alias of displayname. Any other/absent value keeps the legacy default ordering.

    Values are firstname, lastname, surname, company, displayname, or name.

  • visibility string

    Visibility filter. Alias: sharing.

    Values are all, public, private, or group.

  • sharing string

    Alias of visibility.

    Values are all, public, private, or group.

  • limit integer

    Page size. When provided, pagination is applied. Providing offset without limit is a 400 error.

    Minimum value is 0.

  • offset integer

    Row offset for pagination (default 0). Requires limit.

    Minimum value is 0. Default value is 0.

Responses

  • 200 application/json

    Search results

    Hide response attributes Show response attributes object
    • count integer

      Total number of matching rows (ignores pagination).

    • rows array[object]

      A phonebook contact from either the per-user CTI phonebook (source "cti") or the centralized phonebook (source "centralized"). Fields firstname..otheremail were added by issue #7124 and exist only on CTI contacts; centralized contacts always return them empty.

      Hide rows attributes Show rows attributes object

      A phonebook contact from either the per-user CTI phonebook (source "cti") or the centralized phonebook (source "centralized"). Fields firstname..otheremail were added by issue #7124 and exist only on CTI contacts; centralized contacts always return them empty.

      • id integer(int64)
      • owner_id string
      • type string

        Visibility/type, e.g. private, public or an encoded shared-group value.

      • name string
      • company string
      • homeemail string
      • workemail string
      • homephone string
      • workphone string
      • cellphone string
      • fax string
      • title string
      • notes string
      • homestreet string
      • homepob string
      • homecity string
      • homeprovince string
      • homepostalcode string
      • homecountry string
      • workstreet string
      • workpob string
      • workcity string
      • workprovince string
      • workpostalcode string
      • workcountry string
      • url string
      • extension string
      • speeddial_num string
      • firstname string
      • lastname string
      • job string
      • facebook string
      • instagram string
      • linkedin string
      • workphone2 string
      • cellphone2 string
      • otherphone string
      • otheremail string
      • source string

        Values are cti or centralized.

      • contacts string

        Present only on company-grouped rows (view=company); JSON list of member contacts.

    • last_sync_at string(date-time) | null

      Last centralized-phonebook sync timestamp (RFC3339), or null.

  • 400 application/json

    Invalid pagination parameters

    Hide response attributes Show response attributes object
    • code integer
    • message string
    • data
    • error string
  • 401 application/json

    Unauthorized

    Hide response attributes Show response attributes object
    • code integer
    • message string
    • data
    • error string
GET /phonebook/search/{term}
curl \
 --request GET 'https://middleware.example.com/api/phonebook/search/{term}' \
 --header "Authorization: Bearer $ACCESS_TOKEN"
Response examples (200)
{
  "count": 42,
  "rows": [
    {
      "id": 42,
      "owner_id": "string",
      "type": "string",
      "name": "string",
      "company": "string",
      "homeemail": "string",
      "workemail": "string",
      "homephone": "string",
      "workphone": "string",
      "cellphone": "string",
      "fax": "string",
      "title": "string",
      "notes": "string",
      "homestreet": "string",
      "homepob": "string",
      "homecity": "string",
      "homeprovince": "string",
      "homepostalcode": "string",
      "homecountry": "string",
      "workstreet": "string",
      "workpob": "string",
      "workcity": "string",
      "workprovince": "string",
      "workpostalcode": "string",
      "workcountry": "string",
      "url": "string",
      "extension": "string",
      "speeddial_num": "string",
      "firstname": "string",
      "lastname": "string",
      "job": "string",
      "facebook": "string",
      "instagram": "string",
      "linkedin": "string",
      "workphone2": "string",
      "cellphone2": "string",
      "otherphone": "string",
      "otheremail": "string",
      "source": "cti",
      "contacts": "string"
    }
  ],
  "last_sync_at": "2026-05-04T09:42:00Z"
}
Response examples (400)
{
  "code": 42,
  "message": "string",
  "error": "string"
}
Response examples (401)
{
  "code": 42,
  "message": "string",
  "error": "string"
}