pub struct GitHubClient { /* private fields */ }Implementations§
Source§impl GitHubClient
impl GitHubClient
Sourcepub fn new(
owner: impl Into<String>,
repo: impl Into<String>,
token: SecretString,
) -> Self
pub fn new( owner: impl Into<String>, repo: impl Into<String>, token: SecretString, ) -> Self
Create a new GitHub client.
Sourcepub fn with_base_url(
base_url: impl Into<String>,
owner: impl Into<String>,
repo: impl Into<String>,
token: SecretString,
) -> Self
pub fn with_base_url( base_url: impl Into<String>, owner: impl Into<String>, repo: impl Into<String>, token: SecretString, ) -> Self
Create a new GitHub client with a custom base URL.
Trait Implementations§
Source§impl IssueProvider for GitHubClient
impl IssueProvider for GitHubClient
Source§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_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.
Source§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 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”).
Source§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 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.
Source§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 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,
Source§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 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). Read more
Source§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 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. Read more
Source§fn 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.Source§fn provider_name(&self) -> &'static str
fn provider_name(&self) -> &'static str
Get the provider name for logging (e.g., “gitlab”, “github”).
Source§fn get_statuses<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<IssueStatus>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn get_statuses<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<IssueStatus>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Get available statuses for the issue tracker.
Default returns ProviderUnsupported — override in providers that support statuses.
Source§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<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Self: '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<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Self: 'async_trait,
Link two issues together.
Source§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<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Self: '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<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Self: 'async_trait,
Remove a link between two issues.
Source§fn get_users<'life0, 'async_trait>(
&'life0 self,
_options: GetUsersOptions,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<User>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn get_users<'life0, 'async_trait>(
&'life0 self,
_options: GetUsersOptions,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<User>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Get users from the issue tracker (Jira only).
Source§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, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Self: '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, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Self: 'async_trait,
Upload a file attachment to an issue. Returns the download URL.
Default returns ProviderUnsupported — override in providers that support attachments.
Source§fn delete_attachment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
_asset_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: '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<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
Delete an attachment from an issue. Read more
Source§fn set_custom_fields<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
_fields: &'life2 [Value],
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: '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<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: '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).Source§fn get_issue_relations<'life0, 'life1, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<IssueRelations, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn get_issue_relations<'life0, 'life1, 'async_trait>(
&'life0 self,
_issue_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<IssueRelations, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Get issue relations (parent, subtasks, linked issues).
Source§fn get_structures<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Structure>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn get_structures<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Structure>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
List all available structures.
Source§fn get_structure_forest<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_options: GetForestOptions,
) -> Pin<Box<dyn Future<Output = Result<StructureForest, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn get_structure_forest<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_options: GetForestOptions,
) -> Pin<Box<dyn Future<Output = Result<StructureForest, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Get a structure’s forest (hierarchy tree).
Source§fn add_structure_rows<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_input: AddStructureRowsInput,
) -> Pin<Box<dyn Future<Output = Result<ForestModifyResult, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn add_structure_rows<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_input: AddStructureRowsInput,
) -> Pin<Box<dyn Future<Output = Result<ForestModifyResult, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Add rows to a structure’s forest.
Source§fn move_structure_rows<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_input: MoveStructureRowsInput,
) -> Pin<Box<dyn Future<Output = Result<ForestModifyResult, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn move_structure_rows<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_input: MoveStructureRowsInput,
) -> Pin<Box<dyn Future<Output = Result<ForestModifyResult, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Move rows within a structure’s forest.
Source§fn remove_structure_row<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_row_id: u64,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn remove_structure_row<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_row_id: u64,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Remove a row from a structure’s forest.
Source§fn get_structure_values<'life0, 'async_trait>(
&'life0 self,
_input: GetStructureValuesInput,
) -> Pin<Box<dyn Future<Output = Result<StructureValues, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn get_structure_values<'life0, 'async_trait>(
&'life0 self,
_input: GetStructureValuesInput,
) -> Pin<Box<dyn Future<Output = Result<StructureValues, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Batch-read column values (including formulas) for structure rows.
Source§fn get_structure_views<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
_view_id: Option<u64>,
) -> Pin<Box<dyn Future<Output = Result<Vec<StructureView>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: '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>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Get views for a structure, optionally a specific view by ID.
Source§fn save_structure_view<'life0, 'async_trait>(
&'life0 self,
_input: SaveStructureViewInput,
) -> Pin<Box<dyn Future<Output = Result<StructureView, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn save_structure_view<'life0, 'async_trait>(
&'life0 self,
_input: SaveStructureViewInput,
) -> Pin<Box<dyn Future<Output = Result<StructureView, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Create or update a structure view.
Source§fn create_structure<'life0, 'async_trait>(
&'life0 self,
_input: CreateStructureInput,
) -> Pin<Box<dyn Future<Output = Result<Structure, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn create_structure<'life0, 'async_trait>(
&'life0 self,
_input: CreateStructureInput,
) -> Pin<Box<dyn Future<Output = Result<Structure, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Create a new structure.
Source§fn get_structure_generators<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<StructureGenerator>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn get_structure_generators<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<StructureGenerator>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
List generators configured on a structure.
Source§fn add_structure_generator<'life0, 'async_trait>(
&'life0 self,
_input: AddStructureGeneratorInput,
) -> Pin<Box<dyn Future<Output = Result<StructureGenerator, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn add_structure_generator<'life0, 'async_trait>(
&'life0 self,
_input: AddStructureGeneratorInput,
) -> Pin<Box<dyn Future<Output = Result<StructureGenerator, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Attach a new generator to a structure.
Source§fn sync_structure_generator<'life0, 'async_trait>(
&'life0 self,
_input: SyncStructureGeneratorInput,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn sync_structure_generator<'life0, 'async_trait>(
&'life0 self,
_input: SyncStructureGeneratorInput,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Force a generator to refresh its produced rows.
Source§fn delete_structure<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn delete_structure<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Delete a structure permanently.
Source§fn update_structure_automation<'life0, 'async_trait>(
&'life0 self,
_input: UpdateStructureAutomationInput,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn update_structure_automation<'life0, 'async_trait>(
&'life0 self,
_input: UpdateStructureAutomationInput,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Replace a structure’s automation configuration.
Source§fn trigger_structure_automation<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn trigger_structure_automation<'life0, 'async_trait>(
&'life0 self,
_structure_id: u64,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Run a structure’s automation pass on demand.
Source§fn list_project_versions<'life0, 'async_trait>(
&'life0 self,
_params: ListProjectVersionsParams,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<ProjectVersion>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn list_project_versions<'life0, 'async_trait>(
&'life0 self,
_params: ListProjectVersionsParams,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<ProjectVersion>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
List versions (“releases” /
fixVersion targets) for a project.
Default: ProviderUnsupported.Source§fn upsert_project_version<'life0, 'async_trait>(
&'life0 self,
_input: UpsertProjectVersionInput,
) -> Pin<Box<dyn Future<Output = Result<ProjectVersion, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn upsert_project_version<'life0, 'async_trait>(
&'life0 self,
_input: UpsertProjectVersionInput,
) -> Pin<Box<dyn Future<Output = Result<ProjectVersion, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Create-or-update a project version, keyed by
(project, name).
Partial update: optional fields left as None are not touched.
Default: ProviderUnsupported.Source§fn get_board_sprints<'life0, 'async_trait>(
&'life0 self,
_board_id: u64,
_state: SprintState,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Sprint>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn get_board_sprints<'life0, 'async_trait>(
&'life0 self,
_board_id: u64,
_state: SprintState,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Sprint>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
List sprints visible on a board, optionally filtered by state.
Source§fn assign_to_sprint<'life0, 'async_trait>(
&'life0 self,
_input: AssignToSprintInput,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn assign_to_sprint<'life0, 'async_trait>(
&'life0 self,
_input: AssignToSprintInput,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Move one or more issues onto a sprint.
Source§fn list_custom_fields<'life0, 'async_trait>(
&'life0 self,
_params: ListCustomFieldsParams,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<CustomFieldDescriptor>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn list_custom_fields<'life0, 'async_trait>(
&'life0 self,
_params: ListCustomFieldsParams,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<CustomFieldDescriptor>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
List provider-side custom fields. Lets agents (and downstream
codegen) discover the
customfield_* ids of an instance
without hardcoding them. Default impl returns
ProviderUnsupported — providers without a real customfield
concept (GitHub, GitLab) keep that default.Source§impl MergeRequestProvider for GitHubClient
impl MergeRequestProvider for GitHubClient
Source§fn get_merge_requests<'life0, 'async_trait>(
&'life0 self,
filter: MrFilter,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<MergeRequest>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_merge_requests<'life0, 'async_trait>(
&'life0 self,
filter: MrFilter,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<MergeRequest>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get a list of merge requests with optional filters.
Source§fn get_merge_request<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<MergeRequest>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_merge_request<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<MergeRequest>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get a single merge request by key (e.g., “mr#123”, “pr#456”).
Source§fn get_discussions<'life0, 'life1, 'async_trait>(
&'life0 self,
mr_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Discussion>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_discussions<'life0, 'life1, 'async_trait>(
&'life0 self,
mr_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Discussion>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get discussions/comments for a merge request.
fn get_diffs<'life0, 'life1, 'async_trait>(
&'life0 self,
mr_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<FileDiff>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn add_comment<'life0, 'life1, 'async_trait>(
&'life0 self,
mr_key: &'life1 str,
input: CreateCommentInput,
) -> Pin<Box<dyn Future<Output = Result<Comment>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn create_merge_request<'life0, 'async_trait>(
&'life0 self,
input: CreateMergeRequestInput,
) -> Pin<Box<dyn Future<Output = Result<MergeRequest>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn create_merge_request<'life0, 'async_trait>(
&'life0 self,
input: CreateMergeRequestInput,
) -> Pin<Box<dyn Future<Output = Result<MergeRequest>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Create a new merge request / pull request.
Source§fn update_merge_request<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
input: UpdateMergeRequestInput,
) -> Pin<Box<dyn Future<Output = Result<MergeRequest>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn update_merge_request<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
input: UpdateMergeRequestInput,
) -> Pin<Box<dyn Future<Output = Result<MergeRequest>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Update an existing merge request / pull request.
Source§fn get_mr_attachments<'life0, 'life1, 'async_trait>(
&'life0 self,
mr_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_mr_attachments<'life0, 'life1, 'async_trait>(
&'life0 self,
mr_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 on a merge request (body + discussions).
fn download_mr_attachment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_mr_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,
Source§fn provider_name(&self) -> &'static str
fn provider_name(&self) -> &'static str
Get the provider name for logging.
Source§fn get_releases<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Release>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn get_releases<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ProviderResult<Release>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Get releases/tags for the repository.
fn delete_mr_attachment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_mr_key: &'life1 str,
_asset_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
Source§impl PipelineProvider for GitHubClient
impl PipelineProvider for GitHubClient
Source§fn provider_name(&self) -> &'static str
fn provider_name(&self) -> &'static str
Get the provider name for logging.
fn get_pipeline<'life0, 'async_trait>(
&'life0 self,
input: GetPipelineInput,
) -> Pin<Box<dyn Future<Output = Result<PipelineInfo>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn get_job_logs<'life0, 'life1, 'async_trait>(
&'life0 self,
job_id: &'life1 str,
options: JobLogOptions,
) -> Pin<Box<dyn Future<Output = Result<JobLogOutput>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_job_logs<'life0, 'life1, 'async_trait>(
&'life0 self,
job_id: &'life1 str,
options: JobLogOptions,
) -> Pin<Box<dyn Future<Output = Result<JobLogOutput>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get job logs with search, pagination, or smart extraction.
Auto Trait Implementations§
impl Freeze for GitHubClient
impl !RefUnwindSafe for GitHubClient
impl Send for GitHubClient
impl Sync for GitHubClient
impl Unpin for GitHubClient
impl UnsafeUnpin for GitHubClient
impl !UnwindSafe for GitHubClient
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more