-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Google YouTube Analytics SDK.
--   
--   Retrieves your YouTube Analytics data.
--   
--   <i>Warning:</i> This is an experimental prototype/preview release
--   which is still under exploratory development and not intended for
--   public use, caveat emptor!
--   
--   This library is compatible with version <tt>v1</tt> of the API.
@package gogol-youtube-analytics
@version 0.3.0


module Network.Google.YouTubeAnalytics.Types

-- | Default request referring to version <tt>v1</tt> of the YouTube
--   Analytics API. This contains the host and root path used as a starting
--   point for constructing service requests.
youTubeAnalyticsService :: ServiceConfig

-- | Manage your YouTube account
youTubeScope :: Proxy '["https://www.googleapis.com/auth/youtube"]

-- | View YouTube Analytics reports for your YouTube content
youTubeAnalyticsReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/yt-analytics.readonly"]

-- | View and manage your assets and associated content on YouTube
youTubePartnerScope :: Proxy '["https://www.googleapis.com/auth/youtubepartner"]

-- | View monetary and non-monetary YouTube Analytics reports for your
--   YouTube content
youTubeAnalyticsMonetaryReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/yt-analytics-monetary.readonly"]

-- | View your YouTube account
youTubeReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/youtube.readonly"]
data GroupContentDetails

-- | Creates a value of <a>GroupContentDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gcdItemType</a></li>
--   <li><a>gcdItemCount</a></li>
--   </ul>
groupContentDetails :: GroupContentDetails
gcdItemType :: Lens' GroupContentDetails (Maybe Text)
gcdItemCount :: Lens' GroupContentDetails (Maybe Word64)
data Group

-- | Creates a value of <a>Group</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gEtag</a></li>
--   <li><a>gSnippet</a></li>
--   <li><a>gKind</a></li>
--   <li><a>gContentDetails</a></li>
--   <li><a>gId</a></li>
--   </ul>
group' :: Group
gEtag :: Lens' Group (Maybe Text)
gSnippet :: Lens' Group (Maybe GroupSnippet)
gKind :: Lens' Group Text
gContentDetails :: Lens' Group (Maybe GroupContentDetails)
gId :: Lens' Group (Maybe Text)
data GroupItemResource

-- | Creates a value of <a>GroupItemResource</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>girKind</a></li>
--   <li><a>girId</a></li>
--   </ul>
groupItemResource :: GroupItemResource
girKind :: Lens' GroupItemResource (Maybe Text)
girId :: Lens' GroupItemResource (Maybe Text)
data ResultTableColumnHeadersItem

-- | Creates a value of <a>ResultTableColumnHeadersItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rtchiColumnType</a></li>
--   <li><a>rtchiName</a></li>
--   <li><a>rtchiDataType</a></li>
--   </ul>
resultTableColumnHeadersItem :: ResultTableColumnHeadersItem

-- | The type of the column (DIMENSION or METRIC).
rtchiColumnType :: Lens' ResultTableColumnHeadersItem (Maybe Text)

-- | The name of the dimension or metric.
rtchiName :: Lens' ResultTableColumnHeadersItem (Maybe Text)

-- | The type of the data in the column (STRING, INTEGER, FLOAT, etc.).
rtchiDataType :: Lens' ResultTableColumnHeadersItem (Maybe Text)

-- | 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).
--   
--   <i>See:</i> <a>resultTable</a> smart constructor.
data ResultTable

-- | Creates a value of <a>ResultTable</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rtKind</a></li>
--   <li><a>rtRows</a></li>
--   <li><a>rtColumnHeaders</a></li>
--   </ul>
resultTable :: ResultTable

-- | This value specifies the type of data included in the API response.
--   For the query method, the kind property value will be
--   youtubeAnalytics#resultTable.
rtKind :: Lens' ResultTable Text

-- | 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.
rtRows :: Lens' ResultTable [[JSONValue]]

-- | 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&amp;metrics=viewerPercentage, the API
--   response will return columns in this order:
--   ageGroup,gender,viewerPercentage.
rtColumnHeaders :: Lens' ResultTable [ResultTableColumnHeadersItem]
data GroupSnippet

