-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Access to the Github API, v3.
--   
--   The Github API provides programmatic access to the full Github Web
--   site, from Issues to Gists to repos down to the underlying git data
--   like references and trees. This library wraps all of that, exposing a
--   basic but Haskell-friendly set of functions and data structures.
--   
--   For more of an overview please see the README:
--   <a>https://github.com/fpco/github/blob/master/README.md</a>
@package github
@version 0.7.2

module Github.Data.Definitions

-- | Errors have been tagged according to their source, so you can more
--   easily dispatch and handle them.
data Error

-- | A HTTP error occurred. The actual caught error is included.
HTTPConnectionError :: SomeException -> Error

-- | An error in the parser itself.
ParseError :: String -> Error

-- | The JSON is malformed or unexpected.
JsonError :: String -> Error

-- | Incorrect input.
UserError :: String -> Error

-- | A date in the Github format, which is a special case of ISO-8601.
newtype GithubDate
GithubDate :: UTCTime -> GithubDate
fromGithubDate :: GithubDate -> UTCTime
data Commit
Commit :: String -> [Tree] -> String -> GitCommit -> Maybe GithubOwner -> Maybe GithubOwner -> [File] -> Maybe Stats -> Commit
commitSha :: Commit -> String
commitParents :: Commit -> [Tree]
commitUrl :: Commit -> String
commitGitCommit :: Commit -> GitCommit
commitCommitter :: Commit -> Maybe GithubOwner
commitAuthor :: Commit -> Maybe GithubOwner
commitFiles :: Commit -> [File]
commitStats :: Commit -> Maybe Stats
data Tree
Tree :: String -> String -> [GitTree] -> Tree
treeSha :: Tree -> String
treeUrl :: Tree -> String
treeGitTrees :: Tree -> [GitTree]
data GitTree
GitTree :: String -> String -> String -> Maybe Int -> String -> String -> GitTree
gitTreeType :: GitTree -> String
gitTreeSha :: GitTree -> String
gitTreeUrl :: GitTree -> String
gitTreeSize :: GitTree -> Maybe Int
gitTreePath :: GitTree -> String
gitTreeMode :: GitTree -> String
data GitCommit
GitCommit :: String -> String -> GitUser -> GitUser -> Tree -> Maybe String -> [Tree] -> GitCommit
gitCommitMessage :: GitCommit -> String
gitCommitUrl :: GitCommit -> String
gitCommitCommitter :: GitCommit -> GitUser
gitCommitAuthor :: GitCommit -> GitUser
gitCommitTree :: GitCommit -> Tree
gitCommitSha :: GitCommit -> Maybe String
gitCommitParents :: GitCommit -> [Tree]
data GithubOwner
GithubUser :: String -> String -> String -> Int -> Maybe String -> GithubOwner
githubOwnerAvatarUrl :: GithubOwner -> String
githubOwnerLogin :: GithubOwner -> String
githubOwnerUrl :: GithubOwner -> String
githubOwnerId :: GithubOwner -> Int
githubOwnerGravatarId :: GithubOwner -> Maybe String
GithubOrganization :: String -> String -> String -> Int -> GithubOwner
githubOwnerAvatarUrl :: GithubOwner -> String
githubOwnerLogin :: GithubOwner -> String
githubOwnerUrl :: GithubOwner -> String
githubOwnerId :: GithubOwner -> Int
data GitUser
GitUser :: String -> String -> GithubDate -> GitUser
gitUserName :: GitUser -> String
gitUserEmail :: GitUser -> String
gitUserDate :: GitUser -> GithubDate
data File
File :: String -> String -> String -> Int -> String -> Int -> String -> String -> Int -> File
fileBlobUrl :: File -> String
fileStatus :: File -> String
fileRawUrl :: File -> String
fileAdditions :: File -> Int
fileSha :: File -> String
fileChanges :: File -> Int
filePatch :: File -> String
fileFilename :: File -> String
fileDeletions :: File -> Int
data Stats
Stats :: Int -> Int -> Int -> Stats
statsAdditions :: Stats -> Int
statsTotal :: Stats -> Int
statsDeletions :: Stats -> Int
data Comment
Comment :: Maybe Int -> Maybe Int -> String -> String -> UTCTime -> Maybe String -> String -> UTCTime -> Maybe String -> GithubOwner -> Int -> Comment
commentPosition :: Comment -> Maybe Int
commentLine :: Comment -> Maybe Int
commentBody :: Comment -> String
commentCommitId :: Comment -> String
commentUpdatedAt :: Comment -> UTCTime
commentHtmlUrl :: Comment -> Maybe String
commentUrl :: Comment -> String
commentCreatedAt :: Comment -> UTCTime
commentPath :: Comment -> Maybe String
commentUser :: Comment -> GithubOwner
commentId :: Comment -> Int
data NewComment
NewComment :: String -> NewComment
newCommentBody :: NewComment -> String
data EditComment
EditComment :: String -> EditComment
editCommentBody :: EditComment -> String
data Diff
Diff :: String -> Int -> String -> String -> Commit -> [Commit] -> Int -> String -> [File] -> Int -> String -> String -> Diff
diffStatus :: Diff -> String
diffBehindBy :: Diff -> Int
diffPatchUrl :: Diff -> String
diffUrl :: Diff -> String
diffBaseCommit :: Diff -> Commit
diffCommits :: Diff -> [Commit]
diffTotalCommits :: Diff -> Int
diffHtmlUrl :: Diff -> String
diffFiles :: Diff -> [File]
diffAheadBy :: Diff -> Int
diffDiffUrl :: Diff -> String
diffPermalinkUrl :: Diff -> String
data Gist
Gist :: GithubOwner -> String -> String -> Maybe String -> GithubDate -> Bool -> Int -> GithubDate -> String -> String -> [GistFile] -> String -> Gist
gistUser :: Gist -> GithubOwner
gistGitPushUrl :: Gist -> String
gistUrl :: Gist -> String
gistDescription :: Gist -> Maybe String
gistCreatedAt :: Gist -> GithubDate
gistPublic :: Gist -> Bool
gistComments :: Gist -> Int
gistUpdatedAt :: Gist -> GithubDate
gistHtmlUrl :: Gist -> String
gistId :: Gist -> String
gistFiles :: Gist -> [GistFile]
gistGitPullUrl :: Gist -> String
data GistFile
GistFile :: String -> String -> Int -> Maybe String -> String -> Maybe String -> GistFile
gistFileType :: GistFile -> String
gistFileRawUrl :: GistFile -> String
gistFileSize :: GistFile -> Int
gistFileLanguage :: GistFile -> Maybe String
gistFileFilename :: GistFile -> String
gistFileContent :: GistFile -> Maybe String
data GistComment
GistComment :: GithubOwner -> String -> GithubDate -> String -> GithubDate -> Int -> GistComment
gistCommentUser :: GistComment -> GithubOwner
gistCommentUrl :: GistComment -> String
gistCommentCreatedAt :: GistComment -> GithubDate
gistCommentBody :: GistComment -> String
gistCommentUpdatedAt :: GistComment -> GithubDate
gistCommentId :: GistComment -> Int
data Blob
Blob :: String -> String -> String -> String -> Int -> Blob
blobUrl :: Blob -> String
blobEncoding :: Blob -> String
blobContent :: Blob -> String
blobSha :: Blob -> String
blobSize :: Blob -> Int
data GitReference
GitReference :: GitObject -> String -> String -> GitReference
gitReferenceObject :: GitReference -> GitObject
gitReferenceUrl :: GitReference -> String
gitReferenceRef :: GitReference -> String
data GitObject
GitObject :: String -> String -> String -> GitObject
gitObjectType :: GitObject -> String
gitObjectSha :: GitObject -> String
gitObjectUrl :: GitObject -> String
data Issue
Issue :: Maybe GithubDate -> GithubDate -> Maybe String -> Maybe GithubOwner -> [IssueLabel] -> Int -> Maybe GithubOwner -> GithubOwner -> String -> PullRequestReference -> String -> GithubDate -> Maybe String -> String -> Int -> Int -> Maybe Milestone -> Issue
issueClosedAt :: Issue -> Maybe GithubDate
issueUpdatedAt :: Issue -> GithubDate
issueHtmlUrl :: Issue -> Maybe String
issueClosedBy :: Issue -> Maybe GithubOwner
issueLabels :: Issue -> [IssueLabel]
issueNumber :: Issue -> Int
issueAssignee :: Issue -> Maybe GithubOwner
issueUser :: Issue -> GithubOwner
issueTitle :: Issue -> String
issuePullRequest :: Issue -> PullRequestReference
issueUrl :: Issue -> String
issueCreatedAt :: Issue -> GithubDate
issueBody :: Issue -> Maybe String
issueState :: Issue -> String
issueId :: Issue -> Int
issueComments :: Issue -> Int
issueMilestone :: Issue -> Maybe Milestone
data NewIssue
NewIssue :: String -> Maybe String -> Maybe String -> Maybe Int -> Maybe [String] -> NewIssue
newIssueTitle :: NewIssue -> String
newIssueBody :: NewIssue -> Maybe String
newIssueAssignee :: NewIssue -> Maybe String
newIssueMilestone :: NewIssue -> Maybe Int
newIssueLabels :: NewIssue -> Maybe [String]
data EditIssue
EditIssue :: Maybe String -> Maybe String -> Maybe String -> Maybe String -> Maybe Int -> Maybe [String] -> EditIssue
editIssueTitle :: EditIssue -> Maybe String
editIssueBody :: EditIssue -> Maybe String
editIssueAssignee :: EditIssue -> Maybe String
editIssueState :: EditIssue -> Maybe String
editIssueMilestone :: EditIssue -> Maybe Int
editIssueLabels :: EditIssue -> Maybe [String]
data Milestone
Milestone :: GithubOwner -> Maybe GithubDate -> Int -> Int -> Int -> String -> String -> String -> GithubDate -> String -> Milestone
milestoneCreator :: Milestone -> GithubOwner
milestoneDueOn :: Milestone -> Maybe GithubDate
milestoneOpenIssues :: Milestone -> Int
milestoneNumber :: Milestone -> Int
milestoneClosedIssues :: Milestone -> Int
milestoneDescription :: Milestone -> String
milestoneTitle :: Milestone -> String
milestoneUrl :: Milestone -> String
milestoneCreatedAt :: Milestone -> GithubDate
milestoneState :: Milestone -> String
data IssueLabel
IssueLabel :: String -> String -> String -> IssueLabel
labelColor :: IssueLabel -> String
labelUrl :: IssueLabel -> String
labelName :: IssueLabel -> String
data PullRequestReference
PullRequestReference :: Maybe String -> Maybe String -> Maybe String -> PullRequestReference
pullRequestReferenceHtmlUrl :: PullRequestReference -> Maybe String
pullRequestReferencePatchUrl :: PullRequestReference -> Maybe String
pullRequestReferenceDiffUrl :: PullRequestReference -> Maybe String
data IssueComment
IssueComment :: GithubDate -> GithubOwner -> String -> GithubDate -> String -> Int -> IssueComment
issueCommentUpdatedAt :: IssueComment -> GithubDate
issueCommentUser :: IssueComment -> GithubOwner
issueCommentUrl :: IssueComment -> String
issueCommentCreatedAt :: IssueComment -> GithubDate
issueCommentBody :: IssueComment -> String
issueCommentId :: IssueComment -> Int

