@@ -61,12 +61,26 @@ data Repo = Repo
6161 , repoPushedAt :: ! (Maybe UTCTime ) -- ^ this is Nothing for new repositories
6262 , repoCreatedAt :: ! (Maybe UTCTime )
6363 , repoUpdatedAt :: ! (Maybe UTCTime )
64+ , repoPermissions :: ! (Maybe RepoPermissions ) -- ^ Repository permissions as they relate to the authenticated user.
6465 }
6566 deriving (Show , Data , Typeable , Eq , Ord , Generic )
6667
6768instance NFData Repo where rnf = genericRnf
6869instance Binary Repo
6970
71+ -- | Repository permissions, as they relate to the authenticated user.
72+ --
73+ -- Returned by for example 'GitHub.Endpoints.Repos.currentUserReposR'
74+ data RepoPermissions = RepoPermissions
75+ { repoPermissionAdmin :: ! Bool
76+ , repoPermissionPush :: ! Bool
77+ , repoPermissionPull :: ! Bool
78+ }
79+ deriving (Show , Data , Typeable , Eq , Ord , Generic )
80+
81+ instance NFData RepoPermissions where rnf = genericRnf
82+ instance Binary RepoPermissions
83+
7084data RepoRef = RepoRef
7185 { repoRefOwner :: ! SimpleOwner
7286 , repoRefRepo :: ! (Name Repo )
@@ -214,6 +228,7 @@ instance FromJSON Repo where
214228 <*> o .:? " pushed_at"
215229 <*> o .:? " created_at"
216230 <*> o .:? " updated_at"
231+ <*> o .:? " permissions"
217232
218233instance ToJSON NewRepo where
219234 toJSON (NewRepo { newRepoName = name
@@ -273,6 +288,12 @@ instance ToJSON EditRepo where
273288 , " archived" .= archived
274289 ]
275290
291+ instance FromJSON RepoPermissions where
292+ parseJSON = withObject " RepoPermissions" $ \ o -> RepoPermissions
293+ <$> o .: " admin"
294+ <*> o .: " push"
295+ <*> o .: " pull"
296+
276297instance FromJSON RepoRef where
277298 parseJSON = withObject " RepoRef" $ \ o -> RepoRef
278299 <$> o .: " owner"
0 commit comments