/// <summary>
/// Represents the public API for the CODEGATOR job library.
/// </summary>
public static class JobApi
{
/// <summary>
/// Creates a job entry in the system and schedules the job
/// for execution.
/// </summary>
/// <typeparam name="J">The job type.</typeparam>
/// <param name="job">The job to be created.</param>
public static void Create<J>(J job)
where J : JobBase, new();
// ******************************************************************
/// <summary>
/// Removes a job from the system.
/// </summary>
/// <param name="jobId">The job to be deleted from the system.</param>
public static void Delete(Guid jobId);
// ******************************************************************
/// <summary>
/// Saves changes to a job's properties.
/// </summary>
/// <typeparam name="J">The job type.</typeparam>
/// <param name="job">The job to be saved.</param>
public static void Update<J>(J job)
where J : JobBase, new();
// ******************************************************************
/// <summary>
/// Returns a specific job from the system.
/// </summary>
/// <typeparam name="J">The job type</typeparam>
/// <param name="jobId">The identifier for the job.</param>
/// <returns>A <see cref="JobBase"/> instance.</returns>
public static J Read<J>(Guid jobId)
where J : JobBase, new();
// ******************************************************************
/// <summary>
/// Returns a list of all the jobs in the system.
/// </summary>
/// <returns>A list of <see cref="JobBase"/> instances.</returns>
public static List<JobBase> ReadAll();
// ******************************************************************
/// <summary>
/// Returns a list of jobs that match a specified type.
/// </summary>
/// <typeparam name="J">The job type to search for.</typeparam>
/// <returns>A list of <see cref="JobBase"/> instances.</returns>
public static List<J> ReadAll<J>()
where J : JobBase, new();
}