Skip to content

Docs updates - #359

Merged
conor-iqm merged 6 commits into
iqmcorp:mainfrom
conor-iqm:docs-updates
Oct 16, 2026
Merged

conor-iqm merged 6 commits into
iqmcorp:mainfrom
conor-iqm:docs-updates

Conversation

@conor-iqm

Copy link
Copy Markdown
Collaborator

No description provided.

conor-iqm and others added 6 commits October 16, 2026 09:57
campaign-api's deviceType field was linked to master-api's "Get device
type" and used its EnumWidget, both of which reflect the 2030000x IDs
Planner (HCP/Political) uses. campaign-api validates deviceType
against its own master_device_type table via a hardcoded DeviceTypeEnum
(11 Mobile, 12 Tablet, 13 Connected TV, 15 Desktop) - confirmed in
source (CampaignDBValidationUtil, DeviceTypeEnum.java) - and the
2030000x IDs don't appear anywhere in campaign-api. The request
examples already used the right IDs (13,15,11,12); only the field
descriptions/widgets were wrong, in 5 places.

There's no list endpoint for this set, so added a dedicated
campaignDeviceTypes enum widget instead of a (nonexistent) link.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This section already existed (contrary to it appearing undocumented),
but matched the controller's own stale swagger example: a flat
"data": "Email sent to..." string. The real service always returns
the same generic message regardless of whether the email matches a
Workspace - a deliberate anti-enumeration measure - and sends the
actual email asynchronously in the background. Fixed the response
shape to {"data": {"message": "..."}} with the real constant text,
and documented the behavior.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
rest-api-reference.mdx claimed a blanket 20 req/min "message rate
limit", which doesn't match current behavior. Confirmed in source
(grep for @ratelimit across user-api) that exactly 4 endpoints have
per-IP rate limiting, each with its own policy - replaced the old
claim with a table linking to all 4, and added an :::info callout on
each endpoint's own section.

Documenting the login endpoint's rate limit surfaced that it applies
to an entirely undocumented endpoint: POST /api/v4/ua/login
(KeycloakLoginController), a separate, newer, Keycloak-backed login
distinct from the already-documented POST /api/v3/ua/login. It's
form-urlencoded, supports 5 grant types, and - unlike the rest of this
API - returns Keycloak's token response as-is rather than wrapping it
in the standard success/data envelope. Added it as "External login",
following the existing OAuth token section's conventions, plus a
sidebar entry.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
POST /api/v4/ua/login isn't confirmed ready to document publicly yet.
Pulled the new section, its sidebar entry, and its row in the rate
limits table. The other 3 rate-limited endpoints (find-my-workspace,
validate user email, validate user invite) are unaffected and remain
documented with their rate limit callouts.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Refines /find-my-workspace description.
Verified each against the real enums (AudienceSelectionMethodEnum,
DataPartnersEnum, planner-api's own CreativeTypeEnum/DeviceTypeEnum):

- audienceSelectionMethods.ts (HCP-exclusive): was missing id 4
  (Account based/ABM). Also fixed id 1's label and the static list's
  own JSON example, both of which said "Filter Audience" instead of
  the real "Filter Based" displayName.
- dataPartners.ts was the wrong enum entirely for HCP - it's
  audience-api's Matched audience data partners list (7, 8, 10),
  while HCP has its own DataPartnersEnum (7, 8, 11, 12 - id 10/IQVIA
  is inactive there). Added a separate hcpDataPartners.ts since
  dataPartners.ts is correct as-is for its other (audience-api)
  callers, fixed the 4 field descriptions and their links, and fixed
  the "Get data partners list" JSON example (showed 7/8/10, missing
  11/12). Also noted that ABM blocks can only use 7 and 12.
- creativeTypes.ts and deviceType.ts are correct for their other
  callers but include values HCP's own enums don't (0/All and
  20399999/Unknown respectively) - filtered both in place across all
  9 usages in hcp.mdx, matching the filtering convention hcp.mdx
  already uses for plannerFileTypes.
- proposalStatus.ts already has id 7 (IO Created) from an earlier fix
  this session - confirmed still correct, no change needed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@conor-iqm
conor-iqm merged commit 895e000 into iqmcorp:main Oct 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant