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_endpoints(name = "AssetService", use_legacy_error_serialization)]
pub trait AssetService {
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset",
        name = "createAsset",
        produces = conjure_http::server::StdResponseSerializer
    )]
    fn create_asset(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::StdResponseSerializer
    )]
    fn update_asset(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        rid: super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::StdResponseSerializer
    )]
    fn add_data_scopes_to_asset(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "assetRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "assetRid",
            safe
        )]
        asset_rid: super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::conjure::CollectionResponseSerializer
    )]
    fn get_assets(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer, safe)]
        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",
        produces = conjure_http::server::conjure::CollectionResponseSerializer
    )]
    fn get_assets_by_data_source(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "dataSourceRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "dataSourceRid"
        )]
        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")]
    fn archive(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        rid: super::super::super::super::objects::scout::rids::api::AssetRid,
        #[query(
            name = "includeLinkedWorkbooks",
            decoder = conjure_http::server::conjure::FromPlainOptionDecoder,
            log_as = "includeLinkedWorkbooks"
        )]
        include_linked_workbooks: Option<bool>,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(method = POST, path = "/scout/v1/unarchive/{rid}", name = "unarchive")]
    fn unarchive(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        rid: super::super::super::super::objects::scout::rids::api::AssetRid,
        #[query(
            name = "includeLinkedWorkbooks",
            decoder = conjure_http::server::conjure::FromPlainOptionDecoder,
            log_as = "includeLinkedWorkbooks"
        )]
        include_linked_workbooks: Option<bool>,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(
        method = POST,
        path = "/scout/v1/search-assets",
        name = "searchAssets",
        produces = conjure_http::server::StdResponseSerializer
    )]
    fn search_assets(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(
            deserializer = conjure_http::server::StdRequestDeserializer,
            log_as = "searchAssetsRequest"
        )]
        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",
        produces = conjure_http::server::StdResponseSerializer
    )]
    fn batch_edit_asset_metadata(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::StdResponseSerializer
    )]
    fn search_types(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(
            deserializer = conjure_http::server::StdRequestDeserializer,
            log_as = "searchTypesRequest"
        )]
        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"
    )]
    fn update_asset_attachments(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        rid: super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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"
    )]
    fn update_asset_ref_names(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        rid: super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::StdResponseSerializer
    )]
    fn create_type(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::StdResponseSerializer
    )]
    fn update_type(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "typeRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "typeRid",
            safe
        )]
        type_rid: super::super::super::super::objects::scout::rids::api::TypeRid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::conjure::CollectionResponseSerializer
    )]
    fn get_types(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer, safe)]
        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",
        produces = conjure_http::server::conjure::CollectionResponseSerializer
    )]
    fn get_types_for_datasource(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(
            deserializer = conjure_http::server::StdRequestDeserializer,
            log_as = "datasourceRid"
        )]
        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")]
    fn delete_type(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        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"
    )]
    fn archive_type(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        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"
    )]
    fn unarchive_type(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        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_endpoints(name = "AssetService", use_legacy_error_serialization)]
