pub struct OrgHandler<'octo> { /* private fields */ }Expand description
A client to GitHub’s organization API.
Created with Octocrab::orgs.
Implementations§
Source§impl<'octo> OrgHandler<'octo>
impl<'octo> OrgHandler<'octo>
Sourcepub async fn add_or_update_membership(
&self,
username: impl AsRef<str>,
role: Option<Role>,
) -> Result<MembershipInvitation>
pub async fn add_or_update_membership( &self, username: impl AsRef<str>, role: Option<Role>, ) -> Result<MembershipInvitation>
Add or update organization membership
Note
- Only authenticated organization owners can add a member to the organization or update the member’s role.
- If the authenticated user is adding a member to the organization, the invited user will receive an email inviting them to the organization. The user’s membership status will be pending until they accept the invitation.
- Authenticated users can update a user’s membership by passing the role parameter. If the authenticated user changes a member’s role to admin, the affected user will receive an email notifying them that they’ve been made an organization owner. If the authenticated user changes an owner’s role to member, no email will be sent.
let invitation = octocrab.orgs("owner").add_or_update_membership("ferris", None).await?;Sourcepub async fn check_membership(&self, username: impl AsRef<str>) -> Result<bool>
pub async fn check_membership(&self, username: impl AsRef<str>) -> Result<bool>
Check if a user is, publicly or privately, a member of the organization.
assert!(octocrab.orgs("owner").check_membership("ferris").await?);Sourcepub async fn get(&self) -> Result<Organization>
pub async fn get(&self) -> Result<Organization>
Get an organization
To see many of the organization response values, you need to be an
authenticated organization owner with the admin:org scope. When the
value of two_factor_requirement_enabled is true, the organization
requires all members, billing managers, and outside collaborators to
enable two-factor authentication.
let org = octocrab.orgs("owner").get().await?;Sourcepub fn list_repos(&self) -> ListReposBuilder<'_, '_>
pub fn list_repos(&self) -> ListReposBuilder<'_, '_>
List repos for the specified organization.
use octocrab::params;
// Get the least active repos belonging to `owner`.
let page = octocrab::instance()
.orgs("owner")
.list_repos()
// Optional Parameters
.repo_type(params::repos::Type::Sources)
.sort(params::repos::Sort::Pushed)
.direction(params::Direction::Descending)
.per_page(25)
.page(5u32)
// Send the request.
.send()
.await?;Sourcepub fn events(&self) -> ListOrgEventsBuilder<'_, '_>
pub fn events(&self) -> ListOrgEventsBuilder<'_, '_>
List events on this organization.
Takes an optional etag which allows for efficient polling. Here is a quick example to poll a organization’s events.
let mut etag = None;
loop {
let response: Etagged<Page<Event>> = octocrab::instance()
.orgs("owner")
.events()
.etag(etag)
.send()
.await?;
if let Some(page) = response.value {
// do something with the page ...
} else {
println!("No new data received, trying again soon");
}
etag = response.etag;
// add a delay before the next iteration
}Sourcepub async fn create_hook(&self, hook: Hook) -> Result<Hook>
pub async fn create_hook(&self, hook: Hook) -> Result<Hook>
Creates a new webhook for the specified organization.
§Notes
Only authorized users or apps can modify organization webhooks.
§Examples
use octocrab::models::hooks::{Hook, Config as HookConfig, ContentType as HookContentType};
let config = HookConfig {
url: "https://example.com".to_string(),
content_type: Some(HookContentType::Json),
insecure_ssl: None,
secret: None
};
let hook = Hook {
name: "web".to_string(),
config,
..Hook::default()
};
let hook = octocrab.orgs("owner").create_hook(hook).await?;Sourcepub fn list_members(&self) -> ListOrgMembersBuilder<'_, '_>
pub fn list_members(&self) -> ListOrgMembersBuilder<'_, '_>
Sourcepub fn secrets(&self) -> OrgSecretsHandler<'_>
pub fn secrets(&self) -> OrgSecretsHandler<'_>
Handle secrets on the organizaton
let octocrab = octocrab::instance();
let secrets = octocrab.orgs("org").secrets();Sourcepub async fn get_interaction_restrictions(&self) -> Result<InteractionLimit>
pub async fn get_interaction_restrictions(&self) -> Result<InteractionLimit>
§Get interaction restrictions for an organization
Shows which type of GitHub user can interact with this organization and when the restriction expires. If there is no restrictions, you will see an empty response.
Fine-grained access tokens for “Get interaction restrictions for an organization”
This endpoint works with the following fine-grained token types:
- GitHub App user access tokens
- GitHub App installation access tokens
- Fine-grained personal access tokens
The fine-grained token must have the following permission set:
- “Administration” organization permissions (read)
Sourcepub async fn set_interaction_restrictions(
&self,
limit_type: InteractionLimitType,
expiry: InteractionLimitExpiry,
) -> Result<InteractionLimit>
pub async fn set_interaction_restrictions( &self, limit_type: InteractionLimitType, expiry: InteractionLimitExpiry, ) -> Result<InteractionLimit>
§Set interaction restrictions for an organization
Temporarily restricts interactions to a certain type of GitHub user in any public repository in the given organization. You must be an organization owner to set these restrictions. Setting the interaction limit at the organization level will overwrite any interaction limits that are set for individual repositories owned by the organization.
Fine-grained access tokens for “Set interaction restrictions for an organization”
This endpoint works with the following fine-grained token types:
- GitHub App user access tokens
- GitHub App installation access tokens
- Fine-grained personal access tokens
The fine-grained token must have the following permission set:
- “Administration” organization permissions (write)
Sourcepub async fn remove_interaction_restrictions(&self) -> Result<()>
pub async fn remove_interaction_restrictions(&self) -> Result<()>
§Remove interaction restrictions for an organization
Removes all interaction restrictions from public repositories in the given organization. You must be an organization owner to remove restrictions.
Fine-grained access tokens for “Remove interaction restrictions for an organization”
This endpoint works with the following fine-grained token types:
- GitHub App user access tokens
- GitHub App installation access tokens
- Fine-grained personal access tokens
The fine-grained token must have the following permission set:
- “Administration” organization permissions (write)
async fn run() -> crate::octocrab::Result<()> {
let org_name = "example-org".to_string();
let crab = octocrab::instance();
crab.orgs(org_name).remove_interaction_restrictions().await?;
Ok(())
}Auto Trait Implementations§
impl<'octo> Freeze for OrgHandler<'octo>
impl<'octo> !RefUnwindSafe for OrgHandler<'octo>
impl<'octo> Send for OrgHandler<'octo>
impl<'octo> Sync for OrgHandler<'octo>
impl<'octo> Unpin for OrgHandler<'octo>
impl<'octo> !UnwindSafe for OrgHandler<'octo>
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more