Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 36 additions & 22 deletions docs/_partials/planner-api/hcp.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import Caret from '@site/static/img/caret.svg'
import { creativeTypes } from '@site/src/data/enums/creativeTypes';
import { frequencyCapTypes } from '@site/src/data/enums/frequencyCapTypes';
import { deviceType } from '@site/src/data/enums/deviceType';
import { dataPartners } from '@site/src/data/enums/dataPartners';
import { hcpDataPartners } from '@site/src/data/enums/hcpDataPartners';
import { npiTypes } from '@site/src/data/enums/npiTypes';
import { audienceSelectionMethods } from '@site/src/data/enums/audienceSelectionMethods';
import { hcpAccountTypes } from '@site/src/data/enums/hcpAccountTypes';
Expand Down Expand Up @@ -190,7 +190,7 @@ import { audienceTypes } from '@site/src/data/enums/audienceTypes';
<table className="objectProperties">
<tr>
<td>`id` <br /><span class="type-text">integer</span></td>
<td>[Data Partner ID](/guidelines/audience-api/#data-partners-list-for-matched-audience). <br /><EnumWidget values={dataPartners} /></td>
<td>[Data Partner ID](#get-data-partners-list). <br /><EnumWidget values={hcpDataPartners} /></td>
</tr>
<tr>
<td>`selected` <br /><span class="type-text">boolean</span></td>
Expand Down Expand Up @@ -252,7 +252,7 @@ import { audienceTypes } from '@site/src/data/enums/audienceTypes';
<table className="objectProperties">
<tr>
<td>`deviceTypeIds` <br /><span class="type-text">array of integers</span></td>
<td>[Device type IDs](/guidelines/master-api/#get-device-type). <br />When <var>allDeviceTypesSelected</var> is <var>false</var>, must match the device dimension's <var>splitStrategy[].selectedValueIds</var> and every <var>campaigns[].targeting.deviceTypeIds</var> used, see [Targeting consistency rule](#targeting-consistency-rule). <br /><EnumWidget values={deviceType} /></td>
<td>[Device type IDs](/guidelines/master-api/#get-device-type). <br />When <var>allDeviceTypesSelected</var> is <var>false</var>, must match the device dimension's <var>splitStrategy[].selectedValueIds</var> and every <var>campaigns[].targeting.deviceTypeIds</var> used, see [Targeting consistency rule](#targeting-consistency-rule). <br /><EnumWidget values={deviceType.filter((v) => v.id !== 20399999)} /></td>
</tr>
<tr>
<td>`allDeviceTypesSelected` <br /><span class="type-text">boolean</span></td>
Expand Down Expand Up @@ -289,7 +289,7 @@ import { audienceTypes } from '@site/src/data/enums/audienceTypes';
<table className="objectProperties">
<tr>
<td>`creativeTypeIds` <br /><span class="type-text">array of integers</span></td>
<td>[Creative type IDs](/guidelines/creative-api/#get-creative-types-list). <br />When <var>allCreativeTypesSelected</var> is <var>false</var>, must match the creative dimension's <var>splitStrategy[].selectedValueIds</var> and every <var>campaigns[].targeting.creativeTypeId</var> used, see [Targeting consistency rule](#targeting-consistency-rule). <br /><EnumWidget values={creativeTypes} /></td>
<td>[Creative type IDs](/guidelines/creative-api/#get-creative-types-list). <br />When <var>allCreativeTypesSelected</var> is <var>false</var>, must match the creative dimension's <var>splitStrategy[].selectedValueIds</var> and every <var>campaigns[].targeting.creativeTypeId</var> used, see [Targeting consistency rule](#targeting-consistency-rule). <br /><EnumWidget values={creativeTypes.filter((v) => v.id !== 0)} /></td>
</tr>
<tr>
<td>`allCreativeTypesSelected` <br /><span class="type-text">boolean</span></td>
Expand Down Expand Up @@ -478,15 +478,15 @@ import { audienceTypes } from '@site/src/data/enums/audienceTypes';
<table className="objectProperties">
<tr>
<td>`dataPartnerIds` <br /><span class="type-text">array of integers</span></td>
<td>[Data partner IDs](/guidelines/audience-api/#data-partners-list-for-matched-audience). <br />Must match the partner dimension's plan-level/split-strategy selection, see [Targeting consistency rule](#targeting-consistency-rule). <br /><EnumWidget values={dataPartners} /></td>
<td>[Data partner IDs](#get-data-partners-list). <br />Must match the partner dimension's plan-level/split-strategy selection, see [Targeting consistency rule](#targeting-consistency-rule). <br /><EnumWidget values={hcpDataPartners} /></td>
</tr>
<tr>
<td>`creativeTypeId` <br /><span class="type-text">integer</span></td>
<td>[Creative type ID](/guidelines/creative-api/#get-creative-types-list). <br />Singular: one creative type per campaign. Must match the creative dimension's plan-level/split-strategy selection, see [Targeting consistency rule](#targeting-consistency-rule). <br /><EnumWidget values={creativeTypes} /></td>
<td>[Creative type ID](/guidelines/creative-api/#get-creative-types-list). <br />Singular: one creative type per campaign. Must match the creative dimension's plan-level/split-strategy selection, see [Targeting consistency rule](#targeting-consistency-rule). <br /><EnumWidget values={creativeTypes.filter((v) => v.id !== 0)} /></td>
</tr>
<tr>
<td>`deviceTypeIds` <br /><span class="type-text">array of integers</span></td>
<td>[Device type IDs](/guidelines/master-api/#get-device-type). <br />Must match the device dimension's plan-level/split-strategy selection, see [Targeting consistency rule](#targeting-consistency-rule). <br /><EnumWidget values={deviceType} /></td>
<td>[Device type IDs](/guidelines/master-api/#get-device-type). <br />Must match the device dimension's plan-level/split-strategy selection, see [Targeting consistency rule](#targeting-consistency-rule). <br /><EnumWidget values={deviceType.filter((v) => v.id !== 20399999)} /></td>
</tr>
<tr>
<td>`npiTypeId` <br /><span class="type-text">integer</span></td>
Expand Down Expand Up @@ -1662,7 +1662,7 @@ Use this API to visualize how different targeting dimensions are distributed acr
<table className="objectProperties">
<tr>
<td>`deviceTypeIds` <br /><span class="type-text">array of integers</span></td>
<td>[Device type IDs](/guidelines/master-api/#get-device-type). <br /><EnumWidget values={deviceType} /></td>
<td>[Device type IDs](/guidelines/master-api/#get-device-type). <br /><EnumWidget values={deviceType.filter((v) => v.id !== 20399999)} /></td>
</tr>
<tr>
<td>`allDeviceTypesSelected` <br /><span class="type-text">boolean</span></td>
Expand Down Expand Up @@ -1699,7 +1699,7 @@ Use this API to visualize how different targeting dimensions are distributed acr
<table className="objectProperties">
<tr>
<td>`creativeTypeIds` <br /><span class="type-text">array of integers</span></td>
<td>[Creative type IDs](/guidelines/creative-api/#get-creative-types-list). <br /><EnumWidget values={creativeTypes} /></td>
<td>[Creative type IDs](/guidelines/creative-api/#get-creative-types-list). <br /><EnumWidget values={creativeTypes.filter((v) => v.id !== 0)} /></td>
</tr>
<tr>
<td>`allCreativeTypesSelected` <br /><span class="type-text">boolean</span></td>
Expand Down Expand Up @@ -1818,7 +1818,7 @@ Use this API to visualize how different targeting dimensions are distributed acr
<table className="objectProperties">
<tr>
<td>`creativeTypeId` <br /><span class="type-text">integer</span></td>
<td>[Creative type ID](/guidelines/creative-api/#get-creative-types-list). <br /><EnumWidget values={creativeTypes} /></td>
<td>[Creative type ID](/guidelines/creative-api/#get-creative-types-list). <br /><EnumWidget values={creativeTypes.filter((v) => v.id !== 0)} /></td>
</tr>
<tr>
<td>`impressions` <br /><span class="type-text">integer</span></td>
Expand Down Expand Up @@ -2095,7 +2095,7 @@ Use this API to get an audience composition analysis for a single targeting conf
<table className="objectProperties">
<tr>
<td>`dataPartnerIds` <br /><span class="type-text">array of integers</span></td>
<td>[Data partner IDs](/guidelines/audience-api/#data-partners-list-for-matched-audience). <br /><EnumWidget values={dataPartners} /></td>
<td>[Data partner IDs](#get-data-partners-list). <br /><EnumWidget values={hcpDataPartners} /></td>
</tr>
<tr>
<td>`allDataPartnersSelected` <br /><span class="type-text">boolean</span></td>
Expand Down Expand Up @@ -2575,7 +2575,7 @@ Use this API to preview the size and composition of each audience block before g
<table className="objectProperties">
<tr>
<td>`dataPartnerIds` <br /><span class="type-text">array of integers</span></td>
<td>[Data partner IDs](/guidelines/audience-api/#data-partners-list-for-matched-audience). <br /><EnumWidget values={dataPartners} /></td>
<td>[Data partner IDs](#get-data-partners-list). <br /><EnumWidget values={hcpDataPartners} /></td>
</tr>
<tr>
<td>`allDataPartnersSelected` <br /><span class="type-text">boolean</span></td>
Expand Down Expand Up @@ -2615,7 +2615,7 @@ Use this API to preview the size and composition of each audience block before g
<table className="objectProperties">
<tr>
<td>`deviceTypeIds` <br /><span class="type-text">array of integers</span></td>
<td>[Device type IDs](/guidelines/master-api/#get-device-type). <br /><EnumWidget values={deviceType} /></td>
<td>[Device type IDs](/guidelines/master-api/#get-device-type). <br /><EnumWidget values={deviceType.filter((v) => v.id !== 20399999)} /></td>
</tr>
<tr>
<td>`allDeviceTypesSelected` <br /><span class="type-text">boolean</span></td>
Expand Down Expand Up @@ -2652,7 +2652,7 @@ Use this API to preview the size and composition of each audience block before g
<table className="objectProperties">
<tr>
<td>`creativeTypeIds` <br /><span class="type-text">array of integers</span></td>
<td>[Creative type IDs](/guidelines/creative-api/#get-creative-types-list). <br /><EnumWidget values={creativeTypes} /></td>
<td>[Creative type IDs](/guidelines/creative-api/#get-creative-types-list). <br /><EnumWidget values={creativeTypes.filter((v) => v.id !== 0)} /></td>
</tr>
<tr>
<td>`allCreativeTypesSelected` <br /><span class="type-text">boolean</span></td>
Expand Down Expand Up @@ -3574,7 +3574,7 @@ Get the list of available geography segments for HCP Planners.
<div class="endpoint-container">
<div class="child1">

Get the list of available data partners for HCP Planners.
Get the list of available data partners for HCP Planners. For Account Based (ABM) audience blocks specifically, only Healthlink (<var>7</var>) and RevOptimal (<var>12</var>) can be selected.

<details className="objectPropertiesDetails" style={{ maxWidth: "800px", padding: "1rem" }}>
<summary style={{ fontSize: "16px" }}>Response properties</summary>
Expand Down Expand Up @@ -3630,12 +3630,20 @@ Get the list of available data partners for HCP Planners.
"logoUrl": "https://advp0had0vuj7rad3niaw1eus2-stage.s3.us-east-1.amazonaws.com/data_partner/D360.png"
},
{
"id": 10,
"name": "iqvia_npi_id",
"order": 9,
"displayName": "IQVIA ID",
"dataCost": 25,
"logoUrl": "https://advp0had0vuj7rad3niaw1eus2-stage.s3.us-east-1.amazonaws.com/data_partner/iqvia.png"
"id": 11,
"name": "pl_npi_id",
"order": 10,
"displayName": "Purple Lab ID",
"dataCost": 15,
"logoUrl": "https://advp0had0vuj7rad3niaw1eus2-stage.s3.us-east-1.amazonaws.com/data_partner/pl.png"
},
{
"id": 12,
"name": "ro_npi_id",
"order": 11,
"displayName": "RevOptimal ID",
"dataCost": 8,
"logoUrl": "https://advp0had0vuj7rad3niaw1eus2-stage.s3.us-east-1.amazonaws.com/data_partner/ro.png"
}
]
}
Expand Down Expand Up @@ -3688,7 +3696,7 @@ Get the list of available audience selection methods for HCP Planners.
"id": 1,
"name": "filter_based",
"order": 1,
"displayName": "Filter Audience"
"displayName": "Filter Based"
},
{
"id": 2,
Expand All @@ -3701,6 +3709,12 @@ Get the list of available audience selection methods for HCP Planners.
"name": "existing_audience",
"order": 3,
"displayName": "Existing Audience"
},
{
"id": 4,
"name": "abm_block",
"order": 4,
"displayName": "Account Based"
}
]
}
Expand Down
8 changes: 7 additions & 1 deletion docs/getting-started/rest-api-reference.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,12 @@ API calls return a JSON formatted response consisting of a <var>success</var> bo

## Rate limits

The message rate limit is 20 requests per minute. Exceeding the limit will cause a 429 (Too Many Requests) error.
Per-IP rate limiting currently applies to the following endpoints. Exceeding the limit returns a 429 (Too Many Requests) error.

| Endpoint | Limit |
| --- | --- |
| [POST /api/v3/ua/find-my-workspace](/guidelines/workspace-api#send-find-my-workspace-email) | 100 requests per minute |
| [POST /api/v3/ua/user/email/validate](/guidelines/user-api#validate-user-email) | 500 requests per minute |
| [POST /api/v3/ua/invite/validate](/guidelines/user-api#validate-user-invite) | 50 requests per minute |

The maximum data size per page is 1K rows.
12 changes: 6 additions & 6 deletions docs/guidelines/campaign-api.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import { ioStatus } from '@site/src/data/enums/ioStatus';
import { budgetDistributionMethods } from '@site/src/data/enums/budgetDistributionMethods';
import { companySize } from '@site/src/data/enums/companySize';
import { campaignGoals } from '@site/src/data/enums/campaignGoals';
import { deviceType } from '@site/src/data/enums/deviceType';
import { campaignDeviceTypes } from '@site/src/data/enums/campaignDeviceTypes';

# Campaign API

Expand Down Expand Up @@ -198,7 +198,7 @@ Use the following header parameters for all requests:
</tr>
<tr>
<td>`deviceType` <br /><span class="type-text">string</span></td>
<td>Comma separated [device type IDs](/guidelines/master-api#get-device-type). <br /><EnumWidget values={deviceType} /></td>
<td>Comma separated device type IDs. <br /><EnumWidget values={campaignDeviceTypes} /></td>
</tr>
<tr>
<td>`trafficType` <br /><span class="type-text">string</span></td>
Expand Down Expand Up @@ -3468,7 +3468,7 @@ Create a new campaign in <var>pending</var> or <var>draft</var> status.
</tr>
<tr>
<td>`deviceType` <br /><span class="type-text">string</span> <span class="required-text">optional</span></td>
<td>Comma separated [device type IDs](/guidelines/master-api#get-device-type) for targeting. <br /><EnumWidget values={deviceType} /></td>
<td>Comma separated device type IDs for targeting. <br /><EnumWidget values={campaignDeviceTypes} /></td>
</tr>
<tr>
<td>`trafficType` <br /><span class="type-text">string</span> <span class="required-text">optional</span></td>
Expand Down Expand Up @@ -3496,7 +3496,7 @@ Create a new campaign in <var>pending</var> or <var>draft</var> status.
</tr>
<tr>
<td>`device` <br /><span class="type-text">string</span> <span class="required-text">optional</span></td>
<td>Comma separated [device type IDs](/guidelines/master-api#get-device-type) for targeting. <br /><EnumWidget values={deviceType} /></td>
<td>Comma separated device type IDs for targeting. <br /><EnumWidget values={campaignDeviceTypes} /></td>
</tr>
<tr>
<td>`publisherAdCategory` <br /><span class="type-text">string</span></td>
Expand Down Expand Up @@ -4197,7 +4197,7 @@ If campaign is in <var>draft</var> status, this API will automatically update st
</tr>
<tr>
<td>`deviceType` <br /><span class="type-text">string</span></td>
<td>Comma separated [device type IDs](/guidelines/master-api#get-device-type) for targeting. <br /><EnumWidget values={deviceType} /></td>
<td>Comma separated device type IDs for targeting. <br /><EnumWidget values={campaignDeviceTypes} /></td>
</tr>
<tr>
<td>`trafficType` <br /><span class="type-text">string</span></td>
Expand Down Expand Up @@ -7306,7 +7306,7 @@ Include or exclude device type targeting for a given campaign.

| Request schema | |
| --- | --- |
| `ids` <br /><span class="type-text">string</span> | Comma-separated [device type](/guidelines/master-api#get-device-type) IDs to target or block. <br /><EnumWidget values={deviceType} /> |
| `ids` <br /><span class="type-text">string</span> | Comma-separated device type IDs to target or block. <br /><EnumWidget values={campaignDeviceTypes} /> |
| `isExcluded` <br /><span class="type-text">integer</span> | Target entity: <var>0</var>. <br />Block entity: <var>1</var>. |
| `campaignId` <br /><span class="type-text">integer</span> | [Campaign ID](/guidelines/campaign-api#get-list-of-campaigns). |

Expand Down
8 changes: 8 additions & 0 deletions docs/guidelines/user-api.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2975,6 +2975,10 @@ function GetRemainingApplications(params: {

The invited user will receive an email with a link and a hash which can be validated.

:::info
This endpoint is rate limited to 50 requests per minute, per IP. Exceeding it returns a 429 (Too Many Requests) error. See [Rate limits](/getting-started/rest-api-reference#rate-limits).
:::

| Request schema| |
| ---- | --- |
| `inviteHash` <br /><span class="type-text">string</span> | Unique invite hash sent to invited user.
Expand Down Expand Up @@ -3153,6 +3157,10 @@ Validate the password reset hash sent to a user's email.

Check if a user's email is already registered.

:::info
This endpoint is rate limited to 500 requests per minute, per IP. Exceeding it returns a 429 (Too Many Requests) error. See [Rate limits](/getting-started/rest-api-reference#rate-limits).
:::

| Request schema | |
| ---- | --- |
| `email` <br /><span class="type-text">string</span> | User's email. |
Expand Down
18 changes: 13 additions & 5 deletions docs/guidelines/workspace-api.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2303,7 +2303,11 @@ function GetWorkspaceChatBotAppIdByWorkspaceDomain(): Promise<Responses> {
<div class="endpoint-container">
<div class="child1">

Send an email to help a user locate their Workspace.
Send an email listing the Workspace domain(s) associated with the given email address, for users who've forgotten which Workspace they belong to. No authentication is required.

:::info
This endpoint is rate limited to 100 requests per minute, per IP. Exceeding it returns a 429 (Too Many Requests) error. See [Rate limits](/getting-started/rest-api-reference#rate-limits).
:::

| Request schema | |
| ---- | --- |
Expand All @@ -2314,8 +2318,8 @@ Send an email to help a user locate their Workspace.

<table className="objectProperties">
<tr>
<td>`data` <br /><span class="type-text">string</span></td>
<td>Confirmation message indicating the email was sent.</td>
<td>`message` <br /><span class="type-text">string</span></td>
<td>Generic confirmation message, always the same regardless of whether the email matches a Workspace.</td>
</tr>
</table>
</details>
Expand All @@ -2334,7 +2338,9 @@ Send an email to help a user locate their Workspace.
```json title="Response 200"
{
"success": true,
"data": "Email sent to user@example.com"
"data": {
"message": "If an account exists for this email address, an email has been sent."
}
}
```

Expand All @@ -2355,7 +2361,9 @@ interface Responses {
content: {
"application/json": {
success: boolean;
data: string;
data: {
message: string;
};
};
};
};
Expand Down
5 changes: 3 additions & 2 deletions src/data/enums/audienceSelectionMethods.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import type { EnumValue } from '@site/src/components/EnumWidget';

// Source: "Get audience selection methods list" response in hcp.mdx (HCP planner)
// Source: AudienceSelectionMethodEnum.java (all values currently active)
export const audienceSelectionMethods: EnumValue[] = [
{ id: 1, label: 'Filter audience' },
{ id: 1, label: 'Filter based' },
{ id: 2, label: 'Upload NPI list' },
{ id: 3, label: 'Existing audience' },
{ id: 4, label: 'Account based' },
];
12 changes: 12 additions & 0 deletions src/data/enums/campaignDeviceTypes.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import type { EnumValue } from '@site/src/components/EnumWidget';

// Source: campaign-api's DeviceTypeEnum.java. Validated against the
// master_device_type table, but there's no list endpoint for it - this is a
// distinct, smaller set from master-api's "Get device type" (2030000x IDs),
// which is used by Planner (HCP/Political), not by campaign-api.
export const campaignDeviceTypes: EnumValue[] = [
{ id: 11, label: 'Mobile' },
{ id: 12, label: 'Tablet' },
{ id: 13, label: 'Connected TV' },
{ id: 15, label: 'Desktop' },
];
Loading
Loading