-- | Data describing an <tt>Event</tt>.
data EventType
Mentioned :: EventType

-- | The actor subscribed to receive notifications for an issue.
Subscribed :: EventType

-- | The issue was unsubscribed from by the actor.
Unsubscribed :: EventType

-- | The issue was referenced from a commit message. The commit_id
--   attribute is the commit SHA1 of where that happened.
Referenced :: EventType

-- | The issue was merged by the actor. The commit_id attribute is the SHA1
--   of the HEAD commit that was merged.
Merged :: EventType

-- | The issue was assigned to the actor.
Assigned :: EventType

-- | The issue was closed by the actor. When the commit_id is present, it
--   identifies the commit that closed the issue using “closes / fixes #NN”
--   syntax.
Closed :: EventType

-- | The issue was reopened by the actor.
Reopened :: EventType
data Event
Event :: GithubOwner -> EventType -> Maybe String -> String -> GithubDate -> Int -> Maybe Issue -> Event
eventActor :: Event -> GithubOwner
eventType :: Event -> EventType
eventCommitId :: Event -> Maybe String
eventUrl :: Event -> String
eventCreatedAt :: Event -> GithubDate
eventId :: Event -> Int
eventIssue :: Event -> Maybe Issue
data SimpleOrganization
SimpleOrganization :: String -> String -> Int -> String -> SimpleOrganization
simpleOrganizationUrl :: SimpleOrganization -> String
simpleOrganizationAvatarUrl :: SimpleOrganization -> String
simpleOrganizationId :: SimpleOrganization -> Int
simpleOrganizationLogin :: SimpleOrganization -> String
data Organization
Organization :: String -> Maybe String -> Maybe String -> String -> Int -> Maybe String -> String -> Int -> String -> Maybe String -> Int -> Int -> String -> GithubDate -> Maybe String -> Int -> Organization
organizationType :: Organization -> String
organizationBlog :: Organization -> Maybe String
organizationLocation :: Organization -> Maybe String
organizationLogin :: Organization -> String
organizationFollowers :: Organization -> Int
organizationCompany :: Organization -> Maybe String
organizationAvatarUrl :: Organization -> String
organizationPublicGists :: Organization -> Int
organizationHtmlUrl :: Organization -> String
organizationEmail :: Organization -> Maybe String
organizationFollowing :: Organization -> Int
organizationPublicRepos :: Organization -> Int
organizationUrl :: Organization -> String
organizationCreatedAt :: Organization -> GithubDate
organizationName :: Organization -> Maybe String
organizationId :: Organization -> Int
data PullRequest
PullRequest :: Maybe GithubDate -> GithubDate -> GithubOwner -> String -> String -> Int -> String -> GithubDate -> String -> String -> String -> String -> PullRequestLinks -> Maybe GithubDate -> String -> Int -> PullRequest
pullRequestClosedAt :: PullRequest -> Maybe GithubDate
pullRequestCreatedAt :: PullRequest -> GithubDate
pullRequestUser :: PullRequest -> GithubOwner
pullRequestPatchUrl :: PullRequest -> String
pullRequestState :: PullRequest -> String
pullRequestNumber :: PullRequest -> Int
pullRequestHtmlUrl :: PullRequest -> String
pullRequestUpdatedAt :: PullRequest -> GithubDate
pullRequestBody :: PullRequest -> String
pullRequestIssueUrl :: PullRequest -> String
pullRequestDiffUrl :: PullRequest -> String
pullRequestUrl :: PullRequest -> String
pullRequestLinks :: PullRequest -> PullRequestLinks
pullRequestMergedAt :: PullRequest -> Maybe GithubDate
pullRequestTitle :: PullRequest -> String
pullRequestId :: PullRequest -> Int
data DetailedPullRequest
DetailedPullRequest :: Maybe GithubDate -> GithubDate -> GithubOwner -> String -> String -> Int -> String -> GithubDate -> String -> String -> String -> String -> PullRequestLinks -> Maybe GithubDate -> String -> Int -> Maybe GithubOwner -> Int -> PullRequestCommit -> Int -> Int -> Int -> Int -> PullRequestCommit -> Int -> Bool -> Bool -> DetailedPullRequest
detailedPullRequestClosedAt :: DetailedPullRequest -> Maybe GithubDate
detailedPullRequestCreatedAt :: DetailedPullRequest -> GithubDate
detailedPullRequestUser :: DetailedPullRequest -> GithubOwner
detailedPullRequestPatchUrl :: DetailedPullRequest -> String
detailedPullRequestState :: DetailedPullRequest -> String
detailedPullRequestNumber :: DetailedPullRequest -> Int
detailedPullRequestHtmlUrl :: DetailedPullRequest -> String
detailedPullRequestUpdatedAt :: DetailedPullRequest -> GithubDate
detailedPullRequestBody :: DetailedPullRequest -> String
detailedPullRequestIssueUrl :: DetailedPullRequest -> String
detailedPullRequestDiffUrl :: DetailedPullRequest -> String
detailedPullRequestUrl :: DetailedPullRequest -> String
detailedPullRequestLinks :: DetailedPullRequest -> PullRequestLinks
detailedPullRequestMergedAt :: DetailedPullRequest -> Maybe GithubDate
detailedPullRequestTitle :: DetailedPullRequest -> String
detailedPullRequestId :: DetailedPullRequest -> Int
detailedPullRequestMergedBy :: DetailedPullRequest -> Maybe GithubOwner
detailedPullRequestChangedFiles :: DetailedPullRequest -> Int
detailedPullRequestHead :: DetailedPullRequest -> PullRequestCommit
detailedPullRequestComments :: DetailedPullRequest -> Int
detailedPullRequestDeletions :: DetailedPullRequest -> Int
detailedPullRequestAdditions :: DetailedPullRequest -> Int
detailedPullRequestReviewComments :: DetailedPullRequest -> Int
detailedPullRequestBase :: DetailedPullRequest -> PullRequestCommit
detailedPullRequestCommits :: DetailedPullRequest -> Int
detailedPullRequestMerged :: DetailedPullRequest -> Bool
detailedPullRequestMergeable :: DetailedPullRequest -> Bool
data PullRequestLinks
PullRequestLinks :: String -> String -> String -> String -> PullRequestLinks
pullRequestLinksReviewComments :: PullRequestLinks -> String
pullRequestLinksComments :: PullRequestLinks -> String
pullRequestLinksHtml :: PullRequestLinks -> String
pullRequestLinksSelf :: PullRequestLinks -> String
data PullRequestCommit
PullRequestCommit :: PullRequestCommit
data SearchReposResult
SearchReposResult :: Int -> [Repo] -> SearchReposResult
searchReposTotalCount :: SearchReposResult -> Int
searchReposRepos :: SearchReposResult -> [Repo]
data Repo
Repo :: String -> Maybe String -> GithubDate -> String -> String -> Int -> Maybe String -> Bool -> String -> Bool -> String -> Int -> GithubDate -> Int -> GithubOwner -> String -> Maybe String -> Maybe String -> Maybe GithubDate -> Int -> String -> Int -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe RepoRef -> Maybe RepoRef -> Repo
repoSshUrl :: Repo -> String
repoDescription :: Repo -> Maybe String
repoCreatedAt :: Repo -> GithubDate
repoHtmlUrl :: Repo -> String
repoSvnUrl :: Repo -> String
repoForks :: Repo -> Int
repoHomepage :: Repo -> Maybe String
repoFork :: Repo -> Bool
repoGitUrl :: Repo -> String
repoPrivate :: Repo -> Bool
repoCloneUrl :: Repo -> String
repoSize :: Repo -> Int
repoUpdatedAt :: Repo -> GithubDate
repoWatchers :: Repo -> Int
repoOwner :: Repo -> GithubOwner
repoName :: Repo -> String
repoLanguage :: Repo -> Maybe String
repoMasterBranch :: Repo -> Maybe String

