pub trait IssueProvider: Send + Sync {
Show 37 methods
// Required methods
fn get_issues<'life0, 'async_trait>(
&'life0 self,
filter: IssueFilter,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Issue>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn get_issue<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Issue>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn create_issue<'life0, 'async_trait>(
&'life0 self,
input: CreateIssueInput,
) -> Pin<Box<dyn Future<Output = Result<Issue>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn update_issue<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
input: UpdateIssueInput,
) -> Pin<Box<dyn Future<Output = Result<Issue>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn get_comments<'life0, 'life1, 'async_trait>(
&'life0 self,
issue_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Comment>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn add_comment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
issue_key: &'life1 str,
body: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Comment>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn provider_name(&self) -> &'static str;
// Provided methods
fn get_statuses<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<IssueStatus>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn link_issues<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_source_key: &'life1 str,
_target_key: &'life2 str,
_link_type: &'life3 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait { ... }
fn unlink_issues<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_source_key: &'life1 str,
_target_key: &'life2 str,
_link_type: &'life3 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait { ... }
fn get_users<'life0, 'async_trait>(
&'life0 self,
_options: GetUsersOptions,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<User>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn upload_attachment<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
_filename: &'life2 str,
_data: &'life3 [u8],
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait { ... }
fn get_issue_attachments<'life0, 'life1, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<AssetMeta>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
fn download_attachment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
_asset_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<u8>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait { ... }
fn delete_attachment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
_asset_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait { ... }
fn asset_capabilities(&self) -> AssetCapabilities { ... }
fn set_custom_fields<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
_fields: &'life2 [Value],
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait { ... }
fn get_issue_relations<'life0, 'life1, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<IssueRelations>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
fn get_structures<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Structure>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn get_structure_forest<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_options: GetForestOptions,
) -> Pin<Box<dyn Future<Output = Result<StructureForest>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn add_structure_rows<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_input: AddStructureRowsInput,
) -> Pin<Box<dyn Future<Output = Result<ForestModifyResult>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn move_structure_rows<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_input: MoveStructureRowsInput,
) -> Pin<Box<dyn Future<Output = Result<ForestModifyResult>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn remove_structure_row<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_row_id: u64,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn get_structure_values<'life0, 'async_trait>(
&'life0 self,
_input: GetStructureValuesInput,
) -> Pin<Box<dyn Future<Output = Result<StructureValues>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn get_structure_views<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_view_id: Option<u64>,
) -> Pin<Box<dyn Future<Output = Result<Vec<StructureView>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn save_structure_view<'life0, 'async_trait>(
&'life0 self,
_input: SaveStructureViewInput,
) -> Pin<Box<dyn Future<Output = Result<StructureView>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn create_structure<'life0, 'async_trait>(
&'life0 self,
_input: CreateStructureInput,
) -> Pin<Box<dyn Future<Output = Result<Structure>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn get_structure_generators<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<StructureGenerator>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn add_structure_generator<'life0, 'async_trait>(
&'life0 self,
_input: AddStructureGeneratorInput,
) -> Pin<Box<dyn Future<Output = Result<StructureGenerator>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn sync_structure_generator<'life0, 'async_trait>(
&'life0 self,
_input: SyncStructureGeneratorInput,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn delete_structure<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn update_structure_automation<'life0, 'async_trait>(
&'life0 self,
_input: UpdateStructureAutomationInput,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn trigger_structure_automation<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn list_project_versions<'life0, 'async_trait>(
&'life0 self,
_params: ListProjectVersionsParams,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<ProjectVersion>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn upsert_project_version<'life0, 'async_trait>(
&'life0 self,
_input: UpsertProjectVersionInput,
) -> Pin<Box<dyn Future<Output = Result<ProjectVersion>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn get_board_sprints<'life0, 'async_trait>(
&'life0 self,
_board_id: u64,
_state: SprintState,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Sprint>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
fn assign_to_sprint<'life0, 'async_trait>(
&'life0 self,
_input: AssignToSprintInput,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
}Expand description
Provider for working with issues.
Implementations include GitLab, GitHub, ClickUp, and Jira providers.
Required Methods§
Sourcefn get_issues<'life0, 'async_trait>(
&'life0 self,
filter: IssueFilter,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Issue>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_issues<'life0, 'async_trait>(
&'life0 self,
filter: IssueFilter,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Issue>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get a list of issues with optional filters.
Sourcefn get_issue<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Issue>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_issue<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Issue>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get a single issue by key (e.g., “gitlab#123”, “gh#456”).
Sourcefn create_issue<'life0, 'async_trait>(
&'life0 self,
input: CreateIssueInput,
) -> Pin<Box<dyn Future<Output = Result<Issue>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn create_issue<'life0, 'async_trait>(
&'life0 self,
input: CreateIssueInput,
) -> Pin<Box<dyn Future<Output = Result<Issue>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Create a new issue.
Sourcefn update_issue<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
input: UpdateIssueInput,
) -> Pin<Box<dyn Future<Output = Result<Issue>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn update_issue<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
input: UpdateIssueInput,
) -> Pin<Box<dyn Future<Output = Result<Issue>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Update an existing issue.
fn get_comments<'life0, 'life1, 'async_trait>(
&'life0 self,
issue_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Comment>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn add_comment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
issue_key: &'life1 str,
body: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Comment>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Sourcefn provider_name(&self) -> &'static str
fn provider_name(&self) -> &'static str
Get the provider name for logging (e.g., “gitlab”, “github”).
Provided Methods§
Sourcefn get_statuses<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<IssueStatus>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_statuses<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<IssueStatus>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get available statuses for the issue tracker. Default returns ProviderUnsupported — override in providers that support statuses.
Sourcefn link_issues<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_source_key: &'life1 str,
_target_key: &'life2 str,
_link_type: &'life3 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn link_issues<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_source_key: &'life1 str,
_target_key: &'life2 str,
_link_type: &'life3 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Link two issues together.
Sourcefn unlink_issues<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_source_key: &'life1 str,
_target_key: &'life2 str,
_link_type: &'life3 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn unlink_issues<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_source_key: &'life1 str,
_target_key: &'life2 str,
_link_type: &'life3 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Remove a link between two issues.
Sourcefn get_users<'life0, 'async_trait>(
&'life0 self,
_options: GetUsersOptions,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<User>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_users<'life0, 'async_trait>(
&'life0 self,
_options: GetUsersOptions,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<User>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get users from the issue tracker (Jira only).
Sourcefn upload_attachment<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
_filename: &'life2 str,
_data: &'life3 [u8],
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn upload_attachment<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
_filename: &'life2 str,
_data: &'life3 [u8],
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Upload a file attachment to an issue. Returns the download URL. Default returns ProviderUnsupported — override in providers that support attachments.
Sourcefn get_issue_attachments<'life0, 'life1, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<AssetMeta>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_issue_attachments<'life0, 'life1, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<AssetMeta>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
List attachments currently attached to an issue (body + comments).
Returns provider-agnostic AssetMeta values. Default returns
ProviderUnsupported; providers that can parse or fetch their own
attachment listings override this.
Sourcefn download_attachment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
_asset_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<u8>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn download_attachment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
_asset_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<u8>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Download the raw bytes of an attachment belonging to an issue.
asset_id is the provider-specific identifier returned from
IssueProvider::get_issue_attachments (ClickUp attachment id,
Jira attachment id, GitLab upload URL, etc.).
Sourcefn delete_attachment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
_asset_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn delete_attachment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
_asset_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Delete an attachment from an issue.
Not all providers expose a delete endpoint for attachments (ClickUp
doesn’t, GitLab file uploads are immutable) — the default returns
ProviderUnsupported and callers can consult
asset_capabilities beforehand.
Sourcefn asset_capabilities(&self) -> AssetCapabilities
fn asset_capabilities(&self) -> AssetCapabilities
Describe which asset operations this provider supports for each
context. Used by the enricher to surface per-provider capabilities
in tool schemas so agents can adapt their behaviour before making
calls that would fail with ProviderUnsupported.
Sourcefn set_custom_fields<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
_fields: &'life2 [Value],
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn set_custom_fields<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
_fields: &'life2 [Value],
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Set custom fields on an issue. Each entry: {"id": "field_id", "value": <value>}.
Default is no-op — override in providers that support custom fields (e.g., ClickUp).
Sourcefn get_issue_relations<'life0, 'life1, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<IssueRelations>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_issue_relations<'life0, 'life1, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<IssueRelations>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get issue relations (parent, subtasks, linked issues).
Sourcefn get_structures<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Structure>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_structures<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Structure>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
List all available structures.
Sourcefn get_structure_forest<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_options: GetForestOptions,
) -> Pin<Box<dyn Future<Output = Result<StructureForest>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_structure_forest<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_options: GetForestOptions,
) -> Pin<Box<dyn Future<Output = Result<StructureForest>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get a structure’s forest (hierarchy tree).
Sourcefn add_structure_rows<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_input: AddStructureRowsInput,
) -> Pin<Box<dyn Future<Output = Result<ForestModifyResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn add_structure_rows<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_input: AddStructureRowsInput,
) -> Pin<Box<dyn Future<Output = Result<ForestModifyResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Add rows to a structure’s forest.
Sourcefn move_structure_rows<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_input: MoveStructureRowsInput,
) -> Pin<Box<dyn Future<Output = Result<ForestModifyResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn move_structure_rows<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_input: MoveStructureRowsInput,
) -> Pin<Box<dyn Future<Output = Result<ForestModifyResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Move rows within a structure’s forest.
Sourcefn remove_structure_row<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_row_id: u64,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn remove_structure_row<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_row_id: u64,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Remove a row from a structure’s forest.
Sourcefn get_structure_values<'life0, 'async_trait>(
&'life0 self,
_input: GetStructureValuesInput,
) -> Pin<Box<dyn Future<Output = Result<StructureValues>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_structure_values<'life0, 'async_trait>(
&'life0 self,
_input: GetStructureValuesInput,
) -> Pin<Box<dyn Future<Output = Result<StructureValues>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Batch-read column values (including formulas) for structure rows.
Sourcefn get_structure_views<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_view_id: Option<u64>,
) -> Pin<Box<dyn Future<Output = Result<Vec<StructureView>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_structure_views<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_view_id: Option<u64>,
) -> Pin<Box<dyn Future<Output = Result<Vec<StructureView>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get views for a structure, optionally a specific view by ID.
Sourcefn save_structure_view<'life0, 'async_trait>(
&'life0 self,
_input: SaveStructureViewInput,
) -> Pin<Box<dyn Future<Output = Result<StructureView>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn save_structure_view<'life0, 'async_trait>(
&'life0 self,
_input: SaveStructureViewInput,
) -> Pin<Box<dyn Future<Output = Result<StructureView>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Create or update a structure view.
Sourcefn create_structure<'life0, 'async_trait>(
&'life0 self,
_input: CreateStructureInput,
) -> Pin<Box<dyn Future<Output = Result<Structure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn create_structure<'life0, 'async_trait>(
&'life0 self,
_input: CreateStructureInput,
) -> Pin<Box<dyn Future<Output = Result<Structure>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Create a new structure.
Sourcefn get_structure_generators<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<StructureGenerator>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_structure_generators<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<StructureGenerator>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
List generators configured on a structure.
Sourcefn add_structure_generator<'life0, 'async_trait>(
&'life0 self,
_input: AddStructureGeneratorInput,
) -> Pin<Box<dyn Future<Output = Result<StructureGenerator>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn add_structure_generator<'life0, 'async_trait>(
&'life0 self,
_input: AddStructureGeneratorInput,
) -> Pin<Box<dyn Future<Output = Result<StructureGenerator>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Attach a new generator to a structure.
Sourcefn sync_structure_generator<'life0, 'async_trait>(
&'life0 self,
_input: SyncStructureGeneratorInput,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn sync_structure_generator<'life0, 'async_trait>(
&'life0 self,
_input: SyncStructureGeneratorInput,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Force a generator to refresh its produced rows.
Sourcefn delete_structure<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn delete_structure<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Delete a structure permanently.
Sourcefn update_structure_automation<'life0, 'async_trait>(
&'life0 self,
_input: UpdateStructureAutomationInput,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update_structure_automation<'life0, 'async_trait>(
&'life0 self,
_input: UpdateStructureAutomationInput,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Replace a structure’s automation configuration.
Sourcefn trigger_structure_automation<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn trigger_structure_automation<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Run a structure’s automation pass on demand.
Sourcefn list_project_versions<'life0, 'async_trait>(
&'life0 self,
_params: ListProjectVersionsParams,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<ProjectVersion>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_project_versions<'life0, 'async_trait>(
&'life0 self,
_params: ListProjectVersionsParams,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<ProjectVersion>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
List versions (“releases” / fixVersion targets) for a project.
Default: ProviderUnsupported.
Sourcefn upsert_project_version<'life0, 'async_trait>(
&'life0 self,
_input: UpsertProjectVersionInput,
) -> Pin<Box<dyn Future<Output = Result<ProjectVersion>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn upsert_project_version<'life0, 'async_trait>(
&'life0 self,
_input: UpsertProjectVersionInput,
) -> Pin<Box<dyn Future<Output = Result<ProjectVersion>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Create-or-update a project version, keyed by (project, name).
Partial update: optional fields left as None are not touched.
Default: ProviderUnsupported.
Sourcefn get_board_sprints<'life0, 'async_trait>(
&'life0 self,
_board_id: u64,
_state: SprintState,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Sprint>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_board_sprints<'life0, 'async_trait>(
&'life0 self,
_board_id: u64,
_state: SprintState,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Sprint>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
List sprints visible on a board, optionally filtered by state.
Sourcefn assign_to_sprint<'life0, 'async_trait>(
&'life0 self,
_input: AssignToSprintInput,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn assign_to_sprint<'life0, 'async_trait>(
&'life0 self,
_input: AssignToSprintInput,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Move one or more issues onto a sprint.