-- 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/jwiegley/github/blob/master/README.md</a>
@package github
@version 0.13.2


-- | Verification of incomming webhook payloads, as described at
--   <a>https://developer.github.com/webhooks/securing/</a>
module Github.Repos.Webhooks.Validate

-- | Validates a given payload against a given HMAC hexdigest using a given
--   secret. Returns <a>True</a> iff the given hash is non-empty and it's a
--   valid signature of the payload.
isValidPayload :: String -> Maybe String -> ByteString -> Bool

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 -> Maybe String -> Maybe Int -> String -> String -> GitTree
[gitTreeType] :: GitTree -> String
[gitTreeSha] :: GitTree -> String
[gitTreeUrl] :: GitTree -> Maybe 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 -> Maybe String -> UTCTime -> Maybe String -> String -> Maybe UTCTime -> Maybe String -> GithubOwner -> Int -> Comment
[commentPosition] :: Comment -> Maybe Int
[commentLine] :: Comment -> Maybe Int
[commentBody] :: Comment -> String
[commentCommitId] :: Comment -> Maybe String
[commentUpdatedAt] :: Comment -> UTCTime
[commentHtmlUrl] :: Comment -> Maybe String
[commentUrl] :: Comment -> String
[commentCreatedAt] :: Comment -> Maybe 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 NewGitReference
NewGitReference :: String -> String -> NewGitReference
[newGitReferenceRef] :: NewGitReference -> String
[newGitReferenceSha] :: NewGitReference -> String
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 -> String -> Maybe String -> Maybe GithubOwner -> [IssueLabel] -> Int -> Maybe GithubOwner -> GithubOwner -> String -> Maybe PullRequestReference -> String -> GithubDate -> Maybe String -> String -> Int -> Int -> Maybe Milestone -> Issue
[issueClosedAt] :: Issue -> Maybe GithubDate
[issueUpdatedAt] :: Issue -> GithubDate
[issueEventsUrl] :: Issue -> String
[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 -> Maybe 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 -> Maybe String -> String -> String -> GithubDate -> String -> Milestone
[milestoneCreator] :: Milestone -> GithubOwner
[milestoneDueOn] :: Milestone -> Maybe GithubDate
[milestoneOpenIssues] :: Milestone -> Int
[milestoneNumber] :: Milestone -> Int
[milestoneClosedIssues] :: Milestone -> Int
[milestoneDescription] :: Milestone -> Maybe 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

-- | The actor was @mentioned in an issue body.
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

-- | The issue was unassigned to the actor
ActorUnassigned :: EventType

-- | A label was added to the issue.
Labeled :: EventType

-- | A label was removed from the issue.
Unlabeled :: EventType

-- | The issue was added to a milestone.
Milestoned :: EventType

-- | The issue was removed from a milestone.
Demilestoned :: EventType

-- | The issue title was changed.
Renamed :: EventType

-- | The issue was locked by the actor.
Locked :: EventType

-- | The issue was unlocked by the actor.
Unlocked :: EventType

-- | The pull request’s branch was deleted.
HeadRefDeleted :: EventType

-- | The pull request’s branch was restored.
HeadRefRestored :: 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 -> Maybe 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 -> Maybe Bool
data EditPullRequest
EditPullRequest :: Maybe String -> Maybe String -> Maybe EditPullRequestState -> EditPullRequest
[editPullRequestTitle] :: EditPullRequest -> Maybe String
[editPullRequestBody] :: EditPullRequest -> Maybe String
[editPullRequestState] :: EditPullRequest -> Maybe EditPullRequestState
data CreatePullRequest
CreatePullRequest :: String -> String -> String -> String -> CreatePullRequest
[createPullRequestTitle] :: CreatePullRequest -> String
[createPullRequestBody] :: CreatePullRequest -> String
[createPullRequestHead] :: CreatePullRequest -> String
[createPullRequestBase] :: CreatePullRequest -> String
CreatePullRequestIssue :: Int -> String -> String -> CreatePullRequest
[createPullRequestIssueNum] :: CreatePullRequest -> Int
[createPullRequestHead] :: CreatePullRequest -> String
[createPullRequestBase] :: CreatePullRequest -> String
data PullRequestLinks
PullRequestLinks :: String -> String -> String -> String -> PullRequestLinks
[pullRequestLinksReviewComments] :: PullRequestLinks -> String
[pullRequestLinksComments] :: PullRequestLinks -> String
[pullRequestLinksHtml] :: PullRequestLinks -> String
[pullRequestLinksSelf] :: PullRequestLinks -> String
data PullRequestCommit
PullRequestCommit :: String -> String -> String -> GithubOwner -> Repo -> PullRequestCommit
[pullRequestCommitLabel] :: PullRequestCommit -> String
[pullRequestCommitRef] :: PullRequestCommit -> String
[pullRequestCommitSha] :: PullRequestCommit -> String
[pullRequestCommitUser] :: PullRequestCommit -> GithubOwner
[pullRequestCommitRepo] :: PullRequestCommit -> Repo
data SearchReposResult
SearchReposResult :: Int -> [Repo] -> SearchReposResult
[searchReposTotalCount] :: SearchReposResult -> Int
[searchReposRepos] :: SearchReposResult -> [Repo]
data Repo
Repo :: Maybe String -> Maybe String -> Maybe GithubDate -> String -> Maybe String -> Maybe Int -> Maybe String -> Maybe Bool -> Maybe String -> Bool -> Maybe String -> Maybe Int -> Maybe GithubDate -> Maybe Int -> GithubOwner -> String -> Maybe String -> Maybe String -> Maybe GithubDate -> Int -> String -> Maybe Int -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe RepoRef -> Maybe RepoRef -> String -> Repo
[repoSshUrl] :: Repo -> Maybe String
[repoDescription] :: Repo -> Maybe String
[repoCreatedAt] :: Repo -> Maybe GithubDate
[repoHtmlUrl] :: Repo -> String
[repoSvnUrl] :: Repo -> Maybe String
[repoForks] :: Repo -> Maybe Int
[repoHomepage] :: Repo -> Maybe String
[repoFork] :: Repo -> Maybe Bool
[repoGitUrl] :: Repo -> Maybe String
[repoPrivate] :: Repo -> Bool
[repoCloneUrl] :: Repo -> Maybe String
[repoSize] :: Repo -> Maybe Int
[repoUpdatedAt] :: Repo -> Maybe GithubDate
[repoWatchers] :: Repo -> Maybe 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 -> Maybe Int
[repoHasWiki] :: Repo -> Maybe Bool
[repoHasIssues] :: Repo -> Maybe Bool
[repoHasDownloads] :: Repo -> Maybe Bool
[repoParent] :: Repo -> Maybe RepoRef
[repoSource] :: Repo -> Maybe RepoRef
[repoHooksUrl] :: Repo -> String
data RepoRef
RepoRef :: GithubOwner -> String -> RepoRef
data SearchCodeResult
SearchCodeResult :: Int -> [Code] -> SearchCodeResult
[searchCodeTotalCount] :: SearchCodeResult -> Int
[searchCodeCodes] :: SearchCodeResult -> [Code]
data Code
Code :: String -> String -> String -> String -> String -> String -> Repo -> Code
[codeName] :: Code -> String
[codePath] :: Code -> String
[codeSha] :: Code -> String
[codeUrl] :: Code -> String
[codeGitUrl] :: Code -> String
[codeHtmlUrl] :: Code -> String
[codeRepo] :: Code -> Repo
data Content
ContentFile :: ContentData -> Content
ContentDirectory :: [ContentData] -> Content
data ContentData
ContentData :: String -> String -> Int -> String -> String -> String -> String -> String -> String -> String -> ContentData
[contentType] :: ContentData -> String
[contentEncoding] :: ContentData -> String
[contentSize] :: ContentData -> Int
[contentName] :: ContentData -> String
[contentPath] :: ContentData -> String
[contentData] :: ContentData -> String
[contentSha] :: ContentData -> String
[contentUrl] :: ContentData -> String
[contentGitUrl] :: ContentData -> String
[contentHtmlUrl] :: ContentData -> String
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 -> Maybe Bool -> Maybe String -> Maybe String -> Maybe String -> Int -> Maybe String -> 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
[detailedOwnerHireable] :: DetailedOwner -> Maybe 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 -> Maybe 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
data RepoWebhook
RepoWebhook :: String -> String -> Integer -> String -> Bool -> [RepoWebhookEvent] -> Map String String -> RepoWebhookResponse -> GithubDate -> GithubDate -> RepoWebhook
[repoWebhookUrl] :: RepoWebhook -> String
[repoWebhookTestUrl] :: RepoWebhook -> String
[repoWebhookId] :: RepoWebhook -> Integer
[repoWebhookName] :: RepoWebhook -> String
[repoWebhookActive] :: RepoWebhook -> Bool
[repoWebhookEvents] :: RepoWebhook -> [RepoWebhookEvent]
[repoWebhookConfig] :: RepoWebhook -> Map String String
[repoWebhookLastResponse] :: RepoWebhook -> RepoWebhookResponse
[repoWebhookUpdatedAt] :: RepoWebhook -> GithubDate
[repoWebhookCreatedAt] :: RepoWebhook -> GithubDate
data RepoWebhookEvent
WebhookWildcardEvent :: RepoWebhookEvent
WebhookCommitCommentEvent :: RepoWebhookEvent
WebhookCreateEvent :: RepoWebhookEvent
WebhookDeleteEvent :: RepoWebhookEvent
WebhookDeploymentEvent :: RepoWebhookEvent
WebhookDeploymentStatusEvent :: RepoWebhookEvent
WebhookForkEvent :: RepoWebhookEvent
WebhookGollumEvent :: RepoWebhookEvent
WebhookIssueCommentEvent :: RepoWebhookEvent
WebhookIssuesEvent :: RepoWebhookEvent
WebhookMemberEvent :: RepoWebhookEvent
WebhookPageBuildEvent :: RepoWebhookEvent
WebhookPublicEvent :: RepoWebhookEvent
WebhookPullRequestReviewCommentEvent :: RepoWebhookEvent
WebhookPullRequestEvent :: RepoWebhookEvent
WebhookPushEvent :: RepoWebhookEvent
WebhookReleaseEvent :: RepoWebhookEvent
WebhookStatusEvent :: RepoWebhookEvent
WebhookTeamAddEvent :: RepoWebhookEvent
WebhookWatchEvent :: RepoWebhookEvent
data RepoWebhookResponse
RepoWebhookResponse :: Maybe Int -> String -> Maybe String -> RepoWebhookResponse
[repoWebhookResponseCode] :: RepoWebhookResponse -> Maybe Int
[repoWebhookResponseStatus] :: RepoWebhookResponse -> String
[repoWebhookResponseMessage] :: RepoWebhookResponse -> Maybe String
data PullRequestEvent
PullRequestEvent :: PullRequestEventType -> Int -> DetailedPullRequest -> Repo -> GithubOwner -> PullRequestEvent
[pullRequestEventAction] :: PullRequestEvent -> PullRequestEventType
[pullRequestEventNumber] :: PullRequestEvent -> Int
[pullRequestEventPullRequest] :: PullRequestEvent -> DetailedPullRequest
[pullRequestRepository] :: PullRequestEvent -> Repo
[pullRequestSender] :: PullRequestEvent -> GithubOwner
data PullRequestEventType
PullRequestOpened :: PullRequestEventType
PullRequestClosed :: PullRequestEventType
PullRequestSynchronized :: PullRequestEventType
PullRequestReopened :: PullRequestEventType
PullRequestAssigned :: PullRequestEventType
PullRequestUnassigned :: PullRequestEventType
PullRequestLabeled :: PullRequestEventType
PullRequestUnlabeled :: PullRequestEventType
data PingEvent
PingEvent :: String -> RepoWebhook -> Int -> PingEvent
[pingEventZen] :: PingEvent -> String
[pingEventHook] :: PingEvent -> RepoWebhook
[pingEventHookId] :: PingEvent -> Int
data EditPullRequestState
EditPullRequestStateOpen :: EditPullRequestState
EditPullRequestStateClosed :: EditPullRequestState
instance GHC.Show.Show Github.Data.Definitions.EditPullRequest
instance GHC.Show.Show Github.Data.Definitions.EditPullRequestState
instance GHC.Classes.Ord Github.Data.Definitions.PingEvent
instance GHC.Classes.Eq Github.Data.Definitions.PingEvent
instance Data.Data.Data Github.Data.Definitions.PingEvent
instance GHC.Show.Show Github.Data.Definitions.PingEvent
instance GHC.Classes.Ord Github.Data.Definitions.PullRequestEvent
instance GHC.Classes.Eq Github.Data.Definitions.PullRequestEvent
instance Data.Data.Data Github.Data.Definitions.PullRequestEvent
instance GHC.Show.Show Github.Data.Definitions.PullRequestEvent
instance GHC.Classes.Ord Github.Data.Definitions.PullRequestEventType
instance GHC.Classes.Eq Github.Data.Definitions.PullRequestEventType
instance Data.Data.Data Github.Data.Definitions.PullRequestEventType
instance GHC.Show.Show Github.Data.Definitions.PullRequestEventType
instance GHC.Classes.Ord Github.Data.Definitions.RepoWebhook
instance GHC.Classes.Eq Github.Data.Definitions.RepoWebhook
instance Data.Data.Data Github.Data.Definitions.RepoWebhook
instance GHC.Show.Show Github.Data.Definitions.RepoWebhook
instance GHC.Classes.Ord Github.Data.Definitions.RepoWebhookResponse
instance GHC.Classes.Eq Github.Data.Definitions.RepoWebhookResponse
instance Data.Data.Data Github.Data.Definitions.RepoWebhookResponse
instance GHC.Show.Show Github.Data.Definitions.RepoWebhookResponse
instance GHC.Classes.Ord Github.Data.Definitions.RepoWebhookEvent
instance GHC.Classes.Eq Github.Data.Definitions.RepoWebhookEvent
instance Data.Data.Data Github.Data.Definitions.RepoWebhookEvent
instance GHC.Show.Show Github.Data.Definitions.RepoWebhookEvent
instance GHC.Classes.Ord Github.Data.Definitions.DetailedOwner
instance GHC.Classes.Eq Github.Data.Definitions.DetailedOwner
instance Data.Data.Data Github.Data.Definitions.DetailedOwner
instance GHC.Show.Show Github.Data.Definitions.DetailedOwner
instance GHC.Classes.Ord Github.Data.Definitions.Tag
instance GHC.Classes.Eq Github.Data.Definitions.Tag
instance Data.Data.Data Github.Data.Definitions.Tag
instance GHC.Show.Show Github.Data.Definitions.Tag
instance GHC.Classes.Ord Github.Data.Definitions.Branch
instance GHC.Classes.Eq Github.Data.Definitions.Branch
instance Data.Data.Data Github.Data.Definitions.Branch
instance GHC.Show.Show Github.Data.Definitions.Branch
instance GHC.Classes.Ord Github.Data.Definitions.BranchCommit
instance GHC.Classes.Eq Github.Data.Definitions.BranchCommit
instance Data.Data.Data Github.Data.Definitions.BranchCommit
instance GHC.Show.Show Github.Data.Definitions.BranchCommit
instance GHC.Classes.Ord Github.Data.Definitions.Languages
instance GHC.Classes.Eq Github.Data.Definitions.Languages
instance Data.Data.Data Github.Data.Definitions.Languages
instance GHC.Show.Show Github.Data.Definitions.Languages
instance GHC.Classes.Ord Github.Data.Definitions.Language
instance GHC.Classes.Eq Github.Data.Definitions.Language
instance Data.Data.Data Github.Data.Definitions.Language
instance GHC.Show.Show Github.Data.Definitions.Language
instance GHC.Classes.Ord Github.Data.Definitions.Contributor
instance GHC.Classes.Eq Github.Data.Definitions.Contributor
instance Data.Data.Data Github.Data.Definitions.Contributor
instance GHC.Show.Show Github.Data.Definitions.Contributor
instance GHC.Classes.Ord Github.Data.Definitions.Content
instance GHC.Classes.Eq Github.Data.Definitions.Content
instance Data.Data.Data Github.Data.Definitions.Content
instance GHC.Show.Show Github.Data.Definitions.Content
instance GHC.Classes.Ord Github.Data.Definitions.ContentData
instance GHC.Classes.Eq Github.Data.Definitions.ContentData
instance Data.Data.Data Github.Data.Definitions.ContentData
instance GHC.Show.Show Github.Data.Definitions.ContentData
instance GHC.Classes.Ord Github.Data.Definitions.SearchCodeResult
instance GHC.Classes.Eq Github.Data.Definitions.SearchCodeResult
instance Data.Data.Data Github.Data.Definitions.SearchCodeResult
instance GHC.Show.Show Github.Data.Definitions.SearchCodeResult
instance GHC.Classes.Ord Github.Data.Definitions.Code
instance GHC.Classes.Eq Github.Data.Definitions.Code
instance Data.Data.Data Github.Data.Definitions.Code
instance GHC.Show.Show Github.Data.Definitions.Code
instance GHC.Classes.Ord Github.Data.Definitions.DetailedPullRequest
instance GHC.Classes.Eq Github.Data.Definitions.DetailedPullRequest
instance Data.Data.Data Github.Data.Definitions.DetailedPullRequest
instance GHC.Show.Show Github.Data.Definitions.DetailedPullRequest
instance GHC.Classes.Ord Github.Data.Definitions.PullRequestCommit
instance GHC.Classes.Eq Github.Data.Definitions.PullRequestCommit
instance Data.Data.Data Github.Data.Definitions.PullRequestCommit
instance GHC.Show.Show Github.Data.Definitions.PullRequestCommit
instance GHC.Classes.Ord Github.Data.Definitions.SearchReposResult
instance GHC.Classes.Eq Github.Data.Definitions.SearchReposResult
instance Data.Data.Data Github.Data.Definitions.SearchReposResult
instance GHC.Show.Show Github.Data.Definitions.SearchReposResult
instance GHC.Classes.Ord Github.Data.Definitions.Repo
instance GHC.Classes.Eq Github.Data.Definitions.Repo
instance Data.Data.Data Github.Data.Definitions.Repo
instance GHC.Show.Show Github.Data.Definitions.Repo
instance GHC.Classes.Ord Github.Data.Definitions.RepoRef
instance GHC.Classes.Eq Github.Data.Definitions.RepoRef
instance Data.Data.Data Github.Data.Definitions.RepoRef
instance GHC.Show.Show Github.Data.Definitions.RepoRef
instance GHC.Classes.Ord Github.Data.Definitions.PullRequest
instance GHC.Classes.Eq Github.Data.Definitions.PullRequest
instance Data.Data.Data Github.Data.Definitions.PullRequest
instance GHC.Show.Show Github.Data.Definitions.PullRequest
instance GHC.Classes.Ord Github.Data.Definitions.PullRequestLinks
instance GHC.Classes.Eq Github.Data.Definitions.PullRequestLinks
instance Data.Data.Data Github.Data.Definitions.PullRequestLinks
instance GHC.Show.Show Github.Data.Definitions.PullRequestLinks
instance GHC.Show.Show Github.Data.Definitions.CreatePullRequest
instance GHC.Classes.Ord Github.Data.Definitions.Organization
instance GHC.Classes.Eq Github.Data.Definitions.Organization
instance Data.Data.Data Github.Data.Definitions.Organization
instance GHC.Show.Show Github.Data.Definitions.Organization
instance GHC.Classes.Ord Github.Data.Definitions.SimpleOrganization
instance GHC.Classes.Eq Github.Data.Definitions.SimpleOrganization
instance Data.Data.Data Github.Data.Definitions.SimpleOrganization
instance GHC.Show.Show Github.Data.Definitions.SimpleOrganization
instance GHC.Classes.Ord Github.Data.Definitions.Event
instance GHC.Classes.Eq Github.Data.Definitions.Event
instance Data.Data.Data Github.Data.Definitions.Event
instance GHC.Show.Show Github.Data.Definitions.Event
instance GHC.Classes.Ord Github.Data.Definitions.EventType
instance GHC.Classes.Eq Github.Data.Definitions.EventType
instance Data.Data.Data Github.Data.Definitions.EventType
instance GHC.Show.Show Github.Data.Definitions.EventType
instance GHC.Classes.Ord Github.Data.Definitions.IssueComment
instance GHC.Classes.Eq Github.Data.Definitions.IssueComment
instance Data.Data.Data Github.Data.Definitions.IssueComment
instance GHC.Show.Show Github.Data.Definitions.IssueComment
instance GHC.Classes.Ord Github.Data.Definitions.Issue
instance GHC.Classes.Eq Github.Data.Definitions.Issue
instance Data.Data.Data Github.Data.Definitions.Issue
instance GHC.Show.Show Github.Data.Definitions.Issue
instance GHC.Classes.Ord Github.Data.Definitions.PullRequestReference
instance GHC.Classes.Eq Github.Data.Definitions.PullRequestReference
instance Data.Data.Data Github.Data.Definitions.PullRequestReference
instance GHC.Show.Show Github.Data.Definitions.PullRequestReference
instance GHC.Classes.Ord Github.Data.Definitions.IssueLabel
instance GHC.Classes.Eq Github.Data.Definitions.IssueLabel
instance Data.Data.Data Github.Data.Definitions.IssueLabel
instance GHC.Show.Show Github.Data.Definitions.IssueLabel
instance GHC.Classes.Ord Github.Data.Definitions.Milestone
instance GHC.Classes.Eq Github.Data.Definitions.Milestone
instance Data.Data.Data Github.Data.Definitions.Milestone
instance GHC.Show.Show Github.Data.Definitions.Milestone
instance GHC.Classes.Ord Github.Data.Definitions.EditIssue
instance GHC.Classes.Eq Github.Data.Definitions.EditIssue
instance Data.Data.Data Github.Data.Definitions.EditIssue
instance GHC.Show.Show Github.Data.Definitions.EditIssue
instance GHC.Classes.Ord Github.Data.Definitions.NewIssue
instance GHC.Classes.Eq Github.Data.Definitions.NewIssue
instance Data.Data.Data Github.Data.Definitions.NewIssue
instance GHC.Show.Show Github.Data.Definitions.NewIssue
instance GHC.Classes.Ord Github.Data.Definitions.GitReference
instance GHC.Classes.Eq Github.Data.Definitions.GitReference
instance Data.Data.Data Github.Data.Definitions.GitReference
instance GHC.Show.Show Github.Data.Definitions.GitReference
instance GHC.Classes.Ord Github.Data.Definitions.GitObject
instance GHC.Classes.Eq Github.Data.Definitions.GitObject
instance Data.Data.Data Github.Data.Definitions.GitObject
instance GHC.Show.Show Github.Data.Definitions.GitObject
instance GHC.Classes.Ord Github.Data.Definitions.NewGitReference
instance GHC.Classes.Eq Github.Data.Definitions.NewGitReference
instance Data.Data.Data Github.Data.Definitions.NewGitReference
instance GHC.Show.Show Github.Data.Definitions.NewGitReference
instance GHC.Classes.Ord Github.Data.Definitions.Blob
instance GHC.Classes.Eq Github.Data.Definitions.Blob
instance Data.Data.Data Github.Data.Definitions.Blob
instance GHC.Show.Show Github.Data.Definitions.Blob
instance GHC.Classes.Ord Github.Data.Definitions.GistComment
instance GHC.Classes.Eq Github.Data.Definitions.GistComment
instance Data.Data.Data Github.Data.Definitions.GistComment
instance GHC.Show.Show Github.Data.Definitions.GistComment
instance GHC.Classes.Ord Github.Data.Definitions.Gist
instance GHC.Classes.Eq Github.Data.Definitions.Gist
instance Data.Data.Data Github.Data.Definitions.Gist
instance GHC.Show.Show Github.Data.Definitions.Gist
instance GHC.Classes.Ord Github.Data.Definitions.GistFile
instance GHC.Classes.Eq Github.Data.Definitions.GistFile
instance Data.Data.Data Github.Data.Definitions.GistFile
instance GHC.Show.Show Github.Data.Definitions.GistFile
instance GHC.Classes.Ord Github.Data.Definitions.Diff
instance GHC.Classes.Eq Github.Data.Definitions.Diff
instance Data.Data.Data Github.Data.Definitions.Diff
instance GHC.Show.Show Github.Data.Definitions.Diff
instance GHC.Classes.Ord Github.Data.Definitions.EditComment
instance GHC.Classes.Eq Github.Data.Definitions.EditComment
instance Data.Data.Data Github.Data.Definitions.EditComment
instance GHC.Show.Show Github.Data.Definitions.EditComment
instance GHC.Classes.Ord Github.Data.Definitions.NewComment
instance GHC.Classes.Eq Github.Data.Definitions.NewComment
instance Data.Data.Data Github.Data.Definitions.NewComment
instance GHC.Show.Show Github.Data.Definitions.NewComment
instance GHC.Classes.Ord Github.Data.Definitions.Comment
instance GHC.Classes.Eq Github.Data.Definitions.Comment
instance Data.Data.Data Github.Data.Definitions.Comment
instance GHC.Show.Show Github.Data.Definitions.Comment
instance GHC.Classes.Ord Github.Data.Definitions.Commit
instance GHC.Classes.Eq Github.Data.Definitions.Commit
instance Data.Data.Data Github.Data.Definitions.Commit
instance GHC.Show.Show Github.Data.Definitions.Commit
instance GHC.Classes.Ord Github.Data.Definitions.Stats
instance GHC.Classes.Eq Github.Data.Definitions.Stats
instance Data.Data.Data Github.Data.Definitions.Stats
instance GHC.Show.Show Github.Data.Definitions.Stats
instance GHC.Classes.Ord Github.Data.Definitions.File
instance GHC.Classes.Eq Github.Data.Definitions.File
instance Data.Data.Data Github.Data.Definitions.File
instance GHC.Show.Show Github.Data.Definitions.File
instance GHC.Classes.Ord Github.Data.Definitions.GitCommit
instance GHC.Classes.Eq Github.Data.Definitions.GitCommit
instance Data.Data.Data Github.Data.Definitions.GitCommit
instance GHC.Show.Show Github.Data.Definitions.GitCommit
instance GHC.Classes.Ord Github.Data.Definitions.GitUser
instance GHC.Classes.Eq Github.Data.Definitions.GitUser
instance Data.Data.Data Github.Data.Definitions.GitUser
instance GHC.Show.Show Github.Data.Definitions.GitUser
instance GHC.Classes.Ord Github.Data.Definitions.GithubOwner
instance GHC.Classes.Eq Github.Data.Definitions.GithubOwner
instance Data.Data.Data Github.Data.Definitions.GithubOwner
instance GHC.Show.Show Github.Data.Definitions.GithubOwner
instance GHC.Classes.Ord Github.Data.Definitions.Tree
instance GHC.Classes.Eq Github.Data.Definitions.Tree
instance Data.Data.Data Github.Data.Definitions.Tree
instance GHC.Show.Show Github.Data.Definitions.Tree
instance GHC.Classes.Ord Github.Data.Definitions.GitTree
instance GHC.Classes.Eq Github.Data.Definitions.GitTree
instance Data.Data.Data Github.Data.Definitions.GitTree
instance GHC.Show.Show Github.Data.Definitions.GitTree
instance GHC.Classes.Ord Github.Data.Definitions.GithubDate
instance GHC.Classes.Eq Github.Data.Definitions.GithubDate
instance Data.Data.Data Github.Data.Definitions.GithubDate
instance GHC.Show.Show Github.Data.Definitions.GithubDate
instance GHC.Show.Show Github.Data.Definitions.Error


-- | 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 Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.GithubDate
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.Commit
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.Tree
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.GitTree
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.GitCommit
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.GithubOwner
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.GitUser
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.File
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.Stats
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.Comment
instance Data.Aeson.Types.Class.ToJSON Github.Data.Definitions.NewComment
instance Data.Aeson.Types.Class.ToJSON Github.Data.Definitions.EditComment
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.Diff
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.Gist
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.GistFile
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.GistComment
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.Blob
instance Data.Aeson.Types.Class.ToJSON Github.Data.Definitions.NewGitReference
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.GitReference
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.GitObject
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.Issue
instance Data.Aeson.Types.Class.ToJSON Github.Data.Definitions.NewIssue
instance Data.Aeson.Types.Class.ToJSON Github.Data.Definitions.EditIssue
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.Milestone
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.IssueLabel
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.PullRequestReference
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.IssueComment
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.Event
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.EventType
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.SimpleOrganization
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.Organization
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.PullRequest
instance Data.Aeson.Types.Class.ToJSON Github.Data.Definitions.EditPullRequestState
instance Data.Aeson.Types.Class.ToJSON Github.Data.Definitions.EditPullRequest
instance Data.Aeson.Types.Class.ToJSON Github.Data.Definitions.CreatePullRequest
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.DetailedPullRequest
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.PullRequestLinks
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.PullRequestCommit
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.PullRequestEvent
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.PullRequestEventType
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.RepoWebhookEvent
instance Data.Aeson.Types.Class.ToJSON Github.Data.Definitions.RepoWebhookEvent
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.PingEvent
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.SearchReposResult
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.Repo
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.SearchCodeResult
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.Code
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.RepoRef
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.Contributor
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.Languages
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.Tag
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.Branch
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.BranchCommit
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.DetailedOwner
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.RepoWebhook
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.RepoWebhookResponse
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.Content
instance Data.Aeson.Types.Class.FromJSON Github.Data.Definitions.ContentData

module Github.Events
parseEvent :: (FromJSON b, Show b) => ByteString -> Either Error b


-- | 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])
createReference :: GithubAuth -> String -> String -> NewGitReference -> 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

