 
     var path: String {
         switch self {
+        case let .listReleases(_, owner, repo):
+            return "repos/\(owner)/\(repo)/releases"
         case .postRelease(_, let owner, let repo, _, _, _, _, _, _):
             return "repos/\(owner)/\(repo)/releases"
         }

// MARK: Router

enum ReleaseRouter: JSONPostRouter {
    case postRelease(Configuration, String, String, String, String?, String?, String?, Bool, Bool)

    var configuration: Configuration {
        switch self {
        case .postRelease(let config, _, _, _, _, _, _, _, _): return config
        }
    }

    var method: HTTPMethod {
        return .POST
    }

    var encoding: HTTPEncoding {

// MARK: request

public extension Octokit {
    /// Fetches the list of releases.
    /// - Parameters:
    ///   - session: RequestKitURLSession, defaults to URLSession.shared()
    ///   - owner: The user or organization that owns the repositories.
    ///   - repository: The name of the repository.
    ///   - completion: Callback for the outcome of the fetch.
    @discardableResult
    func listReleases(_ session: RequestKitURLSession = URLSession.shared, owner: String, repository: String, completion: @escaping (_ response: Response<[Release]>) -> Void) -> URLSessionDataTaskProtocol? {
        let router = ReleaseRouter.listReleases(configuration, owner, repository)
        return router.load(session, dateDecodingStrategy: .formatted(Time.rfc3339DateFormatter), expectedResultType: [Release].self) { releases, error in
            if let error = error {
                completion(Response.failure(error))
            } else {
                if let releases = releases {
                    completion(Response.success(releases))
                }
            }
        }
    }

    /// Creates a new release.
    /// - Parameters:
