2.6 KiB
2.6 KiB
Notes
SDP v3 API gotchas
Docs: https://www.manageengine.com/products/service-desk/sdpod-v3-api/getting-started/search-criteria.html
- Condition names have spaces:
greater than,is not,lesser than.greater_thanisn't valid, and SDP silently ignored the entire search criteria because of it, returning every ticket (124,050). If a query'stotal_countis huge, suspect the criteria first. - Paging:
row_countis at most 100. Usestart_index, and stop whenlist_info.has_more_rowsis false. Ask forget_total_count: trueon the first page.getAllRequestsdedupes by ID and stops at 20 pages or when the total is unreachable. - Multiple values: use a
values: [...]array, and join criteria withlogical_operator: 'AND'(seeallOf()intickets.js). - "Technician is empty": written as
{ field: 'technician', condition: 'is' }with no value. This isn't documented, since the docs only show the "is not" form, but it's verified to work. - Field names that work in filters:
site.name,group.name,technician.name,status.name,last_updated_time. - Group names: the ManageEngine UI shows groups as "Customer Support « KVCC", but the API name is plain "Customer Support".
- Sign-in scope:
SDPOnDemand.requests.READis enough for everything so far. - Token lifetime: Zoho access tokens last about an hour. Refresh tokens aren't stored yet (roadmap phase 1).
Decisions
- 2026-10-15: MIT license. Copyright Skylar Grant.
- 2026-10-15: OpenWeatherMap for weather. The free tier covers current weather and the 5-day forecast, and results are cached for 10 minutes. The National Weather Service API was the alternative (free, no key), but it needs three calls per lookup.
- 2026-10-15: Unassigned counter uses its own status exclusions (
UNASSIGNED_EXCLUDED_STATUSES) to match the ManageEngine view. The debug list is kept but hidden (SHOW_UNASSIGNED_LISTinindex.html). - 2026-10-15: Multi-region approach: one service token plus region config, not per-user Zoho tokens. A user's own token could see all 124k tickets, so it wouldn't separate regions, and per-user polling multiplies API traffic. See
ROADMAP.md.
Known issues
- The status table scrolls sideways once there are more statuses than fit, because the page is capped at 1,320px. Consider widening the page or narrowing the sidebar.
- All statuses not in
STATUS_NAMEScount as open, including "Need Information" and "On Hold". This is intentional for now; revisit when regions get their own config. - The token is lost on restart and expires after about an hour.