using System;
using System.Diagnostics.CodeAnalysis;
using System.Reactive;
using System.Threading;
namespace Octokit.Reactive
{
///
/// A client for GitHub's Releases API.
///
///
/// See the Releases API documentation for more information.
///
public interface IObservableReleasesClient
{
///
/// Generates a s for the specified repository with auto generated notes.
///
///
/// See the API documentation for more information.
///
/// The repository's owner
/// The repository's name
/// The request for generating release notes
/// Thrown when a general API error occurs.
IObservable GenerateReleaseNotes(string owner, string name, GenerateReleaseNotesRequest data);
///
/// Generates a s for the specified repository with auto generated notes.
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
/// The request for generating release notes
/// Thrown when a general API error occurs.
IObservable GenerateReleaseNotes(long repositoryId, GenerateReleaseNotesRequest data);
///
/// Gets all s for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The repository's owner
/// The repository's name
/// Thrown when a general API error occurs.
IObservable GetAll(string owner, string name);
///
/// Gets all s for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
/// Thrown when a general API error occurs.
IObservable GetAll(long repositoryId);
///
/// Gets all s for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The repository's owner
/// The repository's name
/// Options for changing the API response
/// Thrown when a general API error occurs.
IObservable GetAll(string owner, string name, ApiOptions options);
///
/// Gets all s for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
/// Options for changing the API response
/// Thrown when a general API error occurs.
IObservable GetAll(long repositoryId, ApiOptions options);
///
/// Gets a single for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The repository's owner
/// The repository's name
/// The id of the release
/// Thrown when a general API error occurs.
IObservable Get(string owner, string name, long id);
///
/// Gets a single for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The repository's owner
/// The repository's name
/// The tag of the release
/// Thrown when a general API error occurs.
IObservable Get(string owner, string name, string tag);
///
/// Gets a single for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
/// The id of the release
/// Thrown when a general API error occurs.
IObservable Get(long repositoryId, long id);
///
/// Gets a single for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
/// The tag of the release
/// Thrown when a general API error occurs.
IObservable Get(long repositoryId, string tag);
///
/// Gets the latest for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The repository's owner
/// The repository's name
/// Thrown when a general API error occurs.
IObservable GetLatest(string owner, string name);
///
/// Gets the latest for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
/// Thrown when a general API error occurs.
IObservable GetLatest(long repositoryId);
///
/// Creates a new for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The repository's owner
/// The repository's name
/// A description of the release to create
/// Thrown when a general API error occurs.
IObservable Create(string owner, string name, NewRelease data);
///
/// Creates a new for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
/// A description of the release to create
/// Thrown when a general API error occurs.
IObservable Create(long repositoryId, NewRelease data);
///
/// Edits an existing for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The repository's owner
/// The repository's name
/// The id of the release
/// A description of the release to edit
/// Thrown when a general API error occurs.
IObservable Edit(string owner, string name, long id, ReleaseUpdate data);
///
/// Edits an existing for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
/// The id of the release
/// A description of the release to edit
/// Thrown when a general API error occurs.
IObservable Edit(long repositoryId, long id, ReleaseUpdate data);
///
/// Deletes an existing for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The repository's owner
/// The repository's name
/// The id of the release to delete
/// Thrown when a general API error occurs.
IObservable Delete(string owner, string name, long id);
///
/// Deletes an existing for the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
/// The id of the release to delete
/// Thrown when a general API error occurs.
IObservable Delete(long repositoryId, long id);
///
/// Gets all for the specified release of the specified repository.
///
///
/// See the API documentation for more information.
///
/// The repository's owner
/// The repository's name
/// The id of the .
/// Thrown when a general API error occurs.
IObservable GetAllAssets(string owner, string name, long id);
///
/// Gets all for the specified release of the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
/// The id of the .
/// Thrown when a general API error occurs.
IObservable GetAllAssets(long repositoryId, long id);
///
/// Gets all for the specified release of the specified repository.
///
///
/// See the API documentation for more information.
///
/// The repository's owner
/// The repository's name
/// The id of the .
/// Options for changing the API response
/// Thrown when a general API error occurs.
IObservable GetAllAssets(string owner, string name, long id, ApiOptions options);
///
/// Gets all for the specified release of the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
/// The id of the .
/// Options for changing the API response
/// Thrown when a general API error occurs.
IObservable GetAllAssets(long repositoryId, long id, ApiOptions options);
///
/// Uploads a for the specified release.
///
///
/// See the API documentation for more information.
///
/// The to attach the uploaded asset to
/// Description of the asset with its data
/// An optional token to monitor for cancellation requests
/// Thrown when a general API error occurs.
IObservable UploadAsset(Release release, ReleaseAssetUpload data, CancellationToken cancellationToken = default);
///
/// Gets the specified for the specified release of the specified repository.
///
///
/// See the API documentation for more information.
///
/// The repository's owner
/// The repository's name
/// The id of the
IObservable GetAsset(string owner, string name, int assetId);
///
/// Gets the specified for the specified release of the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
/// The id of the
IObservable GetAsset(long repositoryId, int assetId);
///
/// Edits the for the specified release of the specified repository.
///
///
/// See the API documentation for more information.
///
/// The repository's owner
/// The repository's name
/// The id of the
/// Description of the asset with its amended data
IObservable EditAsset(string owner, string name, int assetId, ReleaseAssetUpdate data);
///
/// Edits the for the specified release of the specified repository.
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
/// The id of the
/// Description of the asset with its amended data
IObservable EditAsset(long repositoryId, int assetId, ReleaseAssetUpdate data);
///
/// Deletes the specified from the specified repository
///
///
/// See the API documentation for more information.
///
/// The repository's owner
/// The repository's name
/// The id of the .
IObservable DeleteAsset(string owner, string name, int assetId);
///
/// Deletes the specified from the specified repository
///
///
/// See the API documentation for more information.
///
/// The Id of the repository
/// The id of the .
IObservable DeleteAsset(long repositoryId, int assetId);
}
}