-- | this is Nothing for new repositories
repoPushedAt :: Repo -> Maybe GithubDate
repoId :: Repo -> Int
repoUrl :: Repo -> String
repoOpenIssues :: Repo -> Int
repoHasWiki :: Repo -> Maybe Bool
repoHasIssues :: Repo -> Maybe Bool
repoHasDownloads :: Repo -> Maybe Bool
repoParent :: Repo -> Maybe RepoRef
repoSource :: Repo -> Maybe RepoRef
data RepoRef
RepoRef :: GithubOwner -> String -> RepoRef
data Contributor

-- | An existing Github user, with their number of contributions, avatar
--   URL, login, URL, ID, and Gravatar ID.
KnownContributor :: Int -> String -> String -> String -> Int -> String -> Contributor

-- | An unknown Github user with their number of contributions and recorded
--   name.
AnonymousContributor :: Int -> String -> Contributor

-- | This is only used for the FromJSON instance.
data Languages
Languages :: [Language] -> Languages
getLanguages :: Languages -> [Language]

-- | A programming language with the name and number of characters written
--   in it.
data Language
Language :: String -> Int -> Language
data Tag
Tag :: String -> String -> String -> BranchCommit -> Tag
tagName :: Tag -> String
tagZipballUrl :: Tag -> String
tagTarballUrl :: Tag -> String
tagCommit :: Tag -> BranchCommit
data Branch
Branch :: String -> BranchCommit -> Branch
branchName :: Branch -> String
branchCommit :: Branch -> BranchCommit
data BranchCommit
BranchCommit :: String -> String -> BranchCommit
branchCommitSha :: BranchCommit -> String
branchCommitUrl :: BranchCommit -> String
data DetailedOwner
DetailedUser :: GithubDate -> String -> Int -> String -> Int -> Int -> Bool -> Maybe String -> Maybe String -> Maybe String -> Int -> Maybe String -> Maybe String -> Maybe String -> String -> String -> Int -> String -> String -> DetailedOwner
detailedOwnerCreatedAt :: DetailedOwner -> GithubDate
detailedOwnerType :: DetailedOwner -> String
detailedOwnerPublicGists :: DetailedOwner -> Int
detailedOwnerAvatarUrl :: DetailedOwner -> String
detailedOwnerFollowers :: DetailedOwner -> Int
detailedOwnerFollowing :: DetailedOwner -> Int
detailedOwnerHireable :: DetailedOwner -> Bool
detailedOwnerGravatarId :: DetailedOwner -> Maybe String
detailedOwnerBlog :: DetailedOwner -> Maybe String
detailedOwnerBio :: DetailedOwner -> Maybe String
detailedOwnerPublicRepos :: DetailedOwner -> Int
detailedOwnerName :: DetailedOwner -> Maybe String
detailedOwnerLocation :: DetailedOwner -> Maybe String
detailedOwnerCompany :: DetailedOwner -> Maybe String
detailedOwnerEmail :: DetailedOwner -> String
detailedOwnerUrl :: DetailedOwner -> String
detailedOwnerId :: DetailedOwner -> Int
detailedOwnerHtmlUrl :: DetailedOwner -> String
detailedOwnerLogin :: DetailedOwner -> String
DetailedOrganization :: GithubDate -> String -> Int -> String -> Int -> Int -> Maybe String -> Maybe String -> Int -> Maybe String -> Maybe String -> Maybe String -> String -> Int -> String -> String -> DetailedOwner
detailedOwnerCreatedAt :: DetailedOwner -> GithubDate
detailedOwnerType :: DetailedOwner -> String
detailedOwnerPublicGists :: DetailedOwner -> Int
detailedOwnerAvatarUrl :: DetailedOwner -> String
detailedOwnerFollowers :: DetailedOwner -> Int
detailedOwnerFollowing :: DetailedOwner -> Int
detailedOwnerBlog :: DetailedOwner -> Maybe String
detailedOwnerBio :: DetailedOwner -> Maybe String
detailedOwnerPublicRepos :: DetailedOwner -> Int
detailedOwnerName :: DetailedOwner -> Maybe String
detailedOwnerLocation :: DetailedOwner -> Maybe String
detailedOwnerCompany :: DetailedOwner -> Maybe String
detailedOwnerUrl :: DetailedOwner -> String
detailedOwnerId :: DetailedOwner -> Int
detailedOwnerHtmlUrl :: DetailedOwner -> String
detailedOwnerLogin :: DetailedOwner -> String
instance Typeable GithubDate
instance Typeable GitTree
instance Typeable Tree
instance Typeable GithubOwner
instance Typeable GitUser
instance Typeable GitCommit
instance Typeable File
instance Typeable Stats
instance Typeable Commit
instance Typeable Comment
instance Typeable NewComment
instance Typeable EditComment
instance Typeable Diff
instance Typeable GistFile
instance Typeable Gist
instance Typeable GistComment
instance Typeable Blob
instance Typeable GitObject
instance Typeable GitReference
instance Typeable NewIssue
instance Typeable EditIssue
instance Typeable Milestone
instance Typeable IssueLabel
instance Typeable PullRequestReference
instance Typeable Issue
instance Typeable IssueComment
instance Typeable EventType
instance Typeable Event
instance Typeable SimpleOrganization
instance Typeable Organization
instance Typeable PullRequestLinks
instance Typeable PullRequest
instance Typeable PullRequestCommit
instance Typeable DetailedPullRequest
instance Typeable RepoRef
instance Typeable Repo
instance Typeable SearchReposResult
instance Typeable Contributor
instance Typeable Language
instance Typeable Languages
instance Typeable BranchCommit
instance Typeable Branch
instance Typeable Tag
instance Typeable DetailedOwner
instance Show Error
instance Show GithubDate
instance Data GithubDate
instance Eq GithubDate
instance Ord GithubDate
instance Show GitTree
instance Data GitTree
instance Eq GitTree
instance Ord GitTree
instance Show Tree
instance Data Tree
instance Eq Tree
instance Ord Tree
instance Show GithubOwner
instance Data GithubOwner
instance Eq GithubOwner
instance Ord GithubOwner
instance Show GitUser
instance Data GitUser
instance Eq GitUser
instance Ord GitUser
instance Show GitCommit
instance Data GitCommit
instance Eq GitCommit
instance Ord GitCommit
instance Show File
instance Data File
instance Eq File
instance Ord File
instance Show Stats
instance Data Stats
instance Eq Stats
instance Ord Stats
instance Show Commit
instance Data Commit
instance Eq Commit
instance Ord Commit
instance Show Comment
instance Data Comment
instance Eq Comment
instance Ord Comment
instance Show NewComment
instance Data NewComment
instance Eq NewComment
instance Ord NewComment
instance Show EditComment
instance Data EditComment
instance Eq EditComment
instance Ord EditComment
instance Show Diff
instance Data Diff
instance Eq Diff
instance Ord Diff
instance Show GistFile
instance Data GistFile
instance Eq GistFile
instance Ord GistFile
instance Show Gist
instance Data Gist
instance Eq Gist
instance Ord Gist
instance Show GistComment
instance Data GistComment
instance Eq GistComment
instance Ord GistComment
instance Show Blob
instance Data Blob
instance Eq Blob
instance Ord Blob
instance Show GitObject
instance Data GitObject
instance Eq GitObject
instance Ord GitObject
instance Show GitReference
instance Data GitReference
instance Eq GitReference
instance Ord GitReference
instance Show NewIssue
instance Data NewIssue
instance Eq NewIssue
instance Ord NewIssue
instance Show EditIssue
instance Data EditIssue
instance Eq EditIssue
instance Ord EditIssue
instance Show Milestone
instance Data Milestone
instance Eq Milestone
instance Ord Milestone
instance Show IssueLabel
instance Data IssueLabel
instance Eq IssueLabel
instance Ord IssueLabel
instance Show PullRequestReference
instance Data PullRequestReference
instance Eq PullRequestReference
instance Ord PullRequestReference
instance Show Issue
instance Data Issue
instance Eq Issue
instance Ord Issue
instance Show IssueComment
instance Data IssueComment
instance Eq IssueComment
instance Ord IssueComment
instance Show EventType
instance Data EventType
instance Eq EventType
instance Ord EventType
instance Show Event
instance Data Event
instance Eq Event
instance Ord Event
instance Show SimpleOrganization
instance Data SimpleOrganization
instance Eq SimpleOrganization
instance Ord SimpleOrganization
instance Show Organization
instance Data Organization
instance Eq Organization
instance Ord Organization
instance Show PullRequestLinks
instance Data PullRequestLinks
instance Eq PullRequestLinks
instance Ord PullRequestLinks
instance Show PullRequest
instance Data PullRequest
instance Eq PullRequest
instance Ord PullRequest
instance Show PullRequestCommit
instance Data PullRequestCommit
instance Eq PullRequestCommit
instance Ord PullRequestCommit
instance Show DetailedPullRequest
instance Data DetailedPullRequest
instance Eq DetailedPullRequest
instance Ord DetailedPullRequest
instance Show RepoRef
instance Data RepoRef
instance Eq RepoRef
instance Ord RepoRef
instance Show Repo
instance Data Repo
instance Eq Repo
instance Ord Repo
instance Show SearchReposResult
instance Data SearchReposResult
instance Eq SearchReposResult
instance Ord SearchReposResult
instance Show Contributor
instance Data Contributor
instance Eq Contributor
instance Ord Contributor
instance Show Language
instance Data Language
instance Eq Language
instance Ord Language
instance Show Languages
instance Data Languages
instance Eq Languages
instance Ord Languages
instance Show BranchCommit
instance Data BranchCommit
instance Eq BranchCommit
instance Ord BranchCommit
instance Show Branch
instance Data Branch
instance Eq Branch
instance Ord Branch
instance Show Tag
instance Data Tag
instance Eq Tag
instance Ord Tag
instance Show DetailedOwner
instance Data DetailedOwner
instance Eq DetailedOwner
instance Ord DetailedOwner


-- | This module re-exports the <tt>Github.Data.Definitions</tt> module,
--   adding instances of <tt>FromJSON</tt> to it. If you wish to use the
--   data without the instances, use the <tt>Github.Data.Definitions</tt>
--   module instead.
module Github.Data
instance FromJSON DetailedOwner
instance FromJSON BranchCommit
instance FromJSON Branch
instance FromJSON Tag
instance FromJSON Languages
instance FromJSON Contributor
instance FromJSON RepoRef
instance FromJSON Repo
instance FromJSON SearchReposResult
instance FromJSON PullRequestCommit
instance FromJSON PullRequestLinks
instance FromJSON DetailedPullRequest
instance FromJSON PullRequest
instance FromJSON Organization
instance FromJSON SimpleOrganization
instance FromJSON EventType
instance FromJSON Event
instance FromJSON IssueComment
instance FromJSON PullRequestReference
instance FromJSON IssueLabel
instance FromJSON Milestone
instance ToJSON EditIssue
instance ToJSON NewIssue
instance FromJSON Issue
instance FromJSON GitObject
instance FromJSON GitReference
instance FromJSON Blob
instance FromJSON GistComment
instance FromJSON GistFile
instance FromJSON Gist
instance FromJSON Diff
instance ToJSON EditComment
instance ToJSON NewComment
instance FromJSON Comment
instance FromJSON Stats
instance FromJSON File
instance FromJSON GitUser
instance FromJSON GithubOwner
instance FromJSON GitCommit
instance FromJSON GitTree
instance FromJSON Tree
instance FromJSON Commit
instance FromJSON GithubDate


-- | The gists API as described at
--   <a>http://developer.github.com/v3/gists/</a>.
module Github.Gists

-- | The list of all public gists created by the user.
--   
--   <pre>
--   gists "mike-burns"
--   </pre>
gists :: String -> IO (Either Error [Gist])

-- | The list of all gists created by the user
--   
--   <pre>
--   gists' (Just ("github-username", "github-password")) "mike-burns"
--   </pre>
gists' :: Maybe GithubAuth -> String -> IO (Either Error [Gist])

-- | A specific gist, given its id.
--   
--   <pre>
--   gist "225074"
--   </pre>
gist :: String -> IO (Either Error Gist)

-- | A specific gist, given its id, with authentication credentials
--   
--   <pre>
--   gist' (Just ("github-username", "github-password")) "225074"
--   </pre>
gist' :: Maybe GithubAuth -> String -> IO (Either Error Gist)


-- | The loving comments people have left on Gists, described on
--   <a>http://developer.github.com/v3/gists/comments/</a>.
module Github.Gists.Comments

-- | All the comments on a Gist, given the Gist ID.
--   
--   <pre>
--   commentsOn "1174060"
--   </pre>
commentsOn :: String -> IO (Either Error [GistComment])

-- | A specific comment, by the comment ID.
--   
--   <pre>
--   comment "62449"
--   </pre>
comment :: String -> IO (Either Error GistComment)


-- | The API for underlying git commits of a Github repo, as described on
--   <a>http://developer.github.com/v3/git/commits/</a>.
module Github.GitData.Commits

-- | A single commit, by SHA1.
--   
--   <pre>
--   commit "thoughtbot" "paperclip" "bc5c51d1ece1ee45f94b056a0f5a1674d7e8cba9"
--   </pre>
commit :: String -> String -> String -> IO (Either Error GitCommit)


-- | The underlying git references on a Github repo, exposed for the world
--   to see. The git internals documentation will also prove handy for
--   understanding these. API documentation at
--   <a>http://developer.github.com/v3/git/refs/</a>.
module Github.GitData.References

-- | A single reference by the ref name.
--   
--   <pre>
--   reference "mike-burns" "github" "heads/master"
--   </pre>
reference :: String -> String -> String -> IO (Either Error GitReference)

-- | The history of references for a repo.
--   
--   <pre>
--   references "mike-burns" "github"
--   </pre>
references :: String -> String -> IO (Either Error [GitReference])

-- | Limited references by a namespace.
--   
--   <pre>
--   namespacedReferences "thoughtbot" "paperclip" "tags"
--   </pre>
namespacedReferences :: String -> String -> String -> IO (Either Error [GitReference])


-- | The underlying tree of SHA1s and files that make up a git repo. The
--   API is described on <a>http://developer.github.com/v3/git/trees/</a>.
module Github.GitData.Trees

-- | A tree for a SHA1.
--   
--   <pre>
--   tree "thoughtbot" "paperclip" "fe114451f7d066d367a1646ca7ac10e689b46844"
--   </pre>
tree :: String -> String -> String -> IO (Either Error Tree)

-- | A recursively-nested tree for a SHA1.
--   
--   <pre>
--   nestedTree "thoughtbot" "paperclip" "fe114451f7d066d367a1646ca7ac10e689b46844"
--   </pre>
nestedTree :: String -> String -> String -> IO (Either Error Tree)


-- | The API for dealing with git blobs from Github repos, as described in
--   <a>http://developer.github.com/v3/git/blobs/</a>.
module Github.GitData.Blobs

-- | Get a blob by SHA1.
--   
--   <pre>
--   blob "thoughtbot" "paperclip" "bc5c51d1ece1ee45f94b056a0f5a1674d7e8cba9"
--   </pre>
blob :: String -> String -> String -> IO (Either Error Blob)


-- | The issues API as described on
--   <a>http://developer.github.com/v3/issues/</a>.
module Github.Issues

-- | Details on a specific issue, given the repo owner and name, and the
--   issue number.
--   
--   <pre>
--   issue "thoughtbot" "paperclip" "462"
--   </pre>
issue :: String -> String -> Int -> IO (Either Error Issue)

-- | Details on a specific issue, given the repo owner and name, and the
--   issue number.'
--   
--   <pre>
--   issue' (Just ("github-username", "github-password")) "thoughtbot" "paperclip" "462"
--   </pre>
issue' :: Maybe GithubAuth -> String -> String -> Int -> IO (Either Error Issue)

-- | All issues for a repo (given the repo owner and name), with optional
--   restrictions as described in the <tt>IssueLimitation</tt> data type.
--   
--   <pre>
--   issuesForRepo "thoughtbot" "paperclip" [NoMilestone, OnlyClosed, Mentions "jyurek", Ascending]
--   </pre>
issuesForRepo :: String -> String -> [IssueLimitation] -> IO (Either Error [Issue])

-- | All issues for a repo (given the repo owner and name), with optional
--   restrictions as described in the <tt>IssueLimitation</tt> data type.
--   
--   <pre>
--   issuesForRepo' (Just ("github-username", "github-password")) "thoughtbot" "paperclip" [NoMilestone, OnlyClosed, Mentions "jyurek", Ascending]
--   </pre>
issuesForRepo' :: Maybe GithubAuth -> String -> String -> [IssueLimitation] -> IO (Either Error [Issue])

-- | A data structure for describing how to filter issues. This is used by
--   <tt>issuesForRepo</tt>.
data IssueLimitation

-- | Issues appearing in any milestone. [default]
AnyMilestone :: IssueLimitation

-- | Issues without a milestone.
NoMilestone :: IssueLimitation

-- | Only issues that are in the milestone with the given id.
MilestoneId :: Int -> IssueLimitation

-- | Only open issues. [default]
Open :: IssueLimitation

-- | Only closed issues.
OnlyClosed :: IssueLimitation

-- | Issues to which no one has been assigned ownership.
Unassigned :: IssueLimitation

-- | All issues regardless of assignment. [default]
AnyAssignment :: IssueLimitation

-- | Only issues assigned to the user with the given login.
AssignedTo :: String -> IssueLimitation

-- | Issues which mention the given string, taken to be a user's login.
Mentions :: String -> IssueLimitation

-- | A list of labels to filter by.
Labels :: [String] -> IssueLimitation

-- | Sort ascending.
Ascending :: IssueLimitation

-- | Sort descending. [default]
Descending :: IssueLimitation

-- | Only issues created since the specified date and time.
Since :: UTCTime -> IssueLimitation

-- | Download this many issues per query
PerPage :: Int -> IssueLimitation

-- | user/password for HTTP basic access authentication
data GithubAuth
GithubBasicAuth :: ByteString -> ByteString -> GithubAuth
GithubOAuth :: String -> GithubAuth

-- | Create a new issue.
--   
--   <pre>
--   createIssue (GithubUser (user, password)) user repo
--    (newIssue "some_repo") {...}
--   </pre>
createIssue :: GithubAuth -> String -> String -> NewIssue -> IO (Either Error Issue)
newIssue :: String -> NewIssue

-- | Edit an issue.
--   
--   <pre>
--   editIssue (GithubUser (user, password)) user repo issue
--    editOfIssue {...}
--   </pre>
editIssue :: GithubAuth -> String -> String -> Int -> EditIssue -> IO (Either Error Issue)
editOfIssue :: EditIssue


-- | The Github issue comments API from
--   <a>http://developer.github.com/v3/issues/comments/</a>.
module Github.Issues.Comments

-- | A specific comment, by ID.
--   
--   <pre>
--   comment "thoughtbot" "paperclip" 1468184
--   </pre>
comment :: String -> String -> Int -> IO (Either Error IssueComment)

-- | All comments on an issue, by the issue's number.
--   
--   <pre>
--   comments "thoughtbot" "paperclip" 635
--   </pre>
comments :: String -> String -> Int -> IO (Either Error [IssueComment])

-- | All comments on an issue, by the issue's number, using authentication.
--   
--   <pre>
--   comments' (GithubUser (user, password)) "thoughtbot" "paperclip" 635
--   </pre>
comments' :: Maybe GithubAuth -> String -> String -> Int -> IO (Either Error [IssueComment])

-- | user/password for HTTP basic access authentication
data GithubAuth
GithubBasicAuth :: ByteString -> ByteString -> GithubAuth
GithubOAuth :: String -> GithubAuth

-- | Create a new comment.
--   
--   <pre>
--   createComment (GithubUser (user, password)) user repo issue
--    "some words"
--   </pre>
createComment :: GithubAuth -> String -> String -> Int -> String -> IO (Either Error Comment)

-- | Edit a comment.
--   
--   <pre>
--   editComment (GithubUser (user, password)) user repo commentid
--    "new words"
--   </pre>
editComment :: GithubAuth -> String -> String -> Int -> String -> IO (Either Error Comment)


-- | The Github issue events API, which is described on
--   <a>http://developer.github.com/v3/issues/events/</a>
module Github.Issues.Events

-- | All events that have happened on an issue.
--   
--   <pre>
--   eventsForIssue "thoughtbot" "paperclip" 49
--   </pre>
eventsForIssue :: String -> String -> Int -> IO (Either Error [Event])

-- | All the events for all issues in a repo.
--   
--   <pre>
--   eventsForRepo "thoughtbot" "paperclip"
--   </pre>
eventsForRepo :: String -> String -> IO (Either Error [Event])

-- | Details on a specific event, by the event's ID.
--   
--   <pre>
--   event "thoughtbot" "paperclip" 5335772
--   </pre>
event :: String -> String -> Int -> IO (Either Error Event)


-- | The API for dealing with labels on Github issues, as described on
--   <a>http://developer.github.com/v3/issues/labels/</a>.
module Github.Issues.Labels

-- | A label, by name.
--   
--   <pre>
--   Github.label "thoughtbot" "paperclip" "bug"
--   </pre>
label :: String -> String -> String -> IO (Either Error IssueLabel)

-- | All the labels available to use on any issue in the repo.
--   
--   <pre>
--   labelsOnRepo "thoughtbot" "paperclip"
--   </pre>
labelsOnRepo :: String -> String -> IO (Either Error [IssueLabel])

-- | The labels on an issue in a repo.
--   
--   <pre>
--   labelsOnIssue "thoughtbot" "paperclip" 585
--   </pre>
labelsOnIssue :: String -> String -> Int -> IO (Either Error [IssueLabel])

-- | All the labels on a repo's milestone, given the milestone ID.
--   
--   <pre>
--   labelsOnMilestone "thoughtbot" "paperclip" 2
--   </pre>
labelsOnMilestone :: String -> String -> Int -> IO (Either Error [IssueLabel])


-- | The milestones API as described on
--   <a>http://developer.github.com/v3/issues/milestones/</a>.
module Github.Issues.Milestones

-- | All milestones in the repo.
--   
--   <pre>
--   milestones "thoughtbot" "paperclip"
--   </pre>
milestones :: String -> String -> IO (Either Error [Milestone])

-- | All milestones in the repo, using authentication.
--   
--   <pre>
--   milestones' (GithubUser (user, password)) "thoughtbot" "paperclip"
--   </pre>
milestones' :: Maybe GithubAuth -> String -> String -> IO (Either Error [Milestone])

-- | Details on a specific milestone, given it's milestone number.
--   
--   <pre>
--   milestone "thoughtbot" "paperclip" 2
--   </pre>
milestone :: String -> String -> Int -> IO (Either Error Milestone)


-- | The orgs API as described on
--   <a>http://developer.github.com/v3/orgs/</a>.
module Github.Organizations

-- | The public organizations for a user, given the user's login.
--   
--   <pre>
--   publicOrganizationsFor "mike-burns"
--   </pre>
publicOrganizationsFor :: String -> IO (Either Error [SimpleOrganization])

-- | The public organizations for a user, given the user's login, with
--   authorization
--   
--   <pre>
--   publicOrganizationsFor' (Just ("github-username", "github-password")) "mike-burns"
--   </pre>
publicOrganizationsFor' :: Maybe GithubAuth -> String -> IO (Either Error [SimpleOrganization])

-- | Details on a public organization. Takes the organization's login.
--   
--   <pre>
--   publicOrganization "thoughtbot"
--   </pre>
publicOrganization :: String -> IO (Either Error Organization)

-- | Details on a public organization. Takes the organization's login.
--   
--   <pre>
--   publicOrganization' (Just ("github-username", "github-password")) "thoughtbot"
--   </pre>
publicOrganization' :: Maybe GithubAuth -> String -> IO (Either Error Organization)


-- | The organization members API as described on
--   <a>http://developer.github.com/v3/orgs/members/</a>.
module Github.Organizations.Members

-- | All the users who are members of the specified organization.
--   
--   <pre>
--   membersOf "thoughtbot"
--   </pre>
membersOf :: String -> IO (Either Error [GithubOwner])


-- | The pull requests API as documented at
--   <a>http://developer.github.com/v3/pulls/</a>.
module Github.PullRequests

-- | All pull requests for the repo, by owner and repo name. | With
--   authentification
--   
--   <pre>
--   pullRequestsFor' (Just ("github-username", "github-password")) "rails" "rails"
--   </pre>
pullRequestsFor' :: Maybe GithubAuth -> String -> String -> IO (Either Error [PullRequest])

-- | A detailed pull request, which has much more information. This takes
--   the repo owner and name along with the number assigned to the pull
--   request. | With authentification
--   
--   <pre>
--   pullRequest' (Just ("github-username", "github-password")) "thoughtbot" "paperclip" 562
--   </pre>
pullRequest' :: Maybe GithubAuth -> String -> String -> Int -> IO (Either Error DetailedPullRequest)

-- | All the commits on a pull request, given the repo owner, repo name,
--   and the number of the pull request. | With authentification
--   
--   <pre>
--   pullRequestCommits' (Just ("github-username", "github-password")) "thoughtbot" "paperclip" 688
--   </pre>
pullRequestCommits' :: Maybe GithubAuth -> String -> String -> Int -> IO (Either Error [Commit])