-- | Creates a value of <a>GroupSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gsPublishedAt</a></li>
--   <li><a>gsTitle</a></li>
--   </ul>
groupSnippet :: GroupSnippet
gsPublishedAt :: Lens' GroupSnippet (Maybe UTCTime)
gsTitle :: Lens' GroupSnippet (Maybe Text)
data GroupItem

-- | Creates a value of <a>GroupItem</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>giEtag</a></li>
--   <li><a>giKind</a></li>
--   <li><a>giResource</a></li>
--   <li><a>giGroupId</a></li>
--   <li><a>giId</a></li>
--   </ul>
groupItem :: GroupItem
giEtag :: Lens' GroupItem (Maybe Text)
giKind :: Lens' GroupItem Text
giResource :: Lens' GroupItem (Maybe GroupItemResource)
giGroupId :: Lens' GroupItem (Maybe Text)
giId :: Lens' GroupItem (Maybe Text)

-- | A paginated list of grouList resources returned in response to a
--   youtubeAnalytics.groupApi.list request.
--   
--   <i>See:</i> <a>groupItemListResponse</a> smart constructor.
data GroupItemListResponse

-- | Creates a value of <a>GroupItemListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gilrEtag</a></li>
--   <li><a>gilrKind</a></li>
--   <li><a>gilrItems</a></li>
--   </ul>
groupItemListResponse :: GroupItemListResponse
gilrEtag :: Lens' GroupItemListResponse (Maybe Text)
gilrKind :: Lens' GroupItemListResponse Text
gilrItems :: Lens' GroupItemListResponse [GroupItem]

-- | A paginated list of grouList resources returned in response to a
--   youtubeAnalytics.groupApi.list request.
--   
--   <i>See:</i> <a>groupListResponse</a> smart constructor.
data GroupListResponse

-- | Creates a value of <a>GroupListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>glrEtag</a></li>
--   <li><a>glrNextPageToken</a></li>
--   <li><a>glrKind</a></li>
--   <li><a>glrItems</a></li>
--   </ul>
groupListResponse :: GroupListResponse
glrEtag :: Lens' GroupListResponse (Maybe Text)
glrNextPageToken :: Lens' GroupListResponse (Maybe Text)
glrKind :: Lens' GroupListResponse Text
glrItems :: Lens' GroupListResponse [Group]


-- | Retrieve your YouTube Analytics reports.
--   
--   <i>See:</i> <a>YouTube Analytics API Reference</a> for
--   <tt>youtubeAnalytics.reports.query</tt>.
module Network.Google.Resource.YouTubeAnalytics.Reports.Query

-- | A resource alias for <tt>youtubeAnalytics.reports.query</tt> method
--   which the <a>ReportsQuery</a> request conforms to.
type ReportsQueryResource = "youtube" :> ("analytics" :> ("v1" :> ("reports" :> (QueryParam "ids" Text :> (QueryParam "start-date" Text :> (QueryParam "end-date" Text :> (QueryParam "metrics" Text :> (QueryParam "filters" Text :> (QueryParam "currency" Text :> (QueryParam "sort" Text :> (QueryParam "dimensions" Text :> (QueryParam "start-index" (Textual Int32) :> (QueryParam "max-results" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ResultTable))))))))))))))

-- | Creates a value of <a>ReportsQuery</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rqMetrics</a></li>
--   <li><a>rqFilters</a></li>
--   <li><a>rqIds</a></li>
--   <li><a>rqEndDate</a></li>
--   <li><a>rqCurrency</a></li>
--   <li><a>rqSort</a></li>
--   <li><a>rqDimensions</a></li>
--   <li><a>rqStartIndex</a></li>
--   <li><a>rqMaxResults</a></li>
--   <li><a>rqStartDate</a></li>
--   </ul>
reportsQuery :: Text -> Text -> Text -> Text -> ReportsQuery

-- | Retrieve your YouTube Analytics reports.
--   
--   <i>See:</i> <a>reportsQuery</a> smart constructor.
data ReportsQuery

