Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
66a4bbd
Version Ads docs: freeze current docs as v1, working copy becomes v2
MaartenRimaux Jul 15, 2026
2f31061
ADS-110: Introduce versioning for the Ads documentation (freeze v1, r…
MaartenRimaux Jul 30, 2026
c80c8a4
ADS-112 document Ads channels
devin-ai-integration[bot] Jul 16, 2026
583a663
ADS-112 clarify channel service fallbacks
devin-ai-integration[bot] Jul 16, 2026
fd9e070
ADS-112 use autogenerated concepts sidebar, keep Getting started first
MaartenRimaux Jul 30, 2026
9bd8256
ADS-113 document ad breaks
devin-ai-integration[bot] Jul 16, 2026
30d95cf
ADS-116 document ad templates
devin-ai-integration[bot] Jul 16, 2026
0dae210
ADS-114 document ad events
devin-ai-integration[bot] Jul 16, 2026
6f5ca88
ADS-115 document marker detection
devin-ai-integration[bot] Jul 16, 2026
aa8fbc2
ADS-117 document ad vendors
devin-ai-integration[bot] Jul 16, 2026
e99f8de
ADS-120 document break manifest
devin-ai-integration[bot] Jul 16, 2026
76841eb
ADS-112..120: add Vendors category and order concepts via sidebar_pos…
MaartenRimaux Jul 30, 2026
35debe2
ADS-112 rework channels concept per feedback
MaartenRimaux Jul 30, 2026
76a0b56
ADS-118 document player integration
devin-ai-integration[bot] Jul 16, 2026
9857a9c
ADS-111 rewrite Ads getting started
devin-ai-integration[bot] Jul 16, 2026
e5415f5
ADS-111 fix Player integration links
devin-ai-integration[bot] Jul 16, 2026
50cd09c
ADS-111 avoid future API reference link
devin-ai-integration[bot] Jul 16, 2026
05c4d93
ADS-119 publish Ads API reference
devin-ai-integration[bot] Jul 16, 2026
f2d7557
ADS-119 make API builds self-contained
devin-ai-integration[bot] Jul 16, 2026
3fc13e9
ADS-119 omit excluded channel setting
devin-ai-integration[bot] Jul 16, 2026
35e80a7
Fix merge conflict marker in _lint.yml
MaartenRimaux Jul 30, 2026
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
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ theoplayer_versioned_docs/*/changelog.md
theoplayer_versioned_docs/*/static/theoplayer/*/api-reference
ads/api/ads-client.swagger.json
ads/api/signaling/
ads_versioned_docs/*/api/
adengine/static/ad-engine.yaml
adengine/reference/
millicast/api/
Expand Down
18 changes: 18 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,21 @@ If you're looking to contribute to the developer documentation itself, see https
1. `npm install` on first usage
2. `git submodule update --init` to install submodules
3. `npm start` to open in dev mode

### Ads API reference

The V2 Ads API reference is generated from the commit-pinned `openapi.json` in
`Dolby-OptiView/optiview-ads`. The generated MDX pages are committed, but the
fetched spec is not. Private GitHub fetches require `ADS_OPENAPI_TOKEN`,
`GITHUB_TOKEN`, or `GH_TOKEN` with `contents:read` access to `optiview-ads`.

To refresh the published contract, update `DEFAULT_SPEC_REF` in
`scripts/fetch-ads-openapi.mjs`, then run:

```bash
npm run refresh-ads-api-docs
npm run build
```

Use `ADS_OPENAPI_REF` to validate another remote commit or branch, or
`ADS_OPENAPI_SPEC_URL=/path/to/openapi.json` for a local checkout.
45 changes: 45 additions & 0 deletions ads/api/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
title: Ads REST API
sidebar_label: REST API
---

# Ads REST API

The Ads REST API manages channels, origins, marker rules, breaks, events, templates, and integrations under `/api/v1`.

## Authentication

Every request requires both:

- HTTP Basic authentication, with the API key as the username and API secret as the password.
- The `X-Org-ID` header identifying the organization.

```bash
curl 'https://ads.example.com/api/v1/channels' \
-u "$ADS_API_KEY:$ADS_API_SECRET" \
-H 'X-Org-ID: org_123'
```

Treat the secret like a password. The internal service authentication used between platform components is not a public API authentication method.

## Reference

Browse the [generated Ads REST API reference](/ads/api/reference/optiview-ads-api). Operations are grouped by resource.

## Refresh the reference

The reference is generated at build time from the committed OpenAPI contract in `Dolby-OptiView/optiview-ads`. The default URL is pinned to the ADS-109 contract commit so documentation builds remain reproducible without storing a second copy of `openapi.json`.

```bash
npm run fetch-ads-openapi
npm run refresh-ads-api-docs
```

For a local checkout or a newer remote ref, override the source:

```bash
ADS_OPENAPI_SPEC_URL=/path/to/optiview-ads/openapi.json npm run refresh-ads-api-docs
ADS_OPENAPI_REF=commit-or-branch npm run refresh-ads-api-docs
```

Private GitHub fetches use `ADS_OPENAPI_TOKEN`, `GITHUB_TOKEN`, or `GH_TOKEN`. Change the pinned commit in `scripts/fetch-ads-openapi.mjs` when intentionally refreshing the published contract, regenerate the pages, and commit the reviewed generated reference.
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
id: delete-channels-channel-id-breaks-break-id
title: 'Delete /channels/{channelId}/breaks/{breakId}'
description: 'Delete a break.'
sidebar_label: 'Delete /channels/{channelId}/breaks/{breakId}'
hide_title: true
hide_table_of_contents: true
api: eJytVEtvm0AQ/iurOcXSUuqqJ26u4oPVSonSx8XiMIaxWRkvm93BCUX892oAP2JZTiv1BOy8vgezLeQUMm8cm8pCAvdUEpNCtfKE2w+gwaHHHTH5AMmyvUhf5GTZrA15Va0VF6SyAq2lUiqNZDjkAjRY3BEkMEYXOWjw9FwbTzkk7GvSELKCdghJC9w4SQ7sjd1A1+n3xx7hXhnax/5xZCrJwVU2UJD4p4+f5XEp1hrrktXTmClQoXLkURIWOSSQ93pGI+8QHQWIelQhOoFj3IjE8KUPQKphR1xUpy69GVxAAjE6E++n8aFt3B77dvHQOG7Hzh1oCJTV3nDTO7jCYLJZLY2WqYbKbwTpMhXOh8TvIszA/Cz9kv/scaG21Ki7OpAXsScKba4CZZ5Y3TkM4aXy+UR86aXu3ZB+QndQvGB20B1hXI548Bu05ncvqDJH249OF4Q5+ZPXr1HlN5HJTwPQma/U9NYYu656sw2XEnpwbH4ZelGzPKjZ4wI07MmHYfJ+KrBcFXiHVqrGCeOG/LX2b/i0kFWWyfLVVRsRM71y7Eo0VhDUvpS6wfml0BGYU9CHZQqgITlfrAGEnB5+rlRDUQWW+rZdYaCfvuw6OX6uyTfDj7BHb3AlwsiamyDvOSRrLAPdoHH3NC7VRN28Da6SO3hkGyGFZS1foGFLzZvbor8C/g+k22rfBnTQs0u7s+28n3+b/5hD1/0B6YnMMw==
sidebar_class_name: 'delete api-method'
info_path: ads/api/reference/optiview-ads-api
custom_edit_url: null
hide_send_button: true
---

import MethodEndpoint from '@theme/ApiExplorer/MethodEndpoint';
import ParamsDetails from '@theme/ParamsDetails';
import RequestSchema from '@theme/RequestSchema';
import StatusCodes from '@theme/StatusCodes';
import OperationTabs from '@theme/OperationTabs';
import TabItem from '@theme/TabItem';
import Heading from '@theme/Heading';
import Translate from '@docusaurus/Translate';

<Heading as={'h1'} className={'openapi__heading'} children={'Delete /channels/{channelId}/breaks/{breakId}'}></Heading>

<MethodEndpoint method={'delete'} path={'/api/v1/channels/{channelId}/breaks/{breakId}'} context={'endpoint'}></MethodEndpoint>

Delete a break.

<Heading id={'request'} as={'h2'} className={'openapi-tabs__heading'}>
<Translate id="theme.openapi.request.title">Request</Translate>
</Heading>

<ParamsDetails
parameters={[
{ description: 'Identifier of the channel.', in: 'path', name: 'channelId', required: true, schema: { type: 'string' } },
{ description: 'Identifier of the break.', in: 'path', name: 'breakId', required: true, schema: { type: 'string' } },
]}
></ParamsDetails>

<RequestSchema title={'Body'}></RequestSchema>

<StatusCodes responses={{ '204': { description: 'Default Response' } }}></StatusCodes>
61 changes: 61 additions & 0 deletions ads/api/reference/delete-channels-channel-id-breaks.api.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
id: delete-channels-channel-id-breaks
title: 'Delete /channels/{channelId}/breaks'
description: 'Bulk delete breaks by IDs.'
sidebar_label: 'Delete /channels/{channelId}/breaks'
hide_title: true
hide_table_of_contents: true
api: eJyFVMFu2zAM/RWBpxZwlmXYybd0ySFYgRZdt0uQA2MzsRpbUiU6rRf43wfKjpOmW5dLbPmReo985AFyCpnXjrU1kMJNXe5UTiUxqbUn3AW1btRiFj5BAg49VsTkA6TLw0XkIifDeqPJK7tRXJDKCjSGSonUgnDIBSRgsCJIof+6yCEBT8+19pRDyr6mBEJWUIWQHoAbJ+DAXpsttO2qA1PgG5s3gsisYTIsj+hcqTMUQuOnIKwOZ6mct448awrypvP49y8N4SiiLwLbviqf1JRVSRhYWUNKB3UkH3UyVTFvpc0tmS0XkE6SSxWJfF500NNX9B4baNvzciwjz9WAsesnyhjatygpWjwIzprQ6fvy+et7fTPaYF2yeuiR8TapSqzZIocUOpWjvjthNLRp1FUCEmDcigHgpjtYJVARF/YUHa0i0mGMTo/3k/Ex3fgw5GvHQ8JAWe01N9FVaww6m9YSvlwlYP1WeC1X0voj8Ic0tdN5Br9UO71fqB016qoO5MV11wpNrgJlnlhdOQzhxfr8WhoXbSIVjvlgKHjB7KRhPY3LK+78Fo3+Hcun9OCewfIFYU7+ZPrXkfXbkc5PF6DT36lru1j24WTu+StWrqTBrMujf1atZN/YOB+aBQJ3jvUvTS9qmgc1vV9AAnvyoWO5n4gEZwNXGIeiZzPr5vw/3Xmj+GzePt4VvTymVx67ErURCrUv4yRGcyxFu/CcQHLcBnJfer4Z1oPHChtYgg6HNQb66cu2lePnmnzTWWWPXuNayiHLSQd5ziHdYBnoAxlXD/0gXasPd9hfFR27aBpRgmUtb5DAjpo3O66VpvVuEHrd928didGjZDnFv9tj7fmMzea388e51KbfgJXNJcrji6xSfOkY2Cg1zkg8O0CJZlvjVrBdVvn9AfxoDMU=
sidebar_class_name: 'delete api-method'
info_path: ads/api/reference/optiview-ads-api
custom_edit_url: null
hide_send_button: true
---

import MethodEndpoint from '@theme/ApiExplorer/MethodEndpoint';
import ParamsDetails from '@theme/ParamsDetails';
import RequestSchema from '@theme/RequestSchema';
import StatusCodes from '@theme/StatusCodes';
import OperationTabs from '@theme/OperationTabs';
import TabItem from '@theme/TabItem';
import Heading from '@theme/Heading';
import Translate from '@docusaurus/Translate';

<Heading as={'h1'} className={'openapi__heading'} children={'Delete /channels/{channelId}/breaks'}></Heading>

<MethodEndpoint method={'delete'} path={'/api/v1/channels/{channelId}/breaks'} context={'endpoint'}></MethodEndpoint>

Bulk delete breaks by IDs.

<Heading id={'request'} as={'h2'} className={'openapi-tabs__heading'}>
<Translate id="theme.openapi.request.title">Request</Translate>
</Heading>

<ParamsDetails
parameters={[{ description: 'Identifier of the channel.', in: 'path', name: 'channelId', required: true, schema: { type: 'string' } }]}
></ParamsDetails>

<RequestSchema
title={'Body'}
body={{
content: {
'application/json': {
schema: {
properties: {
ids: {
description: 'Identifiers of the breaks to delete. At least one is required.',
items: { minLength: 1, type: 'string' },
minItems: 1,
type: 'array',
},
},
required: ['ids'],
type: 'object',
},
},
},
required: true,
}}
></RequestSchema>

<StatusCodes responses={{ '204': { description: 'Default Response' } }}></StatusCodes>
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
id: delete-channels-channel-id-events-event-id
title: 'Delete /channels/{channelId}/events/{eventId}'
description: 'Delete /channels/{channelId}/events/{eventId}'
sidebar_label: 'Delete /channels/{channelId}/events/{eventId}'
hide_title: true
hide_table_of_contents: true
api: eJytVE1v2zAM/SsCTwkgz8uwk28BmkOwAS26j0uQg2oxsVBHUiU6rWf4vw/0V5K2++iwk22R5nt8j2IDXgV1QMIQIds0oDHmwXgyzkIGa42WzM5gEG4nqECRF8paLN+BBMMZXlEBEqw6IGQwRNcaJAR8qExADRmFCiXEvMCDgqwBqj0nRwrG7qFt5Z9h8YiWfgHaxd4IueXk6J2NGDn+4f1HflzSuMKdqkoSt0MmUwXnMShOWGvIQGOJhMnQd0wmAZKOVUxO5EjtWWJYdQHYyhdoXEqkY620mYq1aV8tbYZyLUg4IBXuxAFkL0sGqfImPS7+ulDEvAqG6s7/OxVNvqy40GYrwYU997nZsmJj4heWtdftLP25esubtbjHWsyqiIGtmgtltYiYByQx8yrGRxf0nF3tjGKDunosVu9XQeShnWg8h7gOe2XNj84OYaahmeakQKUxnCblKXFhnxh9AlDefMK6M9bYnetGxVDJoWtP5rvBR7HUUSxv1iDhiCH2yMcF0/Iu0kFZ/mtAeKuJF/1MY0r4RKkvlbGMUoWSY727G6bMVBYgx+sWQUJ2fvV6ID4dx28roXCR+P+muVMRv4Wybfn4ocJQ92YfVTDqjpvnRWAiv2vIdqqM+IJq7iyhJchgdjtcu7n47b54tbnRB1tzU6qs+Ask3GN9sU+6JfF/KE275B8IjXq22/bsBl6tPq++rqBtfwLVVNDK
sidebar_class_name: 'delete api-method'
info_path: ads/api/reference/optiview-ads-api
custom_edit_url: null
hide_send_button: true
---

import MethodEndpoint from '@theme/ApiExplorer/MethodEndpoint';
import ParamsDetails from '@theme/ParamsDetails';
import RequestSchema from '@theme/RequestSchema';
import StatusCodes from '@theme/StatusCodes';
import OperationTabs from '@theme/OperationTabs';
import TabItem from '@theme/TabItem';
import Heading from '@theme/Heading';
import Translate from '@docusaurus/Translate';

<Heading as={'h1'} className={'openapi__heading'} children={'Delete /channels/{channelId}/events/{eventId}'}></Heading>

<MethodEndpoint method={'delete'} path={'/api/v1/channels/{channelId}/events/{eventId}'} context={'endpoint'}></MethodEndpoint>

Delete /channels/\{channelId\}/events/\{eventId\}

<Heading id={'request'} as={'h2'} className={'openapi-tabs__heading'}>
<Translate id="theme.openapi.request.title">Request</Translate>
</Heading>

<ParamsDetails
parameters={[
{ description: 'Identifier of the channel.', in: 'path', name: 'channelId', required: true, schema: { type: 'string' } },
{ description: 'Identifier of the event.', in: 'path', name: 'eventId', required: true, schema: { type: 'string' } },
]}
></ParamsDetails>

<RequestSchema title={'Body'}></RequestSchema>

<StatusCodes responses={{ '204': { description: 'Default Response' } }}></StatusCodes>
61 changes: 61 additions & 0 deletions ads/api/reference/delete-channels-channel-id-events.api.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
id: delete-channels-channel-id-events
title: 'Delete /channels/{channelId}/events'
description: 'Delete /channels/{channelId}/events'
sidebar_label: 'Delete /channels/{channelId}/events'
hide_title: true
hide_table_of_contents: true
api: eJyNVE1v2zAM/SsCTy3gNMuwk2/ZmkOwAi26bpcgB8ZmbLW2pEp0Ws/wfx8oJ07a7MsX2xL19B75yA4ceqyJyQdIVx3kFDKvHWtrIIVlTob1VpNXdqu4JJWVaAxVV5CAlgiHXEICBmuCFPa7yxwS8PTcaE85pOwbSiBkJdUIaQfcOgkO7LUpoO/XQzAF/mzzViIya5gMyyc6V+kMhdD0MQir7gTKeevIs6YgfzqPrz9pCAcRtCPDQbFVOVXEdKXmrCrCwMoaUjqoA/mok6mOuLU2N2QKLiGdJe9VJLK9HEKPu+g9ttD3p+lYRZ7rMcZuHilj6N9GSdLiQnDWhEHfxw+fzvVd0xabitX9PjLeJlmJOVvmkMKgcrKvTpiMZZoMmYAEGAsxACyGhXVydotAqOkBY9qNIP10RKmJS3u8EZLBHylM0enpbvaP44GyxmtuoxM3GHQ2b+T4ap2A9YVoWa3FLofAb2KEITcn4e8zNL9bqidq1UUTyItTLxWaXAXKPLG6cBjCi/X5pRQ7WkuqEvFgLFLJ7KTIexrvr7j1BRr9M6Zc6dFxY5uUhDn5Y6O8TqwvJjo/XoBOf6XBKmLz+2NDLF6xdhWNBl8dPLfuBX1rY09plhC4dax/aHpR8zyo+d0SEtiRDwPL3UwkOBu4xthIezb/V9w3iscuZnrlqatQG8FufBXbMlZ9JaKEwAySw2gQoPR0TNBouNIGlkNdt8FA333V97L83JBvBw/s0GvciE6ZVDrIdw7pFqtAZ/zGGQIX9/uuulR/HWi/VXQoj2lFCVaN/EECT9S+GXi9VGNfZqE37H8ZSEweBOV4/myoianH5rle3CweFpDAZj8Oa5vLKY8vMlfxZWBgo9Ro/rjWQYWmaLCQ2AFVnl/eXQTl
sidebar_class_name: 'delete api-method'
info_path: ads/api/reference/optiview-ads-api
custom_edit_url: null
hide_send_button: true
---

import MethodEndpoint from '@theme/ApiExplorer/MethodEndpoint';
import ParamsDetails from '@theme/ParamsDetails';
import RequestSchema from '@theme/RequestSchema';
import StatusCodes from '@theme/StatusCodes';
import OperationTabs from '@theme/OperationTabs';
import TabItem from '@theme/TabItem';
import Heading from '@theme/Heading';
import Translate from '@docusaurus/Translate';

<Heading as={'h1'} className={'openapi__heading'} children={'Delete /channels/{channelId}/events'}></Heading>

<MethodEndpoint method={'delete'} path={'/api/v1/channels/{channelId}/events'} context={'endpoint'}></MethodEndpoint>

Delete /channels/\{channelId\}/events

<Heading id={'request'} as={'h2'} className={'openapi-tabs__heading'}>
<Translate id="theme.openapi.request.title">Request</Translate>
</Heading>

<ParamsDetails
parameters={[{ description: 'Identifier of the channel.', in: 'path', name: 'channelId', required: true, schema: { type: 'string' } }]}
></ParamsDetails>

<RequestSchema
title={'Body'}
body={{
content: {
'application/json': {
schema: {
properties: {
ids: {
description: 'Identifiers of the events to delete. At least one is required.',
items: { minLength: 1, type: 'string' },
minItems: 1,
type: 'array',
},
},
required: ['ids'],
type: 'object',
},
},
},
required: true,
}}
></RequestSchema>

<StatusCodes responses={{ '204': { description: 'Default Response' } }}></StatusCodes>
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
id: delete-channels-channel-id-integrations-channel-integration-id
title: 'Delete /channels/{channelId}/integrations/{channelIntegrationId}'
description: 'Delete a channel integration.'
sidebar_label: 'Delete /channels/{channelId}/integrations/{channelIntegrationId}'
hide_title: true
hide_table_of_contents: true
api: eJytVEuP2jAQ/ivWnEAyTal6yg1pOaBW2tX2cUE5mGRIrA22156wm0b579WEEEJUIar2RPCMZ77HjBvIMKReO9LWQAwPWCKhUCItlDFYCm0Ic684/AEkOOXVAQl9gHjbTC5vMjSk9xq9sHtBBZ6r8E3NGU5RARKMOiDE0Ec3GUjw+FppjxnE5CuUENICDwriBqh2nBzIa5ND28q7207B34BwSfxLNAknB2dNwMDxTx8/889U1b2qShLPfSazAOtw6BhD1gm/6PGExaDNYkTicjzBSypnQ2B0HiCRcEAq7KV8ZyAVEEOknI6Oy+jcL2qGhm007ngJjFu2ICFgWnlNdTcIOxV0uqq49jaRYH3OrLYJ63NO/MYinlQapU+1Wj1txAvWYlYF9OzSXCiTiYCpRxIzp0J4sz6bs6GdLWxHV491OLlTEDloBxjTFo8+V0b/6rgIPUzPMCIFqgz9ZUjeF9bnC51dGiinv2Dd2ajN3naDoank0KMj/VPjm1hlQayeNiDhiD6cOh+XDMvZQAdl+FbfoV+7f7HjimIDqTWEhu5Y6Z4S4TtFrlTaMMTKl1zlNC1b5ss8liDPGxNAQjxe4DHKcexqUhMJhQ3EJZtmpwL+8GXb8vFrhb4+Dc9Rea12LCa/MDrwdwbxXpUBb/CcPfdLOxc3H6I/8j37amrmqcqK/4GEF6yvHqru9fmvkO6y4z54V1K3STva/4f11/X3NbTtbywOD80=
sidebar_class_name: 'delete api-method'
info_path: ads/api/reference/optiview-ads-api
custom_edit_url: null
hide_send_button: true
---

import MethodEndpoint from '@theme/ApiExplorer/MethodEndpoint';
import ParamsDetails from '@theme/ParamsDetails';
import RequestSchema from '@theme/RequestSchema';
import StatusCodes from '@theme/StatusCodes';
import OperationTabs from '@theme/OperationTabs';
import TabItem from '@theme/TabItem';
import Heading from '@theme/Heading';
import Translate from '@docusaurus/Translate';

<Heading as={'h1'} className={'openapi__heading'} children={'Delete /channels/{channelId}/integrations/{channelIntegrationId}'}></Heading>

<MethodEndpoint method={'delete'} path={'/api/v1/channels/{channelId}/integrations/{channelIntegrationId}'} context={'endpoint'}></MethodEndpoint>

Delete a channel integration.

<Heading id={'request'} as={'h2'} className={'openapi-tabs__heading'}>
<Translate id="theme.openapi.request.title">Request</Translate>
</Heading>

<ParamsDetails
parameters={[
{ description: 'Identifier of the channel.', in: 'path', name: 'channelId', required: true, schema: { type: 'string' } },
{ description: 'Identifier of the channel integration.', in: 'path', name: 'channelIntegrationId', required: true, schema: { type: 'string' } },
]}
></ParamsDetails>

<RequestSchema title={'Body'}></RequestSchema>

<StatusCodes responses={{ '204': { description: 'Default Response' } }}></StatusCodes>
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
id: delete-channels-channel-id-marker-rules-marker-rule-id
title: 'Delete /channels/{channelId}/markerRules/{markerRuleId}'
description: 'Delete a marker rule.'
sidebar_label: 'Delete /channels/{channelId}/markerRules/{markerRuleId}'
hide_title: true
hide_table_of_contents: true
api: eJytVMlu2zAQ/RViTglAV03Rk24G4oPRFgnS5WL4MJHGFhGZYoYjJ6qgfy9GklcE7oKetPCRb5kZtpBTzNgFcZWHFG6pJCGDZoP8RGy4LukdWAjIuCEhjpAu2rNN85y8uJUjNtXKSEEmK9B7KnWnU0RAKcCCxw1BCuPqPAcLTM+1Y8ohFa7JQswK2iCkLUgTFByFnV9D19nf056JfoN6QDzUJf0l+1LBMVQ+UtT1D+8/6uM8vRXWpZiHEamqoQrEqIB5DinkfcCTMYI42WcxOUiLkzOZgmvNHb4M/noMLC1sSIrqcGpfJykghQSDS7Y3yY4mafc8XXJElLTHTB1YiJTV7KTpy/yI0WXTWo9cLC1UvFYPi6WmsQN+1ciGTI7g58lM7+fmiRpzVUdircW1QZ+bSBmTmKuAMb5UnF9r2foiaPj9eWp/qEUhEqDbyzinuOM1evezj9q4fW/sG6EgzIkPrfA6qXg9cfmBAIP7RE1fNOdXVd8GTkpdugvifjh6MdM8mun9HCxsiePAvL1RWaGKskGvu0aGcZj+oQonzlrIKi/k5cJ8jg6EXiUJJTqvimoudffQEwu1p7JvwO4mMIKF9Hgaj0Tp0kkbLi0UVRQ9qW0fMdJ3LrtOfz/XxM3QIltkh48amd4SLup7DukKy0gXbF09jIN4bS5eJm/a3FXPN2oPy1q/wMITNSeXTX+D/B9Jf5L+ZVkn0XbL7miYb2efZ99m0HW/AIhY7I4=
sidebar_class_name: 'delete api-method'
info_path: ads/api/reference/optiview-ads-api
custom_edit_url: null
hide_send_button: true
---

import MethodEndpoint from '@theme/ApiExplorer/MethodEndpoint';
import ParamsDetails from '@theme/ParamsDetails';
import RequestSchema from '@theme/RequestSchema';
import StatusCodes from '@theme/StatusCodes';
import OperationTabs from '@theme/OperationTabs';
import TabItem from '@theme/TabItem';
import Heading from '@theme/Heading';
import Translate from '@docusaurus/Translate';

<Heading as={'h1'} className={'openapi__heading'} children={'Delete /channels/{channelId}/markerRules/{markerRuleId}'}></Heading>

<MethodEndpoint method={'delete'} path={'/api/v1/channels/{channelId}/markerRules/{markerRuleId}'} context={'endpoint'}></MethodEndpoint>

Delete a marker rule.

<Heading id={'request'} as={'h2'} className={'openapi-tabs__heading'}>
<Translate id="theme.openapi.request.title">Request</Translate>
</Heading>

<ParamsDetails
parameters={[
{ description: 'Identifier of the channel.', in: 'path', name: 'channelId', required: true, schema: { type: 'string' } },
{ description: 'Identifier of the marker rule.', in: 'path', name: 'markerRuleId', required: true, schema: { type: 'string' } },
]}
></ParamsDetails>

<RequestSchema title={'Body'}></RequestSchema>

<StatusCodes responses={{ '204': { description: 'Default Response' } }}></StatusCodes>
Loading
Loading