@adcp/sdk 17.0.0-beta.1 → 17.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/adapters/keyed-account-store.js +1 -1
- package/dist/lib/adapters/keyed-account-store.mjs +1 -1
- package/dist/lib/adapters/version/3.0/brand-fields.d.mts +7 -1
- package/dist/lib/adapters/version/3.0/brand-fields.d.ts +7 -1
- package/dist/lib/adapters/version/3.0/brand-fields.js +139 -3
- package/dist/lib/adapters/version/3.0/brand-fields.mjs +136 -2
- package/dist/lib/adapters/version/3.0/index.js +6 -0
- package/dist/lib/adapters/version/3.0/index.mjs +7 -1
- package/dist/lib/adapters/version/index.d.mts +9 -0
- package/dist/lib/adapters/version/index.d.ts +9 -0
- package/dist/lib/adapters/version/index.js +20 -6
- package/dist/lib/adapters/version/index.mjs +15 -2
- package/dist/lib/adapters/version/types.d.mts +5 -0
- package/dist/lib/adapters/version/types.d.ts +5 -0
- package/dist/lib/canonical-references/index.js +2 -0
- package/dist/lib/canonical-references/index.mjs +2 -0
- package/dist/lib/client/account-changes.d.mts +3 -1
- package/dist/lib/client/account-changes.d.ts +3 -1
- package/dist/lib/client/account-changes.js +22 -2
- package/dist/lib/client/account-changes.mjs +22 -2
- package/dist/lib/conformance/oracle.js +3 -2
- package/dist/lib/conformance/oracle.mjs +3 -2
- package/dist/lib/core/AgentClient.d.mts +165 -1
- package/dist/lib/core/AgentClient.d.ts +165 -1
- package/dist/lib/core/AgentClient.js +446 -8
- package/dist/lib/core/AgentClient.mjs +446 -8
- package/dist/lib/core/ConversationTypes.d.mts +8 -0
- package/dist/lib/core/ConversationTypes.d.ts +8 -0
- package/dist/lib/core/ProtocolResponseParser.d.mts +1 -1
- package/dist/lib/core/ProtocolResponseParser.d.ts +1 -1
- package/dist/lib/core/ProtocolResponseParser.js +28 -18
- package/dist/lib/core/ProtocolResponseParser.mjs +11 -1
- package/dist/lib/core/SingleAgentClient.d.mts +115 -2
- package/dist/lib/core/SingleAgentClient.d.ts +115 -2
- package/dist/lib/core/SingleAgentClient.js +547 -67
- package/dist/lib/core/SingleAgentClient.mjs +534 -54
- package/dist/lib/core/TaskExecutor.d.mts +7 -0
- package/dist/lib/core/TaskExecutor.d.ts +7 -0
- package/dist/lib/core/TaskExecutor.js +18 -5
- package/dist/lib/core/TaskExecutor.mjs +18 -5
- package/dist/lib/core/task-status.d.mts +2 -0
- package/dist/lib/core/task-status.d.ts +2 -0
- package/dist/lib/core/task-status.js +11 -2
- package/dist/lib/core/task-status.mjs +9 -1
- package/dist/lib/identity-3.3/trust.d.mts +1 -4
- package/dist/lib/identity-3.3/trust.d.ts +1 -4
- package/dist/lib/identity-3.3/trust.js +43 -23
- package/dist/lib/identity-3.3/trust.mjs +43 -23
- package/dist/lib/identity-3.3/validation.js +5 -3
- package/dist/lib/identity-3.3/validation.mjs +6 -4
- package/dist/lib/index.d.mts +6 -52
- package/dist/lib/index.d.ts +6 -52
- package/dist/lib/index.js +11 -0
- package/dist/lib/index.mjs +7 -0
- package/dist/lib/media-buy/compatibility.js +6 -1
- package/dist/lib/media-buy/compatibility.mjs +6 -1
- package/dist/lib/protocols/mcp-scope.d.mts +3 -0
- package/dist/lib/protocols/mcp-scope.d.ts +3 -0
- package/dist/lib/protocols/mcp-scope.js +8 -3
- package/dist/lib/protocols/mcp-scope.mjs +8 -3
- package/dist/lib/reporting/inspection.js +1 -0
- package/dist/lib/reporting/inspection.mjs +1 -0
- package/dist/lib/reporting/ledger/coverage.d.mts +5 -0
- package/dist/lib/reporting/ledger/coverage.d.ts +5 -0
- package/dist/lib/reporting/ledger/coverage.js +37 -3
- package/dist/lib/reporting/ledger/coverage.mjs +36 -3
- package/dist/lib/reporting/ledger/handler.js +7 -4
- package/dist/lib/reporting/ledger/handler.mjs +7 -4
- package/dist/lib/reporting/ledger/producer.js +215 -69
- package/dist/lib/reporting/ledger/producer.mjs +217 -70
- package/dist/lib/reporting/ledger/schedule.d.mts +2 -2
- package/dist/lib/reporting/ledger/schedule.d.ts +2 -2
- package/dist/lib/reporting/ledger/schedule.js +8 -5
- package/dist/lib/reporting/ledger/schedule.mjs +8 -5
- package/dist/lib/reporting/ledger/status-ingest.d.mts +1 -1
- package/dist/lib/reporting/ledger/status-ingest.d.ts +1 -1
- package/dist/lib/reporting/ledger/status-ingest.js +4 -3
- package/dist/lib/reporting/ledger/status-ingest.mjs +4 -3
- package/dist/lib/reporting/ledger/types.d.mts +36 -1
- package/dist/lib/reporting/ledger/types.d.ts +36 -1
- package/dist/lib/reporting/service/index.d.mts +14 -1
- package/dist/lib/reporting/service/index.d.ts +14 -1
- package/dist/lib/reporting/service/index.js +24 -12
- package/dist/lib/reporting/service/index.mjs +24 -12
- package/dist/lib/schemas/browser.d.mts +2 -0
- package/dist/lib/schemas/browser.d.ts +2 -0
- package/dist/lib/schemas/browser.js +3 -0
- package/dist/lib/schemas/browser.mjs +2 -0
- package/dist/lib/schemas/index.d.mts +5 -3
- package/dist/lib/schemas/index.d.ts +5 -3
- package/dist/lib/schemas/index.js +5 -0
- package/dist/lib/schemas/index.mjs +4 -0
- package/dist/lib/server/a2a-adapter.js +2 -1
- package/dist/lib/server/a2a-adapter.mjs +2 -1
- package/dist/lib/server/account-response-identity.d.mts +17 -0
- package/dist/lib/server/account-response-identity.d.ts +17 -0
- package/dist/lib/server/account-response-identity.js +52 -0
- package/dist/lib/server/account-response-identity.mjs +28 -0
- package/dist/lib/server/account-sync-contract.js +2 -2
- package/dist/lib/server/account-sync-contract.mjs +2 -2
- package/dist/lib/server/auth-signature.d.mts +2 -2
- package/dist/lib/server/auth-signature.d.ts +2 -2
- package/dist/lib/server/auth-signature.js +3 -0
- package/dist/lib/server/auth-signature.mjs +3 -0
- package/dist/lib/server/create-adcp-server.d.mts +2 -2
- package/dist/lib/server/create-adcp-server.d.ts +2 -2
- package/dist/lib/server/create-adcp-server.js +58 -23
- package/dist/lib/server/create-adcp-server.mjs +61 -15
- package/dist/lib/server/decisioning/account.d.mts +36 -10
- package/dist/lib/server/decisioning/account.d.ts +36 -10
- package/dist/lib/server/decisioning/account.js +33 -14
- package/dist/lib/server/decisioning/account.mjs +33 -14
- package/dist/lib/server/decisioning/runtime/from-platform.d.mts +5 -5
- package/dist/lib/server/decisioning/runtime/from-platform.d.ts +5 -5
- package/dist/lib/server/decisioning/runtime/from-platform.js +4 -4
- package/dist/lib/server/decisioning/runtime/from-platform.mjs +4 -4
- package/dist/lib/server/media-buy-store.d.mts +26 -12
- package/dist/lib/server/media-buy-store.d.ts +26 -12
- package/dist/lib/server/media-buy-store.js +69 -21
- package/dist/lib/server/media-buy-store.mjs +69 -21
- package/dist/lib/server/notification-subscriptions/runtime.d.mts +1 -1
- package/dist/lib/server/notification-subscriptions/runtime.d.ts +1 -1
- package/dist/lib/server/notification-subscriptions/runtime.js +4 -0
- package/dist/lib/server/notification-subscriptions/runtime.mjs +4 -0
- package/dist/lib/server/responses.js +9 -1
- package/dist/lib/server/responses.mjs +9 -1
- package/dist/lib/server/serve.js +3 -1
- package/dist/lib/server/serve.mjs +3 -1
- package/dist/lib/server/signed-request-transport.d.mts +1 -0
- package/dist/lib/server/signed-request-transport.d.ts +1 -0
- package/dist/lib/server/signed-request-transport.js +46 -0
- package/dist/lib/server/signed-request-transport.mjs +20 -0
- package/dist/lib/server/test-controller.d.mts +1 -0
- package/dist/lib/server/test-controller.d.ts +1 -0
- package/dist/lib/server/test-controller.js +5 -1
- package/dist/lib/server/test-controller.mjs +5 -1
- package/dist/lib/signing/agent-fetch.d.mts +1 -1
- package/dist/lib/signing/agent-fetch.d.ts +1 -1
- package/dist/lib/signing/agent-fetch.js +3 -3
- package/dist/lib/signing/agent-fetch.mjs +3 -3
- package/dist/lib/testing/index.d.mts +1 -0
- package/dist/lib/testing/index.d.ts +1 -0
- package/dist/lib/testing/index.js +3 -0
- package/dist/lib/testing/index.mjs +2 -0
- package/dist/lib/testing/storyboard/canonical-format-satisfaction.js +61 -29
- package/dist/lib/testing/storyboard/canonical-format-satisfaction.mjs +61 -29
- package/dist/lib/testing/storyboard/compliance.d.mts +2 -5
- package/dist/lib/testing/storyboard/compliance.d.ts +2 -5
- package/dist/lib/testing/storyboard/compliance.js +62 -13
- package/dist/lib/testing/storyboard/compliance.mjs +63 -14
- package/dist/lib/testing/storyboard/index.d.mts +1 -0
- package/dist/lib/testing/storyboard/index.d.ts +1 -0
- package/dist/lib/testing/storyboard/index.js +3 -0
- package/dist/lib/testing/storyboard/index.mjs +2 -0
- package/dist/lib/testing/storyboard/loader.js +7 -0
- package/dist/lib/testing/storyboard/loader.mjs +7 -0
- package/dist/lib/testing/storyboard/request-builder.js +9 -6
- package/dist/lib/testing/storyboard/request-builder.mjs +9 -6
- package/dist/lib/testing/storyboard/request-signing/vector-loader.d.mts +2 -0
- package/dist/lib/testing/storyboard/request-signing/vector-loader.d.ts +2 -0
- package/dist/lib/testing/storyboard/request-signing/vector-loader.js +11 -0
- package/dist/lib/testing/storyboard/request-signing/vector-loader.mjs +10 -0
- package/dist/lib/testing/storyboard/runner.js +59 -6
- package/dist/lib/testing/storyboard/runner.mjs +59 -6
- package/dist/lib/testing/storyboard/types.d.mts +18 -0
- package/dist/lib/testing/storyboard/types.d.ts +18 -0
- package/dist/lib/testing/storyboard/validations.d.mts +1 -1
- package/dist/lib/testing/storyboard/validations.d.ts +1 -1
- package/dist/lib/testing/storyboard/web-bot-auth.d.mts +10 -0
- package/dist/lib/testing/storyboard/web-bot-auth.d.ts +10 -0
- package/dist/lib/testing/storyboard/web-bot-auth.js +80 -0
- package/dist/lib/testing/storyboard/web-bot-auth.mjs +56 -0
- package/dist/lib/types/accept-proposal.d.ts +20 -28
- package/dist/lib/types/asset-instances.d.mts +1 -1
- package/dist/lib/types/asset-instances.d.ts +1 -1
- package/dist/lib/types/buy-products.d.ts +20 -28
- package/dist/lib/types/check-governance.d.ts +20 -28
- package/dist/lib/types/comply-test-controller.d.ts +20 -28
- package/dist/lib/types/control-media-buy.d.ts +20 -28
- package/dist/lib/types/core.generated.d.mts +273 -184
- package/dist/lib/types/core.generated.d.ts +273 -184
- package/dist/lib/types/create-media-buy.d.ts +20 -28
- package/dist/lib/types/get-media-buys.d.ts +20 -28
- package/dist/lib/types/get-products.d.ts +20 -28
- package/dist/lib/types/index.d.mts +6 -1
- package/dist/lib/types/index.d.ts +6 -1
- package/dist/lib/types/index.js +6 -1
- package/dist/lib/types/index.mjs +4 -1
- package/dist/lib/types/inline-enums.generated.d.mts +30 -4
- package/dist/lib/types/inline-enums.generated.d.ts +30 -4
- package/dist/lib/types/inline-enums.generated.js +41 -2
- package/dist/lib/types/inline-enums.generated.mjs +28 -2
- package/dist/lib/types/list-products.d.ts +20 -28
- package/dist/lib/types/list-proposals.d.ts +20 -28
- package/dist/lib/types/media-buy-delivery-report.d.mts +6 -0
- package/dist/lib/types/media-buy-delivery-report.d.ts +6 -0
- package/dist/lib/types/media-buy-delivery-report.js +16 -0
- package/dist/lib/types/media-buy-delivery-report.mjs +0 -0
- package/dist/lib/types/refine-proposals.d.ts +20 -28
- package/dist/lib/types/request-proposals.d.ts +20 -28
- package/dist/lib/types/schemas.generated.d.ts +63113 -127273
- package/dist/lib/types/schemas.generated.js +759 -770
- package/dist/lib/types/schemas.generated.mjs +759 -770
- package/dist/lib/types/targeting-keys.generated.d.mts +4 -0
- package/dist/lib/types/targeting-keys.generated.d.ts +4 -0
- package/dist/lib/types/targeting-keys.generated.js +109 -0
- package/dist/lib/types/targeting-keys.generated.mjs +84 -0
- package/dist/lib/types/tools.generated.d.mts +2 -68
- package/dist/lib/types/tools.generated.d.ts +2 -68
- package/dist/lib/types/update-media-buy.d.ts +20 -28
- package/dist/lib/utils/adcp-version-config.js +5 -2
- package/dist/lib/utils/adcp-version-config.mjs +5 -2
- package/dist/lib/utils/response-unwrapper.js +6 -1
- package/dist/lib/utils/response-unwrapper.mjs +6 -1
- package/dist/lib/v2/format-schema/resolver.js +1 -1
- package/dist/lib/v2/format-schema/resolver.mjs +1 -1
- package/dist/lib/v2/projection/creative-delivery.js +104 -29
- package/dist/lib/v2/projection/creative-delivery.mjs +108 -29
- package/dist/lib/v2/projection/index.d.mts +1 -0
- package/dist/lib/v2/projection/index.d.ts +1 -0
- package/dist/lib/v2/projection/index.js +3 -0
- package/dist/lib/v2/projection/index.mjs +2 -0
- package/dist/lib/v2/projection/legacy-metadata.d.mts +19 -0
- package/dist/lib/v2/projection/legacy-metadata.d.ts +19 -0
- package/dist/lib/v2/projection/legacy-metadata.js +91 -0
- package/dist/lib/v2/projection/legacy-metadata.mjs +86 -0
- package/dist/lib/v2/projection/v1-to-v2.d.mts +1 -1
- package/dist/lib/v2/projection/v1-to-v2.d.ts +1 -1
- package/dist/lib/v2/projection/v1-to-v2.js +12 -9
- package/dist/lib/v2/projection/v1-to-v2.mjs +12 -9
- package/dist/lib/validation/budget-allocation.d.mts +3 -3
- package/dist/lib/validation/budget-allocation.d.ts +3 -3
- package/dist/lib/validation/compact-schema.d.mts +27 -0
- package/dist/lib/validation/compact-schema.d.ts +27 -0
- package/dist/lib/validation/compact-schema.js +276 -0
- package/dist/lib/validation/compact-schema.mjs +250 -0
- package/dist/lib/validation/media-buy-delivery-report.d.mts +8 -0
- package/dist/lib/validation/media-buy-delivery-report.d.ts +8 -0
- package/dist/lib/validation/media-buy-delivery-report.js +31 -0
- package/dist/lib/validation/media-buy-delivery-report.mjs +7 -0
- package/dist/lib/validation/nonempty-array.d.mts +15 -0
- package/dist/lib/validation/nonempty-array.d.ts +15 -0
- package/dist/lib/validation/nonempty-array.js +41 -0
- package/dist/lib/validation/nonempty-array.mjs +7 -0
- package/dist/lib/validation/schema-diagnostic-origins.d.mts +21 -0
- package/dist/lib/validation/schema-diagnostic-origins.d.ts +21 -0
- package/dist/lib/validation/schema-diagnostic-origins.js +193 -0
- package/dist/lib/validation/schema-diagnostic-origins.mjs +169 -0
- package/dist/lib/validation/schema-loader.js +86 -16
- package/dist/lib/validation/schema-loader.mjs +82 -16
- package/dist/lib/validation/schema-validator.d.mts +10 -19
- package/dist/lib/validation/schema-validator.d.ts +10 -19
- package/dist/lib/validation/schema-validator.js +135 -42
- package/dist/lib/validation/schema-validator.mjs +139 -43
- package/dist/lib/validation/sync-creatives.d.mts +22 -22
- package/dist/lib/validation/sync-creatives.d.ts +22 -22
- package/dist/lib/version.d.mts +3 -3
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.js +3 -3
- package/dist/lib/version.mjs +3 -3
- package/dist/lib/webhooks/index.d.mts +3 -0
- package/dist/lib/webhooks/index.d.ts +3 -0
- package/dist/lib/webhooks/index.js +3 -0
- package/dist/lib/webhooks/index.mjs +2 -0
- package/dist/lib/webhooks/media-buy-delivery.d.mts +43 -0
- package/dist/lib/webhooks/media-buy-delivery.d.ts +43 -0
- package/dist/lib/webhooks/media-buy-delivery.js +119 -0
- package/dist/lib/webhooks/media-buy-delivery.mjs +94 -0
- package/docs/TYPE-SUMMARY.md +2 -2
- package/docs/guides/DELIVERY-WEBHOOK-PARSING.md +142 -0
- package/docs/guides/DISCOVERY-CACHE-AND-SESSION-REUSE.md +15 -0
- package/docs/guides/REPORTING-LEDGER.md +93 -0
- package/docs/guides/REPORTING-STABILITY.md +1 -1
- package/docs/guides/TYPED-CLIENT-TOOLS.md +49 -0
- package/docs/llms.txt +2 -2
- package/docs/migration-14.x-rc-worksheet.md +4 -4
- package/docs/migration-16-to-17.md +218 -14
- package/docs/migration-6.6-to-6.7.md +14 -0
- package/docs/migration-account-change-feed.md +15 -0
- package/docs/migration-agent-identity-3.3.md +106 -4
- package/docs/recipes/verifying-inbound-webhooks.md +18 -2
- package/package.json +16 -3
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var web_bot_auth_exports = {};
|
|
20
|
+
__export(web_bot_auth_exports, {
|
|
21
|
+
createStoryboardWebBotAuthFetch: () => createStoryboardWebBotAuthFetch
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(web_bot_auth_exports);
|
|
24
|
+
var import_web_bot_auth = require('../../signing/web-bot-auth.js');
|
|
25
|
+
function createStoryboardWebBotAuthFetch(upstream, key, options) {
|
|
26
|
+
const deliver = async (input, init) => {
|
|
27
|
+
const response = await upstream(input, { ...init, redirect: "manual" });
|
|
28
|
+
if ([301, 302, 303, 307, 308].includes(response.status) && response.headers.has("location")) {
|
|
29
|
+
await response.body?.cancel();
|
|
30
|
+
throw new TypeError("Web Bot Auth storyboard requests do not follow HTTP redirects");
|
|
31
|
+
}
|
|
32
|
+
return response;
|
|
33
|
+
};
|
|
34
|
+
if (!options.target) {
|
|
35
|
+
if (!options.agentUrl) throw new TypeError("Direct Web Bot Auth storyboard signing requires agentUrl");
|
|
36
|
+
const agentUrl = new URL(options.agentUrl);
|
|
37
|
+
if (agentUrl.protocol !== "https:" || agentUrl.username || agentUrl.password || agentUrl.hash)
|
|
38
|
+
throw new TypeError(
|
|
39
|
+
"Direct Web Bot Auth storyboard signing requires an HTTPS agentUrl without credentials or fragments"
|
|
40
|
+
);
|
|
41
|
+
const signed2 = (0, import_web_bot_auth.createWebBotAuthFetch)(deliver, key, options);
|
|
42
|
+
return (input, init) => {
|
|
43
|
+
const url = typeof input === "string" ? input : input instanceof URL ? input.href : input.url;
|
|
44
|
+
if (new URL(url).origin !== agentUrl.origin)
|
|
45
|
+
return Promise.reject(new TypeError("Web Bot Auth storyboard refused a different agent origin"));
|
|
46
|
+
return signed2(input, init);
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const publicUrl = new URL(options.target.publicUrl);
|
|
50
|
+
const localUrl = new URL(options.target.loopbackUrl);
|
|
51
|
+
if (publicUrl.protocol !== "https:" || publicUrl.username || publicUrl.password || publicUrl.hash || publicUrl.search || !["http:", "https:"].includes(localUrl.protocol) || !["localhost", "127.0.0.1", "[::1]"].includes(localUrl.hostname) || localUrl.username || localUrl.password || localUrl.hash || localUrl.search)
|
|
52
|
+
throw new TypeError(
|
|
53
|
+
"Web Bot Auth test delivery requires a public HTTPS URL and a loopback URL without credentials, query or fragment"
|
|
54
|
+
);
|
|
55
|
+
const signed = (0, import_web_bot_auth.createWebBotAuthFetch)(
|
|
56
|
+
async (input, init) => {
|
|
57
|
+
const target = new URL(String(input));
|
|
58
|
+
if (target.origin !== publicUrl.origin || target.pathname !== publicUrl.pathname)
|
|
59
|
+
throw new TypeError("Web Bot Auth test delivery refused a different public endpoint");
|
|
60
|
+
const destination = new URL(localUrl);
|
|
61
|
+
destination.search = target.search;
|
|
62
|
+
return deliver(destination.href, init);
|
|
63
|
+
},
|
|
64
|
+
key,
|
|
65
|
+
options
|
|
66
|
+
);
|
|
67
|
+
return async (input, init) => {
|
|
68
|
+
if (input instanceof Request) throw new TypeError("Web Bot Auth test delivery requires a URL and init");
|
|
69
|
+
const source = new URL(String(input));
|
|
70
|
+
if (source.origin !== localUrl.origin || source.pathname !== localUrl.pathname)
|
|
71
|
+
throw new TypeError("Web Bot Auth test delivery refused a different loopback endpoint");
|
|
72
|
+
const target = new URL(publicUrl);
|
|
73
|
+
target.search = source.search;
|
|
74
|
+
return signed(target.href, init);
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
78
|
+
0 && (module.exports = {
|
|
79
|
+
createStoryboardWebBotAuthFetch
|
|
80
|
+
});
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { createWebBotAuthFetch } from "../../signing/web-bot-auth.mjs";
|
|
2
|
+
function createStoryboardWebBotAuthFetch(upstream, key, options) {
|
|
3
|
+
const deliver = async (input, init) => {
|
|
4
|
+
const response = await upstream(input, { ...init, redirect: "manual" });
|
|
5
|
+
if ([301, 302, 303, 307, 308].includes(response.status) && response.headers.has("location")) {
|
|
6
|
+
await response.body?.cancel();
|
|
7
|
+
throw new TypeError("Web Bot Auth storyboard requests do not follow HTTP redirects");
|
|
8
|
+
}
|
|
9
|
+
return response;
|
|
10
|
+
};
|
|
11
|
+
if (!options.target) {
|
|
12
|
+
if (!options.agentUrl) throw new TypeError("Direct Web Bot Auth storyboard signing requires agentUrl");
|
|
13
|
+
const agentUrl = new URL(options.agentUrl);
|
|
14
|
+
if (agentUrl.protocol !== "https:" || agentUrl.username || agentUrl.password || agentUrl.hash)
|
|
15
|
+
throw new TypeError(
|
|
16
|
+
"Direct Web Bot Auth storyboard signing requires an HTTPS agentUrl without credentials or fragments"
|
|
17
|
+
);
|
|
18
|
+
const signed2 = createWebBotAuthFetch(deliver, key, options);
|
|
19
|
+
return (input, init) => {
|
|
20
|
+
const url = typeof input === "string" ? input : input instanceof URL ? input.href : input.url;
|
|
21
|
+
if (new URL(url).origin !== agentUrl.origin)
|
|
22
|
+
return Promise.reject(new TypeError("Web Bot Auth storyboard refused a different agent origin"));
|
|
23
|
+
return signed2(input, init);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const publicUrl = new URL(options.target.publicUrl);
|
|
27
|
+
const localUrl = new URL(options.target.loopbackUrl);
|
|
28
|
+
if (publicUrl.protocol !== "https:" || publicUrl.username || publicUrl.password || publicUrl.hash || publicUrl.search || !["http:", "https:"].includes(localUrl.protocol) || !["localhost", "127.0.0.1", "[::1]"].includes(localUrl.hostname) || localUrl.username || localUrl.password || localUrl.hash || localUrl.search)
|
|
29
|
+
throw new TypeError(
|
|
30
|
+
"Web Bot Auth test delivery requires a public HTTPS URL and a loopback URL without credentials, query or fragment"
|
|
31
|
+
);
|
|
32
|
+
const signed = createWebBotAuthFetch(
|
|
33
|
+
async (input, init) => {
|
|
34
|
+
const target = new URL(String(input));
|
|
35
|
+
if (target.origin !== publicUrl.origin || target.pathname !== publicUrl.pathname)
|
|
36
|
+
throw new TypeError("Web Bot Auth test delivery refused a different public endpoint");
|
|
37
|
+
const destination = new URL(localUrl);
|
|
38
|
+
destination.search = target.search;
|
|
39
|
+
return deliver(destination.href, init);
|
|
40
|
+
},
|
|
41
|
+
key,
|
|
42
|
+
options
|
|
43
|
+
);
|
|
44
|
+
return async (input, init) => {
|
|
45
|
+
if (input instanceof Request) throw new TypeError("Web Bot Auth test delivery requires a URL and init");
|
|
46
|
+
const source = new URL(String(input));
|
|
47
|
+
if (source.origin !== localUrl.origin || source.pathname !== localUrl.pathname)
|
|
48
|
+
throw new TypeError("Web Bot Auth test delivery refused a different loopback endpoint");
|
|
49
|
+
const target = new URL(publicUrl);
|
|
50
|
+
target.search = source.search;
|
|
51
|
+
return signed(target.href, init);
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export {
|
|
55
|
+
createStoryboardWebBotAuthFetch
|
|
56
|
+
};
|
|
@@ -1101,26 +1101,22 @@ export type DayOfWeek = 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'frida
|
|
|
1101
1101
|
export type DaypartTarget = {
|
|
1102
1102
|
/**
|
|
1103
1103
|
* Days of week this window applies to. Use multiple days for compact targeting (e.g., monday-friday in one object). For an overnight start_time/end_time window, each day names the day the window starts on.
|
|
1104
|
-
*
|
|
1105
|
-
* @minItems 1
|
|
1106
1104
|
*/
|
|
1107
|
-
days:
|
|
1105
|
+
days: DayOfWeek[];
|
|
1108
1106
|
/**
|
|
1109
1107
|
* Start hour (inclusive), 0-23 in 24-hour format. 0 = midnight, 6 = 6:00am, 18 = 6:00pm. Whole-hour form: pair with end_hour; mutually exclusive with start_time and end_time.
|
|
1108
|
+
* @minimum 0
|
|
1109
|
+
* @maximum 23
|
|
1110
|
+
* @format int
|
|
1110
1111
|
*/
|
|
1111
|
-
start_hour
|
|
1112
|
+
start_hour: number;
|
|
1112
1113
|
/**
|
|
1113
1114
|
* End hour (exclusive), 1-24 in 24-hour format. 10 = 10:00am, 24 = midnight. Must be greater than start_hour; whole-hour windows never cross midnight. Whole-hour form: pair with start_hour; mutually exclusive with start_time and end_time.
|
|
1115
|
+
* @minimum 1
|
|
1116
|
+
* @maximum 24
|
|
1117
|
+
* @format int
|
|
1114
1118
|
*/
|
|
1115
|
-
end_hour
|
|
1116
|
-
/**
|
|
1117
|
-
* Experimental in AdCP 3.3. Start of the window (inclusive) as a 24-hour HH:MM civil clock time on the entry's timezone clock, such as '19:30'. Use for windows that do not fall on whole hours (linear TV programme junctions, quarter-hour schedules). Pair with end_time; mutually exclusive with start_hour and end_hour. A window whose end_time is earlier than its start_time crosses midnight and belongs to the day it starts on. A product accepts only the finest time granularity it declares in overlay_support.daypart_targets.time_granularity; sellers MUST reject, never round, a clock time the product does not honor.
|
|
1118
|
-
*/
|
|
1119
|
-
start_time?: string;
|
|
1120
|
-
/**
|
|
1121
|
-
* Experimental in AdCP 3.3. End of the window (exclusive) as a 24-hour HH:MM civil clock time, such as '23:00'. Pair with start_time; mutually exclusive with start_hour and end_hour. end_time earlier than start_time means the window crosses midnight and ends at end_time on the following civil day (for example, 22:00 to 02:00 runs from 22:00 on a listed day until 02:00 the next morning); '00:00' therefore ends the window at the midnight closing the start day. end_time MUST NOT equal start_time: a zero-length or full-day window is invalid, and a full day uses start_hour 0 with end_hour 24. Sellers MUST reject an equal pair with INVALID_REQUEST.
|
|
1122
|
-
*/
|
|
1123
|
-
end_time?: string;
|
|
1119
|
+
end_hour: number;
|
|
1124
1120
|
/**
|
|
1125
1121
|
* Civil-time clock used to evaluate this window. 'inventory_local' evaluates the hours in the seller-assigned local timezone of each inventory unit that can deliver the impression, such as a screen, venue, station, or publisher property; it never means the buyer, account, or server timezone. A concrete IANA timezone identifier (for example, 'America/New_York', 'CET', or 'UTC') evaluates one shared civil-time clock across the targeted inventory. Omission defaults to 'inventory_local'. Buyers that begin with a user or account preference MUST resolve it to a concrete IANA identifier before sending the daypart; 'user_timezone' and 'account_timezone' are not wire values. For each candidate delivery instant, convert the instant into this clock and compare its resulting local day and time of day with the half-open window: a skipped DST hour or interval has no matching instants, while both occurrences of a repeated hour or interval match. For an overnight start_time/end_time window, an instant matches when its local day is a listed day and its local time is at or after start_time, or when the local day before it is a listed day and its local time is before end_time. This delivery clock is independent of reporting_capabilities.timezone.
|
|
1126
1122
|
*/
|
|
@@ -1129,29 +1125,23 @@ export type DaypartTarget = {
|
|
|
1129
1125
|
* Optional human-readable name for this time window (e.g., 'Morning Drive', 'Prime Time')
|
|
1130
1126
|
*/
|
|
1131
1127
|
label?: string;
|
|
1132
|
-
|
|
1128
|
+
start_time?: never;
|
|
1129
|
+
end_time?: never;
|
|
1130
|
+
} | {
|
|
1133
1131
|
/**
|
|
1134
1132
|
* Days of week this window applies to. Use multiple days for compact targeting (e.g., monday-friday in one object). For an overnight start_time/end_time window, each day names the day the window starts on.
|
|
1135
|
-
*
|
|
1136
|
-
* @minItems 1
|
|
1137
|
-
*/
|
|
1138
|
-
days: [DayOfWeek, ...DayOfWeek[]];
|
|
1139
|
-
/**
|
|
1140
|
-
* Start hour (inclusive), 0-23 in 24-hour format. 0 = midnight, 6 = 6:00am, 18 = 6:00pm. Whole-hour form: pair with end_hour; mutually exclusive with start_time and end_time.
|
|
1141
|
-
*/
|
|
1142
|
-
start_hour?: number;
|
|
1143
|
-
/**
|
|
1144
|
-
* End hour (exclusive), 1-24 in 24-hour format. 10 = 10:00am, 24 = midnight. Must be greater than start_hour; whole-hour windows never cross midnight. Whole-hour form: pair with start_hour; mutually exclusive with start_time and end_time.
|
|
1145
1133
|
*/
|
|
1146
|
-
|
|
1134
|
+
days: DayOfWeek[];
|
|
1147
1135
|
/**
|
|
1148
1136
|
* Experimental in AdCP 3.3. Start of the window (inclusive) as a 24-hour HH:MM civil clock time on the entry's timezone clock, such as '19:30'. Use for windows that do not fall on whole hours (linear TV programme junctions, quarter-hour schedules). Pair with end_time; mutually exclusive with start_hour and end_hour. A window whose end_time is earlier than its start_time crosses midnight and belongs to the day it starts on. A product accepts only the finest time granularity it declares in overlay_support.daypart_targets.time_granularity; sellers MUST reject, never round, a clock time the product does not honor.
|
|
1137
|
+
* @pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
|
|
1149
1138
|
*/
|
|
1150
|
-
start_time
|
|
1139
|
+
start_time: string;
|
|
1151
1140
|
/**
|
|
1152
1141
|
* Experimental in AdCP 3.3. End of the window (exclusive) as a 24-hour HH:MM civil clock time, such as '23:00'. Pair with start_time; mutually exclusive with start_hour and end_hour. end_time earlier than start_time means the window crosses midnight and ends at end_time on the following civil day (for example, 22:00 to 02:00 runs from 22:00 on a listed day until 02:00 the next morning); '00:00' therefore ends the window at the midnight closing the start day. end_time MUST NOT equal start_time: a zero-length or full-day window is invalid, and a full day uses start_hour 0 with end_hour 24. Sellers MUST reject an equal pair with INVALID_REQUEST.
|
|
1142
|
+
* @pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
|
|
1153
1143
|
*/
|
|
1154
|
-
end_time
|
|
1144
|
+
end_time: string;
|
|
1155
1145
|
/**
|
|
1156
1146
|
* Civil-time clock used to evaluate this window. 'inventory_local' evaluates the hours in the seller-assigned local timezone of each inventory unit that can deliver the impression, such as a screen, venue, station, or publisher property; it never means the buyer, account, or server timezone. A concrete IANA timezone identifier (for example, 'America/New_York', 'CET', or 'UTC') evaluates one shared civil-time clock across the targeted inventory. Omission defaults to 'inventory_local'. Buyers that begin with a user or account preference MUST resolve it to a concrete IANA identifier before sending the daypart; 'user_timezone' and 'account_timezone' are not wire values. For each candidate delivery instant, convert the instant into this clock and compare its resulting local day and time of day with the half-open window: a skipped DST hour or interval has no matching instants, while both occurrences of a repeated hour or interval match. For an overnight start_time/end_time window, an instant matches when its local day is a listed day and its local time is at or after start_time, or when the local day before it is a listed day and its local time is before end_time. This delivery clock is independent of reporting_capabilities.timezone.
|
|
1157
1147
|
*/
|
|
@@ -1160,7 +1150,9 @@ export type DaypartTarget = {
|
|
|
1160
1150
|
* Optional human-readable name for this time window (e.g., 'Morning Drive', 'Prime Time')
|
|
1161
1151
|
*/
|
|
1162
1152
|
label?: string;
|
|
1163
|
-
|
|
1153
|
+
start_hour?: never;
|
|
1154
|
+
end_hour?: never;
|
|
1155
|
+
};
|
|
1164
1156
|
|
|
1165
1157
|
/**
|
|
1166
1158
|
* Seller-authored integrity pin over one third-party-published definition that a proposal's commercial_terms reference: a publisher-catalog format option, publisher-catalog placement, adagents.json collection, or data-provider signal. content_digest is the lowercase-hex SHA-256 of the RFC 8785 (JCS) serialization of the kind's closed projection of the published entry, defined normatively in docs/media-buy/specification.mdx#definition-pins. Pins live inside commercial_terms, so terms_digest covers the pin but not the definition it names: a published definition can change while terms_digest still verifies, and re-verifying the pin is what detects it. Request inputs never carry pins.
|
|
@@ -31,4 +31,4 @@ export type AssetInstance = AssetVariant;
|
|
|
31
31
|
* switch-case helpers.
|
|
32
32
|
*/
|
|
33
33
|
export type AssetInstanceType = AssetInstance['asset_type'];
|
|
34
|
-
export type { ImageAsset, VideoAsset, AudioAsset, TextAsset, HTMLAsset, URLAsset, CSSAsset, JavaScriptAsset, MarkdownAsset, VASTAsset, DAASTAsset, BriefAsset, VideoBriefAsset, CatalogAsset, WebhookAsset, ZipAsset, PublishedPostAsset, CardAsset, PixelTrackerAsset, VASTTrackerAsset, DAASTTrackerAsset, DisplayTagAsset, };
|
|
34
|
+
export type { AssetVariant, ImageAsset, VideoAsset, AudioAsset, TextAsset, HTMLAsset, URLAsset, CSSAsset, JavaScriptAsset, MarkdownAsset, VASTAsset, DAASTAsset, BriefAsset, VideoBriefAsset, CatalogAsset, WebhookAsset, ZipAsset, PublishedPostAsset, CardAsset, PixelTrackerAsset, VASTTrackerAsset, DAASTTrackerAsset, DisplayTagAsset, };
|
|
@@ -31,4 +31,4 @@ export type AssetInstance = AssetVariant;
|
|
|
31
31
|
* switch-case helpers.
|
|
32
32
|
*/
|
|
33
33
|
export type AssetInstanceType = AssetInstance['asset_type'];
|
|
34
|
-
export type { ImageAsset, VideoAsset, AudioAsset, TextAsset, HTMLAsset, URLAsset, CSSAsset, JavaScriptAsset, MarkdownAsset, VASTAsset, DAASTAsset, BriefAsset, VideoBriefAsset, CatalogAsset, WebhookAsset, ZipAsset, PublishedPostAsset, CardAsset, PixelTrackerAsset, VASTTrackerAsset, DAASTTrackerAsset, DisplayTagAsset, };
|
|
34
|
+
export type { AssetVariant, ImageAsset, VideoAsset, AudioAsset, TextAsset, HTMLAsset, URLAsset, CSSAsset, JavaScriptAsset, MarkdownAsset, VASTAsset, DAASTAsset, BriefAsset, VideoBriefAsset, CatalogAsset, WebhookAsset, ZipAsset, PublishedPostAsset, CardAsset, PixelTrackerAsset, VASTTrackerAsset, DAASTTrackerAsset, DisplayTagAsset, };
|
|
@@ -1177,26 +1177,22 @@ export type DayOfWeek = 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'frida
|
|
|
1177
1177
|
export type DaypartTarget = {
|
|
1178
1178
|
/**
|
|
1179
1179
|
* Days of week this window applies to. Use multiple days for compact targeting (e.g., monday-friday in one object). For an overnight start_time/end_time window, each day names the day the window starts on.
|
|
1180
|
-
*
|
|
1181
|
-
* @minItems 1
|
|
1182
1180
|
*/
|
|
1183
|
-
days:
|
|
1181
|
+
days: DayOfWeek[];
|
|
1184
1182
|
/**
|
|
1185
1183
|
* Start hour (inclusive), 0-23 in 24-hour format. 0 = midnight, 6 = 6:00am, 18 = 6:00pm. Whole-hour form: pair with end_hour; mutually exclusive with start_time and end_time.
|
|
1184
|
+
* @minimum 0
|
|
1185
|
+
* @maximum 23
|
|
1186
|
+
* @format int
|
|
1186
1187
|
*/
|
|
1187
|
-
start_hour
|
|
1188
|
+
start_hour: number;
|
|
1188
1189
|
/**
|
|
1189
1190
|
* End hour (exclusive), 1-24 in 24-hour format. 10 = 10:00am, 24 = midnight. Must be greater than start_hour; whole-hour windows never cross midnight. Whole-hour form: pair with start_hour; mutually exclusive with start_time and end_time.
|
|
1191
|
+
* @minimum 1
|
|
1192
|
+
* @maximum 24
|
|
1193
|
+
* @format int
|
|
1190
1194
|
*/
|
|
1191
|
-
end_hour
|
|
1192
|
-
/**
|
|
1193
|
-
* Experimental in AdCP 3.3. Start of the window (inclusive) as a 24-hour HH:MM civil clock time on the entry's timezone clock, such as '19:30'. Use for windows that do not fall on whole hours (linear TV programme junctions, quarter-hour schedules). Pair with end_time; mutually exclusive with start_hour and end_hour. A window whose end_time is earlier than its start_time crosses midnight and belongs to the day it starts on. A product accepts only the finest time granularity it declares in overlay_support.daypart_targets.time_granularity; sellers MUST reject, never round, a clock time the product does not honor.
|
|
1194
|
-
*/
|
|
1195
|
-
start_time?: string;
|
|
1196
|
-
/**
|
|
1197
|
-
* Experimental in AdCP 3.3. End of the window (exclusive) as a 24-hour HH:MM civil clock time, such as '23:00'. Pair with start_time; mutually exclusive with start_hour and end_hour. end_time earlier than start_time means the window crosses midnight and ends at end_time on the following civil day (for example, 22:00 to 02:00 runs from 22:00 on a listed day until 02:00 the next morning); '00:00' therefore ends the window at the midnight closing the start day. end_time MUST NOT equal start_time: a zero-length or full-day window is invalid, and a full day uses start_hour 0 with end_hour 24. Sellers MUST reject an equal pair with INVALID_REQUEST.
|
|
1198
|
-
*/
|
|
1199
|
-
end_time?: string;
|
|
1195
|
+
end_hour: number;
|
|
1200
1196
|
/**
|
|
1201
1197
|
* Civil-time clock used to evaluate this window. 'inventory_local' evaluates the hours in the seller-assigned local timezone of each inventory unit that can deliver the impression, such as a screen, venue, station, or publisher property; it never means the buyer, account, or server timezone. A concrete IANA timezone identifier (for example, 'America/New_York', 'CET', or 'UTC') evaluates one shared civil-time clock across the targeted inventory. Omission defaults to 'inventory_local'. Buyers that begin with a user or account preference MUST resolve it to a concrete IANA identifier before sending the daypart; 'user_timezone' and 'account_timezone' are not wire values. For each candidate delivery instant, convert the instant into this clock and compare its resulting local day and time of day with the half-open window: a skipped DST hour or interval has no matching instants, while both occurrences of a repeated hour or interval match. For an overnight start_time/end_time window, an instant matches when its local day is a listed day and its local time is at or after start_time, or when the local day before it is a listed day and its local time is before end_time. This delivery clock is independent of reporting_capabilities.timezone.
|
|
1202
1198
|
*/
|
|
@@ -1205,29 +1201,23 @@ export type DaypartTarget = {
|
|
|
1205
1201
|
* Optional human-readable name for this time window (e.g., 'Morning Drive', 'Prime Time')
|
|
1206
1202
|
*/
|
|
1207
1203
|
label?: string;
|
|
1208
|
-
|
|
1204
|
+
start_time?: never;
|
|
1205
|
+
end_time?: never;
|
|
1206
|
+
} | {
|
|
1209
1207
|
/**
|
|
1210
1208
|
* Days of week this window applies to. Use multiple days for compact targeting (e.g., monday-friday in one object). For an overnight start_time/end_time window, each day names the day the window starts on.
|
|
1211
|
-
*
|
|
1212
|
-
* @minItems 1
|
|
1213
|
-
*/
|
|
1214
|
-
days: [DayOfWeek, ...DayOfWeek[]];
|
|
1215
|
-
/**
|
|
1216
|
-
* Start hour (inclusive), 0-23 in 24-hour format. 0 = midnight, 6 = 6:00am, 18 = 6:00pm. Whole-hour form: pair with end_hour; mutually exclusive with start_time and end_time.
|
|
1217
|
-
*/
|
|
1218
|
-
start_hour?: number;
|
|
1219
|
-
/**
|
|
1220
|
-
* End hour (exclusive), 1-24 in 24-hour format. 10 = 10:00am, 24 = midnight. Must be greater than start_hour; whole-hour windows never cross midnight. Whole-hour form: pair with start_hour; mutually exclusive with start_time and end_time.
|
|
1221
1209
|
*/
|
|
1222
|
-
|
|
1210
|
+
days: DayOfWeek[];
|
|
1223
1211
|
/**
|
|
1224
1212
|
* Experimental in AdCP 3.3. Start of the window (inclusive) as a 24-hour HH:MM civil clock time on the entry's timezone clock, such as '19:30'. Use for windows that do not fall on whole hours (linear TV programme junctions, quarter-hour schedules). Pair with end_time; mutually exclusive with start_hour and end_hour. A window whose end_time is earlier than its start_time crosses midnight and belongs to the day it starts on. A product accepts only the finest time granularity it declares in overlay_support.daypart_targets.time_granularity; sellers MUST reject, never round, a clock time the product does not honor.
|
|
1213
|
+
* @pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
|
|
1225
1214
|
*/
|
|
1226
|
-
start_time
|
|
1215
|
+
start_time: string;
|
|
1227
1216
|
/**
|
|
1228
1217
|
* Experimental in AdCP 3.3. End of the window (exclusive) as a 24-hour HH:MM civil clock time, such as '23:00'. Pair with start_time; mutually exclusive with start_hour and end_hour. end_time earlier than start_time means the window crosses midnight and ends at end_time on the following civil day (for example, 22:00 to 02:00 runs from 22:00 on a listed day until 02:00 the next morning); '00:00' therefore ends the window at the midnight closing the start day. end_time MUST NOT equal start_time: a zero-length or full-day window is invalid, and a full day uses start_hour 0 with end_hour 24. Sellers MUST reject an equal pair with INVALID_REQUEST.
|
|
1218
|
+
* @pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
|
|
1229
1219
|
*/
|
|
1230
|
-
end_time
|
|
1220
|
+
end_time: string;
|
|
1231
1221
|
/**
|
|
1232
1222
|
* Civil-time clock used to evaluate this window. 'inventory_local' evaluates the hours in the seller-assigned local timezone of each inventory unit that can deliver the impression, such as a screen, venue, station, or publisher property; it never means the buyer, account, or server timezone. A concrete IANA timezone identifier (for example, 'America/New_York', 'CET', or 'UTC') evaluates one shared civil-time clock across the targeted inventory. Omission defaults to 'inventory_local'. Buyers that begin with a user or account preference MUST resolve it to a concrete IANA identifier before sending the daypart; 'user_timezone' and 'account_timezone' are not wire values. For each candidate delivery instant, convert the instant into this clock and compare its resulting local day and time of day with the half-open window: a skipped DST hour or interval has no matching instants, while both occurrences of a repeated hour or interval match. For an overnight start_time/end_time window, an instant matches when its local day is a listed day and its local time is at or after start_time, or when the local day before it is a listed day and its local time is before end_time. This delivery clock is independent of reporting_capabilities.timezone.
|
|
1233
1223
|
*/
|
|
@@ -1236,7 +1226,9 @@ export type DaypartTarget = {
|
|
|
1236
1226
|
* Optional human-readable name for this time window (e.g., 'Morning Drive', 'Prime Time')
|
|
1237
1227
|
*/
|
|
1238
1228
|
label?: string;
|
|
1239
|
-
|
|
1229
|
+
start_hour?: never;
|
|
1230
|
+
end_hour?: never;
|
|
1231
|
+
};
|
|
1240
1232
|
|
|
1241
1233
|
/**
|
|
1242
1234
|
* Restrict delivery to specific time windows. Each entry specifies days of week, an hour range, and an optional timezone that defaults to inventory_local. A concrete IANA zone uses one shared civil-time clock, while inventory_local evaluates each inventory unit in its seller-assigned local timezone. Entries are independent and MAY use different clocks.
|
|
@@ -1608,26 +1608,22 @@ export type DayOfWeek = 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'frida
|
|
|
1608
1608
|
export type DaypartTarget = {
|
|
1609
1609
|
/**
|
|
1610
1610
|
* Days of week this window applies to. Use multiple days for compact targeting (e.g., monday-friday in one object). For an overnight start_time/end_time window, each day names the day the window starts on.
|
|
1611
|
-
*
|
|
1612
|
-
* @minItems 1
|
|
1613
1611
|
*/
|
|
1614
|
-
days:
|
|
1612
|
+
days: DayOfWeek[];
|
|
1615
1613
|
/**
|
|
1616
1614
|
* Start hour (inclusive), 0-23 in 24-hour format. 0 = midnight, 6 = 6:00am, 18 = 6:00pm. Whole-hour form: pair with end_hour; mutually exclusive with start_time and end_time.
|
|
1615
|
+
* @minimum 0
|
|
1616
|
+
* @maximum 23
|
|
1617
|
+
* @format int
|
|
1617
1618
|
*/
|
|
1618
|
-
start_hour
|
|
1619
|
+
start_hour: number;
|
|
1619
1620
|
/**
|
|
1620
1621
|
* End hour (exclusive), 1-24 in 24-hour format. 10 = 10:00am, 24 = midnight. Must be greater than start_hour; whole-hour windows never cross midnight. Whole-hour form: pair with start_hour; mutually exclusive with start_time and end_time.
|
|
1622
|
+
* @minimum 1
|
|
1623
|
+
* @maximum 24
|
|
1624
|
+
* @format int
|
|
1621
1625
|
*/
|
|
1622
|
-
end_hour
|
|
1623
|
-
/**
|
|
1624
|
-
* Experimental in AdCP 3.3. Start of the window (inclusive) as a 24-hour HH:MM civil clock time on the entry's timezone clock, such as '19:30'. Use for windows that do not fall on whole hours (linear TV programme junctions, quarter-hour schedules). Pair with end_time; mutually exclusive with start_hour and end_hour. A window whose end_time is earlier than its start_time crosses midnight and belongs to the day it starts on. A product accepts only the finest time granularity it declares in overlay_support.daypart_targets.time_granularity; sellers MUST reject, never round, a clock time the product does not honor.
|
|
1625
|
-
*/
|
|
1626
|
-
start_time?: string;
|
|
1627
|
-
/**
|
|
1628
|
-
* Experimental in AdCP 3.3. End of the window (exclusive) as a 24-hour HH:MM civil clock time, such as '23:00'. Pair with start_time; mutually exclusive with start_hour and end_hour. end_time earlier than start_time means the window crosses midnight and ends at end_time on the following civil day (for example, 22:00 to 02:00 runs from 22:00 on a listed day until 02:00 the next morning); '00:00' therefore ends the window at the midnight closing the start day. end_time MUST NOT equal start_time: a zero-length or full-day window is invalid, and a full day uses start_hour 0 with end_hour 24. Sellers MUST reject an equal pair with INVALID_REQUEST.
|
|
1629
|
-
*/
|
|
1630
|
-
end_time?: string;
|
|
1626
|
+
end_hour: number;
|
|
1631
1627
|
/**
|
|
1632
1628
|
* Civil-time clock used to evaluate this window. 'inventory_local' evaluates the hours in the seller-assigned local timezone of each inventory unit that can deliver the impression, such as a screen, venue, station, or publisher property; it never means the buyer, account, or server timezone. A concrete IANA timezone identifier (for example, 'America/New_York', 'CET', or 'UTC') evaluates one shared civil-time clock across the targeted inventory. Omission defaults to 'inventory_local'. Buyers that begin with a user or account preference MUST resolve it to a concrete IANA identifier before sending the daypart; 'user_timezone' and 'account_timezone' are not wire values. For each candidate delivery instant, convert the instant into this clock and compare its resulting local day and time of day with the half-open window: a skipped DST hour or interval has no matching instants, while both occurrences of a repeated hour or interval match. For an overnight start_time/end_time window, an instant matches when its local day is a listed day and its local time is at or after start_time, or when the local day before it is a listed day and its local time is before end_time. This delivery clock is independent of reporting_capabilities.timezone.
|
|
1633
1629
|
*/
|
|
@@ -1636,29 +1632,23 @@ export type DaypartTarget = {
|
|
|
1636
1632
|
* Optional human-readable name for this time window (e.g., 'Morning Drive', 'Prime Time')
|
|
1637
1633
|
*/
|
|
1638
1634
|
label?: string;
|
|
1639
|
-
|
|
1635
|
+
start_time?: never;
|
|
1636
|
+
end_time?: never;
|
|
1637
|
+
} | {
|
|
1640
1638
|
/**
|
|
1641
1639
|
* Days of week this window applies to. Use multiple days for compact targeting (e.g., monday-friday in one object). For an overnight start_time/end_time window, each day names the day the window starts on.
|
|
1642
|
-
*
|
|
1643
|
-
* @minItems 1
|
|
1644
|
-
*/
|
|
1645
|
-
days: [DayOfWeek, ...DayOfWeek[]];
|
|
1646
|
-
/**
|
|
1647
|
-
* Start hour (inclusive), 0-23 in 24-hour format. 0 = midnight, 6 = 6:00am, 18 = 6:00pm. Whole-hour form: pair with end_hour; mutually exclusive with start_time and end_time.
|
|
1648
|
-
*/
|
|
1649
|
-
start_hour?: number;
|
|
1650
|
-
/**
|
|
1651
|
-
* End hour (exclusive), 1-24 in 24-hour format. 10 = 10:00am, 24 = midnight. Must be greater than start_hour; whole-hour windows never cross midnight. Whole-hour form: pair with start_hour; mutually exclusive with start_time and end_time.
|
|
1652
1640
|
*/
|
|
1653
|
-
|
|
1641
|
+
days: DayOfWeek[];
|
|
1654
1642
|
/**
|
|
1655
1643
|
* Experimental in AdCP 3.3. Start of the window (inclusive) as a 24-hour HH:MM civil clock time on the entry's timezone clock, such as '19:30'. Use for windows that do not fall on whole hours (linear TV programme junctions, quarter-hour schedules). Pair with end_time; mutually exclusive with start_hour and end_hour. A window whose end_time is earlier than its start_time crosses midnight and belongs to the day it starts on. A product accepts only the finest time granularity it declares in overlay_support.daypart_targets.time_granularity; sellers MUST reject, never round, a clock time the product does not honor.
|
|
1644
|
+
* @pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
|
|
1656
1645
|
*/
|
|
1657
|
-
start_time
|
|
1646
|
+
start_time: string;
|
|
1658
1647
|
/**
|
|
1659
1648
|
* Experimental in AdCP 3.3. End of the window (exclusive) as a 24-hour HH:MM civil clock time, such as '23:00'. Pair with start_time; mutually exclusive with start_hour and end_hour. end_time earlier than start_time means the window crosses midnight and ends at end_time on the following civil day (for example, 22:00 to 02:00 runs from 22:00 on a listed day until 02:00 the next morning); '00:00' therefore ends the window at the midnight closing the start day. end_time MUST NOT equal start_time: a zero-length or full-day window is invalid, and a full day uses start_hour 0 with end_hour 24. Sellers MUST reject an equal pair with INVALID_REQUEST.
|
|
1649
|
+
* @pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
|
|
1660
1650
|
*/
|
|
1661
|
-
end_time
|
|
1651
|
+
end_time: string;
|
|
1662
1652
|
/**
|
|
1663
1653
|
* Civil-time clock used to evaluate this window. 'inventory_local' evaluates the hours in the seller-assigned local timezone of each inventory unit that can deliver the impression, such as a screen, venue, station, or publisher property; it never means the buyer, account, or server timezone. A concrete IANA timezone identifier (for example, 'America/New_York', 'CET', or 'UTC') evaluates one shared civil-time clock across the targeted inventory. Omission defaults to 'inventory_local'. Buyers that begin with a user or account preference MUST resolve it to a concrete IANA identifier before sending the daypart; 'user_timezone' and 'account_timezone' are not wire values. For each candidate delivery instant, convert the instant into this clock and compare its resulting local day and time of day with the half-open window: a skipped DST hour or interval has no matching instants, while both occurrences of a repeated hour or interval match. For an overnight start_time/end_time window, an instant matches when its local day is a listed day and its local time is at or after start_time, or when the local day before it is a listed day and its local time is before end_time. This delivery clock is independent of reporting_capabilities.timezone.
|
|
1664
1654
|
*/
|
|
@@ -1667,7 +1657,9 @@ export type DaypartTarget = {
|
|
|
1667
1657
|
* Optional human-readable name for this time window (e.g., 'Morning Drive', 'Prime Time')
|
|
1668
1658
|
*/
|
|
1669
1659
|
label?: string;
|
|
1670
|
-
|
|
1660
|
+
start_hour?: never;
|
|
1661
|
+
end_hour?: never;
|
|
1662
|
+
};
|
|
1671
1663
|
|
|
1672
1664
|
/**
|
|
1673
1665
|
* Seller-authored integrity pin over one third-party-published definition that a proposal's commercial_terms reference: a publisher-catalog format option, publisher-catalog placement, adagents.json collection, or data-provider signal. content_digest is the lowercase-hex SHA-256 of the RFC 8785 (JCS) serialization of the kind's closed projection of the published entry, defined normatively in docs/media-buy/specification.mdx#definition-pins. Pins live inside commercial_terms, so terms_digest covers the pin but not the definition it names: a published definition can change while terms_digest still verifies, and re-verifying the pin is what detects it. Request inputs never carry pins.
|
|
@@ -5670,26 +5670,22 @@ export type DaypartSupport = true | {
|
|
|
5670
5670
|
export type DaypartTarget = {
|
|
5671
5671
|
/**
|
|
5672
5672
|
* Days of week this window applies to. Use multiple days for compact targeting (e.g., monday-friday in one object). For an overnight start_time/end_time window, each day names the day the window starts on.
|
|
5673
|
-
*
|
|
5674
|
-
* @minItems 1
|
|
5675
5673
|
*/
|
|
5676
|
-
days:
|
|
5674
|
+
days: DayOfWeek[];
|
|
5677
5675
|
/**
|
|
5678
5676
|
* Start hour (inclusive), 0-23 in 24-hour format. 0 = midnight, 6 = 6:00am, 18 = 6:00pm. Whole-hour form: pair with end_hour; mutually exclusive with start_time and end_time.
|
|
5677
|
+
* @minimum 0
|
|
5678
|
+
* @maximum 23
|
|
5679
|
+
* @format int
|
|
5679
5680
|
*/
|
|
5680
|
-
start_hour
|
|
5681
|
+
start_hour: number;
|
|
5681
5682
|
/**
|
|
5682
5683
|
* End hour (exclusive), 1-24 in 24-hour format. 10 = 10:00am, 24 = midnight. Must be greater than start_hour; whole-hour windows never cross midnight. Whole-hour form: pair with start_hour; mutually exclusive with start_time and end_time.
|
|
5684
|
+
* @minimum 1
|
|
5685
|
+
* @maximum 24
|
|
5686
|
+
* @format int
|
|
5683
5687
|
*/
|
|
5684
|
-
end_hour
|
|
5685
|
-
/**
|
|
5686
|
-
* Experimental in AdCP 3.3. Start of the window (inclusive) as a 24-hour HH:MM civil clock time on the entry's timezone clock, such as '19:30'. Use for windows that do not fall on whole hours (linear TV programme junctions, quarter-hour schedules). Pair with end_time; mutually exclusive with start_hour and end_hour. A window whose end_time is earlier than its start_time crosses midnight and belongs to the day it starts on. A product accepts only the finest time granularity it declares in overlay_support.daypart_targets.time_granularity; sellers MUST reject, never round, a clock time the product does not honor.
|
|
5687
|
-
*/
|
|
5688
|
-
start_time?: string;
|
|
5689
|
-
/**
|
|
5690
|
-
* Experimental in AdCP 3.3. End of the window (exclusive) as a 24-hour HH:MM civil clock time, such as '23:00'. Pair with start_time; mutually exclusive with start_hour and end_hour. end_time earlier than start_time means the window crosses midnight and ends at end_time on the following civil day (for example, 22:00 to 02:00 runs from 22:00 on a listed day until 02:00 the next morning); '00:00' therefore ends the window at the midnight closing the start day. end_time MUST NOT equal start_time: a zero-length or full-day window is invalid, and a full day uses start_hour 0 with end_hour 24. Sellers MUST reject an equal pair with INVALID_REQUEST.
|
|
5691
|
-
*/
|
|
5692
|
-
end_time?: string;
|
|
5688
|
+
end_hour: number;
|
|
5693
5689
|
/**
|
|
5694
5690
|
* Civil-time clock used to evaluate this window. 'inventory_local' evaluates the hours in the seller-assigned local timezone of each inventory unit that can deliver the impression, such as a screen, venue, station, or publisher property; it never means the buyer, account, or server timezone. A concrete IANA timezone identifier (for example, 'America/New_York', 'CET', or 'UTC') evaluates one shared civil-time clock across the targeted inventory. Omission defaults to 'inventory_local'. Buyers that begin with a user or account preference MUST resolve it to a concrete IANA identifier before sending the daypart; 'user_timezone' and 'account_timezone' are not wire values. For each candidate delivery instant, convert the instant into this clock and compare its resulting local day and time of day with the half-open window: a skipped DST hour or interval has no matching instants, while both occurrences of a repeated hour or interval match. For an overnight start_time/end_time window, an instant matches when its local day is a listed day and its local time is at or after start_time, or when the local day before it is a listed day and its local time is before end_time. This delivery clock is independent of reporting_capabilities.timezone.
|
|
5695
5691
|
*/
|
|
@@ -5698,29 +5694,23 @@ export type DaypartTarget = {
|
|
|
5698
5694
|
* Optional human-readable name for this time window (e.g., 'Morning Drive', 'Prime Time')
|
|
5699
5695
|
*/
|
|
5700
5696
|
label?: string;
|
|
5701
|
-
|
|
5697
|
+
start_time?: never;
|
|
5698
|
+
end_time?: never;
|
|
5699
|
+
} | {
|
|
5702
5700
|
/**
|
|
5703
5701
|
* Days of week this window applies to. Use multiple days for compact targeting (e.g., monday-friday in one object). For an overnight start_time/end_time window, each day names the day the window starts on.
|
|
5704
|
-
*
|
|
5705
|
-
* @minItems 1
|
|
5706
|
-
*/
|
|
5707
|
-
days: [DayOfWeek, ...DayOfWeek[]];
|
|
5708
|
-
/**
|
|
5709
|
-
* Start hour (inclusive), 0-23 in 24-hour format. 0 = midnight, 6 = 6:00am, 18 = 6:00pm. Whole-hour form: pair with end_hour; mutually exclusive with start_time and end_time.
|
|
5710
5702
|
*/
|
|
5711
|
-
|
|
5712
|
-
/**
|
|
5713
|
-
* End hour (exclusive), 1-24 in 24-hour format. 10 = 10:00am, 24 = midnight. Must be greater than start_hour; whole-hour windows never cross midnight. Whole-hour form: pair with start_hour; mutually exclusive with start_time and end_time.
|
|
5714
|
-
*/
|
|
5715
|
-
end_hour?: number;
|
|
5703
|
+
days: DayOfWeek[];
|
|
5716
5704
|
/**
|
|
5717
5705
|
* Experimental in AdCP 3.3. Start of the window (inclusive) as a 24-hour HH:MM civil clock time on the entry's timezone clock, such as '19:30'. Use for windows that do not fall on whole hours (linear TV programme junctions, quarter-hour schedules). Pair with end_time; mutually exclusive with start_hour and end_hour. A window whose end_time is earlier than its start_time crosses midnight and belongs to the day it starts on. A product accepts only the finest time granularity it declares in overlay_support.daypart_targets.time_granularity; sellers MUST reject, never round, a clock time the product does not honor.
|
|
5706
|
+
* @pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
|
|
5718
5707
|
*/
|
|
5719
|
-
start_time
|
|
5708
|
+
start_time: string;
|
|
5720
5709
|
/**
|
|
5721
5710
|
* Experimental in AdCP 3.3. End of the window (exclusive) as a 24-hour HH:MM civil clock time, such as '23:00'. Pair with start_time; mutually exclusive with start_hour and end_hour. end_time earlier than start_time means the window crosses midnight and ends at end_time on the following civil day (for example, 22:00 to 02:00 runs from 22:00 on a listed day until 02:00 the next morning); '00:00' therefore ends the window at the midnight closing the start day. end_time MUST NOT equal start_time: a zero-length or full-day window is invalid, and a full day uses start_hour 0 with end_hour 24. Sellers MUST reject an equal pair with INVALID_REQUEST.
|
|
5711
|
+
* @pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
|
|
5722
5712
|
*/
|
|
5723
|
-
end_time
|
|
5713
|
+
end_time: string;
|
|
5724
5714
|
/**
|
|
5725
5715
|
* Civil-time clock used to evaluate this window. 'inventory_local' evaluates the hours in the seller-assigned local timezone of each inventory unit that can deliver the impression, such as a screen, venue, station, or publisher property; it never means the buyer, account, or server timezone. A concrete IANA timezone identifier (for example, 'America/New_York', 'CET', or 'UTC') evaluates one shared civil-time clock across the targeted inventory. Omission defaults to 'inventory_local'. Buyers that begin with a user or account preference MUST resolve it to a concrete IANA identifier before sending the daypart; 'user_timezone' and 'account_timezone' are not wire values. For each candidate delivery instant, convert the instant into this clock and compare its resulting local day and time of day with the half-open window: a skipped DST hour or interval has no matching instants, while both occurrences of a repeated hour or interval match. For an overnight start_time/end_time window, an instant matches when its local day is a listed day and its local time is at or after start_time, or when the local day before it is a listed day and its local time is before end_time. This delivery clock is independent of reporting_capabilities.timezone.
|
|
5726
5716
|
*/
|
|
@@ -5729,7 +5719,9 @@ export type DaypartTarget = {
|
|
|
5729
5719
|
* Optional human-readable name for this time window (e.g., 'Morning Drive', 'Prime Time')
|
|
5730
5720
|
*/
|
|
5731
5721
|
label?: string;
|
|
5732
|
-
|
|
5722
|
+
start_hour?: never;
|
|
5723
|
+
end_hour?: never;
|
|
5724
|
+
};
|
|
5733
5725
|
|
|
5734
5726
|
/**
|
|
5735
5727
|
* Finest time-of-day resolution a product can honor for daypart targeting. Ordered from coarsest to finest: hour (whole hours; start_hour/end_hour, or HH:00 start_time/end_time), quarter_hour (HH:00, HH:15, HH:30, HH:45), minute (any HH:MM). A product that declares a granularity also honors every coarser one. Experimental in AdCP 3.3.
|
|
@@ -551,26 +551,22 @@ export type DayOfWeek = 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'frida
|
|
|
551
551
|
export type DaypartTarget = {
|
|
552
552
|
/**
|
|
553
553
|
* Days of week this window applies to. Use multiple days for compact targeting (e.g., monday-friday in one object). For an overnight start_time/end_time window, each day names the day the window starts on.
|
|
554
|
-
*
|
|
555
|
-
* @minItems 1
|
|
556
554
|
*/
|
|
557
|
-
days:
|
|
555
|
+
days: DayOfWeek[];
|
|
558
556
|
/**
|
|
559
557
|
* Start hour (inclusive), 0-23 in 24-hour format. 0 = midnight, 6 = 6:00am, 18 = 6:00pm. Whole-hour form: pair with end_hour; mutually exclusive with start_time and end_time.
|
|
558
|
+
* @minimum 0
|
|
559
|
+
* @maximum 23
|
|
560
|
+
* @format int
|
|
560
561
|
*/
|
|
561
|
-
start_hour
|
|
562
|
+
start_hour: number;
|
|
562
563
|
/**
|
|
563
564
|
* End hour (exclusive), 1-24 in 24-hour format. 10 = 10:00am, 24 = midnight. Must be greater than start_hour; whole-hour windows never cross midnight. Whole-hour form: pair with start_hour; mutually exclusive with start_time and end_time.
|
|
565
|
+
* @minimum 1
|
|
566
|
+
* @maximum 24
|
|
567
|
+
* @format int
|
|
564
568
|
*/
|
|
565
|
-
end_hour
|
|
566
|
-
/**
|
|
567
|
-
* Experimental in AdCP 3.3. Start of the window (inclusive) as a 24-hour HH:MM civil clock time on the entry's timezone clock, such as '19:30'. Use for windows that do not fall on whole hours (linear TV programme junctions, quarter-hour schedules). Pair with end_time; mutually exclusive with start_hour and end_hour. A window whose end_time is earlier than its start_time crosses midnight and belongs to the day it starts on. A product accepts only the finest time granularity it declares in overlay_support.daypart_targets.time_granularity; sellers MUST reject, never round, a clock time the product does not honor.
|
|
568
|
-
*/
|
|
569
|
-
start_time?: string;
|
|
570
|
-
/**
|
|
571
|
-
* Experimental in AdCP 3.3. End of the window (exclusive) as a 24-hour HH:MM civil clock time, such as '23:00'. Pair with start_time; mutually exclusive with start_hour and end_hour. end_time earlier than start_time means the window crosses midnight and ends at end_time on the following civil day (for example, 22:00 to 02:00 runs from 22:00 on a listed day until 02:00 the next morning); '00:00' therefore ends the window at the midnight closing the start day. end_time MUST NOT equal start_time: a zero-length or full-day window is invalid, and a full day uses start_hour 0 with end_hour 24. Sellers MUST reject an equal pair with INVALID_REQUEST.
|
|
572
|
-
*/
|
|
573
|
-
end_time?: string;
|
|
569
|
+
end_hour: number;
|
|
574
570
|
/**
|
|
575
571
|
* Civil-time clock used to evaluate this window. 'inventory_local' evaluates the hours in the seller-assigned local timezone of each inventory unit that can deliver the impression, such as a screen, venue, station, or publisher property; it never means the buyer, account, or server timezone. A concrete IANA timezone identifier (for example, 'America/New_York', 'CET', or 'UTC') evaluates one shared civil-time clock across the targeted inventory. Omission defaults to 'inventory_local'. Buyers that begin with a user or account preference MUST resolve it to a concrete IANA identifier before sending the daypart; 'user_timezone' and 'account_timezone' are not wire values. For each candidate delivery instant, convert the instant into this clock and compare its resulting local day and time of day with the half-open window: a skipped DST hour or interval has no matching instants, while both occurrences of a repeated hour or interval match. For an overnight start_time/end_time window, an instant matches when its local day is a listed day and its local time is at or after start_time, or when the local day before it is a listed day and its local time is before end_time. This delivery clock is independent of reporting_capabilities.timezone.
|
|
576
572
|
*/
|
|
@@ -579,29 +575,23 @@ export type DaypartTarget = {
|
|
|
579
575
|
* Optional human-readable name for this time window (e.g., 'Morning Drive', 'Prime Time')
|
|
580
576
|
*/
|
|
581
577
|
label?: string;
|
|
582
|
-
|
|
578
|
+
start_time?: never;
|
|
579
|
+
end_time?: never;
|
|
580
|
+
} | {
|
|
583
581
|
/**
|
|
584
582
|
* Days of week this window applies to. Use multiple days for compact targeting (e.g., monday-friday in one object). For an overnight start_time/end_time window, each day names the day the window starts on.
|
|
585
|
-
*
|
|
586
|
-
* @minItems 1
|
|
587
583
|
*/
|
|
588
|
-
days:
|
|
589
|
-
/**
|
|
590
|
-
* Start hour (inclusive), 0-23 in 24-hour format. 0 = midnight, 6 = 6:00am, 18 = 6:00pm. Whole-hour form: pair with end_hour; mutually exclusive with start_time and end_time.
|
|
591
|
-
*/
|
|
592
|
-
start_hour?: number;
|
|
593
|
-
/**
|
|
594
|
-
* End hour (exclusive), 1-24 in 24-hour format. 10 = 10:00am, 24 = midnight. Must be greater than start_hour; whole-hour windows never cross midnight. Whole-hour form: pair with start_hour; mutually exclusive with start_time and end_time.
|
|
595
|
-
*/
|
|
596
|
-
end_hour?: number;
|
|
584
|
+
days: DayOfWeek[];
|
|
597
585
|
/**
|
|
598
586
|
* Experimental in AdCP 3.3. Start of the window (inclusive) as a 24-hour HH:MM civil clock time on the entry's timezone clock, such as '19:30'. Use for windows that do not fall on whole hours (linear TV programme junctions, quarter-hour schedules). Pair with end_time; mutually exclusive with start_hour and end_hour. A window whose end_time is earlier than its start_time crosses midnight and belongs to the day it starts on. A product accepts only the finest time granularity it declares in overlay_support.daypart_targets.time_granularity; sellers MUST reject, never round, a clock time the product does not honor.
|
|
587
|
+
* @pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
|
|
599
588
|
*/
|
|
600
|
-
start_time
|
|
589
|
+
start_time: string;
|
|
601
590
|
/**
|
|
602
591
|
* Experimental in AdCP 3.3. End of the window (exclusive) as a 24-hour HH:MM civil clock time, such as '23:00'. Pair with start_time; mutually exclusive with start_hour and end_hour. end_time earlier than start_time means the window crosses midnight and ends at end_time on the following civil day (for example, 22:00 to 02:00 runs from 22:00 on a listed day until 02:00 the next morning); '00:00' therefore ends the window at the midnight closing the start day. end_time MUST NOT equal start_time: a zero-length or full-day window is invalid, and a full day uses start_hour 0 with end_hour 24. Sellers MUST reject an equal pair with INVALID_REQUEST.
|
|
592
|
+
* @pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
|
|
603
593
|
*/
|
|
604
|
-
end_time
|
|
594
|
+
end_time: string;
|
|
605
595
|
/**
|
|
606
596
|
* Civil-time clock used to evaluate this window. 'inventory_local' evaluates the hours in the seller-assigned local timezone of each inventory unit that can deliver the impression, such as a screen, venue, station, or publisher property; it never means the buyer, account, or server timezone. A concrete IANA timezone identifier (for example, 'America/New_York', 'CET', or 'UTC') evaluates one shared civil-time clock across the targeted inventory. Omission defaults to 'inventory_local'. Buyers that begin with a user or account preference MUST resolve it to a concrete IANA identifier before sending the daypart; 'user_timezone' and 'account_timezone' are not wire values. For each candidate delivery instant, convert the instant into this clock and compare its resulting local day and time of day with the half-open window: a skipped DST hour or interval has no matching instants, while both occurrences of a repeated hour or interval match. For an overnight start_time/end_time window, an instant matches when its local day is a listed day and its local time is at or after start_time, or when the local day before it is a listed day and its local time is before end_time. This delivery clock is independent of reporting_capabilities.timezone.
|
|
607
597
|
*/
|
|
@@ -610,7 +600,9 @@ export type DaypartTarget = {
|
|
|
610
600
|
* Optional human-readable name for this time window (e.g., 'Morning Drive', 'Prime Time')
|
|
611
601
|
*/
|
|
612
602
|
label?: string;
|
|
613
|
-
|
|
603
|
+
start_hour?: never;
|
|
604
|
+
end_hour?: never;
|
|
605
|
+
};
|
|
614
606
|
|
|
615
607
|
/**
|
|
616
608
|
* Restrict delivery to specific time windows. Each entry specifies days of week, an hour range, and an optional timezone that defaults to inventory_local. A concrete IANA zone uses one shared civil-time clock, while inventory_local evaluates each inventory unit in its seller-assigned local timezone. Entries are independent and MAY use different clocks.
|