-- | The individual files that a pull request patches. Takes the repo owner
--   and name, plus the number assigned to the pull request. | With
--   authentification
--   
--   <pre>
--   pullRequestFiles' (Just ("github-username", "github-password")) "thoughtbot" "paperclip" 688
--   </pre>
pullRequestFiles' :: Maybe GithubAuth -> String -> String -> Int -> IO (Either Error [File])

-- | All pull requests for the repo, by owner and repo name.
--   
--   <pre>
--   pullRequestsFor "rails" "rails"
--   </pre>
pullRequestsFor :: String -> String -> IO (Either Error [PullRequest])

-- | A detailed pull request, which has much more information. This takes
--   the repo owner and name along with the number assigned to the pull
--   request.
--   
--   <pre>
--   pullRequest "thoughtbot" "paperclip" 562
--   </pre>
pullRequest :: String -> String -> Int -> IO (Either Error DetailedPullRequest)

-- | All the commits on a pull request, given the repo owner, repo name,
--   and the number of the pull request.
--   
--   <pre>
--   pullRequestCommits "thoughtbot" "paperclip" 688
--   </pre>
pullRequestCommits :: String -> String -> Int -> IO (Either Error [Commit])

-- | The individual files that a pull request patches. Takes the repo owner
--   and name, plus the number assigned to the pull request.
--   
--   <pre>
--   pullRequestFiles "thoughtbot" "paperclip" 688
--   </pre>
pullRequestFiles :: String -> String -> Int -> IO (Either Error [File])


-- | The Github Repos API, as documented at
--   <a>http://developer.github.com/v3/repos/</a>
module Github.Repos

-- | The repos for a user, by their login. Can be restricted to just repos
--   they own, are a member of, or publicize. Private repos are currently
--   not supported.
--   
--   <pre>
--   userRepos "mike-burns" All
--   </pre>
userRepos :: String -> RepoPublicity -> IO (Either Error [Repo])

-- | The repos for a user, by their login. | With authentication, but note
--   that private repos are currently not supported.
--   
--   <pre>
--   userRepos' (Just (GithubUser (user, password))) "mike-burns" All
--   </pre>
userRepos' :: Maybe GithubAuth -> String -> RepoPublicity -> IO (Either Error [Repo])

-- | Details on a specific repo, given the owner and repo name.
--   
--   <pre>
--   userRepo "mike-burns" "github"
--   </pre>
userRepo :: String -> String -> IO (Either Error Repo)

-- | Details on a specific repo, given the owner and repo name. | With
--   authentication
--   
--   <pre>
--   userRepo' (Just (GithubUser (user, password))) "mike-burns" "github"
--   </pre>
userRepo' :: Maybe GithubAuth -> String -> String -> IO (Either Error Repo)

-- | The repos for an organization, by the organization name.
--   
--   <pre>
--   organizationRepos "thoughtbot"
--   </pre>
organizationRepos :: String -> IO (Either Error [Repo])

-- | The repos for an organization, by the organization name. | With
--   authentication
--   
--   <pre>
--   organizationRepos (Just (GithubUser (user, password))) "thoughtbot"
--   </pre>
organizationRepos' :: Maybe GithubAuth -> String -> IO (Either Error [Repo])

-- | A specific organization repo, by the organization name.
--   
--   <pre>
--   organizationRepo "thoughtbot" "github"
--   </pre>
organizationRepo :: String -> String -> IO (Either Error Repo)

-- | A specific organization repo, by the organization name. | With
--   authentication
--   
--   <pre>
--   organizationRepo (Just (GithubUser (user, password))) "thoughtbot" "github"
--   </pre>
organizationRepo' :: Maybe GithubAuth -> String -> String -> IO (Either Error Repo)

-- | The contributors to a repo, given the owner and repo name.
--   
--   <pre>
--   contributors "thoughtbot" "paperclip"
--   </pre>
contributors :: String -> String -> IO (Either Error [Contributor])

-- | The contributors to a repo, including anonymous contributors (such as
--   deleted users or git commits with unknown email addresses), given the
--   owner and repo name.
--   
--   <pre>
--   contributorsWithAnonymous "thoughtbot" "paperclip"
--   </pre>
contributorsWithAnonymous :: String -> String -> IO (Either Error [Contributor])

-- | The programming languages used in a repo along with the number of
--   characters written in that language. Takes the repo owner and name.
--   
--   <pre>
--   languagesFor "mike-burns" "ohlaunch"
--   </pre>
languagesFor :: String -> String -> IO (Either Error [Language])

-- | The git tags on a repo, given the repo owner and name.
--   
--   <pre>
--   tagsFor "thoughtbot" "paperclip"
--   </pre>
tagsFor :: String -> String -> IO (Either Error [Tag])

-- | The git branches on a repo, given the repo owner and name.
--   
--   <pre>
--   branchesFor "thoughtbot" "paperclip"
--   </pre>
branchesFor :: String -> String -> IO (Either Error [Branch])

-- | Filter the list of the user's repos using any of these constructors.
data RepoPublicity

-- | All repos accessible to the user.
All :: RepoPublicity

-- | Only repos owned by the user.
Owner :: RepoPublicity

-- | Only public repos.
Public :: RepoPublicity

-- | Only private repos.
Private :: RepoPublicity

-- | Only repos to which the user is a member but not an owner.
Member :: RepoPublicity

-- | user/password for HTTP basic access authentication
data GithubAuth
GithubBasicAuth :: ByteString -> ByteString -> GithubAuth
GithubOAuth :: String -> GithubAuth

-- | Create a new repository.
--   
--   <pre>
--   createRepo (GithubUser (user, password)) (newRepo "some_repo") {newRepoHasIssues = Just False}
--   </pre>
createRepo :: GithubAuth -> NewRepo -> IO (Either Error Repo)

-- | Create a new repository for an organization.
--   
--   <pre>
--   createOrganizationRepo (GithubUser (user, password)) "thoughtbot" (newRepo "some_repo") {newRepoHasIssues = Just False}
--   </pre>
createOrganizationRepo :: GithubAuth -> String -> NewRepo -> IO (Either Error Repo)
newRepo :: String -> NewRepo
data NewRepo
NewRepo :: String -> (Maybe String) -> (Maybe String) -> (Maybe Bool) -> (Maybe Bool) -> (Maybe Bool) -> (Maybe Bool) -> NewRepo
newRepoName :: NewRepo -> String
newRepoDescription :: NewRepo -> (Maybe String)
newRepoHomepage :: NewRepo -> (Maybe String)
newRepoPrivate :: NewRepo -> (Maybe Bool)
newRepoHasIssues :: NewRepo -> (Maybe Bool)
newRepoHasWiki :: NewRepo -> (Maybe Bool)
newRepoAutoInit :: NewRepo -> (Maybe Bool)

-- | Edit an existing repository.
--   
--   <pre>
--   editRepo (GithubUser (user, password)) "some_user" "some_repo" def {editDescription = Just "some description"}
--   </pre>
editRepo :: GithubAuth -> String -> String -> Edit -> IO (Either Error Repo)
def :: Default a => a
data Edit
Edit :: Maybe String -> Maybe String -> Maybe String -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Edit
editName :: Edit -> Maybe String
editDescription :: Edit -> Maybe String
editHomepage :: Edit -> Maybe String
editPublic :: Edit -> Maybe Bool
editHasIssues :: Edit -> Maybe Bool
editHasWiki :: Edit -> Maybe Bool
editHasDownloads :: Edit -> Maybe Bool

