{
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/youtube": {
          "description": "Manage your YouTube account"
        },
        "https://www.googleapis.com/auth/youtube.readonly": {
          "description": "View your YouTube account"
        },
        "https://www.googleapis.com/auth/youtubepartner": {
          "description": "View and manage your assets and associated content on YouTube"
        },
        "https://www.googleapis.com/auth/yt-analytics-monetary.readonly": {
          "description": "View monetary and non-monetary YouTube Analytics reports for your YouTube content"
        },
        "https://www.googleapis.com/auth/yt-analytics.readonly": {
          "description": "View YouTube Analytics reports for your YouTube content"
        }
      }
    }
  },
  "basePath": "/youtube/analytics/v1beta1/",
  "baseUrl": "https://www.googleapis.com/youtube/analytics/v1beta1/",
  "batchPath": "batch/youtubeAnalytics/v1beta1",
  "canonicalName": "YouTube Analytics",
  "description": "Retrieves your YouTube Analytics data.",
  "discoveryVersion": "v1",
  "documentationLink": "http://developers.google.com/youtube/analytics/",
  "etag": "\"Zkyw9ACJZUvcYmlFaKGChzhmtnE/1EQIGwwL3SKNyvnAKOnN_kA5s_Y\"",
  "icons": {
    "x16": "https://www.google.com/images/icons/product/youtube-16.png",
    "x32": "https://www.google.com/images/icons/product/youtube-32.png"
  },
  "id": "youtubeAnalytics:v1beta1",
  "kind": "discovery#restDescription",
  "labels": [
    "deprecated"
  ],
  "name": "youtubeAnalytics",
  "ownerDomain": "google.com",
  "ownerName": "Google",
  "parameters": {
    "alt": {
      "default": "json",
      "description": "Data format for the response.",
      "enum": [
        "csv",
        "json"
      ],
      "enumDescriptions": [
        "Responses with Content-Type of text/csv",
        "Responses with Content-Type of application/json"
      ],
      "location": "query",
      "type": "string"
    },
    "fields": {
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query",
      "type": "string"
    },
    "key": {
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
      "location": "query",
      "type": "string"
    },
    "oauth_token": {
      "description": "OAuth 2.0 token for the current user.",
      "location": "query",
      "type": "string"
    },
    "prettyPrint": {
      "default": "true",
      "description": "Returns response with indentations and line breaks.",
      "location": "query",
      "type": "boolean"
    },
    "quotaUser": {
      "description": "An opaque string that represents a user for quota purposes. Must not exceed 40 characters.",
      "location": "query",
      "type": "string"
    },
    "userIp": {
      "description": "Deprecated. Please use quotaUser instead.",
      "location": "query",
      "type": "string"
    }
  },
  "protocol": "rest",
  "resources": {
    "groupItems": {
      "methods": {
        "delete": {
          "description": "Removes an item from a group.",
          "httpMethod": "DELETE",
          "id": "youtubeAnalytics.groupItems.delete",
          "parameterOrder": [
            "id"
          ],
          "parameters": {
            "id": {
              "description": "The id parameter specifies the YouTube group item ID for the group that is being deleted.",
              "location": "query",
              "required": true,
              "type": "string"
            },
            "onBehalfOfContentOwner": {
              "description": "Note: This parameter is intended exclusively for YouTube content partners.\n\nThe onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query",
              "type": "string"
            }
          },
          "path": "groupItems",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtubepartner"
          ]
        },
        "insert": {
          "description": "Creates a group item.",
          "httpMethod": "POST",
          "id": "youtubeAnalytics.groupItems.insert",
          "parameters": {
            "onBehalfOfContentOwner": {
              "description": "Note: This parameter is intended exclusively for YouTube content partners.\n\nThe onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query",
              "type": "string"
            }
          },
          "path": "groupItems",
          "request": {
            "$ref": "GroupItem"
          },
          "response": {
            "$ref": "GroupItem"
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtubepartner"
          ]
        },
        "list": {
          "description": "Returns a collection of group items that match the API request parameters.",
          "httpMethod": "GET",
          "id": "youtubeAnalytics.groupItems.list",
          "parameterOrder": [
            "groupId"
          ],
          "parameters": {
            "groupId": {
              "description": "The id parameter specifies the unique ID of the group for which you want to retrieve group items.",
              "location": "query",
              "required": true,
              "type": "string"
            },
            "onBehalfOfContentOwner": {
              "description": "Note: This parameter is intended exclusively for YouTube content partners.\n\nThe onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query",
              "type": "string"
            }
          },
          "path": "groupItems",
          "response": {
            "$ref": "GroupItemListResponse"
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.readonly",
            "https://www.googleapis.com/auth/youtubepartner",
            "https://www.googleapis.com/auth/yt-analytics.readonly"
          ]
        }
      }
    },
    "groups": {
      "methods": {
        "delete": {
          "description": "Deletes a group.",
          "httpMethod": "DELETE",
          "id": "youtubeAnalytics.groups.delete",
          "parameterOrder": [
            "id"
          ],
          "parameters": {
            "id": {
              "description": "The id parameter specifies the YouTube group ID for the group that is being deleted.",
              "location": "query",
              "required": true,
              "type": "string"
            },
            "onBehalfOfContentOwner": {
              "description": "Note: This parameter is intended exclusively for YouTube content partners.\n\nThe onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query",
              "type": "string"
            }
          },
          "path": "groups",
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtubepartner"
          ]
        },
        "insert": {
          "description": "Creates a group.",
          "httpMethod": "POST",
          "id": "youtubeAnalytics.groups.insert",
          "parameters": {
            "onBehalfOfContentOwner": {
              "description": "Note: This parameter is intended exclusively for YouTube content partners.\n\nThe onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query",
              "type": "string"
            }
          },
          "path": "groups",
          "request": {
            "$ref": "Group"
          },
          "response": {
            "$ref": "Group"
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtubepartner"
          ]
        },
        "list": {
          "description": "Returns a collection of groups that match the API request parameters. For example, you can retrieve all groups that the authenticated user owns, or you can retrieve one or more groups by their unique IDs.",
          "httpMethod": "GET",
          "id": "youtubeAnalytics.groups.list",
          "parameters": {
            "id": {
              "description": "The id parameter specifies a comma-separated list of the YouTube group ID(s) for the resource(s) that are being retrieved. In a group resource, the id property specifies the group's YouTube group ID.",
              "location": "query",
              "type": "string"
            },
            "mine": {
              "description": "Set this parameter's value to true to instruct the API to only return groups owned by the authenticated user.",
              "location": "query",
              "type": "boolean"
            },
            "onBehalfOfContentOwner": {
              "description": "Note: This parameter is intended exclusively for YouTube content partners.\n\nThe onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query",
              "type": "string"
            },
            "pageToken": {
              "description": "The pageToken parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken property identifies the next page that can be retrieved.",
              "location": "query",
              "type": "string"
            }
          },
          "path": "groups",
          "response": {
            "$ref": "GroupListResponse"
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.readonly",
            "https://www.googleapis.com/auth/youtubepartner",
            "https://www.googleapis.com/auth/yt-analytics.readonly"
          ]
        },
        "update": {
          "description": "Modifies a group. For example, you could change a group's title.",
          "httpMethod": "PUT",
          "id": "youtubeAnalytics.groups.update",
          "parameters": {
            "onBehalfOfContentOwner": {
              "description": "Note: This parameter is intended exclusively for YouTube content partners.\n\nThe onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner.",
              "location": "query",
              "type": "string"
            }
          },
          "path": "groups",
          "request": {
            "$ref": "Group"
          },
          "response": {
            "$ref": "Group"
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtubepartner"
          ]
        }
      }
    },
    "reports": {
      "methods": {
        "query": {
          "description": "Retrieve your YouTube Analytics reports.",
          "httpMethod": "GET",
          "id": "youtubeAnalytics.reports.query",
          "parameterOrder": [
            "ids",
            "start-date",
            "end-date",
            "metrics"
          ],
          "parameters": {
            "currency": {
              "description": "The currency to which financial metrics should be converted. The default is US Dollar (USD). If the result contains no financial metrics, this flag will be ignored. Responds with an error if the specified currency is not recognized.",
              "location": "query",
              "pattern": "[A-Z]{3}",
              "type": "string"
            },
            "dimensions": {
              "description": "A comma-separated list of YouTube Analytics dimensions, such as views or ageGroup,gender. See the Available Reports document for a list of the reports that you can retrieve and the dimensions used for those reports. Also see the Dimensions document for definitions of those dimensions.",
              "location": "query",
              "pattern": "[0-9a-zA-Z,]+",
              "type": "string"
            },
            "end-date": {
              "description": "The end date for fetching YouTube Analytics data. The value should be in YYYY-MM-DD format.",
              "location": "query",
              "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2}",
              "required": true,
              "type": "string"
            },
            "filters": {
              "description": "A list of filters that should be applied when retrieving YouTube Analytics data. The Available Reports document identifies the dimensions that can be used to filter each report, and the Dimensions document defines those dimensions. If a request uses multiple filters, join them together with a semicolon (;), and the returned result table will satisfy both filters. For example, a filters parameter value of video==dMH0bHeiRNg;country==IT restricts the result set to include data for the given video in Italy.",
              "location": "query",
              "type": "string"
            },
            "ids": {
              "description": "Identifies the YouTube channel or content owner for which you are retrieving YouTube Analytics data.\n- To request data for a YouTube user, set the ids parameter value to channel==CHANNEL_ID, where CHANNEL_ID specifies the unique YouTube channel ID.\n- To request data for a YouTube CMS content owner, set the ids parameter value to contentOwner==OWNER_NAME, where OWNER_NAME is the CMS name of the content owner.",
              "location": "query",
              "pattern": "[a-zA-Z]+==[a-zA-Z0-9_+-]+",
              "required": true,
              "type": "string"
            },
            "include-historical-channel-data": {
              "description": "If set to true historical data (i.e. channel data from before the linking of the channel to the content owner) will be retrieved.",
              "location": "query",
              "type": "boolean"
            },
            "max-results": {
              "description": "The maximum number of rows to include in the response.",
              "format": "int32",
              "location": "query",
              "minimum": "1",
              "type": "integer"
            },
            "metrics": {
              "description": "A comma-separated list of YouTube Analytics metrics, such as views or likes,dislikes. See the Available Reports document for a list of the reports that you can retrieve and the metrics available in each report, and see the Metrics document for definitions of those metrics.",
              "location": "query",
              "pattern": "[0-9a-zA-Z,]+",
              "required": true,
              "type": "string"
            },
            "sort": {
              "description": "A comma-separated list of dimensions or metrics that determine the sort order for YouTube Analytics data. By default the sort order is ascending. The '-' prefix causes descending sort order.",
              "location": "query",
              "pattern": "[-0-9a-zA-Z,]+",
              "type": "string"
            },
            "start-date": {
              "description": "The start date for fetching YouTube Analytics data. The value should be in YYYY-MM-DD format.",
              "location": "query",
              "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2}",
              "required": true,
              "type": "string"
            },
            "start-index": {
              "description": "An index of the first entity to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter (one-based, inclusive).",
              "format": "int32",
              "location": "query",
              "minimum": "1",
              "type": "integer"
            }
          },
          "path": "reports",
          "response": {
            "$ref": "ResultTable"
          },
          "scopes": [
            "https://www.googleapis.com/auth/youtube",
            "https://www.googleapis.com/auth/youtube.readonly",
            "https://www.googleapis.com/auth/yt-analytics-monetary.readonly",
            "https://www.googleapis.com/auth/yt-analytics.readonly"
          ]
        }
      }
    }
  },
  "revision": "20180430",
  "rootUrl": "https://www.googleapis.com/",
  "schemas": {
    "Group": {
      "id": "Group",
      "properties": {
        "contentDetails": {
          "properties": {
            "itemCount": {
              "format": "uint64",
              "type": "string"
            },
            "itemType": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "etag": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "kind": {
          "default": "youtube#group",
          "type": "string"
        },
        "snippet": {
          "properties": {
            "publishedAt": {
              "format": "date-time",
              "type": "string"
            },
            "title": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "GroupItem": {
      "id": "GroupItem",
      "properties": {
        "etag": {
          "type": "string"
        },
        "groupId": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "kind": {
          "default": "youtube#groupItem",
          "type": "string"
        },
        "resource": {
          "properties": {
            "id": {
              "type": "string"
            },
            "kind": {
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "GroupItemListResponse": {
      "description": "A paginated list of grouList resources returned in response to a youtubeAnalytics.groupApi.list request.",
      "id": "GroupItemListResponse",
      "properties": {
        "etag": {
          "type": "string"
        },
        "items": {
          "items": {
            "$ref": "GroupItem"
          },
          "type": "array"
        },
        "kind": {
          "default": "youtube#groupItemListResponse",
          "type": "string"
        }
      },
      "type": "object"
    },
    "GroupListResponse": {
      "description": "A paginated list of grouList resources returned in response to a youtubeAnalytics.groupApi.list request.",
      "id": "GroupListResponse",
      "properties": {
        "etag": {
          "type": "string"
        },
        "items": {
          "items": {
            "$ref": "Group"
          },
          "type": "array"
        },
        "kind": {
          "default": "youtube#groupListResponse",
          "type": "string"
        },
        "nextPageToken": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "ResultTable": {
      "description": "Contains a single result table. The table is returned as an array of rows that contain the values for the cells of the table. Depending on the metric or dimension, the cell can contain a string (video ID, country code) or a number (number of views or number of likes).",
      "id": "ResultTable",
      "properties": {
        "columnHeaders": {
          "description": "This value specifies information about the data returned in the rows fields. Each item in the columnHeaders list identifies a field returned in the rows value, which contains a list of comma-delimited data. The columnHeaders list will begin with the dimensions specified in the API request, which will be followed by the metrics specified in the API request. The order of both dimensions and metrics will match the ordering in the API request. For example, if the API request contains the parameters dimensions=ageGroup,gender\u0026metrics=viewerPercentage, the API response will return columns in this order: ageGroup,gender,viewerPercentage.",
          "items": {
            "properties": {
              "columnType": {
                "description": "The type of the column (DIMENSION or METRIC).",
                "type": "string"
              },
              "dataType": {
                "description": "The type of the data in the column (STRING, INTEGER, FLOAT, etc.).",
                "type": "string"
              },
              "name": {
                "description": "The name of the dimension or metric.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "kind": {
          "default": "youtubeAnalytics#resultTable",
          "description": "This value specifies the type of data included in the API response. For the query method, the kind property value will be youtubeAnalytics#resultTable.",
          "type": "string"
        },
        "rows": {
          "description": "The list contains all rows of the result table. Each item in the list is an array that contains comma-delimited data corresponding to a single row of data. The order of the comma-delimited data fields will match the order of the columns listed in the columnHeaders field. If no data is available for the given query, the rows element will be omitted from the response. The response for a query with the day dimension will not contain rows for the most recent days.",
          "items": {
            "items": {
              "type": "any"
            },
            "type": "array"
          },
          "type": "array"
        }
      },
      "type": "object"
    }
  },
  "servicePath": "youtube/analytics/v1beta1/",
  "title": "YouTube Analytics API",
  "version": "v1beta1"
}