use conjure_http::endpoint;
/// Data sources are data input to runs, including databases, CSV, video, and streaming data. They contain channels that represent the series data.
/// The DataSource Service is responsible for indexing and searching channels across data sources.
#[conjure_http::conjure_client(name = "DataSourceService")]
pub trait DataSourceService<
    #[response_body]
    I: Iterator<
            Item = Result<conjure_http::private::Bytes, conjure_http::private::Error>,
        >,
> {
    /// Returns channels that match the search criteria. Results are sorted by similarity score.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/search-channels",
        name = "searchChannels",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn search_channels(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        query: &super::super::super::super::objects::datasource::api::SearchChannelsRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::SearchChannelsResponse,
        conjure_http::private::Error,
    >;
    /// Returns channels that match the search criteria. Results are sorted by similarity score.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/search-filtered-channels",
        name = "searchFilteredChannels",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn search_filtered_channels(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        query: &super::super::super::super::objects::datasource::api::SearchFilteredChannelsRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::SearchFilteredChannelsResponse,
        conjure_http::private::Error,
    >;
    /// Returns only channels that are direct children of the parent. Returns results sorted alphabetically.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/search-hierarchical-channels",
        name = "searchHierarchicalChannels",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn search_hierarchical_channels(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        query: &super::super::super::super::objects::datasource::api::SearchHierarchicalChannelsRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::SearchHierarchicalChannelsResponse,
        conjure_http::private::Error,
    >;
    /// Indexes the channel prefix tree for a specified data source. This operation constructs a prefix tree from the
    /// channels available in the data source.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/index-channel-prefix-tree",
        name = "indexChannelPrefixTree",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn index_channel_prefix_tree(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::IndexChannelPrefixTreeRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::ChannelPrefixTree,
        conjure_http::private::Error,
    >;
    /// Clears the channel hierarchy delimiter for a specified data source, removing any previously indexed
    /// prefix tree. After calling this endpoint, the data source will no longer have hierarchical channel browsing
    /// enabled until a new delimiter is set via indexChannelPrefixTree.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/clear-channel-prefix-tree",
        name = "clearChannelPrefixTree",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    fn clear_channel_prefix_tree(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::ClearChannelPrefixTreeRequest,
    ) -> Result<(), conjure_http::private::Error>;
    /// Returns the channel prefix tree for each of the specified data sources. If the tree for a data source has not
    /// been indexed, it will be omitted from the map.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/batch-get-channel-prefix-tree",
        name = "batchGetChannelPrefixTrees",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn batch_get_channel_prefix_trees(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::BatchGetChannelPrefixTreeRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::BatchGetChannelPrefixTreeResponse,
        conjure_http::private::Error,
    >;
    /// Returns the the set of all tag keys and their values that are available for the specified channel given an
    /// initial set of filters.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/get-available-tags",
        name = "getAvailableTagsForChannel",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn get_available_tags_for_channel(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::GetAvailableTagsForChannelRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::GetAvailableTagsForChannelResponse,
        conjure_http::private::Error,
    >;
    /// Returns the maximum data timestamps for the specified data scopes. Responses are returned
    /// in the same order as requests.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/get-data-scope-bounds",
        name = "getDataScopeBounds",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn get_data_scope_bounds(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::BatchGetDataScopeBoundsRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::BatchGetDataScopeBoundsResponse,
        conjure_http::private::Error,
    >;
    /// Returns available tag values for a given data source for a set of tag keys. For Nominal data sources, a time
    /// range can be provided to filter tag values to those present within the months spanned by the range. If no
    /// time range is provided, this defaults to the last month. For external data sources, the range must not be
    /// specified, as all tag values are returned.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/{dataSourceRid}/get-tags",
        name = "getTagValuesForDataSource",
        accept = conjure_http::client::conjure::CollectionResponseDeserializer
    )]
    fn get_tag_values_for_data_source(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "dataSourceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        data_source_rid: &conjure_object::ResourceIdentifier,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::GetTagValuesForDataSourceRequest,
    ) -> Result<
        std::collections::BTreeMap<String, std::collections::BTreeSet<String>>,
        conjure_http::private::Error,
    >;
    /// Paged endpoint returning the set of all tag keys that are available for the specified channel given an
    /// initial set of filters.
    /// If any tag filters are supplied, their tag keys are omitted from the result.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/{dataSourceRid}/get-tag-keys",
        name = "getAvailableTagKeys",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn get_available_tag_keys(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "dataSourceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        data_source_rid: &conjure_object::ResourceIdentifier,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::GetAvailableTagKeysRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::GetAvailableTagKeysResponse,
        conjure_http::private::Error,
    >;
    /// Paged endpoint returning the set of all tag values that are available for the specified tag and datasource
    /// given an initial set of filters.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/{dataSourceRid}/get-tag-values",
        name = "getAvailableTagValues",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn get_available_tag_values(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "dataSourceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        data_source_rid: &conjure_object::ResourceIdentifier,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::GetAvailableTagValuesRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::GetAvailableTagValuesResponse,
        conjure_http::private::Error,
    >;
    /// Returns the set of all tag keys and their values for each specified channel given
    /// initial sets of filters. Each response corresponds positionally to the input request.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/batch-get-available-tags",
        name = "batchGetAvailableTagsForChannel",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn batch_get_available_tags_for_channel(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::BatchGetAvailableTagsForChannelRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::BatchGetAvailableTagsForChannelResponse,
        conjure_http::private::Error,
    >;
    /// Returns the number of distinct series matching each request's datasource, channel, range,
    /// and tag filters. Each response corresponds positionally to the input request.
    /// Returns empty seriesCount for non-Nominal datasources.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/batch-get-series-count",
        name = "batchGetSeriesCount",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn batch_get_series_count(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::BatchGetSeriesCountRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::BatchGetSeriesCountResponse,
        conjure_http::private::Error,
    >;
    /// Returns (channel, full-tag-map) entries for a specific channel in a dataset.
    /// If tags are provided, each entry must match all provided key/value pairs; extra tags may still be present.
    /// Only numeric-data series are returned; video series are excluded.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/get-matching-channels-with-tags",
        name = "getMatchingChannelsWithTags",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn get_matching_channels_with_tags(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::GetMatchingChannelsWithTagsRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::GetMatchingChannelsWithTagsResponse,
        conjure_http::private::Error,
    >;
}
/// Data sources are data input to runs, including databases, CSV, video, and streaming data. They contain channels that represent the series data.
/// The DataSource Service is responsible for indexing and searching channels across data sources.
#[conjure_http::conjure_client(name = "DataSourceService")]
pub trait AsyncDataSourceService<
    #[response_body]
    I: conjure_http::private::Stream<
            Item = Result<conjure_http::private::Bytes, conjure_http::private::Error>,
        >,
> {
    /// Returns channels that match the search criteria. Results are sorted by similarity score.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/search-channels",
        name = "searchChannels",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn search_channels(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        query: &super::super::super::super::objects::datasource::api::SearchChannelsRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::SearchChannelsResponse,
        conjure_http::private::Error,
    >;
    /// Returns channels that match the search criteria. Results are sorted by similarity score.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/search-filtered-channels",
        name = "searchFilteredChannels",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn search_filtered_channels(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        query: &super::super::super::super::objects::datasource::api::SearchFilteredChannelsRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::SearchFilteredChannelsResponse,
        conjure_http::private::Error,
    >;
    /// Returns only channels that are direct children of the parent. Returns results sorted alphabetically.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/search-hierarchical-channels",
        name = "searchHierarchicalChannels",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn search_hierarchical_channels(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        query: &super::super::super::super::objects::datasource::api::SearchHierarchicalChannelsRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::SearchHierarchicalChannelsResponse,
        conjure_http::private::Error,
    >;
    /// Indexes the channel prefix tree for a specified data source. This operation constructs a prefix tree from the
    /// channels available in the data source.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/index-channel-prefix-tree",
        name = "indexChannelPrefixTree",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn index_channel_prefix_tree(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::IndexChannelPrefixTreeRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::ChannelPrefixTree,
        conjure_http::private::Error,
    >;
    /// Clears the channel hierarchy delimiter for a specified data source, removing any previously indexed
    /// prefix tree. After calling this endpoint, the data source will no longer have hierarchical channel browsing
    /// enabled until a new delimiter is set via indexChannelPrefixTree.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/clear-channel-prefix-tree",
        name = "clearChannelPrefixTree",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn clear_channel_prefix_tree(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::ClearChannelPrefixTreeRequest,
    ) -> Result<(), conjure_http::private::Error>;
    /// Returns the channel prefix tree for each of the specified data sources. If the tree for a data source has not
    /// been indexed, it will be omitted from the map.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/batch-get-channel-prefix-tree",
        name = "batchGetChannelPrefixTrees",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn batch_get_channel_prefix_trees(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::BatchGetChannelPrefixTreeRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::BatchGetChannelPrefixTreeResponse,
        conjure_http::private::Error,
    >;
    /// Returns the the set of all tag keys and their values that are available for the specified channel given an
    /// initial set of filters.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/get-available-tags",
        name = "getAvailableTagsForChannel",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn get_available_tags_for_channel(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::GetAvailableTagsForChannelRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::GetAvailableTagsForChannelResponse,
        conjure_http::private::Error,
    >;
    /// Returns the maximum data timestamps for the specified data scopes. Responses are returned
    /// in the same order as requests.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/get-data-scope-bounds",
        name = "getDataScopeBounds",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn get_data_scope_bounds(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::BatchGetDataScopeBoundsRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::BatchGetDataScopeBoundsResponse,
        conjure_http::private::Error,
    >;
    /// Returns available tag values for a given data source for a set of tag keys. For Nominal data sources, a time
    /// range can be provided to filter tag values to those present within the months spanned by the range. If no
    /// time range is provided, this defaults to the last month. For external data sources, the range must not be
    /// specified, as all tag values are returned.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/{dataSourceRid}/get-tags",
        name = "getTagValuesForDataSource",
        accept = conjure_http::client::conjure::CollectionResponseDeserializer
    )]
    async fn get_tag_values_for_data_source(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "dataSourceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        data_source_rid: &conjure_object::ResourceIdentifier,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::GetTagValuesForDataSourceRequest,
    ) -> Result<
        std::collections::BTreeMap<String, std::collections::BTreeSet<String>>,
        conjure_http::private::Error,
    >;
    /// Paged endpoint returning the set of all tag keys that are available for the specified channel given an
    /// initial set of filters.
    /// If any tag filters are supplied, their tag keys are omitted from the result.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/{dataSourceRid}/get-tag-keys",
        name = "getAvailableTagKeys",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn get_available_tag_keys(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "dataSourceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        data_source_rid: &conjure_object::ResourceIdentifier,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::GetAvailableTagKeysRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::GetAvailableTagKeysResponse,
        conjure_http::private::Error,
    >;
    /// Paged endpoint returning the set of all tag values that are available for the specified tag and datasource
    /// given an initial set of filters.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/{dataSourceRid}/get-tag-values",
        name = "getAvailableTagValues",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn get_available_tag_values(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "dataSourceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        data_source_rid: &conjure_object::ResourceIdentifier,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::GetAvailableTagValuesRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::GetAvailableTagValuesResponse,
        conjure_http::private::Error,
    >;
    /// Returns the set of all tag keys and their values for each specified channel given
    /// initial sets of filters. Each response corresponds positionally to the input request.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/batch-get-available-tags",
        name = "batchGetAvailableTagsForChannel",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn batch_get_available_tags_for_channel(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::BatchGetAvailableTagsForChannelRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::BatchGetAvailableTagsForChannelResponse,
        conjure_http::private::Error,
    >;
    /// Returns the number of distinct series matching each request's datasource, channel, range,
    /// and tag filters. Each response corresponds positionally to the input request.
    /// Returns empty seriesCount for non-Nominal datasources.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/batch-get-series-count",
        name = "batchGetSeriesCount",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn batch_get_series_count(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::BatchGetSeriesCountRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::BatchGetSeriesCountResponse,
        conjure_http::private::Error,
    >;
    /// Returns (channel, full-tag-map) entries for a specific channel in a dataset.
    /// If tags are provided, each entry must match all provided key/value pairs; extra tags may still be present.
    /// Only numeric-data series are returned; video series are excluded.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/get-matching-channels-with-tags",
        name = "getMatchingChannelsWithTags",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn get_matching_channels_with_tags(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::GetMatchingChannelsWithTagsRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::GetMatchingChannelsWithTagsResponse,
        conjure_http::private::Error,
    >;
}
/// Data sources are data input to runs, including databases, CSV, video, and streaming data. They contain channels that represent the series data.
/// The DataSource Service is responsible for indexing and searching channels across data sources.
#[conjure_http::conjure_client(name = "DataSourceService", local)]
pub trait LocalAsyncDataSourceService<
    #[response_body]
    I: conjure_http::private::Stream<
            Item = Result<conjure_http::private::Bytes, conjure_http::private::Error>,
        >,
> {
    /// Returns channels that match the search criteria. Results are sorted by similarity score.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/search-channels",
        name = "searchChannels",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn search_channels(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        query: &super::super::super::super::objects::datasource::api::SearchChannelsRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::SearchChannelsResponse,
        conjure_http::private::Error,
    >;
    /// Returns channels that match the search criteria. Results are sorted by similarity score.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/search-filtered-channels",
        name = "searchFilteredChannels",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn search_filtered_channels(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        query: &super::super::super::super::objects::datasource::api::SearchFilteredChannelsRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::SearchFilteredChannelsResponse,
        conjure_http::private::Error,
    >;
    /// Returns only channels that are direct children of the parent. Returns results sorted alphabetically.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/search-hierarchical-channels",
        name = "searchHierarchicalChannels",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn search_hierarchical_channels(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        query: &super::super::super::super::objects::datasource::api::SearchHierarchicalChannelsRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::SearchHierarchicalChannelsResponse,
        conjure_http::private::Error,
    >;
    /// Indexes the channel prefix tree for a specified data source. This operation constructs a prefix tree from the
    /// channels available in the data source.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/index-channel-prefix-tree",
        name = "indexChannelPrefixTree",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn index_channel_prefix_tree(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::IndexChannelPrefixTreeRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::ChannelPrefixTree,
        conjure_http::private::Error,
    >;
    /// Clears the channel hierarchy delimiter for a specified data source, removing any previously indexed
    /// prefix tree. After calling this endpoint, the data source will no longer have hierarchical channel browsing
    /// enabled until a new delimiter is set via indexChannelPrefixTree.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/clear-channel-prefix-tree",
        name = "clearChannelPrefixTree",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn clear_channel_prefix_tree(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::ClearChannelPrefixTreeRequest,
    ) -> Result<(), conjure_http::private::Error>;
    /// Returns the channel prefix tree for each of the specified data sources. If the tree for a data source has not
    /// been indexed, it will be omitted from the map.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/batch-get-channel-prefix-tree",
        name = "batchGetChannelPrefixTrees",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn batch_get_channel_prefix_trees(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::BatchGetChannelPrefixTreeRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::BatchGetChannelPrefixTreeResponse,
        conjure_http::private::Error,
    >;
    /// Returns the the set of all tag keys and their values that are available for the specified channel given an
    /// initial set of filters.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/get-available-tags",
        name = "getAvailableTagsForChannel",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn get_available_tags_for_channel(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::GetAvailableTagsForChannelRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::GetAvailableTagsForChannelResponse,
        conjure_http::private::Error,
    >;
    /// Returns the maximum data timestamps for the specified data scopes. Responses are returned
    /// in the same order as requests.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/get-data-scope-bounds",
        name = "getDataScopeBounds",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn get_data_scope_bounds(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::BatchGetDataScopeBoundsRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::BatchGetDataScopeBoundsResponse,
        conjure_http::private::Error,
    >;
    /// Returns available tag values for a given data source for a set of tag keys. For Nominal data sources, a time
    /// range can be provided to filter tag values to those present within the months spanned by the range. If no
    /// time range is provided, this defaults to the last month. For external data sources, the range must not be
    /// specified, as all tag values are returned.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/{dataSourceRid}/get-tags",
        name = "getTagValuesForDataSource",
        accept = conjure_http::client::conjure::CollectionResponseDeserializer
    )]
    async fn get_tag_values_for_data_source(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "dataSourceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        data_source_rid: &conjure_object::ResourceIdentifier,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::GetTagValuesForDataSourceRequest,
    ) -> Result<
        std::collections::BTreeMap<String, std::collections::BTreeSet<String>>,
        conjure_http::private::Error,
    >;
    /// Paged endpoint returning the set of all tag keys that are available for the specified channel given an
    /// initial set of filters.
    /// If any tag filters are supplied, their tag keys are omitted from the result.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/{dataSourceRid}/get-tag-keys",
        name = "getAvailableTagKeys",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn get_available_tag_keys(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "dataSourceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        data_source_rid: &conjure_object::ResourceIdentifier,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::GetAvailableTagKeysRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::GetAvailableTagKeysResponse,
        conjure_http::private::Error,
    >;
    /// Paged endpoint returning the set of all tag values that are available for the specified tag and datasource
    /// given an initial set of filters.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/{dataSourceRid}/get-tag-values",
        name = "getAvailableTagValues",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn get_available_tag_values(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "dataSourceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        data_source_rid: &conjure_object::ResourceIdentifier,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::GetAvailableTagValuesRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::GetAvailableTagValuesResponse,
        conjure_http::private::Error,
    >;
    /// Returns the set of all tag keys and their values for each specified channel given
    /// initial sets of filters. Each response corresponds positionally to the input request.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/batch-get-available-tags",
        name = "batchGetAvailableTagsForChannel",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn batch_get_available_tags_for_channel(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::BatchGetAvailableTagsForChannelRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::BatchGetAvailableTagsForChannelResponse,
        conjure_http::private::Error,
    >;
    /// Returns the number of distinct series matching each request's datasource, channel, range,
    /// and tag filters. Each response corresponds positionally to the input request.
    /// Returns empty seriesCount for non-Nominal datasources.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/batch-get-series-count",
        name = "batchGetSeriesCount",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn batch_get_series_count(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::BatchGetSeriesCountRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::BatchGetSeriesCountResponse,
        conjure_http::private::Error,
    >;
    /// Returns (channel, full-tag-map) entries for a specific channel in a dataset.
    /// If tags are provided, each entry must match all provided key/value pairs; extra tags may still be present.
    /// Only numeric-data series are returned; video series are excluded.
    #[endpoint(
        method = POST,
        path = "/data-source/v1/data-sources/get-matching-channels-with-tags",
        name = "getMatchingChannelsWithTags",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn get_matching_channels_with_tags(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::datasource::api::GetMatchingChannelsWithTagsRequest,
    ) -> Result<
        super::super::super::super::objects::datasource::api::GetMatchingChannelsWithTagsResponse,
        conjure_http::private::Error,
    >;
}
