using System;
using System.Diagnostics.CodeAnalysis;
namespace Octokit.Reactive
{
///
/// A client for GitHub's Repository Projects API.
///
///
/// See the Repository Projects API documentation for more information.
///
public interface IObservableProjectsClient
{
///
/// Get all projects for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The owner of the repository
/// The name of the repository
IObservable GetAllForRepository(string owner, string name);
///
/// Get all projects for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The owner of the repository
/// The name of the repository
/// Used to filter the list of projects returned
IObservable GetAllForRepository(string owner, string name, ProjectRequest request);
///
/// Get all projects for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
IObservable GetAllForRepository(long repositoryId);
///
/// Get all projects for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
/// Used to filter the list of projects returned
IObservable GetAllForRepository(long repositoryId, ProjectRequest request);
///
/// Get all projects for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The owner of the repository
/// The name of the repository
/// Options for changing the API response
IObservable GetAllForRepository(string owner, string name, ApiOptions options);
///
/// Get all projects for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The owner of the repository
/// The name of the repository
/// Used to filter the list of projects returned
/// Options for changing the API response
IObservable GetAllForRepository(string owner, string name, ProjectRequest request, ApiOptions options);
///
/// Get all projects for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
/// Options for changing the API response
IObservable GetAllForRepository(long repositoryId, ApiOptions options);
///
/// Get all projects for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
/// Used to filter the list of projects returned
/// Options for changing the API response
IObservable GetAllForRepository(long repositoryId, ProjectRequest request, ApiOptions options);
///
/// Get all projects for the specified organization.
///
///
/// See the API documentation for more information.
///
/// The name of the organization
IObservable GetAllForOrganization(string organization);
///
/// Get all projects for the specified organization.
///
///
/// See the API documentation for more information.
///
/// The name of the organization
/// Used to filter the list of projects returned
IObservable GetAllForOrganization(string organization, ProjectRequest request);
///
/// Get all projects for the specified organization.
///
///
/// See the API documentation for more information.
///
/// The name of the organization
/// Options for changing the API response
IObservable GetAllForOrganization(string organization, ApiOptions options);
///
/// Get all projects for the specified organization.
///
///
/// See the API documentation for more information.
///
/// The name of the organization
/// Used to filter the list of projects returned
/// Options for changing the API response
IObservable GetAllForOrganization(string organization, ProjectRequest request, ApiOptions options);
///
/// Gets a single project for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the project
[SuppressMessage("Microsoft.Naming", "CA1716:IdentifiersShouldNotMatchKeywords", MessageId = "Get")]
IObservable Get(int id);
///
/// Creates a project for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
/// The new project to create for the specified repository
IObservable CreateForRepository(long repositoryId, NewProject newProject);
///
/// Creates a project for the specified organization.
///
///
/// See the API documentation for more information.
///
/// The name of the organization
/// The new project to create for the specified repository
IObservable CreateForOrganization(string organization, NewProject newProject);
///
/// Updates a project for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the project
/// The modified project
IObservable Update(int id, ProjectUpdate projectUpdate);
///
/// Deletes a project.
///
///
/// See the API documentation for more information.
///
/// The Id of the project
IObservable Delete(int id);
///
/// A client for GitHub's Project Cards API.
///
///
/// See the Repository Projects API documentation for more information.
///
IObservableProjectCardsClient Card { get; }
///
/// A client for GitHub's Project Columns API.
///
///
/// See the Repository Projects API documentation for more information.
///
IObservableProjectColumnsClient Column { get; }
}
}