-- | 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.
rqMetrics :: Lens' ReportsQuery Text

-- | 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.
rqFilters :: Lens' ReportsQuery (Maybe Text)

-- | Identifies the YouTube channel or content owner for which you are
--   retrieving YouTube Analytics data. - 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. - 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.
rqIds :: Lens' ReportsQuery Text

-- | The end date for fetching YouTube Analytics data. The value should be
--   in YYYY-MM-DD format.
rqEndDate :: Lens' ReportsQuery Text

-- | 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.
rqCurrency :: Lens' ReportsQuery (Maybe Text)

-- | 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.
rqSort :: Lens' ReportsQuery (Maybe Text)

-- | 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.
rqDimensions :: Lens' ReportsQuery (Maybe Text)

-- | An index of the first entity to retrieve. Use this parameter as a
--   pagination mechanism along with the max-results parameter (one-based,
--   inclusive).
rqStartIndex :: Lens' ReportsQuery (Maybe Int32)

-- | The maximum number of rows to include in the response.
rqMaxResults :: Lens' ReportsQuery (Maybe Int32)

-- | The start date for fetching YouTube Analytics data. The value should
--   be in YYYY-MM-DD format.
rqStartDate :: Lens' ReportsQuery Text
instance GHC.Generics.Generic Network.Google.Resource.YouTubeAnalytics.Reports.Query.ReportsQuery
instance Data.Data.Data Network.Google.Resource.YouTubeAnalytics.Reports.Query.ReportsQuery
instance GHC.Show.Show Network.Google.Resource.YouTubeAnalytics.Reports.Query.ReportsQuery
instance GHC.Classes.Eq Network.Google.Resource.YouTubeAnalytics.Reports.Query.ReportsQuery
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTubeAnalytics.Reports.Query.ReportsQuery


-- | Modifies a group. For example, you could change a group's title.
--   
--   <i>See:</i> <a>YouTube Analytics API Reference</a> for
--   <tt>youtubeAnalytics.groups.update</tt>.
module Network.Google.Resource.YouTubeAnalytics.Groups.Update

-- | A resource alias for <tt>youtubeAnalytics.groups.update</tt> method
--   which the <a>GroupsUpdate</a> request conforms to.
type GroupsUpdateResource = "youtube" :> ("analytics" :> ("v1" :> ("groups" :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Group :> Put '[JSON] Group))))))

-- | Creates a value of <a>GroupsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>guPayload</a></li>
--   <li><a>guOnBehalfOfContentOwner</a></li>
--   </ul>
groupsUpdate :: Group -> GroupsUpdate

-- | Modifies a group. For example, you could change a group's title.
--   
--   <i>See:</i> <a>groupsUpdate</a> smart constructor.
data GroupsUpdate

-- | Multipart request metadata.
guPayload :: Lens' GroupsUpdate Group

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The 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.
guOnBehalfOfContentOwner :: Lens' GroupsUpdate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTubeAnalytics.Groups.Update.GroupsUpdate
instance Data.Data.Data Network.Google.Resource.YouTubeAnalytics.Groups.Update.GroupsUpdate
instance GHC.Show.Show Network.Google.Resource.YouTubeAnalytics.Groups.Update.GroupsUpdate
instance GHC.Classes.Eq Network.Google.Resource.YouTubeAnalytics.Groups.Update.GroupsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTubeAnalytics.Groups.Update.GroupsUpdate


-- | 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.
--   
--   <i>See:</i> <a>YouTube Analytics API Reference</a> for
--   <tt>youtubeAnalytics.groups.list</tt>.
module Network.Google.Resource.YouTubeAnalytics.Groups.List

-- | A resource alias for <tt>youtubeAnalytics.groups.list</tt> method
--   which the <a>GroupsList</a> request conforms to.
type GroupsListResource = "youtube" :> ("analytics" :> ("v1" :> ("groups" :> (QueryParam "mine" Bool :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "id" Text :> (QueryParam "pageToken" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] GroupListResponse))))))))