-- | Delete an existing repository.
--   
--   <pre>
--   deleteRepo (GithubUser (user, password)) "thoughtbot" "some_repo"
--   </pre>
deleteRepo :: GithubAuth -> String -> String -> IO (Either Error ())
instance Show RepoPublicity
instance Eq RepoPublicity
instance Show NewRepo
instance Show Edit
instance ToJSON Edit
instance Default Edit
instance ToJSON NewRepo


-- | The repo collaborators API as described on
--   <a>http://developer.github.com/v3/repos/collaborators/</a>.
module Github.Repos.Collaborators

-- | All the users who have collaborated on a repo.
--   
--   <pre>
--   collaboratorsOn "thoughtbot" "paperclip"
--   </pre>
collaboratorsOn :: String -> String -> IO (Either Error [GithubOwner])

-- | Whether the user is collaborating on a repo. Takes the user in
--   question, the user who owns the repo, and the repo name.
--   
--   <pre>
--   isCollaboratorOn "mike-burns" "thoughtbot" "paperclip"
--   isCollaboratorOn "johnson" "thoughtbot" "paperclip"
--   </pre>
isCollaboratorOn :: String -> String -> String -> IO (Either Error Bool)


-- | The repo commits API as described on
--   <a>http://developer.github.com/v3/repos/commits/</a>.
module Github.Repos.Commits

-- | The commit history for a repo.
--   
--   <pre>
--   commitsFor "mike-burns" "github"
--   </pre>
commitsFor :: String -> String -> IO (Either Error [Commit])

-- | Details on a specific SHA1 for a repo.
--   
--   <pre>
--   commit "mike-burns" "github" "9d1a9a361266c3c890b1108ad2fdf52f824b1b81"
--   </pre>
commit :: String -> String -> String -> IO (Either Error Commit)

-- | All the comments on a Github repo.
--   
--   <pre>
--   commentsFor "thoughtbot" "paperclip"
--   </pre>
commentsFor :: String -> String -> IO (Either Error [Comment])

-- | Just the comments on a specific SHA for a given Github repo.
--   
--   <pre>
--   commitCommentsFor "thoughtbot" "paperclip" "41f685f6e01396936bb8cd98e7cca517e2c7d96b"
--   </pre>
commitCommentsFor :: String -> String -> String -> IO (Either Error [Comment])

-- | A comment, by its ID, relative to the Github repo.
--   
--   <pre>
--   commitCommentFor "thoughtbot" "paperclip" "669575"
--   </pre>
commitCommentFor :: String -> String -> String -> IO (Either Error Comment)

-- | The diff between two treeishes on a repo.
--   
--   <pre>
--   diff "thoughtbot" "paperclip" "41f685f6e01396936bb8cd98e7cca517e2c7d96b" "HEAD"
--   </pre>
diff :: String -> String -> String -> String -> IO (Either Error Diff)


-- | Hot forking action, as described at
--   <a>http://developer.github.com/v3/repos/forks/</a>.
module Github.Repos.Forks

-- | All the repos that are forked off the given repo.
--   
--   <pre>
--   forksFor "thoughtbot" "paperclip"
--   </pre>
forksFor :: String -> String -> IO (Either Error [Repo])

-- | All the repos that are forked off the given repo. | With
--   authentication
--   
--   <pre>
--   forksFor' (Just (GithubUser (user, password))) "thoughtbot" "paperclip"
--   </pre>
forksFor' :: Maybe GithubAuth -> String -> String -> IO (Either Error [Repo])


-- | The repo watching API as described on
--   <a>http://developer.github.com/v3/repos/watching/</a>.
module Github.Repos.Watching

-- | The list of users that are watching the specified Github repo.
--   
--   <pre>
--   watchersFor "thoughtbot" "paperclip"
--   </pre>
watchersFor :: String -> String -> IO (Either Error [GithubOwner])

-- | The list of users that are watching the specified Github repo. | With
--   authentication
--   
--   <pre>
--   watchersFor' (Just (GithubUser (user, password))) "thoughtbot" "paperclip"
--   </pre>
watchersFor' :: Maybe GithubAuth -> String -> String -> IO (Either Error [GithubOwner])

-- | All the public repos watched by the specified user.
--   
--   <pre>
--   reposWatchedBy "croaky"
--   </pre>
reposWatchedBy :: String -> IO (Either Error [Repo])

-- | All the public repos watched by the specified user. | With
--   authentication
--   
--   <pre>
--   reposWatchedBy' (Just (GithubUser (user, password))) "croaky"
--   </pre>
reposWatchedBy' :: Maybe GithubAuth -> String -> IO (Either Error [Repo])


-- | The repo starring API as described on
--   <a>http://developer.github.com/v3/repos/starring/</a>.
module Github.Repos.Starring

-- | The list of users that have starred the specified Github repo.
--   
--   <pre>
--   userInfoFor' Nothing "mike-burns"
--   </pre>
stargazersFor :: Maybe GithubAuth -> String -> String -> IO (Either Error [GithubOwner])

-- | All the public repos starred by the specified user.
--   
--   <pre>
--   reposStarredBy Nothing "croaky"
--   </pre>
reposStarredBy :: Maybe GithubAuth -> String -> IO (Either Error [Repo])

-- | All the repos starred by the authenticated user.
myStarred :: GithubAuth -> IO (Either Error [Repo])


-- | The Github Users API, as described at
--   <a>http://developer.github.com/v3/users/</a>.
module Github.Users

-- | The information for a single user, by login name.
--   
--   <pre>
--   userInfoFor "mike-burns"
--   </pre>
userInfoFor :: String -> IO (Either Error DetailedOwner)

-- | The information for a single user, by login name. | With
--   authentification
--   
--   <pre>
--   userInfoFor' (Just ("github-username", "github-password")) "mike-burns"
--   </pre>
userInfoFor' :: Maybe GithubAuth -> String -> IO (Either Error DetailedOwner)


-- | The user followers API as described on
--   <a>http://developer.github.com/v3/users/followers/</a>.
module Github.Users.Followers

-- | All the users following the given user.
--   
--   <pre>
--   usersFollowing "mike-burns"
--   </pre>
usersFollowing :: String -> IO (Either Error [GithubOwner])

-- | All the users that the given user follows.
--   
--   <pre>
--   usersFollowedBy "mike-burns"
--   </pre>
usersFollowedBy :: String -> IO (Either Error [GithubOwner])


-- | The Github Search API, as described at
--   <a>http://developer.github.com/v3/search/</a>.
module Github.Search

-- | Perform a repository search. | With authentication.
--   
--   <pre>
--   searchRepos' (Just $ GithubBasicAuth "github-username" "github-password') "q=a in%3Aname language%3Ahaskell created%3A&gt;2013-10-01&amp;per_page=100"
--   </pre>
searchRepos' :: Maybe GithubAuth -> String -> IO (Either Error SearchReposResult)

-- | Perform a repository search. | Without authentication.
--   
--   <pre>
--   searchRepos "q=a in%3Aname language%3Ahaskell created%3A&gt;2013-10-01&amp;per_page=100"
--   </pre>
searchRepos :: String -> IO (Either Error SearchReposResult)

-- | user/password for HTTP basic access authentication
data GithubAuth
GithubBasicAuth :: ByteString -> ByteString -> GithubAuth
GithubOAuth :: String -> GithubAuth
