using System.Threading.Tasks;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System;
namespace Octokit
{
///
/// A client for GitHub's Orgs API.
///
///
/// See the Orgs API documentation for more information.
///
public interface IOrganizationsClient
{
///
/// Returns a client to manage members of an organization.
///
IOrganizationMembersClient Member { get; }
///
/// Returns a client to manage teams of an organization.
///
ITeamsClient Team { get; }
///
/// A client for GitHub's Organization Hooks API.
///
/// See Hooks API documentation for more information.
IOrganizationHooksClient Hook { get; }
///
/// Returns a client to manage outside collaborators of an organization.
///
IOrganizationOutsideCollaboratorsClient OutsideCollaborator { get; }
///
/// Returns the specified .
///
/// login of the organization to get
/// Thrown when a general API error occurs.
/// The specified .
[SuppressMessage("Microsoft.Naming", "CA1716:IdentifiersShouldNotMatchKeywords", MessageId = "Get"
, Justification = "It's fine. Trust us.")]
Task Get(string org);
///
/// Returns all s for the current user.
///
/// Thrown when a general API error occurs.
/// A list of the current user's s.
[SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate",
Justification = "Method makes a network request")]
Task> GetAllForCurrent();
///
/// Returns all s for the current user.
///
/// Options for changing the API response
/// Thrown when a general API error occurs.
/// A list of the current user's s.
[SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate",
Justification = "Method makes a network request")]
Task> GetAllForCurrent(ApiOptions options);
///
/// Returns all s for the specified user.
///
/// Thrown when a general API error occurs.
/// A list of the specified user's s.
Task> GetAllForUser(string user);
///
/// Returns all s for the specified user.
///
/// The login of the user
/// Options for changing the API response
/// Thrown when a general API error occurs.
/// A list of the specified user's s.
Task> GetAllForUser(string user, ApiOptions options);
///
/// Returns all s.
///
/// Thrown when a general API error occurs.
/// A list of s.
[ExcludeFromPaginationApiOptionsConventionTest("This API call uses the OrganizationRequest.Since parameter for pagination")]
Task> GetAll();
///
/// Returns all s.
///
/// Search parameters of the last organization seen
/// Thrown when a general API error occurs.
/// A list of s.
[ExcludeFromPaginationApiOptionsConventionTest("This API call uses the OrganizationRequest.Since parameter for pagination")]
Task> GetAll(OrganizationRequest request);
///
/// Update the specified organization with data from .
///
/// The name of the organization to update.
///
/// Thrown if the client is not authenticated.
/// A
Task Update(string org, OrganizationUpdate updateRequest);
}
}