-- | Creates a value of <a>GroupsList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>glMine</a></li>
--   <li><a>glOnBehalfOfContentOwner</a></li>
--   <li><a>glId</a></li>
--   <li><a>glPageToken</a></li>
--   </ul>
groupsList :: GroupsList

-- | 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.
--   
--   <i>See:</i> <a>groupsList</a> smart constructor.
data GroupsList

-- | Set this parameter's value to true to instruct the API to only return
--   groups owned by the authenticated user.
glMine :: Lens' GroupsList (Maybe Bool)

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The 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.
glOnBehalfOfContentOwner :: Lens' GroupsList (Maybe Text)

-- | 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.
glId :: Lens' GroupsList (Maybe Text)

-- | 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.
glPageToken :: Lens' GroupsList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTubeAnalytics.Groups.List.GroupsList
instance Data.Data.Data Network.Google.Resource.YouTubeAnalytics.Groups.List.GroupsList
instance GHC.Show.Show Network.Google.Resource.YouTubeAnalytics.Groups.List.GroupsList
instance GHC.Classes.Eq Network.Google.Resource.YouTubeAnalytics.Groups.List.GroupsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTubeAnalytics.Groups.List.GroupsList


-- | Creates a group.
--   
--   <i>See:</i> <a>YouTube Analytics API Reference</a> for
--   <tt>youtubeAnalytics.groups.insert</tt>.
module Network.Google.Resource.YouTubeAnalytics.Groups.Insert

