use conjure_http::endpoint;
/// An asset is a physical entity within an organization, such as a vehicle or ground station. Assets are comprised
/// of some metadata about the data, as well as a set of data scopes that define the data belonging to the asset. API
/// endpoints allow for CRUD operations on asset objects.
#[conjure_http::conjure_client(name = "AssetService")]
pub trait AssetService<
    #[response_body]
    I: Iterator<
            Item = Result<conjure_http::private::Bytes, conjure_http::private::Error>,
        >,
> {
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset",
        name = "createAsset",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn create_asset(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        details: &super::super::super::super::objects::scout::asset::api::CreateAssetRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::Asset,
        conjure_http::private::Error,
    >;
    #[endpoint(
        method = PUT,
        path = "/scout/v1/asset/{rid}",
        name = "updateAsset",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn update_asset(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        details: &super::super::super::super::objects::scout::asset::api::UpdateAssetRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::Asset,
        conjure_http::private::Error,
    >;
    /// Adds data scopes to an asset.
    ///
    /// Throws if the asset already has data scopes with data scope names matching those in the request.
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset/{assetRid}/data-sources",
        name = "addDataScopesToAsset",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn add_data_scopes_to_asset(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "assetRid", encoder = conjure_http::client::conjure::PlainEncoder)]
        asset_rid: &super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::scout::asset::api::AddDataScopesToAssetRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::Asset,
        conjure_http::private::Error,
    >;
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset/multiple",
        name = "getAssets",
        accept = conjure_http::client::conjure::CollectionResponseDeserializer
    )]
    fn get_assets(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        rids: &std::collections::BTreeSet<
            super::super::super::super::objects::scout::rids::api::AssetRid,
        >,
    ) -> Result<
        std::collections::BTreeMap<
            super::super::super::super::objects::scout::rids::api::AssetRid,
            super::super::super::super::objects::scout::asset::api::Asset,
        >,
        conjure_http::private::Error,
    >;
    /// Returns all assets with given data source as a data scope.
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset/by-data-source/{dataSourceRid}",
        name = "getAssetsByDataSource",
        accept = conjure_http::client::conjure::CollectionResponseDeserializer
    )]
    fn get_assets_by_data_source(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "dataSourceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        data_source_rid: &conjure_object::ResourceIdentifier,
    ) -> Result<
        std::collections::BTreeSet<
            super::super::super::super::objects::scout::asset::api::Asset,
        >,
        conjure_http::private::Error,
    >;
    #[endpoint(
        method = POST,
        path = "/scout/v1/archive/{rid}",
        name = "archive",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    fn archive(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::AssetRid,
        #[query(
            name = "includeLinkedWorkbooks",
            encoder = conjure_http::client::conjure::PlainSeqEncoder
        )]
        include_linked_workbooks: Option<bool>,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(
        method = POST,
        path = "/scout/v1/unarchive/{rid}",
        name = "unarchive",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    fn unarchive(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::AssetRid,
        #[query(
            name = "includeLinkedWorkbooks",
            encoder = conjure_http::client::conjure::PlainSeqEncoder
        )]
        include_linked_workbooks: Option<bool>,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(
        method = POST,
        path = "/scout/v1/search-assets",
        name = "searchAssets",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn search_assets(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        search_assets_request: &super::super::super::super::objects::scout::asset::api::SearchAssetsRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::SearchAssetsResponse,
        conjure_http::private::Error,
    >;
    /// Batch edits metadata across multiple assets. Supports rename/merge for labels and properties.
    /// If more than 1000 assets are targeted, this endpoint will throw a 400.
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset/metadata/batch-edit",
        name = "batchEditAssetMetadata",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn batch_edit_asset_metadata(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::scout::asset::api::BatchEditAssetMetadataRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::BatchEditAssetMetadataResponse,
        conjure_http::private::Error,
    >;
    #[endpoint(
        method = POST,
        path = "/scout/v1/search-types",
        name = "searchTypes",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn search_types(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        search_types_request: &super::super::super::super::objects::scout::asset::api::SearchTypesRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::SearchTypesResponse,
        conjure_http::private::Error,
    >;
    /// Update the attachments associated with an asset.
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset/{rid}/attachments",
        name = "updateAssetAttachments",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    fn update_asset_attachments(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::scout::asset::api::UpdateAttachmentsRequest,
    ) -> Result<(), conjure_http::private::Error>;
    /// Update the ref names for the data scopes on the asset. This update will also be applied on all associated
    /// workbooks.
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset/{rid}/ref-names",
        name = "updateAssetRefNames",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    fn update_asset_ref_names(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::scout::asset::api::UpdateAssetRefNamesRequest,
    ) -> Result<(), conjure_http::private::Error>;
    /// Creates a new type.
    #[endpoint(
        method = POST,
        path = "/scout/v1/type",
        name = "createType",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn create_type(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::scout::asset::api::CreateTypeRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::Type,
        conjure_http::private::Error,
    >;
    /// Updates a type. Will throw unless all assets that reference the type pass the updated type check.
    #[endpoint(
        method = PUT,
        path = "/scout/v1/type/{typeRid}",
        name = "updateType",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn update_type(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "typeRid", encoder = conjure_http::client::conjure::PlainEncoder)]
        type_rid: &super::super::super::super::objects::scout::rids::api::TypeRid,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::scout::asset::api::UpdateTypeRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::Type,
        conjure_http::private::Error,
    >;
    #[endpoint(
        method = POST,
        path = "/scout/v1/type/multiple",
        name = "getTypes",
        accept = conjure_http::client::conjure::CollectionResponseDeserializer
    )]
    fn get_types(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        rids: &std::collections::BTreeSet<
            super::super::super::super::objects::scout::rids::api::TypeRid,
        >,
    ) -> Result<
        std::collections::BTreeMap<
            super::super::super::super::objects::scout::rids::api::TypeRid,
            super::super::super::super::objects::scout::asset::api::Type,
        >,
        conjure_http::private::Error,
    >;
    #[endpoint(
        method = POST,
        path = "/scout/v1/type/datasource",
        name = "getTypesForDatasource",
        accept = conjure_http::client::conjure::CollectionResponseDeserializer
    )]
    fn get_types_for_datasource(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        datasource_rid: &conjure_object::ResourceIdentifier,
    ) -> Result<
        Vec<super::super::super::super::objects::scout::asset::api::Type>,
        conjure_http::private::Error,
    >;
    /// Deletes a type. The type must not be referenced by any assets.
    #[endpoint(
        method = DELETE,
        path = "/scout/v1/type/{rid}",
        name = "deleteType",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    fn delete_type(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::TypeRid,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(
        method = POST,
        path = "/scout/v1/type/archive/{rid}",
        name = "archiveType",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    fn archive_type(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::TypeRid,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(
        method = POST,
        path = "/scout/v1/type/unarchive/{rid}",
        name = "unarchiveType",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    fn unarchive_type(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::TypeRid,
    ) -> Result<(), conjure_http::private::Error>;
}
/// An asset is a physical entity within an organization, such as a vehicle or ground station. Assets are comprised
/// of some metadata about the data, as well as a set of data scopes that define the data belonging to the asset. API
/// endpoints allow for CRUD operations on asset objects.
#[conjure_http::conjure_client(name = "AssetService")]
pub trait AsyncAssetService<
    #[response_body]
    I: conjure_http::private::Stream<
            Item = Result<conjure_http::private::Bytes, conjure_http::private::Error>,
        >,
> {
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset",
        name = "createAsset",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn create_asset(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        details: &super::super::super::super::objects::scout::asset::api::CreateAssetRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::Asset,
        conjure_http::private::Error,
    >;
    #[endpoint(
        method = PUT,
        path = "/scout/v1/asset/{rid}",
        name = "updateAsset",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn update_asset(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        details: &super::super::super::super::objects::scout::asset::api::UpdateAssetRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::Asset,
        conjure_http::private::Error,
    >;
    /// Adds data scopes to an asset.
    ///
    /// Throws if the asset already has data scopes with data scope names matching those in the request.
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset/{assetRid}/data-sources",
        name = "addDataScopesToAsset",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn add_data_scopes_to_asset(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "assetRid", encoder = conjure_http::client::conjure::PlainEncoder)]
        asset_rid: &super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::scout::asset::api::AddDataScopesToAssetRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::Asset,
        conjure_http::private::Error,
    >;
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset/multiple",
        name = "getAssets",
        accept = conjure_http::client::conjure::CollectionResponseDeserializer
    )]
    async fn get_assets(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        rids: &std::collections::BTreeSet<
            super::super::super::super::objects::scout::rids::api::AssetRid,
        >,
    ) -> Result<
        std::collections::BTreeMap<
            super::super::super::super::objects::scout::rids::api::AssetRid,
            super::super::super::super::objects::scout::asset::api::Asset,
        >,
        conjure_http::private::Error,
    >;
    /// Returns all assets with given data source as a data scope.
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset/by-data-source/{dataSourceRid}",
        name = "getAssetsByDataSource",
        accept = conjure_http::client::conjure::CollectionResponseDeserializer
    )]
    async fn get_assets_by_data_source(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "dataSourceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        data_source_rid: &conjure_object::ResourceIdentifier,
    ) -> Result<
        std::collections::BTreeSet<
            super::super::super::super::objects::scout::asset::api::Asset,
        >,
        conjure_http::private::Error,
    >;
    #[endpoint(
        method = POST,
        path = "/scout/v1/archive/{rid}",
        name = "archive",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn archive(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::AssetRid,
        #[query(
            name = "includeLinkedWorkbooks",
            encoder = conjure_http::client::conjure::PlainSeqEncoder
        )]
        include_linked_workbooks: Option<bool>,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(
        method = POST,
        path = "/scout/v1/unarchive/{rid}",
        name = "unarchive",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn unarchive(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::AssetRid,
        #[query(
            name = "includeLinkedWorkbooks",
            encoder = conjure_http::client::conjure::PlainSeqEncoder
        )]
        include_linked_workbooks: Option<bool>,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(
        method = POST,
        path = "/scout/v1/search-assets",
        name = "searchAssets",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn search_assets(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        search_assets_request: &super::super::super::super::objects::scout::asset::api::SearchAssetsRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::SearchAssetsResponse,
        conjure_http::private::Error,
    >;
    /// Batch edits metadata across multiple assets. Supports rename/merge for labels and properties.
    /// If more than 1000 assets are targeted, this endpoint will throw a 400.
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset/metadata/batch-edit",
        name = "batchEditAssetMetadata",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn batch_edit_asset_metadata(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::scout::asset::api::BatchEditAssetMetadataRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::BatchEditAssetMetadataResponse,
        conjure_http::private::Error,
    >;
    #[endpoint(
        method = POST,
        path = "/scout/v1/search-types",
        name = "searchTypes",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn search_types(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        search_types_request: &super::super::super::super::objects::scout::asset::api::SearchTypesRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::SearchTypesResponse,
        conjure_http::private::Error,
    >;
    /// Update the attachments associated with an asset.
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset/{rid}/attachments",
        name = "updateAssetAttachments",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn update_asset_attachments(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::scout::asset::api::UpdateAttachmentsRequest,
    ) -> Result<(), conjure_http::private::Error>;
    /// Update the ref names for the data scopes on the asset. This update will also be applied on all associated
    /// workbooks.
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset/{rid}/ref-names",
        name = "updateAssetRefNames",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn update_asset_ref_names(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::scout::asset::api::UpdateAssetRefNamesRequest,
    ) -> Result<(), conjure_http::private::Error>;
    /// Creates a new type.
    #[endpoint(
        method = POST,
        path = "/scout/v1/type",
        name = "createType",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn create_type(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::scout::asset::api::CreateTypeRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::Type,
        conjure_http::private::Error,
    >;
    /// Updates a type. Will throw unless all assets that reference the type pass the updated type check.
    #[endpoint(
        method = PUT,
        path = "/scout/v1/type/{typeRid}",
        name = "updateType",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn update_type(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "typeRid", encoder = conjure_http::client::conjure::PlainEncoder)]
        type_rid: &super::super::super::super::objects::scout::rids::api::TypeRid,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::scout::asset::api::UpdateTypeRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::Type,
        conjure_http::private::Error,
    >;
    #[endpoint(
        method = POST,
        path = "/scout/v1/type/multiple",
        name = "getTypes",
        accept = conjure_http::client::conjure::CollectionResponseDeserializer
    )]
    async fn get_types(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        rids: &std::collections::BTreeSet<
            super::super::super::super::objects::scout::rids::api::TypeRid,
        >,
    ) -> Result<
        std::collections::BTreeMap<
            super::super::super::super::objects::scout::rids::api::TypeRid,
            super::super::super::super::objects::scout::asset::api::Type,
        >,
        conjure_http::private::Error,
    >;
    #[endpoint(
        method = POST,
        path = "/scout/v1/type/datasource",
        name = "getTypesForDatasource",
        accept = conjure_http::client::conjure::CollectionResponseDeserializer
    )]
    async fn get_types_for_datasource(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        datasource_rid: &conjure_object::ResourceIdentifier,
    ) -> Result<
        Vec<super::super::super::super::objects::scout::asset::api::Type>,
        conjure_http::private::Error,
    >;
    /// Deletes a type. The type must not be referenced by any assets.
    #[endpoint(
        method = DELETE,
        path = "/scout/v1/type/{rid}",
        name = "deleteType",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn delete_type(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::TypeRid,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(
        method = POST,
        path = "/scout/v1/type/archive/{rid}",
        name = "archiveType",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn archive_type(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::TypeRid,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(
        method = POST,
        path = "/scout/v1/type/unarchive/{rid}",
        name = "unarchiveType",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn unarchive_type(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::TypeRid,
    ) -> Result<(), conjure_http::private::Error>;
}
/// An asset is a physical entity within an organization, such as a vehicle or ground station. Assets are comprised
/// of some metadata about the data, as well as a set of data scopes that define the data belonging to the asset. API
/// endpoints allow for CRUD operations on asset objects.
#[conjure_http::conjure_client(name = "AssetService", local)]
pub trait LocalAsyncAssetService<
    #[response_body]
    I: conjure_http::private::Stream<
            Item = Result<conjure_http::private::Bytes, conjure_http::private::Error>,
        >,
> {
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset",
        name = "createAsset",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn create_asset(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        details: &super::super::super::super::objects::scout::asset::api::CreateAssetRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::Asset,
        conjure_http::private::Error,
    >;
    #[endpoint(
        method = PUT,
        path = "/scout/v1/asset/{rid}",
        name = "updateAsset",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn update_asset(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        details: &super::super::super::super::objects::scout::asset::api::UpdateAssetRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::Asset,
        conjure_http::private::Error,
    >;
    /// Adds data scopes to an asset.
    ///
    /// Throws if the asset already has data scopes with data scope names matching those in the request.
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset/{assetRid}/data-sources",
        name = "addDataScopesToAsset",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn add_data_scopes_to_asset(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "assetRid", encoder = conjure_http::client::conjure::PlainEncoder)]
        asset_rid: &super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::scout::asset::api::AddDataScopesToAssetRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::Asset,
        conjure_http::private::Error,
    >;
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset/multiple",
        name = "getAssets",
        accept = conjure_http::client::conjure::CollectionResponseDeserializer
    )]
    async fn get_assets(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        rids: &std::collections::BTreeSet<
            super::super::super::super::objects::scout::rids::api::AssetRid,
        >,
    ) -> Result<
        std::collections::BTreeMap<
            super::super::super::super::objects::scout::rids::api::AssetRid,
            super::super::super::super::objects::scout::asset::api::Asset,
        >,
        conjure_http::private::Error,
    >;
    /// Returns all assets with given data source as a data scope.
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset/by-data-source/{dataSourceRid}",
        name = "getAssetsByDataSource",
        accept = conjure_http::client::conjure::CollectionResponseDeserializer
    )]
    async fn get_assets_by_data_source(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "dataSourceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        data_source_rid: &conjure_object::ResourceIdentifier,
    ) -> Result<
        std::collections::BTreeSet<
            super::super::super::super::objects::scout::asset::api::Asset,
        >,
        conjure_http::private::Error,
    >;
    #[endpoint(
        method = POST,
        path = "/scout/v1/archive/{rid}",
        name = "archive",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn archive(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::AssetRid,
        #[query(
            name = "includeLinkedWorkbooks",
            encoder = conjure_http::client::conjure::PlainSeqEncoder
        )]
        include_linked_workbooks: Option<bool>,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(
        method = POST,
        path = "/scout/v1/unarchive/{rid}",
        name = "unarchive",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn unarchive(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::AssetRid,
        #[query(
            name = "includeLinkedWorkbooks",
            encoder = conjure_http::client::conjure::PlainSeqEncoder
        )]
        include_linked_workbooks: Option<bool>,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(
        method = POST,
        path = "/scout/v1/search-assets",
        name = "searchAssets",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn search_assets(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        search_assets_request: &super::super::super::super::objects::scout::asset::api::SearchAssetsRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::SearchAssetsResponse,
        conjure_http::private::Error,
    >;
    /// Batch edits metadata across multiple assets. Supports rename/merge for labels and properties.
    /// If more than 1000 assets are targeted, this endpoint will throw a 400.
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset/metadata/batch-edit",
        name = "batchEditAssetMetadata",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn batch_edit_asset_metadata(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::scout::asset::api::BatchEditAssetMetadataRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::BatchEditAssetMetadataResponse,
        conjure_http::private::Error,
    >;
    #[endpoint(
        method = POST,
        path = "/scout/v1/search-types",
        name = "searchTypes",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn search_types(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        search_types_request: &super::super::super::super::objects::scout::asset::api::SearchTypesRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::SearchTypesResponse,
        conjure_http::private::Error,
    >;
    /// Update the attachments associated with an asset.
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset/{rid}/attachments",
        name = "updateAssetAttachments",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn update_asset_attachments(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::scout::asset::api::UpdateAttachmentsRequest,
    ) -> Result<(), conjure_http::private::Error>;
    /// Update the ref names for the data scopes on the asset. This update will also be applied on all associated
    /// workbooks.
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset/{rid}/ref-names",
        name = "updateAssetRefNames",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn update_asset_ref_names(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::scout::asset::api::UpdateAssetRefNamesRequest,
    ) -> Result<(), conjure_http::private::Error>;
    /// Creates a new type.
    #[endpoint(
        method = POST,
        path = "/scout/v1/type",
        name = "createType",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn create_type(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::scout::asset::api::CreateTypeRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::Type,
        conjure_http::private::Error,
    >;
    /// Updates a type. Will throw unless all assets that reference the type pass the updated type check.
    #[endpoint(
        method = PUT,
        path = "/scout/v1/type/{typeRid}",
        name = "updateType",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn update_type(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "typeRid", encoder = conjure_http::client::conjure::PlainEncoder)]
        type_rid: &super::super::super::super::objects::scout::rids::api::TypeRid,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::objects::scout::asset::api::UpdateTypeRequest,
    ) -> Result<
        super::super::super::super::objects::scout::asset::api::Type,
        conjure_http::private::Error,
    >;
    #[endpoint(
        method = POST,
        path = "/scout/v1/type/multiple",
        name = "getTypes",
        accept = conjure_http::client::conjure::CollectionResponseDeserializer
    )]
    async fn get_types(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        rids: &std::collections::BTreeSet<
            super::super::super::super::objects::scout::rids::api::TypeRid,
        >,
    ) -> Result<
        std::collections::BTreeMap<
            super::super::super::super::objects::scout::rids::api::TypeRid,
            super::super::super::super::objects::scout::asset::api::Type,
        >,
        conjure_http::private::Error,
    >;
    #[endpoint(
        method = POST,
        path = "/scout/v1/type/datasource",
        name = "getTypesForDatasource",
        accept = conjure_http::client::conjure::CollectionResponseDeserializer
    )]
    async fn get_types_for_datasource(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        datasource_rid: &conjure_object::ResourceIdentifier,
    ) -> Result<
        Vec<super::super::super::super::objects::scout::asset::api::Type>,
        conjure_http::private::Error,
    >;
    /// Deletes a type. The type must not be referenced by any assets.
    #[endpoint(
        method = DELETE,
        path = "/scout/v1/type/{rid}",
        name = "deleteType",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn delete_type(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::TypeRid,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(
        method = POST,
        path = "/scout/v1/type/archive/{rid}",
        name = "archiveType",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn archive_type(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::TypeRid,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(
        method = POST,
        path = "/scout/v1/type/unarchive/{rid}",
        name = "unarchiveType",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn unarchive_type(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(name = "rid", encoder = conjure_http::client::conjure::PlainEncoder)]
        rid: &super::super::super::super::objects::scout::rids::api::TypeRid,
    ) -> Result<(), conjure_http::private::Error>;
}
