Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Analytics updates #403

Draft
wants to merge 7 commits into
base: main
Choose a base branch
from
Draft
Changes from 1 commit
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
193 changes: 173 additions & 20 deletions oas_apivideo.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13006,8 +13006,8 @@ paths:
- `impression` is the number of times your content has been loaded and was ready for playback. You can use the aggregation `count` with this metric.
- `impression-time` is the time in milliseconds that your content was loading for until the first video frame is displayed. You can use the aggregations `average` and `sum` with this metric.
- `watch-time` is the cumulative time in seconds that the user has spent watching your content. You can use the aggregations `average` and `sum` with this metric.
- `ccv` TODO
- `view` TODO
- `ccv`: is the number of concurrent viewers, or users watching at the same time.
- `view`: the total number of viewers until this point in time.
required: true
style: simple
explode: false
Expand All @@ -13032,8 +13032,8 @@ paths:
- `total` calculates the total number of events for the `play` metric.
- `average` calculates an average value for the selected metric.
- `sum` adds up the total value of the select metric.
- `peak` TODO
- `live` TODO
- `peak` shows the highest value of the `ccv` metric in the timeframe of your request. You can use this aggregation only with the `ccv` metric.
- `live` shows the highest value of the `ccv` metric from the last 20 seconds. You can use this aggregation only with the `ccv` metric.
style: simple
explode: false
required: true
Expand Down Expand Up @@ -13079,7 +13079,16 @@ paths:
- name: unique
in: query
description: |
TODO
Use this query parameter to control how viewer data is counted:

- `true` means that a single user watchig multiple times counts as 1 unique viewer

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

watching

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed ✅

- `false` means that all views count, even if from the same user.

The API accepts this parameter only when you use the `ccv-peak`, `ccv-average`, or `view` metric.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure this description applies to metrics routes too, but if so, maybe you should also list the ccv metric?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice catch, fixed! For this route, the sentence should be:

The API accepts this parameter only when you use the ccv or view metric.


Viewers are unique for 1 day.

The API determines uniqueness based on a viewer's `user-agent` and IP address. This means that the API can filter viewers using multiple tabs to watch the same video multiple times, but cannot filter for viewers who use multiple browsers to watch the same content multiple times.
style: form
explode: false
schema:
Expand All @@ -13088,7 +13097,11 @@ paths:
- name: viewDuration
in: query
description: |
TODO
Use this query parameter to define how many seconds a view has to last to be counted in analytics data.

- You can only use this parameter together with the `view` metric.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd remove the with maybe?
"You can only use this parameter with the view metric."
Or maybe "You can only use this parameter along the view metric." ?