pub trait AsyncAssetService {
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset",
        name = "createAsset",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn create_asset(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn update_asset(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        rid: super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn add_data_scopes_to_asset(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "assetRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "assetRid",
            safe
        )]
        asset_rid: super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::conjure::CollectionResponseSerializer
    )]
    async fn get_assets(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer, safe)]
        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",
        produces = conjure_http::server::conjure::CollectionResponseSerializer
    )]
    async fn get_assets_by_data_source(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "dataSourceRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "dataSourceRid"
        )]
        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")]
    async fn archive(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        rid: super::super::super::super::objects::scout::rids::api::AssetRid,
        #[query(
            name = "includeLinkedWorkbooks",
            decoder = conjure_http::server::conjure::FromPlainOptionDecoder,
            log_as = "includeLinkedWorkbooks"
        )]
        include_linked_workbooks: Option<bool>,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(method = POST, path = "/scout/v1/unarchive/{rid}", name = "unarchive")]
    async fn unarchive(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        rid: super::super::super::super::objects::scout::rids::api::AssetRid,
        #[query(
            name = "includeLinkedWorkbooks",
            decoder = conjure_http::server::conjure::FromPlainOptionDecoder,
            log_as = "includeLinkedWorkbooks"
        )]
        include_linked_workbooks: Option<bool>,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(
        method = POST,
        path = "/scout/v1/search-assets",
        name = "searchAssets",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn search_assets(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(
            deserializer = conjure_http::server::StdRequestDeserializer,
            log_as = "searchAssetsRequest"
        )]
        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",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn batch_edit_asset_metadata(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn search_types(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(
            deserializer = conjure_http::server::StdRequestDeserializer,
            log_as = "searchTypesRequest"
        )]
        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"
    )]
    async fn update_asset_attachments(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        rid: super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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"
    )]
    async fn update_asset_ref_names(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        rid: super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn create_type(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn update_type(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "typeRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "typeRid",
            safe
        )]
        type_rid: super::super::super::super::objects::scout::rids::api::TypeRid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::conjure::CollectionResponseSerializer
    )]
    async fn get_types(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer, safe)]
        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",
        produces = conjure_http::server::conjure::CollectionResponseSerializer
    )]
    async fn get_types_for_datasource(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(
            deserializer = conjure_http::server::StdRequestDeserializer,
            log_as = "datasourceRid"
        )]
        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")]
    async fn delete_type(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        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"
    )]
    async fn archive_type(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        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"
    )]
    async fn unarchive_type(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        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_endpoints(
    name = "AssetService",
    use_legacy_error_serialization,
    local
)]
pub trait LocalAsyncAssetService {
    #[endpoint(
        method = POST,
        path = "/scout/v1/asset",
        name = "createAsset",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn create_asset(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn update_asset(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        rid: super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn add_data_scopes_to_asset(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "assetRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "assetRid",
            safe
        )]
        asset_rid: super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::conjure::CollectionResponseSerializer
    )]
    async fn get_assets(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer, safe)]
        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",
        produces = conjure_http::server::conjure::CollectionResponseSerializer
    )]
    async fn get_assets_by_data_source(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "dataSourceRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "dataSourceRid"
        )]
        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")]
    async fn archive(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        rid: super::super::super::super::objects::scout::rids::api::AssetRid,
        #[query(
            name = "includeLinkedWorkbooks",
            decoder = conjure_http::server::conjure::FromPlainOptionDecoder,
            log_as = "includeLinkedWorkbooks"
        )]
        include_linked_workbooks: Option<bool>,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(method = POST, path = "/scout/v1/unarchive/{rid}", name = "unarchive")]
    async fn unarchive(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        rid: super::super::super::super::objects::scout::rids::api::AssetRid,
        #[query(
            name = "includeLinkedWorkbooks",
            decoder = conjure_http::server::conjure::FromPlainOptionDecoder,
            log_as = "includeLinkedWorkbooks"
        )]
        include_linked_workbooks: Option<bool>,
    ) -> Result<(), conjure_http::private::Error>;
    #[endpoint(
        method = POST,
        path = "/scout/v1/search-assets",
        name = "searchAssets",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn search_assets(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(
            deserializer = conjure_http::server::StdRequestDeserializer,
            log_as = "searchAssetsRequest"
        )]
        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",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn batch_edit_asset_metadata(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn search_types(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(
            deserializer = conjure_http::server::StdRequestDeserializer,
            log_as = "searchTypesRequest"
        )]
        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"
    )]
    async fn update_asset_attachments(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        rid: super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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"
    )]
    async fn update_asset_ref_names(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        rid: super::super::super::super::objects::scout::rids::api::AssetRid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn create_type(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::StdResponseSerializer
    )]
    async fn update_type(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "typeRid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            log_as = "typeRid",
            safe
        )]
        type_rid: super::super::super::super::objects::scout::rids::api::TypeRid,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
        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",
        produces = conjure_http::server::conjure::CollectionResponseSerializer
    )]
    async fn get_types(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(deserializer = conjure_http::server::StdRequestDeserializer, safe)]
        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",
        produces = conjure_http::server::conjure::CollectionResponseSerializer
    )]
    async fn get_types_for_datasource(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[body(
            deserializer = conjure_http::server::StdRequestDeserializer,
            log_as = "datasourceRid"
        )]
        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")]
    async fn delete_type(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        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"
    )]
    async fn archive_type(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        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"
    )]
    async fn unarchive_type(
        &self,
        #[auth]
        auth_: conjure_object::BearerToken,
        #[path(
            name = "rid",
            decoder = conjure_http::server::conjure::FromPlainDecoder,
            safe
        )]
        rid: super::super::super::super::objects::scout::rids::api::TypeRid,
    ) -> Result<(), conjure_http::private::Error>;
}
