use conjure_http::endpoint;
/// Service for managing demo workbooks in sandbox workspaces.
/// All endpoints validate that the provided workspace has the human-readable ID "sandbox".
#[conjure_http::conjure_client(name = "SandboxWorkspaceService")]
pub trait SandboxWorkspaceService<
    #[response_body]
    I: Iterator<
            Item = Result<conjure_http::private::Bytes, conjure_http::private::Error>,
        >,
> {
    /// Returns the list of demo workbook RIDs for the given sandbox workspace.
    #[endpoint(
        method = GET,
        path = "/scout/v1/sandbox-workspace/{workspaceRid}/demo-workbooks",
        name = "getDemoWorkbooks",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    fn get_demo_workbooks(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "workspaceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        workspace_rid: &conjure_object::ResourceIdentifier,
    ) -> Result<
        super::super::super::super::super::objects::scout::sandbox::api::GetDemoWorkbooksResponse,
        conjure_http::private::Error,
    >;
    /// Sets the list of demo workbook RIDs for the given sandbox workspace, replacing any existing entries.
    #[endpoint(
        method = PUT,
        path = "/scout/v1/sandbox-workspace/{workspaceRid}/demo-workbooks",
        name = "setDemoWorkbooks",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    fn set_demo_workbooks(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "workspaceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        workspace_rid: &conjure_object::ResourceIdentifier,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::super::objects::scout::sandbox::api::SetDemoWorkbooksRequest,
    ) -> Result<(), conjure_http::private::Error>;
    /// Appends workbooks to the existing demo workbook list. If archiveOnLabelConflict is true,
    /// existing workbooks with an exact label-set match are archived along with all related
    /// resources instead of raising an error. The cascade performs a full graph traversal:
    /// starting from the workbook's data scope (asset RIDs or run RIDs), it alternates between
    /// discovering runs linked to assets and assets linked to runs until convergence. All
    /// discovered assets, runs, datasets (from both asset and run data scopes), and events
    /// (from snapshot refs and from all discovered assets) are then archived. This ensures no
    /// orphaned resources remain when demo workbooks are replaced. Partial (subset/superset)
    /// label conflicts always raise an error.
    #[endpoint(
        method = POST,
        path = "/scout/v1/sandbox-workspace/{workspaceRid}/demo-workbooks",
        name = "addDemoWorkbooks",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    fn add_demo_workbooks(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "workspaceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        workspace_rid: &conjure_object::ResourceIdentifier,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::super::objects::scout::sandbox::api::AddDemoWorkbooksRequest,
    ) -> Result<(), conjure_http::private::Error>;
}
/// Service for managing demo workbooks in sandbox workspaces.
/// All endpoints validate that the provided workspace has the human-readable ID "sandbox".
#[conjure_http::conjure_client(name = "SandboxWorkspaceService")]
pub trait AsyncSandboxWorkspaceService<
    #[response_body]
    I: conjure_http::private::Stream<
            Item = Result<conjure_http::private::Bytes, conjure_http::private::Error>,
        >,
> {
    /// Returns the list of demo workbook RIDs for the given sandbox workspace.
    #[endpoint(
        method = GET,
        path = "/scout/v1/sandbox-workspace/{workspaceRid}/demo-workbooks",
        name = "getDemoWorkbooks",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn get_demo_workbooks(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "workspaceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        workspace_rid: &conjure_object::ResourceIdentifier,
    ) -> Result<
        super::super::super::super::super::objects::scout::sandbox::api::GetDemoWorkbooksResponse,
        conjure_http::private::Error,
    >;
    /// Sets the list of demo workbook RIDs for the given sandbox workspace, replacing any existing entries.
    #[endpoint(
        method = PUT,
        path = "/scout/v1/sandbox-workspace/{workspaceRid}/demo-workbooks",
        name = "setDemoWorkbooks",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn set_demo_workbooks(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "workspaceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        workspace_rid: &conjure_object::ResourceIdentifier,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::super::objects::scout::sandbox::api::SetDemoWorkbooksRequest,
    ) -> Result<(), conjure_http::private::Error>;
    /// Appends workbooks to the existing demo workbook list. If archiveOnLabelConflict is true,
    /// existing workbooks with an exact label-set match are archived along with all related
    /// resources instead of raising an error. The cascade performs a full graph traversal:
    /// starting from the workbook's data scope (asset RIDs or run RIDs), it alternates between
    /// discovering runs linked to assets and assets linked to runs until convergence. All
    /// discovered assets, runs, datasets (from both asset and run data scopes), and events
    /// (from snapshot refs and from all discovered assets) are then archived. This ensures no
    /// orphaned resources remain when demo workbooks are replaced. Partial (subset/superset)
    /// label conflicts always raise an error.
    #[endpoint(
        method = POST,
        path = "/scout/v1/sandbox-workspace/{workspaceRid}/demo-workbooks",
        name = "addDemoWorkbooks",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn add_demo_workbooks(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "workspaceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        workspace_rid: &conjure_object::ResourceIdentifier,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::super::objects::scout::sandbox::api::AddDemoWorkbooksRequest,
    ) -> Result<(), conjure_http::private::Error>;
}
/// Service for managing demo workbooks in sandbox workspaces.
/// All endpoints validate that the provided workspace has the human-readable ID "sandbox".
#[conjure_http::conjure_client(name = "SandboxWorkspaceService", local)]
pub trait LocalAsyncSandboxWorkspaceService<
    #[response_body]
    I: conjure_http::private::Stream<
            Item = Result<conjure_http::private::Bytes, conjure_http::private::Error>,
        >,
> {
    /// Returns the list of demo workbook RIDs for the given sandbox workspace.
    #[endpoint(
        method = GET,
        path = "/scout/v1/sandbox-workspace/{workspaceRid}/demo-workbooks",
        name = "getDemoWorkbooks",
        accept = conjure_http::client::StdResponseDeserializer
    )]
    async fn get_demo_workbooks(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "workspaceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        workspace_rid: &conjure_object::ResourceIdentifier,
    ) -> Result<
        super::super::super::super::super::objects::scout::sandbox::api::GetDemoWorkbooksResponse,
        conjure_http::private::Error,
    >;
    /// Sets the list of demo workbook RIDs for the given sandbox workspace, replacing any existing entries.
    #[endpoint(
        method = PUT,
        path = "/scout/v1/sandbox-workspace/{workspaceRid}/demo-workbooks",
        name = "setDemoWorkbooks",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn set_demo_workbooks(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "workspaceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        workspace_rid: &conjure_object::ResourceIdentifier,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::super::objects::scout::sandbox::api::SetDemoWorkbooksRequest,
    ) -> Result<(), conjure_http::private::Error>;
    /// Appends workbooks to the existing demo workbook list. If archiveOnLabelConflict is true,
    /// existing workbooks with an exact label-set match are archived along with all related
    /// resources instead of raising an error. The cascade performs a full graph traversal:
    /// starting from the workbook's data scope (asset RIDs or run RIDs), it alternates between
    /// discovering runs linked to assets and assets linked to runs until convergence. All
    /// discovered assets, runs, datasets (from both asset and run data scopes), and events
    /// (from snapshot refs and from all discovered assets) are then archived. This ensures no
    /// orphaned resources remain when demo workbooks are replaced. Partial (subset/superset)
    /// label conflicts always raise an error.
    #[endpoint(
        method = POST,
        path = "/scout/v1/sandbox-workspace/{workspaceRid}/demo-workbooks",
        name = "addDemoWorkbooks",
        accept = conjure_http::client::conjure::EmptyResponseDeserializer
    )]
    async fn add_demo_workbooks(
        &self,
        #[auth]
        auth_: &conjure_object::BearerToken,
        #[path(
            name = "workspaceRid",
            encoder = conjure_http::client::conjure::PlainEncoder
        )]
        workspace_rid: &conjure_object::ResourceIdentifier,
        #[body(serializer = conjure_http::client::StdRequestSerializer)]
        request: &super::super::super::super::super::objects::scout::sandbox::api::AddDemoWorkbooksRequest,
    ) -> Result<(), conjure_http::private::Error>;
}