-- | 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])

-- | 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 events that have happened on an issue, using authentication.
--   
--   <pre>
--   eventsForIssue' (GithubUser (user, password)) "thoughtbot" "paperclip" 49
--   </pre>
eventsForIssue' :: Maybe GithubAuth -> 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])

-- | All the events for all issues in a repo, using authentication.
--   
--   <pre>
--   eventsForRepo' (GithubUser (user, password)) "thoughtbot" "paperclip"
--   </pre>
eventsForRepo' :: Maybe GithubAuth -> 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)

-- | Details on a specific event, by the event's ID, using authentication.
--   
--   <pre>
--   event' (GithubUser (user, password)) "thoughtbot" "paperclip" 5335772
--   </pre>
event' :: Maybe GithubAuth -> 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])

-- | Check if pull request has been merged
isPullRequestMerged :: GithubAuth -> String -> String -> Int -> IO (Either Error Status)

-- | Merge a pull request
mergePullRequest :: GithubAuth -> String -> String -> Int -> Maybe String -> IO (Either Error Status)
createPullRequest :: GithubAuth -> String -> String -> CreatePullRequest -> IO (Either Error DetailedPullRequest)

-- | Update a pull request
updatePullRequest :: GithubAuth -> String -> String -> Int -> EditPullRequest -> IO (Either Error DetailedPullRequest)