(i'm forgetting how to English)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed: removed "together".

- The accepted values are `3s`, `5s`, `10s`, and `30s`.
- If you do not set this parameter, the API defaults to `5s`.
style: form
explode: false
schema:
Expand Down Expand Up @@ -13167,6 +13180,22 @@ paths:
status: 400
detail: This field was not expected.
name: from:2024-05-20T09:15:05+02:00
Referrer too long:
description: Occurs when the value of `referrer` in your query is too long.
value:
type: https://docs.api.video/reference/request-invalid-query-parameter
title: A query parameter is invalid.
status: 400
detail: This value should not contain more than 2048 characters.
name: filterBy[referrer]
Invalid view duration:
description: Occurs when the value of `viewDuration` is incorrect.
value:
type: https://docs.api.video/reference/request-invalid-query-parameter
title: A query parameter is invalid.
status: 400
detail: This view duration is invalid. Use one of "3s", "5s", "10s", "30s".
name: viewDuration
'404':
headers:
X-RateLimit-Limit:
Expand Down Expand Up @@ -13304,8 +13333,9 @@ paths:
- `start` is the number of times playback was started.
- `end` is the number of times playback has ended with the content watch until the end.
- `impression` is the number of times your content has been loaded and was ready for playback.
- `ccv-peak` TODO
- `ccv-average` TODO
- `ccv-peak` is the highest number of concurrent viewers in the timeframe of your request.
- `ccv-average` is the average number of concurrent viewers in the timeframe of your request.
- `view` is the total number of viewers until this point in time.
required: true
style: simple
explode: false
Expand Down Expand Up @@ -13335,7 +13365,7 @@ paths:
- `device-type`: Returns analytics based on the type of device used by the viewers. Response values can include: `computer`, `phone`, `tablet`, `tv`, `console`, `wearable`, `unknown`.
- `operating-system`: Returns analytics based on the operating system used by the viewers. Response values can include `windows`, `mac osx`, `android`, `ios`, `linux`.
- `browser`: Returns analytics based on the browser used by the viewers. Response values can include `chrome`, `firefox`, `edge`, `opera`.
- `referrer`: TODO
- `referrer`: Returns the URL where the view originates from, for example a website where the video is embedded. View events from Android and iOS return empty strings as referrer.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Last sentence should maybe be: "View events from Android and iOS return empty strings as the [or a] referrer."

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed as:

View events from Android and iOS return empty strings as the value for referrer.

style: simple
explode: false
required: true
Expand Down Expand Up @@ -13415,7 +13445,16 @@ paths:
- name: unique
in: query
description: |
TODO
Use this query parameter to control how viewer data is counted:

- `true` means that a single user watchig multiple times counts as 1 unique viewer

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

watching

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice catch!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed ✅

- `false` means that all views count, even if from the same user.

The API accepts this parameter only when you use the `ccv-peak`, `ccv-average`, or `view` metric.

Viewers are unique for 1 day.

The API determines uniqueness based on a viewer's `user-agent` and IP address. This means that the API can filter viewers using multiple tabs to watch the same video multiple times, but cannot filter for viewers who use multiple browsers to watch the same content multiple times.
style: form
explode: false
schema:
Expand All @@ -13424,7 +13463,11 @@ paths:
- name: viewDuration
in: query
description: |
TODO
Use this query parameter to define how many seconds a view has to last to be counted in analytics data.

- You can only use this parameter together with the `view` metric.
- The accepted values are `3s`, `5s`, `10s`, and `30s`.
- If you do not set this parameter, the API defaults to `5s`.
style: form
explode: false
schema:
Expand Down Expand Up @@ -13519,6 +13562,22 @@ paths:
status: 400
detail: This field was not expected.
name: from:2024-05-20T09:15:05+02:00
Referrer too long:
description: Occurs when the value of `referrer` in your query is too long.
value:
type: https://docs.api.video/reference/request-invalid-query-parameter
title: A query parameter is invalid.
status: 400
detail: This value should not contain more than 2048 characters.
name: filterBy[referrer]
Invalid view duration:
description: Occurs when the value of `viewDuration` is incorrect.
value:
type: https://docs.api.video/reference/request-invalid-query-parameter
title: A query parameter is invalid.
status: 400
detail: This view duration is invalid. Use one of "3s", "5s", "10s", "30s".
name: viewDuration
'404':
headers:
X-RateLimit-Limit:
Expand Down Expand Up @@ -13657,6 +13716,9 @@ paths:
- `start` is the number of times playback was started.
- `end` is the number of times playback has ended with the content watch until the end.
- `impression` is the number of times your content has been loaded and was ready for playback.
- `ccv-peak` is the highest number of concurrent viewers in the timeframe of your request.
- `ccv-average` is the average number of concurrent viewers in the timeframe of your request.
- `view` is the total number of viewers.
required: true
style: simple
explode: false
Expand Down Expand Up @@ -13701,11 +13763,10 @@ paths:
- name: interval
in: query
description: |
Use this query parameter to define how granularity of the data. Possible values: `minute`, `hour`, `day`.

- Default: If no interval specified and the period (different between from and to) ≤ 2 days then hour, otherwise day.
Use this query parameter to define the granularity of the data. Possible values: `minute`, `hour`, `day`.

- If you do not set a value for `interval`, and the period you set using the `from` and `to` parameters is less than or equals to 2 days, then the default assigned value is `hour`. Otherwise the API sets it to `day`.
- When you set `minute` as interval, the timeframe you define with the `from` and `to` parameters should be less than 60 minutes.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"must be" instead of "should be"

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Corrected to must

style: form
explode: false
schema:
Expand Down Expand Up @@ -13750,7 +13811,16 @@ paths:
- name: unique
in: query
description: |
TODO
Use this query parameter to control how viewer data is counted:

- `true` means that a single user watchig multiple times counts as 1 unique viewer
- `false` means that all views count, even if from the same user.

The API accepts this parameter only when you use the `ccv-peak`, `ccv-average`, or `view` metric.

Viewers are unique for 1 day.

The API determines uniqueness based on a viewer's `user-agent` and IP address. This means that the API can filter viewers using multiple tabs to watch the same video multiple times, but cannot filter for viewers who use multiple browsers to watch the same content multiple times.
style: form
explode: false
schema:
Expand All @@ -13759,7 +13829,11 @@ paths:
- name: viewDuration
in: query
description: |
TODO
Use this query parameter to define how many seconds a view has to last to be counted in analytics data.

- You can only use this parameter together with the `view` metric.
- The accepted values are `3s`, `5s`, `10s`, and `30s`.
- If you do not set this parameter, the API defaults to `5s`.
style: form
explode: false
schema:
Expand Down Expand Up @@ -13858,6 +13932,38 @@ paths:
status: 400
detail: This field was not expected.
name: from:2024-05-20T09:15:05+02:00
Invalid interval:
description: Occurs when the value you set for `interval` is not `minute`, `hour`, or `day`.
value:
type: https://docs.api.video/reference/request-invalid-query-parameter
title: A query parameter is invalid.
status: 400
detail: This interval is invalid. Use one of "minute", "hour", "day".
name: interval
Timeframe does not match interval:
description: Occurs when you set `minute` as interval, and a timeframe that is longer than 60 minutes.
value:
type: https://docs.api.video/reference/request-invalid-query-parameter
title: A query parameter is invalid.
status: 400
detail: This interval cannot be used with a timeframe over 60 minutes.
name: interval
Referrer too long:
description: Occurs when the value of `referrer` in your query is too long.
value:
type: https://docs.api.video/reference/request-invalid-query-parameter
title: A query parameter is invalid.
status: 400
detail: This value should not contain more than 2048 characters.
name: filterBy[referrer]
Invalid view duration:
description: Occurs when the value of `viewDuration` is incorrect.
value:
type: https://docs.api.video/reference/request-invalid-query-parameter
title: A query parameter is invalid.
status: 400
detail: This view duration is invalid. Use one of "3s", "5s", "10s", "30s".
name: viewDuration
'404':
headers:
X-RateLimit-Limit:
Expand Down Expand Up @@ -16528,7 +16634,7 @@ components:
type: object
properties:
metric:
description: Returns the metric you selected.
description: Returns the metric and relevant parameters you selected.
type: string
enum:
- play
Expand All @@ -16537,6 +16643,17 @@ components:
- impression
- impression-time
- watch-time
- ccv
- unique-ccv
- view-3
- view-5
- view-10
- view-30
- unique-view
- unique-view-3
- unique-view-5
- unique-view-10
- unique-view-30
example: impression
aggregation:
description: Returns the aggregation you selected.
Expand Down Expand Up @@ -16577,14 +16694,27 @@ components:
type: object
properties:
metric:
description: Returns the metric you selected.
description: Returns the metric and relevant parameters you selected.
type: string
enum:
- play
- play-rate
- start
- end
- impression
- ccv-average
- ccv-peak
- unique-ccv-average
- unique-ccv-peak
- view-3
- view-5
- view-10
- view-30
- unique-view
- unique-view-3
- unique-view-5
- unique-view-10
- unique-view-30
example: impression
breakdown:
description: Returns the dimension you selected.
Expand Down Expand Up @@ -16639,19 +16769,33 @@ components:
type: object
properties:
metric:
description: Returns the metric you selected.
description: Returns the metric and relevant parameters you selected.
type: string
enum:
- play
- play-rate
- start
- end
- impression
- ccv-average
- ccv-peak
- unique-ccv-average
- unique-ccv-peak
- view-3
- view-5
- view-10
- view-30
- unique-view
- unique-view-3
- unique-view-5
- unique-view-10
- unique-view-30
example: impression
interval:
description: Returns the interval you selected.
type: string
enum:
- minute
- hour
- day
example: day
Expand All @@ -16670,7 +16814,7 @@ components:
format: date-time
example: '2024-05-29T11:15:07+00:00'
data:
description: Returns an array of metrics and the timestamps .
description: Returns an array of metrics and the timestamps.
type: array
items:
type: object
Expand Down Expand Up @@ -17004,6 +17148,7 @@ components:
- `operatingSystem`: Returns analytics based on the operating system used by the viewers. Response values can include `windows`, `mac osx`, `android`, `ios`, `linux`.
- `browser`: Returns analytics based on the browser used by the viewers. Response values can include `chrome`, `firefox`, `edge`, `opera`.
- `tag`: Returns analytics for videos using this tag. This filter only accepts a single value and is case sensitive. Read more about tagging your videos [here](https://docs.api.video/vod/tags-metadata).
- `referrer`: Filters data based on the URL where the view is originating from. Accepts an empty string as a value to filter view events where no referrer is available.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe it's worth specifying two things:

  • this is an exact match; even forgetting a slash (for example) at the end of the referrer string will end up in no results showing up
  • the value of this filter needs to be URL encoded; for example https%3A%2F%2Fmy-awesome-videos.com

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added missing specifications. Thanks Mio!

in: query
required: false
example: filterBy[country]=FR&filterBy[operatingSystem]=windows&filterBy[browser][]=firefox&filterBy[browser][]=chrome&filterBy[tag]=Cool videos
Expand Down Expand Up @@ -17059,6 +17204,14 @@ components:
type: string
description: Returns analytics for videos using this tag. This filter only accepts a single value and is case sensitive. Read more about tagging your videos [here](https://docs.api.video/vod/tags-metadata).
example: Cool videos
referrer:
type: array
items:
type: string
format: uri
maxLength: 2048
description: Filters data based on the URL where the view is originating from. This filter parameter accepts an empty string to filter view events where no referrer is available.
example: ['http://my.list/of-videos']
current-page:
name: currentPage
in: query
Expand Down