-- | A resource alias for <tt>youtubeAnalytics.groups.insert</tt> method
--   which the <a>GroupsInsert</a> request conforms to.
type GroupsInsertResource = "youtube" :> ("analytics" :> ("v1" :> ("groups" :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Group :> Post '[JSON] Group))))))

-- | Creates a value of <a>GroupsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>giPayload</a></li>
--   <li><a>giOnBehalfOfContentOwner</a></li>
--   </ul>
groupsInsert :: Group -> GroupsInsert

-- | Creates a group.
--   
--   <i>See:</i> <a>groupsInsert</a> smart constructor.
data GroupsInsert

-- | Multipart request metadata.
giPayload :: Lens' GroupsInsert Group

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The 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.
giOnBehalfOfContentOwner :: Lens' GroupsInsert (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTubeAnalytics.Groups.Insert.GroupsInsert
instance Data.Data.Data Network.Google.Resource.YouTubeAnalytics.Groups.Insert.GroupsInsert
instance GHC.Show.Show Network.Google.Resource.YouTubeAnalytics.Groups.Insert.GroupsInsert
instance GHC.Classes.Eq Network.Google.Resource.YouTubeAnalytics.Groups.Insert.GroupsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTubeAnalytics.Groups.Insert.GroupsInsert


-- | Deletes a group.
--   
--   <i>See:</i> <a>YouTube Analytics API Reference</a> for
--   <tt>youtubeAnalytics.groups.delete</tt>.
module Network.Google.Resource.YouTubeAnalytics.Groups.Delete

-- | A resource alias for <tt>youtubeAnalytics.groups.delete</tt> method
--   which the <a>GroupsDelete</a> request conforms to.
type GroupsDeleteResource = "youtube" :> ("analytics" :> ("v1" :> ("groups" :> (QueryParam "id" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))

-- | Creates a value of <a>GroupsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gdOnBehalfOfContentOwner</a></li>
--   <li><a>gdId</a></li>
--   </ul>
groupsDelete :: Text -> GroupsDelete

-- | Deletes a group.
--   
--   <i>See:</i> <a>groupsDelete</a> smart constructor.
data GroupsDelete

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The 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.
gdOnBehalfOfContentOwner :: Lens' GroupsDelete (Maybe Text)

-- | The id parameter specifies the YouTube group ID for the group that is
--   being deleted.
gdId :: Lens' GroupsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.YouTubeAnalytics.Groups.Delete.GroupsDelete
instance Data.Data.Data Network.Google.Resource.YouTubeAnalytics.Groups.Delete.GroupsDelete
instance GHC.Show.Show Network.Google.Resource.YouTubeAnalytics.Groups.Delete.GroupsDelete
instance GHC.Classes.Eq Network.Google.Resource.YouTubeAnalytics.Groups.Delete.GroupsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTubeAnalytics.Groups.Delete.GroupsDelete


-- | Returns a collection of group items that match the API request
--   parameters.
--   
--   <i>See:</i> <a>YouTube Analytics API Reference</a> for
--   <tt>youtubeAnalytics.groupItems.list</tt>.
module Network.Google.Resource.YouTubeAnalytics.GroupItems.List

-- | A resource alias for <tt>youtubeAnalytics.groupItems.list</tt> method
--   which the <a>GroupItemsList</a> request conforms to.
type GroupItemsListResource = "youtube" :> ("analytics" :> ("v1" :> ("groupItems" :> (QueryParam "groupId" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] GroupItemListResponse))))))

-- | Creates a value of <a>GroupItemsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gilOnBehalfOfContentOwner</a></li>
--   <li><a>gilGroupId</a></li>
--   </ul>
groupItemsList :: Text -> GroupItemsList

-- | Returns a collection of group items that match the API request
--   parameters.
--   
--   <i>See:</i> <a>groupItemsList</a> smart constructor.
data GroupItemsList

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The 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.
gilOnBehalfOfContentOwner :: Lens' GroupItemsList (Maybe Text)

-- | The id parameter specifies the unique ID of the group for which you
--   want to retrieve group items.
gilGroupId :: Lens' GroupItemsList Text
instance GHC.Generics.Generic Network.Google.Resource.YouTubeAnalytics.GroupItems.List.GroupItemsList
instance Data.Data.Data Network.Google.Resource.YouTubeAnalytics.GroupItems.List.GroupItemsList
instance GHC.Show.Show Network.Google.Resource.YouTubeAnalytics.GroupItems.List.GroupItemsList
instance GHC.Classes.Eq Network.Google.Resource.YouTubeAnalytics.GroupItems.List.GroupItemsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTubeAnalytics.GroupItems.List.GroupItemsList


-- | Creates a group item.
--   
--   <i>See:</i> <a>YouTube Analytics API Reference</a> for
--   <tt>youtubeAnalytics.groupItems.insert</tt>.
module Network.Google.Resource.YouTubeAnalytics.GroupItems.Insert

-- | A resource alias for <tt>youtubeAnalytics.groupItems.insert</tt>
--   method which the <a>GroupItemsInsert</a> request conforms to.
type GroupItemsInsertResource = "youtube" :> ("analytics" :> ("v1" :> ("groupItems" :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] GroupItem :> Post '[JSON] GroupItem))))))

-- | Creates a value of <a>GroupItemsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>giiPayload</a></li>
--   <li><a>giiOnBehalfOfContentOwner</a></li>
--   </ul>
groupItemsInsert :: GroupItem -> GroupItemsInsert

-- | Creates a group item.
--   
--   <i>See:</i> <a>groupItemsInsert</a> smart constructor.
data GroupItemsInsert

-- | Multipart request metadata.
giiPayload :: Lens' GroupItemsInsert GroupItem

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The 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.
giiOnBehalfOfContentOwner :: Lens' GroupItemsInsert (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.YouTubeAnalytics.GroupItems.Insert.GroupItemsInsert
instance Data.Data.Data Network.Google.Resource.YouTubeAnalytics.GroupItems.Insert.GroupItemsInsert
instance GHC.Show.Show Network.Google.Resource.YouTubeAnalytics.GroupItems.Insert.GroupItemsInsert
instance GHC.Classes.Eq Network.Google.Resource.YouTubeAnalytics.GroupItems.Insert.GroupItemsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTubeAnalytics.GroupItems.Insert.GroupItemsInsert


-- | Removes an item from a group.
--   
--   <i>See:</i> <a>YouTube Analytics API Reference</a> for
--   <tt>youtubeAnalytics.groupItems.delete</tt>.
module Network.Google.Resource.YouTubeAnalytics.GroupItems.Delete

-- | A resource alias for <tt>youtubeAnalytics.groupItems.delete</tt>
--   method which the <a>GroupItemsDelete</a> request conforms to.
type GroupItemsDeleteResource = "youtube" :> ("analytics" :> ("v1" :> ("groupItems" :> (QueryParam "id" Text :> (QueryParam "onBehalfOfContentOwner" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))

-- | Creates a value of <a>GroupItemsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gidOnBehalfOfContentOwner</a></li>
--   <li><a>gidId</a></li>
--   </ul>
groupItemsDelete :: Text -> GroupItemsDelete

-- | Removes an item from a group.
--   
--   <i>See:</i> <a>groupItemsDelete</a> smart constructor.
data GroupItemsDelete

-- | Note: This parameter is intended exclusively for YouTube content
--   partners. The 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.
gidOnBehalfOfContentOwner :: Lens' GroupItemsDelete (Maybe Text)

-- | The id parameter specifies the YouTube group item ID for the group
--   that is being deleted.
gidId :: Lens' GroupItemsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.YouTubeAnalytics.GroupItems.Delete.GroupItemsDelete
instance Data.Data.Data Network.Google.Resource.YouTubeAnalytics.GroupItems.Delete.GroupItemsDelete
instance GHC.Show.Show Network.Google.Resource.YouTubeAnalytics.GroupItems.Delete.GroupItemsDelete
instance GHC.Classes.Eq Network.Google.Resource.YouTubeAnalytics.GroupItems.Delete.GroupItemsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.YouTubeAnalytics.GroupItems.Delete.GroupItemsDelete


-- | Retrieves your YouTube Analytics data.
--   
--   <i>See:</i> <a>YouTube Analytics API Reference</a>
module Network.Google.YouTubeAnalytics

-- | Default request referring to version <tt>v1</tt> of the YouTube
--   Analytics API. This contains the host and root path used as a starting
--   point for constructing service requests.
youTubeAnalyticsService :: ServiceConfig

-- | Manage your YouTube account
youTubeScope :: Proxy '["https://www.googleapis.com/auth/youtube"]

-- | View YouTube Analytics reports for your YouTube content
youTubeAnalyticsReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/yt-analytics.readonly"]

-- | View and manage your assets and associated content on YouTube
youTubePartnerScope :: Proxy '["https://www.googleapis.com/auth/youtubepartner"]

-- | View monetary and non-monetary YouTube Analytics reports for your
--   YouTube content
youTubeAnalyticsMonetaryReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/yt-analytics-monetary.readonly"]

-- | View your YouTube account
youTubeReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/youtube.readonly"]

-- | Represents the entirety of the methods and resources available for the
--   YouTube Analytics API service.
type YouTubeAnalyticsAPI = GroupsInsertResource :<|> (GroupsListResource :<|> (GroupsDeleteResource :<|> (GroupsUpdateResource :<|> (ReportsQueryResource :<|> (GroupItemsInsertResource :<|> (GroupItemsListResource :<|> GroupItemsDeleteResource))))))
data GroupContentDetails

-- | Creates a value of <a>GroupContentDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gcdItemType</a></li>
--   <li><a>gcdItemCount</a></li>
--   </ul>
groupContentDetails :: GroupContentDetails
gcdItemType :: Lens' GroupContentDetails (Maybe Text)
gcdItemCount :: Lens' GroupContentDetails (Maybe Word64)
data Group

-- | Creates a value of <a>Group</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gEtag</a></li>
--   <li><a>gSnippet</a></li>
--   <li><a>gKind</a></li>
--   <li><a>gContentDetails</a></li>
--   <li><a>gId</a></li>
--   </ul>
group' :: Group
gEtag :: Lens' Group (Maybe Text)
gSnippet :: Lens' Group (Maybe GroupSnippet)
gKind :: Lens' Group Text
gContentDetails :: Lens' Group (Maybe GroupContentDetails)
gId :: Lens' Group (Maybe Text)
data GroupItemResource

-- | Creates a value of <a>GroupItemResource</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>girKind</a></li>
--   <li><a>girId</a></li>
--   </ul>
groupItemResource :: GroupItemResource
girKind :: Lens' GroupItemResource (Maybe Text)
girId :: Lens' GroupItemResource (Maybe Text)
data ResultTableColumnHeadersItem

-- | Creates a value of <a>ResultTableColumnHeadersItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rtchiColumnType</a></li>
--   <li><a>rtchiName</a></li>
--   <li><a>rtchiDataType</a></li>
--   </ul>
resultTableColumnHeadersItem :: ResultTableColumnHeadersItem

-- | The type of the column (DIMENSION or METRIC).
rtchiColumnType :: Lens' ResultTableColumnHeadersItem (Maybe Text)

-- | The name of the dimension or metric.
rtchiName :: Lens' ResultTableColumnHeadersItem (Maybe Text)

-- | The type of the data in the column (STRING, INTEGER, FLOAT, etc.).
rtchiDataType :: Lens' ResultTableColumnHeadersItem (Maybe Text)

-- | 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).
--   
--   <i>See:</i> <a>resultTable</a> smart constructor.
data ResultTable

-- | Creates a value of <a>ResultTable</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rtKind</a></li>
--   <li><a>rtRows</a></li>
--   <li><a>rtColumnHeaders</a></li>
--   </ul>
resultTable :: ResultTable

-- | This value specifies the type of data included in the API response.
--   For the query method, the kind property value will be
--   youtubeAnalytics#resultTable.
rtKind :: Lens' ResultTable Text

-- | 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.
rtRows :: Lens' ResultTable [[JSONValue]]

-- | 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&amp;metrics=viewerPercentage, the API
--   response will return columns in this order:
--   ageGroup,gender,viewerPercentage.
rtColumnHeaders :: Lens' ResultTable [ResultTableColumnHeadersItem]
data GroupSnippet

-- | Creates a value of <a>GroupSnippet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gsPublishedAt</a></li>
--   <li><a>gsTitle</a></li>
--   </ul>
groupSnippet :: GroupSnippet
gsPublishedAt :: Lens' GroupSnippet (Maybe UTCTime)
gsTitle :: Lens' GroupSnippet (Maybe Text)
data GroupItem

-- | Creates a value of <a>GroupItem</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>giEtag</a></li>
--   <li><a>giKind</a></li>
--   <li><a>giResource</a></li>
--   <li><a>giGroupId</a></li>
--   <li><a>giId</a></li>
--   </ul>
groupItem :: GroupItem
giEtag :: Lens' GroupItem (Maybe Text)
giKind :: Lens' GroupItem Text
giResource :: Lens' GroupItem (Maybe GroupItemResource)
giGroupId :: Lens' GroupItem (Maybe Text)
giId :: Lens' GroupItem (Maybe Text)

-- | A paginated list of grouList resources returned in response to a
--   youtubeAnalytics.groupApi.list request.
--   
--   <i>See:</i> <a>groupItemListResponse</a> smart constructor.
data GroupItemListResponse

-- | Creates a value of <a>GroupItemListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gilrEtag</a></li>
--   <li><a>gilrKind</a></li>
--   <li><a>gilrItems</a></li>
--   </ul>
groupItemListResponse :: GroupItemListResponse
gilrEtag :: Lens' GroupItemListResponse (Maybe Text)
gilrKind :: Lens' GroupItemListResponse Text
gilrItems :: Lens' GroupItemListResponse [GroupItem]

-- | A paginated list of grouList resources returned in response to a
--   youtubeAnalytics.groupApi.list request.
--   
--   <i>See:</i> <a>groupListResponse</a> smart constructor.
data GroupListResponse

-- | Creates a value of <a>GroupListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>glrEtag</a></li>
--   <li><a>glrNextPageToken</a></li>
--   <li><a>glrKind</a></li>
--   <li><a>glrItems</a></li>
--   </ul>
groupListResponse :: GroupListResponse
glrEtag :: Lens' GroupListResponse (Maybe Text)
glrNextPageToken :: Lens' GroupListResponse (Maybe Text)
glrKind :: Lens' GroupListResponse Text
glrItems :: Lens' GroupListResponse [Group]