-- | 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 (GithubBasicAuth (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 (GithubBasicAuth (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 (GithubBasicAuth (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 (GithubBasicAuth (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, given the owner and repo name. With
--   authentication.
--   
--   <pre>
--   contributors' (Just (GithubBasicAuth (user, password))) "thoughtbot" "paperclip"
--   </pre>
contributors' :: Maybe GithubAuth -> 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 contributors to a repo, including anonymous contributors (such as
--   deleted users or git commits with unknown email addresses), given the
--   owner and repo name. With authentication.
--   
--   <pre>
--   contributorsWithAnonymous' (Just (GithubBasicAuth (user, password))) "thoughtbot" "paperclip"
--   </pre>
contributorsWithAnonymous' :: Maybe GithubAuth -> 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 programming languages used in a repo along with the number of
--   characters written in that language. Takes the repo owner and name.
--   With authentication.
--   
--   <pre>
--   languagesFor' (Just (GithubBasicAuth (user, password))) "mike-burns" "ohlaunch"
--   </pre>
languagesFor' :: Maybe GithubAuth -> 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 tags on a repo, given the repo owner and name. With
--   authentication.
--   
--   <pre>
--   tagsFor' (Just (GithubBasicAuth (user, password))) "thoughtbot" "paperclip"
--   </pre>
tagsFor' :: Maybe GithubAuth -> 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])

-- | The git branches on a repo, given the repo owner and name. With
--   authentication.
--   
--   <pre>
--   branchesFor' (Just (GithubBasicAuth (user, password))) "thoughtbot" "paperclip"
--   </pre>
branchesFor' :: Maybe GithubAuth -> String -> String -> IO (Either Error [Branch])

-- | The contents of a file or directory in a repo, given the repo owner,
--   name, and path to the file
--   
--   <pre>
--   contentsFor "thoughtbot" "paperclip" "README.md"
--   </pre>
contentsFor :: String -> String -> String -> Maybe String -> IO (Either Error Content)

-- | The contents of a file or directory in a repo, given the repo owner,
--   name, and path to the file With Authentication
--   
--   <pre>
--   contentsFor' (Just (GithubBasicAuth (user, password))) "thoughtbot" "paperclip" "README.md"
--   </pre>
contentsFor' :: Maybe GithubAuth -> String -> String -> String -> Maybe String -> IO (Either Error Content)

-- | 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

-- | Create a new repository.
--   
--   <pre>
--   createRepo (GithubBasicAuth (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 (GithubBasicAuth (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 (GithubBasicAuth (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 (GithubBasicAuth (user, password)) "thoughtbot" "some_repo"
--   </pre>
deleteRepo :: GithubAuth -> String -> String -> IO (Either Error ())
instance GHC.Show.Show Github.Repos.Edit
instance GHC.Show.Show Github.Repos.NewRepo
instance GHC.Classes.Eq Github.Repos.RepoPublicity
instance GHC.Show.Show Github.Repos.RepoPublicity
instance Data.Aeson.Types.Class.ToJSON Github.Repos.NewRepo
instance Data.Default.Class.Default Github.Repos.Edit
instance Data.Aeson.Types.Class.ToJSON Github.Repos.Edit


-- | 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 repo subscribing API as described on
--   <a>http://developer.github.com/v3/repos/watching/</a>.
module Github.Repos.Subscribing

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

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

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

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


-- | The webhooks API, as described at
--   <a>https://developer.github.com/v3/repos/hooks/</a>
--   <a>https://developer.github.com/webhooks</a>
module Github.Repos.Webhooks
webhooksFor' :: GithubAuth -> RepoOwner -> RepoName -> IO (Either Error [RepoWebhook])
webhookFor' :: GithubAuth -> RepoOwner -> RepoName -> RepoWebhookId -> IO (Either Error RepoWebhook)
createRepoWebhook' :: GithubAuth -> RepoOwner -> RepoName -> NewRepoWebhook -> IO (Either Error RepoWebhook)
editRepoWebhook' :: GithubAuth -> RepoOwner -> RepoName -> RepoWebhookId -> EditRepoWebhook -> IO (Either Error RepoWebhook)
testPushRepoWebhook' :: GithubAuth -> RepoOwner -> RepoName -> RepoWebhookId -> IO (Either Error Status)
pingRepoWebhook' :: GithubAuth -> RepoOwner -> RepoName -> RepoWebhookId -> IO (Either Error Status)
deleteRepoWebhook' :: GithubAuth -> RepoOwner -> RepoName -> RepoWebhookId -> IO (Either Error Status)
data NewRepoWebhook
NewRepoWebhook :: String -> Map String String -> Maybe [RepoWebhookEvent] -> Maybe Bool -> NewRepoWebhook
[newRepoWebhookName] :: NewRepoWebhook -> String
[newRepoWebhookConfig] :: NewRepoWebhook -> Map String String
[newRepoWebhookEvents] :: NewRepoWebhook -> Maybe [RepoWebhookEvent]
[newRepoWebhookActive] :: NewRepoWebhook -> Maybe Bool
data EditRepoWebhook
EditRepoWebhook :: Maybe (Map String String) -> Maybe [RepoWebhookEvent] -> Maybe [RepoWebhookEvent] -> Maybe [RepoWebhookEvent] -> Maybe Bool -> EditRepoWebhook
[editRepoWebhookConfig] :: EditRepoWebhook -> Maybe (Map String String)
[editRepoWebhookEvents] :: EditRepoWebhook -> Maybe [RepoWebhookEvent]
[editRepoWebhookAddEvents] :: EditRepoWebhook -> Maybe [RepoWebhookEvent]
[editRepoWebhookRemoveEvents] :: EditRepoWebhook -> Maybe [RepoWebhookEvent]
[editRepoWebhookActive] :: EditRepoWebhook -> Maybe Bool
type RepoOwner = String
type RepoName = String
type RepoWebhookId = Int
instance GHC.Show.Show Github.Repos.Webhooks.EditRepoWebhook
instance GHC.Show.Show Github.Repos.Webhooks.NewRepoWebhook
instance Data.Aeson.Types.Class.ToJSON Github.Repos.Webhooks.NewRepoWebhook
instance Data.Aeson.Types.Class.ToJSON Github.Repos.Webhooks.EditRepoWebhook


-- | 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)

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

-- | Perform a code search. | Without authentication.
--   
--   <pre>
--   searchCode "q=addClass+in:file+language:js+repo:jquery/jquery"
--   </pre>
searchCode :: String -> IO (Either Error SearchCodeResult)


-- | The Github auth data type
module Github.Auth

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