diff --git a/ChangeLog.md b/ChangeLog.md
new file mode 100644
--- /dev/null
+++ b/ChangeLog.md
@@ -0,0 +1,9 @@
+# Revision history for gitea-api
+
+## 1.11.6.0
+
+* Autogenerated api bindings for Gitea API version 1.11.6
+
+## 1.1.1.0
+
+* Autogenerated api bindings for Gitea API version 1.1.1
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,30 @@
+Copyright (c) 2018, Obsidian Systems LLC
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+    * Neither the name of Obsidian Systems LLC nor the names of other
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,203 @@
+## OpenAPI Auto-Generated [http-client](https://www.stackage.org/lts-10.0/package/http-client-0.5.7.1) Bindings to `Gitea API.`
+
+The library in `lib` provides auto-generated-from-OpenAPI [http-client](https://www.stackage.org/lts-10.0/package/http-client-0.5.7.1) bindings to the Gitea API. API.
+
+OpenApi Version: 3.0.1
+
+## Installation
+
+Installation follows the standard approach to installing Stack-based projects.
+
+1. Install the [Haskell `stack` tool](http://docs.haskellstack.org/en/stable/README).
+2. To build the package, and generate the documentation (recommended):
+```
+stack haddock
+```
+which will generate docs for this lib in the `docs` folder.
+
+To generate the docs in the normal location (to enable hyperlinks to external libs), remove
+```
+build:
+  haddock-arguments:
+    haddock-args:
+    - "--odir=./docs"
+```
+from the stack.yaml file and run `stack haddock` again.
+
+3. To run unit tests:
+```
+stack test
+```
+
+## OpenAPI-Generator
+
+The code generator that produced this library, and which explains how
+to obtain and use the openapi-generator cli tool lives at
+
+https://openapi-generator.tech
+
+The _generator-name_ argument (`--generator-name`) passed to the cli tool used should be
+
+```
+haskell-http-client
+```
+
+### Unsupported OpenAPI Features
+
+* Model Inheritance
+
+This is beta software; other cases may not be supported.
+
+### Codegen "additional properties" parameters
+
+These options allow some customization of the code generation process.
+
+**haskell-http-client additional properties:**
+
+| OPTION                          | DESCRIPTION                                                                                                                   | DEFAULT  | ACTUAL                                |
+|---------------------------------|-------------------------------------------------------------------------------------------------------------------------------|----------|---------------------------------------|
+| allowFromJsonNulls              | allow JSON Null during model decoding from JSON                                                                               | true     | true              |
+| allowNonUniqueOperationIds      | allow *different* API modules to contain the same operationId. Each API must be imported qualified                            | false    | false    |
+| allowToJsonNulls                | allow emitting JSON Null during model encoding to JSON                                                                        | false    | false                |
+| baseModule                      | Set the base module namespace                                                                                                 |          | Gitea                      |
+| cabalPackage                    | Set the cabal package name, which consists of one or more alphanumeric words separated by hyphens                             |          | gitea-api                    |
+| cabalVersion                    | Set the cabal version number, consisting of a sequence of one or more integers separated by dots                              | 0.1.0.0  | 1.19.4.0                    |
+| customTestInstanceModule        | test module used to provide typeclass instances for types not known by the generator                                          |          |         |
+| configType                      | Set the name of the type used for configuration                                                                               |          | GiteaConfig                      |
+| dateFormat                      | format string used to parse/render a date                                                                                     | %Y-%m-%d | %Y-%m-%d                      |
+| dateTimeFormat                  | format string used to parse/render a datetime. (Defaults to [formatISO8601Millis][1] when not provided)                       |          |                   |
+| dateTimeParseFormat             | overrides the format string used to parse a datetime                                                                          |          |              |
+| generateEnums                   | Generate specific datatypes for OpenAPI enums                                                                                 | true     | true                   |
+| generateFormUrlEncodedInstances | Generate FromForm/ToForm instances for models used by x-www-form-urlencoded operations (model fields must be primitive types) | true     | true |
+| generateLenses                  | Generate Lens optics for Models                                                                                               | true     | true                  |
+| generateModelConstructors       | Generate smart constructors (only supply required fields) for models                                                          | true     | true       |
+| inlineMimeTypes                 | Inline (hardcode) the content-type and accept parameters on operations, when there is only 1 option                           | true     | true                 |
+| modelDeriving                   | Additional classes to include in the deriving() clause of Models                                                              |          |                    |
+| requestType                     | Set the name of the type used to generate requests                                                                            |          | GiteaRequest                     |
+| strictFields                    | Add strictness annotations to all model fields                                                                                | true     | true                  |
+| useKatip                        | Sets the default value for the UseKatip cabal flag. If true, the katip package provides logging instead of monad-logger       | true     | true                      |
+| queryExtraUnreserved            | Configures additional querystring characters which must not be URI encoded, e.g. '+' or ':'                                   |          |           |
+
+[1]: https://www.stackage.org/haddock/lts-9.0/iso8601-time-0.1.4/Data-Time-ISO8601.html#v:formatISO8601Millis
+
+An example setting _dateTimeFormat_ and _strictFields_:
+
+```
+java -jar openapi-generator-cli.jar generate -i petstore.yaml -g haskell-http-client -o output/haskell-http-client --additional-properties=dateTimeFormat="%Y-%m-%dT%H:%M:%S%Q%z" --additional-properties=strictFields=false
+```
+
+View the full list of Codegen "config option" parameters with the command:
+
+```
+java -jar openapi-generator-cli.jar config-help -g haskell-http-client
+```
+
+## Usage Notes
+
+### Example Petstore Haddock documentation
+
+An example of the generated haddock documentation targeting the server http://petstore.swagger.io/ (Petstore) can be found [here][2]
+
+[2]: https://hackage.haskell.org/package/swagger-petstore
+
+### Example Petstore App
+
+An example application using the auto-generated haskell-http-client bindings for the server http://petstore.swagger.io/ can be found [here][3]
+
+[3]: https://github.com/openapitools/openapi-generator/tree/master/samples/client/petstore/haskell-http-client/example-app
+
+This library is intended to be imported qualified.
+
+### Modules
+
+| MODULE              | NOTES                                               |
+| ------------------- | --------------------------------------------------- |
+| Gitea.Client    | use the "dispatch" functions to send requests       |
+| Gitea.Core      | core functions, config and request types            |
+| Gitea.API       | construct api requests                              |
+| Gitea.Model     | describes api models                                |
+| Gitea.MimeTypes | encoding/decoding MIME types (content-types/accept) |
+| Gitea.ModelLens | lenses for model fields                             |
+| Gitea.Logging   | logging functions and utils                         |
+
+
+### MimeTypes
+
+This library adds type safety around what OpenAPI specifies as
+Produces and Consumes for each Operation (e.g. the list of MIME types an
+Operation can Produce (using 'accept' headers) and Consume (using 'content-type' headers).
+
+For example, if there is an Operation named _addFoo_, there will be a
+data type generated named _AddFoo_ (note the capitalization), which
+describes additional constraints and actions on the _addFoo_ operation
+via its typeclass instances. These typeclass instances can be viewed
+in GHCi or via the Haddocks.
+
+* required parameters are included as function arguments to _addFoo_
+* optional non-body parameters are included by using  `applyOptionalParam`
+* optional body parameters are set by using  `setBodyParam`
+
+Example code generated for pretend _addFoo_ operation:
+
+```haskell
+data AddFoo
+instance Consumes AddFoo MimeJSON
+instance Produces AddFoo MimeJSON
+instance Produces AddFoo MimeXML
+instance HasBodyParam AddFoo FooModel
+instance HasOptionalParam AddFoo FooName
+instance HasOptionalParam AddFoo FooId
+```
+
+this would indicate that:
+
+* the _addFoo_ operation can consume JSON
+* the _addFoo_ operation produces JSON or XML, depending on the argument passed to the dispatch function
+* the _addFoo_ operation can set it's body param of _FooModel_ via `setBodyParam`
+* the _addFoo_ operation can set 2 different optional parameters via `applyOptionalParam`
+
+If the OpenAPI spec doesn't declare it can accept or produce a certain
+MIME type for a given Operation, you should either add a Produces or
+Consumes instance for the desired MIME types (assuming the server
+supports it), use `dispatchLbsUnsafe` or modify the OpenAPI spec and
+run the generator again.
+
+New MIME type instances can be added via MimeType/MimeRender/MimeUnrender
+
+Only JSON instances are generated by default, and in some case
+x-www-form-urlencoded instances (FromFrom, ToForm) will also be
+generated if the model fields are primitive types, and there are
+Operations using x-www-form-urlencoded which use those models.
+
+### Authentication
+
+A haskell data type will be generated for each OpenAPI authentication type.
+
+If for example the AuthMethod `AuthOAuthFoo` is generated for OAuth operations, then
+`addAuthMethod` should be used to add the AuthMethod config.
+
+When a request is dispatched, if a matching auth method is found in
+the config, it will be applied to the request.
+
+### Example
+
+```haskell
+mgr <- newManager defaultManagerSettings
+config0 <- withStdoutLogging =<< newConfig
+let config = config0
+    `addAuthMethod` AuthOAuthFoo "secret-key"
+
+let addFooRequest =
+  addFoo
+    (ContentType MimeJSON)
+    (Accept MimeXML)
+    (ParamBar paramBar)
+    (ParamQux paramQux)
+    modelBaz
+  `applyOptionalParam` FooId 1
+  `applyOptionalParam` FooName "name"
+  `setHeader` [("qux_header","xxyy")]
+addFooResult <- dispatchMime mgr config addFooRequest
+```
+
+See the example app and the haddocks for details.
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/gitea-api.cabal b/gitea-api.cabal
new file mode 100644
--- /dev/null
+++ b/gitea-api.cabal
@@ -0,0 +1,131 @@
+name:           gitea-api
+version:        1.19.4.0
+synopsis:       Auto-generated gitea-api API Client
+description:    .
+                Client library for calling the Gitea API. API based on http-client.
+                .
+                host: https
+                .
+                base path: http://https://gitea.com/api/v1
+                .
+                Gitea API. API version: 1.19.4
+                .
+                OpenAPI version: 3.0.1
+                .
+                Generator version: 7.6.0
+                .
+category:       Web
+homepage:       https://openapi-generator.tech
+author:         Obsidian Systems LLC
+maintainer:     maintainer@obsidian.systems
+copyright:      2020 Obsidian Systems LLC
+license:        BSD3
+build-type:     Simple
+cabal-version:  >= 1.10
+tested-with: GHC ==8.6.5
+license-file: LICENSE
+
+
+extra-source-files:
+    ChangeLog.md
+    README.md
+    openapi.yaml
+
+Flag UseKatip
+  Description: Use the katip package to provide logging (if false, use the default monad-logger package)
+  Default:     True
+  Manual:      True
+
+library
+  hs-source-dirs:
+      lib
+  ghc-options: -Wall -funbox-strict-fields
+  build-depends:
+      aeson >=1.0 && <3.0
+    , base >=4.7 && <5.0
+    , base64-bytestring >1.0 && <2.0
+    , bytestring >=0.10.0
+    , case-insensitive
+    , containers >=0.5.0.0 && <0.8
+    , deepseq >= 1.4 && <1.6
+    , exceptions >= 0.4
+    , http-api-data >= 0.3.4 && <0.6
+    , http-client >=0.5 && <0.8
+    , http-client-tls
+    , http-media >= 0.4 && < 0.9
+    , http-types >=0.8 && <0.13
+    , iso8601-time >=0.1.3 && <0.2.0
+    , microlens >= 0.4.3
+    , mtl >=2.2.1
+    , network >=2.6.2 && <3.9
+    , random >=1.1
+    , safe-exceptions <0.2
+    , text >=0.11 && <3
+    , time >=1.5
+    , transformers >=0.4.0.0
+    , unordered-containers
+    , vector >=0.10.9 && <0.14
+  other-modules:
+      Paths_gitea_api
+  exposed-modules:
+      Gitea
+      Gitea.API
+      Gitea.API.Activitypub
+      Gitea.API.Admin
+      Gitea.API.Issue
+      Gitea.API.Miscellaneous
+      Gitea.API.Notification
+      Gitea.API.Organization
+      Gitea.API.Package
+      Gitea.API.Repository
+      Gitea.API.Settings
+      Gitea.API.User
+      Gitea.Client
+      Gitea.Core
+      Gitea.Logging
+      Gitea.MimeTypes
+      Gitea.Model
+      Gitea.ModelLens
+  default-language: Haskell2010
+
+  if flag(UseKatip)
+      build-depends: katip >=0.8 && < 1.0
+      other-modules: Gitea.LoggingKatip
+      cpp-options: -DUSE_KATIP
+  else
+      build-depends: monad-logger >=0.3 && <0.4
+      other-modules: Gitea.LoggingMonadLogger
+      cpp-options: -DUSE_MONAD_LOGGER
+
+test-suite tests
+  type: exitcode-stdio-1.0
+  main-is: Test.hs
+  hs-source-dirs:
+      tests
+  ghc-options: -Wall -fno-warn-orphans
+  build-depends:
+      gitea-api
+    , QuickCheck
+    , aeson
+    , base >=4.7 && <5.0
+    , bytestring >=0.10.0
+    , containers
+    , hspec >=1.8
+    , iso8601-time
+    , mtl >=2.2.1
+    , semigroups
+    , text
+    , time
+    , transformers >=0.4.0.0
+    , unordered-containers
+    , vector
+  other-modules:
+      ApproxEq
+      Instances
+      PropMime
+  default-language: Haskell2010
+
+source-repository head
+  type: git
+  location: https://github.com/obsidiansystems/gitea-api
+
diff --git a/lib/Gitea.hs b/lib/Gitea.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea.hs
@@ -0,0 +1,31 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea
+-}
+
+module Gitea
+  (  module Gitea.API
+  , module Gitea.Client
+  , module Gitea.Core
+  , module Gitea.Logging
+  , module Gitea.MimeTypes
+  , module Gitea.Model
+  , module Gitea.ModelLens
+  ) where
+
+import Gitea.API
+import Gitea.Client
+import Gitea.Core
+import Gitea.Logging
+import Gitea.MimeTypes
+import Gitea.Model
+import Gitea.ModelLens
diff --git a/lib/Gitea/API.hs b/lib/Gitea/API.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/API.hs
@@ -0,0 +1,37 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.API
+-}
+
+module Gitea.API
+  ( module Gitea.API.Activitypub
+  , module Gitea.API.Admin
+  , module Gitea.API.Issue
+  , module Gitea.API.Miscellaneous
+  , module Gitea.API.Notification
+  , module Gitea.API.Organization
+  , module Gitea.API.Package
+  , module Gitea.API.Repository
+  , module Gitea.API.Settings
+  , module Gitea.API.User
+  ) where
+
+import Gitea.API.Activitypub
+import Gitea.API.Admin
+import Gitea.API.Issue
+import Gitea.API.Miscellaneous
+import Gitea.API.Notification
+import Gitea.API.Organization
+import Gitea.API.Package
+import Gitea.API.Repository
+import Gitea.API.Settings
+import Gitea.API.User
diff --git a/lib/Gitea/API/Activitypub.hs b/lib/Gitea/API/Activitypub.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/API/Activitypub.hs
@@ -0,0 +1,109 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.API.Activitypub
+-}
+
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MonoLocalBinds #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-binds -fno-warn-unused-imports #-}
+
+module Gitea.API.Activitypub where
+
+import Gitea.Core
+import Gitea.MimeTypes
+import Gitea.Model as M
+
+import qualified Data.Aeson as A
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.Data as P (Typeable, TypeRep, typeOf, typeRep)
+import qualified Data.Foldable as P
+import qualified Data.Map as Map
+import qualified Data.Maybe as P
+import qualified Data.Proxy as P (Proxy(..))
+import qualified Data.Set as Set
+import qualified Data.String as P
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+import qualified Data.Text.Lazy as TL
+import qualified Data.Text.Lazy.Encoding as TL
+import qualified Data.Time as TI
+import qualified Network.HTTP.Client.MultipartFormData as NH
+import qualified Network.HTTP.Media as ME
+import qualified Network.HTTP.Types as NH
+import qualified Web.FormUrlEncoded as WH
+import qualified Web.HttpApiData as WH
+
+import Data.Text (Text)
+import GHC.Base ((<|>))
+
+import Prelude ((==),(/=),($), (.),(<$>),(<*>),(>>=),Maybe(..),Bool(..),Char,Double,FilePath,Float,Int,Integer,String,fmap,undefined,mempty,maybe,pure,Monad,Applicative,Functor)
+import qualified Prelude as P
+
+-- * Operations
+
+
+-- ** Activitypub
+
+-- *** activitypubPerson
+
+-- | @GET \/activitypub\/user-id\/{user-id}@
+-- 
+-- Returns the Person actor for a user
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+activitypubPerson
+  :: UserId -- ^ "userId" -  user ID of the user
+  -> GiteaRequest ActivitypubPerson MimeNoContent ActivityPub MimeJSON
+activitypubPerson (UserId userId) =
+  _mkRequest "GET" ["/activitypub/user-id/",toPath userId]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data ActivitypubPerson  
+-- | @application/json@
+instance Produces ActivitypubPerson MimeJSON
+
+
+-- *** activitypubPersonInbox
+
+-- | @POST \/activitypub\/user-id\/{user-id}\/inbox@
+-- 
+-- Send to the inbox
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+activitypubPersonInbox
+  :: UserId -- ^ "userId" -  user ID of the user
+  -> GiteaRequest ActivitypubPersonInbox MimeNoContent NoContent MimeNoContent
+activitypubPersonInbox (UserId userId) =
+  _mkRequest "POST" ["/activitypub/user-id/",toPath userId,"/inbox"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data ActivitypubPersonInbox  
+instance Produces ActivitypubPersonInbox MimeNoContent
+
diff --git a/lib/Gitea/API/Admin.hs b/lib/Gitea/API/Admin.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/API/Admin.hs
@@ -0,0 +1,650 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.API.Admin
+-}
+
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MonoLocalBinds #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-binds -fno-warn-unused-imports #-}
+
+module Gitea.API.Admin where
+
+import Gitea.Core
+import Gitea.MimeTypes
+import Gitea.Model as M
+
+import qualified Data.Aeson as A
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.Data as P (Typeable, TypeRep, typeOf, typeRep)
+import qualified Data.Foldable as P
+import qualified Data.Map as Map
+import qualified Data.Maybe as P
+import qualified Data.Proxy as P (Proxy(..))
+import qualified Data.Set as Set
+import qualified Data.String as P
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+import qualified Data.Text.Lazy as TL
+import qualified Data.Text.Lazy.Encoding as TL
+import qualified Data.Time as TI
+import qualified Network.HTTP.Client.MultipartFormData as NH
+import qualified Network.HTTP.Media as ME
+import qualified Network.HTTP.Types as NH
+import qualified Web.FormUrlEncoded as WH
+import qualified Web.HttpApiData as WH
+
+import Data.Text (Text)
+import GHC.Base ((<|>))
+
+import Prelude ((==),(/=),($), (.),(<$>),(<*>),(>>=),Maybe(..),Bool(..),Char,Double,FilePath,Float,Int,Integer,String,fmap,undefined,mempty,maybe,pure,Monad,Applicative,Functor)
+import qualified Prelude as P
+
+-- * Operations
+
+
+-- ** Admin
+
+-- *** adminAdoptRepository
+
+-- | @POST \/admin\/unadopted\/{owner}\/{repo}@
+-- 
+-- Adopt unadopted files as a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminAdoptRepository
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest AdminAdoptRepository MimeNoContent NoContent MimeNoContent
+adminAdoptRepository (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/admin/unadopted/",toPath owner,"/",toPath repo]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data AdminAdoptRepository  
+instance Produces AdminAdoptRepository MimeNoContent
+
+
+-- *** adminCreateHook
+
+-- | @POST \/admin\/hooks@
+-- 
+-- Create a hook
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminCreateHook
+  :: (Consumes AdminCreateHook MimeJSON, MimeRender MimeJSON CreateHookOption)
+  => CreateHookOption -- ^ "body"
+  -> GiteaRequest AdminCreateHook MimeJSON Hook MimeJSON
+adminCreateHook body =
+  _mkRequest "POST" ["/admin/hooks"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` body
+
+data AdminCreateHook 
+instance HasBodyParam AdminCreateHook CreateHookOption 
+
+-- | @application/json@
+instance Consumes AdminCreateHook MimeJSON
+
+-- | @application/json@
+instance Produces AdminCreateHook MimeJSON
+
+
+-- *** adminCreateOrg
+
+-- | @POST \/admin\/users\/{username}\/orgs@
+-- 
+-- Create an organization
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminCreateOrg
+  :: (Consumes AdminCreateOrg MimeJSON, MimeRender MimeJSON CreateOrgOption)
+  => CreateOrgOption -- ^ "organization"
+  -> Username -- ^ "username" -  username of the user that will own the created organization
+  -> GiteaRequest AdminCreateOrg MimeJSON Organization MimeJSON
+adminCreateOrg organization (Username username) =
+  _mkRequest "POST" ["/admin/users/",toPath username,"/orgs"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` organization
+
+data AdminCreateOrg 
+instance HasBodyParam AdminCreateOrg CreateOrgOption 
+
+-- | @application/json@
+instance Consumes AdminCreateOrg MimeJSON
+
+-- | @application/json@
+instance Produces AdminCreateOrg MimeJSON
+
+
+-- *** adminCreatePublicKey
+
+-- | @POST \/admin\/users\/{username}\/keys@
+-- 
+-- Add a public key on behalf of a user
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminCreatePublicKey
+  :: (Consumes AdminCreatePublicKey MimeJSON)
+  => Username -- ^ "username" -  username of the user
+  -> GiteaRequest AdminCreatePublicKey MimeJSON PublicKey MimeJSON
+adminCreatePublicKey (Username username) =
+  _mkRequest "POST" ["/admin/users/",toPath username,"/keys"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data AdminCreatePublicKey 
+instance HasBodyParam AdminCreatePublicKey CreateKeyOption 
+
+-- | @application/json@
+instance Consumes AdminCreatePublicKey MimeJSON
+
+-- | @application/json@
+instance Produces AdminCreatePublicKey MimeJSON
+
+
+-- *** adminCreateRepo
+
+-- | @POST \/admin\/users\/{username}\/repos@
+-- 
+-- Create a repository on behalf of a user
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminCreateRepo
+  :: (Consumes AdminCreateRepo MimeJSON, MimeRender MimeJSON CreateRepoOption)
+  => CreateRepoOption -- ^ "repository"
+  -> Username -- ^ "username" -  username of the user. This user will own the created repository
+  -> GiteaRequest AdminCreateRepo MimeJSON Repository MimeJSON
+adminCreateRepo repository (Username username) =
+  _mkRequest "POST" ["/admin/users/",toPath username,"/repos"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` repository
+
+data AdminCreateRepo 
+instance HasBodyParam AdminCreateRepo CreateRepoOption 
+
+-- | @application/json@
+instance Consumes AdminCreateRepo MimeJSON
+
+-- | @application/json@
+instance Produces AdminCreateRepo MimeJSON
+
+
+-- *** adminCreateUser
+
+-- | @POST \/admin\/users@
+-- 
+-- Create a user
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminCreateUser
+  :: (Consumes AdminCreateUser MimeJSON)
+  => GiteaRequest AdminCreateUser MimeJSON User MimeJSON
+adminCreateUser =
+  _mkRequest "POST" ["/admin/users"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data AdminCreateUser 
+instance HasBodyParam AdminCreateUser CreateUserOption 
+
+-- | @application/json@
+instance Consumes AdminCreateUser MimeJSON
+
+-- | @application/json@
+instance Produces AdminCreateUser MimeJSON
+
+
+-- *** adminCronList
+
+-- | @GET \/admin\/cron@
+-- 
+-- List cron tasks
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminCronList
+  :: GiteaRequest AdminCronList MimeNoContent [Cron] MimeJSON
+adminCronList =
+  _mkRequest "GET" ["/admin/cron"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data AdminCronList  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam AdminCronList Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam AdminCronList Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces AdminCronList MimeJSON
+
+
+-- *** adminCronRun
+
+-- | @POST \/admin\/cron\/{task}@
+-- 
+-- Run cron task
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminCronRun
+  :: Task -- ^ "task" -  task to run
+  -> GiteaRequest AdminCronRun MimeNoContent NoContent MimeNoContent
+adminCronRun (Task task) =
+  _mkRequest "POST" ["/admin/cron/",toPath task]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data AdminCronRun  
+instance Produces AdminCronRun MimeNoContent
+
+
+-- *** adminDeleteHook
+
+-- | @DELETE \/admin\/hooks\/{id}@
+-- 
+-- Delete a hook
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminDeleteHook
+  :: Id -- ^ "id" -  id of the hook to delete
+  -> GiteaRequest AdminDeleteHook MimeNoContent NoContent MimeNoContent
+adminDeleteHook (Id id) =
+  _mkRequest "DELETE" ["/admin/hooks/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data AdminDeleteHook  
+instance Produces AdminDeleteHook MimeNoContent
+
+
+-- *** adminDeleteUnadoptedRepository
+
+-- | @DELETE \/admin\/unadopted\/{owner}\/{repo}@
+-- 
+-- Delete unadopted files
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminDeleteUnadoptedRepository
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest AdminDeleteUnadoptedRepository MimeNoContent NoContent MimeNoContent
+adminDeleteUnadoptedRepository (Owner owner) (Repo repo) =
+  _mkRequest "DELETE" ["/admin/unadopted/",toPath owner,"/",toPath repo]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data AdminDeleteUnadoptedRepository  
+instance Produces AdminDeleteUnadoptedRepository MimeNoContent
+
+
+-- *** adminDeleteUser
+
+-- | @DELETE \/admin\/users\/{username}@
+-- 
+-- Delete a user
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminDeleteUser
+  :: Username -- ^ "username" -  username of user to delete
+  -> GiteaRequest AdminDeleteUser MimeNoContent NoContent MimeNoContent
+adminDeleteUser (Username username) =
+  _mkRequest "DELETE" ["/admin/users/",toPath username]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data AdminDeleteUser  
+
+-- | /Optional Param/ "purge" - purge the user from the system completely
+instance HasOptionalParam AdminDeleteUser Purge where
+  applyOptionalParam req (Purge xs) =
+    req `addQuery` toQuery ("purge", Just xs)
+instance Produces AdminDeleteUser MimeNoContent
+
+
+-- *** adminDeleteUserPublicKey
+
+-- | @DELETE \/admin\/users\/{username}\/keys\/{id}@
+-- 
+-- Delete a user's public key
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminDeleteUserPublicKey
+  :: Username -- ^ "username" -  username of user
+  -> Id -- ^ "id" -  id of the key to delete
+  -> GiteaRequest AdminDeleteUserPublicKey MimeNoContent NoContent MimeNoContent
+adminDeleteUserPublicKey (Username username) (Id id) =
+  _mkRequest "DELETE" ["/admin/users/",toPath username,"/keys/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data AdminDeleteUserPublicKey  
+instance Produces AdminDeleteUserPublicKey MimeNoContent
+
+
+-- *** adminEditHook
+
+-- | @PATCH \/admin\/hooks\/{id}@
+-- 
+-- Update a hook
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminEditHook
+  :: (Consumes AdminEditHook MimeJSON)
+  => Id -- ^ "id" -  id of the hook to update
+  -> GiteaRequest AdminEditHook MimeJSON Hook MimeJSON
+adminEditHook (Id id) =
+  _mkRequest "PATCH" ["/admin/hooks/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data AdminEditHook 
+instance HasBodyParam AdminEditHook EditHookOption 
+
+-- | @application/json@
+instance Consumes AdminEditHook MimeJSON
+
+-- | @application/json@
+instance Produces AdminEditHook MimeJSON
+
+
+-- *** adminEditUser
+
+-- | @PATCH \/admin\/users\/{username}@
+-- 
+-- Edit an existing user
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminEditUser
+  :: (Consumes AdminEditUser MimeJSON)
+  => Username -- ^ "username" -  username of user to edit
+  -> GiteaRequest AdminEditUser MimeJSON User MimeJSON
+adminEditUser (Username username) =
+  _mkRequest "PATCH" ["/admin/users/",toPath username]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data AdminEditUser 
+instance HasBodyParam AdminEditUser EditUserOption 
+
+-- | @application/json@
+instance Consumes AdminEditUser MimeJSON
+
+-- | @application/json@
+instance Produces AdminEditUser MimeJSON
+
+
+-- *** adminGetAllOrgs
+
+-- | @GET \/admin\/orgs@
+-- 
+-- List all organizations
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminGetAllOrgs
+  :: GiteaRequest AdminGetAllOrgs MimeNoContent [Organization] MimeJSON
+adminGetAllOrgs =
+  _mkRequest "GET" ["/admin/orgs"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data AdminGetAllOrgs  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam AdminGetAllOrgs Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam AdminGetAllOrgs Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces AdminGetAllOrgs MimeJSON
+
+
+-- *** adminGetAllUsers
+
+-- | @GET \/admin\/users@
+-- 
+-- List all users
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminGetAllUsers
+  :: GiteaRequest AdminGetAllUsers MimeNoContent [User] MimeJSON
+adminGetAllUsers =
+  _mkRequest "GET" ["/admin/users"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data AdminGetAllUsers  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam AdminGetAllUsers Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam AdminGetAllUsers Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces AdminGetAllUsers MimeJSON
+
+
+-- *** adminGetHook
+
+-- | @GET \/admin\/hooks\/{id}@
+-- 
+-- Get a hook
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminGetHook
+  :: Id -- ^ "id" -  id of the hook to get
+  -> GiteaRequest AdminGetHook MimeNoContent Hook MimeJSON
+adminGetHook (Id id) =
+  _mkRequest "GET" ["/admin/hooks/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data AdminGetHook  
+-- | @application/json@
+instance Produces AdminGetHook MimeJSON
+
+
+-- *** adminListHooks
+
+-- | @GET \/admin\/hooks@
+-- 
+-- List system's webhooks
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminListHooks
+  :: GiteaRequest AdminListHooks MimeNoContent [Hook] MimeJSON
+adminListHooks =
+  _mkRequest "GET" ["/admin/hooks"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data AdminListHooks  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam AdminListHooks Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam AdminListHooks Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces AdminListHooks MimeJSON
+
+
+-- *** adminUnadoptedList
+
+-- | @GET \/admin\/unadopted@
+-- 
+-- List unadopted repositories
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+adminUnadoptedList
+  :: GiteaRequest AdminUnadoptedList MimeNoContent [Text] MimeJSON
+adminUnadoptedList =
+  _mkRequest "GET" ["/admin/unadopted"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data AdminUnadoptedList  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam AdminUnadoptedList Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam AdminUnadoptedList Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+
+-- | /Optional Param/ "pattern" - pattern of repositories to search for
+instance HasOptionalParam AdminUnadoptedList Pattern where
+  applyOptionalParam req (Pattern xs) =
+    req `addQuery` toQuery ("pattern", Just xs)
+-- | @application/json@
+instance Produces AdminUnadoptedList MimeJSON
+
diff --git a/lib/Gitea/API/Issue.hs b/lib/Gitea/API/Issue.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/API/Issue.hs
@@ -0,0 +1,2073 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.API.Issue
+-}
+
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MonoLocalBinds #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-binds -fno-warn-unused-imports #-}
+
+module Gitea.API.Issue where
+
+import Gitea.Core
+import Gitea.MimeTypes
+import Gitea.Model as M
+
+import qualified Data.Aeson as A
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.Data as P (Typeable, TypeRep, typeOf, typeRep)
+import qualified Data.Foldable as P
+import qualified Data.Map as Map
+import qualified Data.Maybe as P
+import qualified Data.Proxy as P (Proxy(..))
+import qualified Data.Set as Set
+import qualified Data.String as P
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+import qualified Data.Text.Lazy as TL
+import qualified Data.Text.Lazy.Encoding as TL
+import qualified Data.Time as TI
+import qualified Network.HTTP.Client.MultipartFormData as NH
+import qualified Network.HTTP.Media as ME
+import qualified Network.HTTP.Types as NH
+import qualified Web.FormUrlEncoded as WH
+import qualified Web.HttpApiData as WH
+
+import Data.Text (Text)
+import GHC.Base ((<|>))
+
+import Prelude ((==),(/=),($), (.),(<$>),(<*>),(>>=),Maybe(..),Bool(..),Char,Double,FilePath,Float,Int,Integer,String,fmap,undefined,mempty,maybe,pure,Monad,Applicative,Functor)
+import qualified Prelude as P
+
+-- * Operations
+
+
+-- ** Issue
+
+-- *** issueAddLabel
+
+-- | @POST \/repos\/{owner}\/{repo}\/issues\/{index}\/labels@
+-- 
+-- Add a label to an issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueAddLabel
+  :: (Consumes IssueAddLabel MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> GiteaRequest IssueAddLabel MimeJSON [Label] MimeJSON
+issueAddLabel (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/labels"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueAddLabel 
+instance HasBodyParam IssueAddLabel IssueLabelsOption 
+
+-- | @application/json@
+instance Consumes IssueAddLabel MimeJSON
+
+-- | @application/json@
+instance Produces IssueAddLabel MimeJSON
+
+
+-- *** issueAddSubscription
+
+-- | @PUT \/repos\/{owner}\/{repo}\/issues\/{index}\/subscriptions\/{user}@
+-- 
+-- Subscribe user to issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueAddSubscription
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> User2 -- ^ "user" -  user to subscribe
+  -> GiteaRequest IssueAddSubscription MimeNoContent NoContent MimeNoContent
+issueAddSubscription (Owner owner) (Repo repo) (Index index) (User2 user) =
+  _mkRequest "PUT" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/subscriptions/",toPath user]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueAddSubscription  
+instance Produces IssueAddSubscription MimeNoContent
+
+
+-- *** issueAddTime
+
+-- | @POST \/repos\/{owner}\/{repo}\/issues\/{index}\/times@
+-- 
+-- Add tracked time to a issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueAddTime
+  :: (Consumes IssueAddTime MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> GiteaRequest IssueAddTime MimeJSON TrackedTime MimeJSON
+issueAddTime (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/times"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueAddTime 
+instance HasBodyParam IssueAddTime AddTimeOption 
+
+-- | @application/json@
+instance Consumes IssueAddTime MimeJSON
+
+-- | @application/json@
+instance Produces IssueAddTime MimeJSON
+
+
+-- *** issueCheckSubscription
+
+-- | @GET \/repos\/{owner}\/{repo}\/issues\/{index}\/subscriptions\/check@
+-- 
+-- Check if user is subscribed to an issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueCheckSubscription
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> GiteaRequest IssueCheckSubscription MimeNoContent WatchInfo MimeJSON
+issueCheckSubscription (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/subscriptions/check"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueCheckSubscription  
+-- | @application/json@
+instance Produces IssueCheckSubscription MimeJSON
+
+
+-- *** issueClearLabels
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/issues\/{index}\/labels@
+-- 
+-- Remove all labels from an issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueClearLabels
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> GiteaRequest IssueClearLabels MimeNoContent NoContent MimeNoContent
+issueClearLabels (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/labels"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueClearLabels  
+instance Produces IssueClearLabels MimeNoContent
+
+
+-- *** issueCreateComment
+
+-- | @POST \/repos\/{owner}\/{repo}\/issues\/{index}\/comments@
+-- 
+-- Add a comment to an issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueCreateComment
+  :: (Consumes IssueCreateComment MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> GiteaRequest IssueCreateComment MimeJSON Comment MimeJSON
+issueCreateComment (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/comments"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueCreateComment 
+instance HasBodyParam IssueCreateComment CreateIssueCommentOption 
+
+-- | @application/json@
+instance Consumes IssueCreateComment MimeJSON
+
+-- | @application/json@
+instance Produces IssueCreateComment MimeJSON
+
+
+-- *** issueCreateIssue
+
+-- | @POST \/repos\/{owner}\/{repo}\/issues@
+-- 
+-- Create an issue. If using deadline only the date will be taken into account, and time of day ignored.
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueCreateIssue
+  :: (Consumes IssueCreateIssue MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest IssueCreateIssue MimeJSON Issue MimeJSON
+issueCreateIssue (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/issues"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueCreateIssue 
+instance HasBodyParam IssueCreateIssue CreateIssueOption 
+
+-- | @application/json@
+instance Consumes IssueCreateIssue MimeJSON
+
+-- | @application/json@
+instance Produces IssueCreateIssue MimeJSON
+
+
+-- *** issueCreateIssueAttachment
+
+-- | @POST \/repos\/{owner}\/{repo}\/issues\/{index}\/assets@
+-- 
+-- Create an issue attachment
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueCreateIssueAttachment
+  :: (Consumes IssueCreateIssueAttachment MimeMultipartFormData)
+  => Attachment2 -- ^ "attachment" -  attachment to upload
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> GiteaRequest IssueCreateIssueAttachment MimeMultipartFormData Attachment MimeJSON
+issueCreateIssueAttachment (Attachment2 attachment) (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/assets"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `_addMultiFormPart` NH.partFileSource "attachment" attachment
+
+data IssueCreateIssueAttachment  
+
+-- | /Optional Param/ "name" - name of the attachment
+instance HasOptionalParam IssueCreateIssueAttachment Name where
+  applyOptionalParam req (Name xs) =
+    req `addQuery` toQuery ("name", Just xs)
+
+-- | @multipart/form-data@
+instance Consumes IssueCreateIssueAttachment MimeMultipartFormData
+
+-- | @application/json@
+instance Produces IssueCreateIssueAttachment MimeJSON
+
+
+-- *** issueCreateIssueCommentAttachment
+
+-- | @POST \/repos\/{owner}\/{repo}\/issues\/comments\/{id}\/assets@
+-- 
+-- Create a comment attachment
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueCreateIssueCommentAttachment
+  :: (Consumes IssueCreateIssueCommentAttachment MimeMultipartFormData)
+  => Attachment2 -- ^ "attachment" -  attachment to upload
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the comment
+  -> GiteaRequest IssueCreateIssueCommentAttachment MimeMultipartFormData Attachment MimeJSON
+issueCreateIssueCommentAttachment (Attachment2 attachment) (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/issues/comments/",toPath id,"/assets"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `_addMultiFormPart` NH.partFileSource "attachment" attachment
+
+data IssueCreateIssueCommentAttachment  
+
+-- | /Optional Param/ "name" - name of the attachment
+instance HasOptionalParam IssueCreateIssueCommentAttachment Name where
+  applyOptionalParam req (Name xs) =
+    req `addQuery` toQuery ("name", Just xs)
+
+-- | @multipart/form-data@
+instance Consumes IssueCreateIssueCommentAttachment MimeMultipartFormData
+
+-- | @application/json@
+instance Produces IssueCreateIssueCommentAttachment MimeJSON
+
+
+-- *** issueCreateLabel
+
+-- | @POST \/repos\/{owner}\/{repo}\/labels@
+-- 
+-- Create a label
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueCreateLabel
+  :: (Consumes IssueCreateLabel MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest IssueCreateLabel MimeJSON Label MimeJSON
+issueCreateLabel (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/labels"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueCreateLabel 
+instance HasBodyParam IssueCreateLabel CreateLabelOption 
+
+-- | @application/json@
+instance Consumes IssueCreateLabel MimeJSON
+
+-- | @application/json@
+instance Produces IssueCreateLabel MimeJSON
+
+
+-- *** issueCreateMilestone
+
+-- | @POST \/repos\/{owner}\/{repo}\/milestones@
+-- 
+-- Create a milestone
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueCreateMilestone
+  :: (Consumes IssueCreateMilestone MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest IssueCreateMilestone MimeJSON Milestone MimeJSON
+issueCreateMilestone (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/milestones"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueCreateMilestone 
+instance HasBodyParam IssueCreateMilestone CreateMilestoneOption 
+
+-- | @application/json@
+instance Consumes IssueCreateMilestone MimeJSON
+
+-- | @application/json@
+instance Produces IssueCreateMilestone MimeJSON
+
+
+-- *** issueDelete
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/issues\/{index}@
+-- 
+-- Delete an issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueDelete
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of issue to delete
+  -> GiteaRequest IssueDelete MimeNoContent NoContent MimeNoContent
+issueDelete (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueDelete  
+instance Produces IssueDelete MimeNoContent
+
+
+-- *** issueDeleteComment
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/issues\/comments\/{id}@
+-- 
+-- Delete a comment
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueDeleteComment
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of comment to delete
+  -> GiteaRequest IssueDeleteComment MimeNoContent NoContent MimeNoContent
+issueDeleteComment (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/issues/comments/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueDeleteComment  
+instance Produces IssueDeleteComment MimeNoContent
+
+
+-- *** issueDeleteCommentDeprecated
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/issues\/{index}\/comments\/{id}@
+-- 
+-- Delete a comment
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueDeleteCommentDeprecated
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> IndexInt -- ^ "index" -  this parameter is ignored
+  -> Id -- ^ "id" -  id of comment to delete
+  -> GiteaRequest IssueDeleteCommentDeprecated MimeNoContent NoContent MimeNoContent
+issueDeleteCommentDeprecated (Owner owner) (Repo repo) (IndexInt index) (Id id) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/comments/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+{-# DEPRECATED issueDeleteCommentDeprecated "" #-}
+
+data IssueDeleteCommentDeprecated  
+instance Produces IssueDeleteCommentDeprecated MimeNoContent
+
+
+-- *** issueDeleteCommentReaction
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/issues\/comments\/{id}\/reactions@
+-- 
+-- Remove a reaction from a comment of an issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueDeleteCommentReaction
+  :: (Consumes IssueDeleteCommentReaction MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the comment to edit
+  -> GiteaRequest IssueDeleteCommentReaction MimeJSON NoContent MimeNoContent
+issueDeleteCommentReaction (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/issues/comments/",toPath id,"/reactions"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueDeleteCommentReaction 
+instance HasBodyParam IssueDeleteCommentReaction EditReactionOption 
+
+-- | @application/json@
+instance Consumes IssueDeleteCommentReaction MimeJSON
+
+instance Produces IssueDeleteCommentReaction MimeNoContent
+
+
+-- *** issueDeleteIssueAttachment
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/issues\/{index}\/assets\/{attachment_id}@
+-- 
+-- Delete an issue attachment
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueDeleteIssueAttachment
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> AttachmentId -- ^ "attachmentId" -  id of the attachment to delete
+  -> GiteaRequest IssueDeleteIssueAttachment MimeNoContent NoContent MimeNoContent
+issueDeleteIssueAttachment (Owner owner) (Repo repo) (Index index) (AttachmentId attachmentId) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/assets/",toPath attachmentId]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueDeleteIssueAttachment  
+instance Produces IssueDeleteIssueAttachment MimeNoContent
+
+
+-- *** issueDeleteIssueCommentAttachment
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/issues\/comments\/{id}\/assets\/{attachment_id}@
+-- 
+-- Delete a comment attachment
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueDeleteIssueCommentAttachment
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the comment
+  -> AttachmentId -- ^ "attachmentId" -  id of the attachment to delete
+  -> GiteaRequest IssueDeleteIssueCommentAttachment MimeNoContent NoContent MimeNoContent
+issueDeleteIssueCommentAttachment (Owner owner) (Repo repo) (Id id) (AttachmentId attachmentId) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/issues/comments/",toPath id,"/assets/",toPath attachmentId]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueDeleteIssueCommentAttachment  
+instance Produces IssueDeleteIssueCommentAttachment MimeNoContent
+
+
+-- *** issueDeleteIssueReaction
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/issues\/{index}\/reactions@
+-- 
+-- Remove a reaction from an issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueDeleteIssueReaction
+  :: (Consumes IssueDeleteIssueReaction MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> GiteaRequest IssueDeleteIssueReaction MimeJSON NoContent MimeNoContent
+issueDeleteIssueReaction (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/reactions"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueDeleteIssueReaction 
+instance HasBodyParam IssueDeleteIssueReaction EditReactionOption 
+
+-- | @application/json@
+instance Consumes IssueDeleteIssueReaction MimeJSON
+
+instance Produces IssueDeleteIssueReaction MimeNoContent
+
+
+-- *** issueDeleteLabel
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/labels\/{id}@
+-- 
+-- Delete a label
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueDeleteLabel
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the label to delete
+  -> GiteaRequest IssueDeleteLabel MimeNoContent NoContent MimeNoContent
+issueDeleteLabel (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/labels/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueDeleteLabel  
+instance Produces IssueDeleteLabel MimeNoContent
+
+
+-- *** issueDeleteMilestone
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/milestones\/{id}@
+-- 
+-- Delete a milestone
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueDeleteMilestone
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> IdText -- ^ "id" -  the milestone to delete, identified by ID and if not available by name
+  -> GiteaRequest IssueDeleteMilestone MimeNoContent NoContent MimeNoContent
+issueDeleteMilestone (Owner owner) (Repo repo) (IdText id) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/milestones/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueDeleteMilestone  
+instance Produces IssueDeleteMilestone MimeNoContent
+
+
+-- *** issueDeleteStopWatch
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/issues\/{index}\/stopwatch\/delete@
+-- 
+-- Delete an issue's existing stopwatch.
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueDeleteStopWatch
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue to stop the stopwatch on
+  -> GiteaRequest IssueDeleteStopWatch MimeNoContent NoContent MimeNoContent
+issueDeleteStopWatch (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/stopwatch/delete"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueDeleteStopWatch  
+instance Produces IssueDeleteStopWatch MimeNoContent
+
+
+-- *** issueDeleteSubscription
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/issues\/{index}\/subscriptions\/{user}@
+-- 
+-- Unsubscribe user from issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueDeleteSubscription
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> User2 -- ^ "user" -  user witch unsubscribe
+  -> GiteaRequest IssueDeleteSubscription MimeNoContent NoContent MimeNoContent
+issueDeleteSubscription (Owner owner) (Repo repo) (Index index) (User2 user) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/subscriptions/",toPath user]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueDeleteSubscription  
+instance Produces IssueDeleteSubscription MimeNoContent
+
+
+-- *** issueDeleteTime
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/issues\/{index}\/times\/{id}@
+-- 
+-- Delete specific tracked time
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueDeleteTime
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> Id -- ^ "id" -  id of time to delete
+  -> GiteaRequest IssueDeleteTime MimeNoContent NoContent MimeNoContent
+issueDeleteTime (Owner owner) (Repo repo) (Index index) (Id id) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/times/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueDeleteTime  
+instance Produces IssueDeleteTime MimeNoContent
+
+
+-- *** issueEditComment
+
+-- | @PATCH \/repos\/{owner}\/{repo}\/issues\/comments\/{id}@
+-- 
+-- Edit a comment
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueEditComment
+  :: (Consumes IssueEditComment MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the comment to edit
+  -> GiteaRequest IssueEditComment MimeJSON Comment MimeJSON
+issueEditComment (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "PATCH" ["/repos/",toPath owner,"/",toPath repo,"/issues/comments/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueEditComment 
+instance HasBodyParam IssueEditComment EditIssueCommentOption 
+
+-- | @application/json@
+instance Consumes IssueEditComment MimeJSON
+
+-- | @application/json@
+instance Produces IssueEditComment MimeJSON
+
+
+-- *** issueEditCommentDeprecated
+
+-- | @PATCH \/repos\/{owner}\/{repo}\/issues\/{index}\/comments\/{id}@
+-- 
+-- Edit a comment
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueEditCommentDeprecated
+  :: (Consumes IssueEditCommentDeprecated MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> IndexInt -- ^ "index" -  this parameter is ignored
+  -> Id -- ^ "id" -  id of the comment to edit
+  -> GiteaRequest IssueEditCommentDeprecated MimeJSON Comment MimeJSON
+issueEditCommentDeprecated (Owner owner) (Repo repo) (IndexInt index) (Id id) =
+  _mkRequest "PATCH" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/comments/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+{-# DEPRECATED issueEditCommentDeprecated "" #-}
+
+data IssueEditCommentDeprecated 
+instance HasBodyParam IssueEditCommentDeprecated EditIssueCommentOption 
+
+-- | @application/json@
+instance Consumes IssueEditCommentDeprecated MimeJSON
+
+-- | @application/json@
+instance Produces IssueEditCommentDeprecated MimeJSON
+
+
+-- *** issueEditIssue
+
+-- | @PATCH \/repos\/{owner}\/{repo}\/issues\/{index}@
+-- 
+-- Edit an issue. If using deadline only the date will be taken into account, and time of day ignored.
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueEditIssue
+  :: (Consumes IssueEditIssue MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue to edit
+  -> GiteaRequest IssueEditIssue MimeJSON Issue MimeJSON
+issueEditIssue (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "PATCH" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueEditIssue 
+instance HasBodyParam IssueEditIssue EditIssueOption 
+
+-- | @application/json@
+instance Consumes IssueEditIssue MimeJSON
+
+-- | @application/json@
+instance Produces IssueEditIssue MimeJSON
+
+
+-- *** issueEditIssueAttachment
+
+-- | @PATCH \/repos\/{owner}\/{repo}\/issues\/{index}\/assets\/{attachment_id}@
+-- 
+-- Edit an issue attachment
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueEditIssueAttachment
+  :: (Consumes IssueEditIssueAttachment MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> AttachmentId -- ^ "attachmentId" -  id of the attachment to edit
+  -> GiteaRequest IssueEditIssueAttachment MimeJSON Attachment MimeJSON
+issueEditIssueAttachment (Owner owner) (Repo repo) (Index index) (AttachmentId attachmentId) =
+  _mkRequest "PATCH" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/assets/",toPath attachmentId]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueEditIssueAttachment 
+instance HasBodyParam IssueEditIssueAttachment EditAttachmentOptions 
+
+-- | @application/json@
+instance Consumes IssueEditIssueAttachment MimeJSON
+
+-- | @application/json@
+instance Produces IssueEditIssueAttachment MimeJSON
+
+
+-- *** issueEditIssueCommentAttachment
+
+-- | @PATCH \/repos\/{owner}\/{repo}\/issues\/comments\/{id}\/assets\/{attachment_id}@
+-- 
+-- Edit a comment attachment
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueEditIssueCommentAttachment
+  :: (Consumes IssueEditIssueCommentAttachment MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the comment
+  -> AttachmentId -- ^ "attachmentId" -  id of the attachment to edit
+  -> GiteaRequest IssueEditIssueCommentAttachment MimeJSON Attachment MimeJSON
+issueEditIssueCommentAttachment (Owner owner) (Repo repo) (Id id) (AttachmentId attachmentId) =
+  _mkRequest "PATCH" ["/repos/",toPath owner,"/",toPath repo,"/issues/comments/",toPath id,"/assets/",toPath attachmentId]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueEditIssueCommentAttachment 
+instance HasBodyParam IssueEditIssueCommentAttachment EditAttachmentOptions 
+
+-- | @application/json@
+instance Consumes IssueEditIssueCommentAttachment MimeJSON
+
+-- | @application/json@
+instance Produces IssueEditIssueCommentAttachment MimeJSON
+
+
+-- *** issueEditIssueDeadline
+
+-- | @POST \/repos\/{owner}\/{repo}\/issues\/{index}\/deadline@
+-- 
+-- Set an issue deadline. If set to null, the deadline is deleted. If using deadline only the date will be taken into account, and time of day ignored.
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueEditIssueDeadline
+  :: (Consumes IssueEditIssueDeadline MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue to create or update a deadline on
+  -> GiteaRequest IssueEditIssueDeadline MimeJSON IssueDeadline MimeJSON
+issueEditIssueDeadline (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/deadline"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueEditIssueDeadline 
+instance HasBodyParam IssueEditIssueDeadline EditDeadlineOption 
+
+-- | @application/json@
+instance Consumes IssueEditIssueDeadline MimeJSON
+
+-- | @application/json@
+instance Produces IssueEditIssueDeadline MimeJSON
+
+
+-- *** issueEditLabel
+
+-- | @PATCH \/repos\/{owner}\/{repo}\/labels\/{id}@
+-- 
+-- Update a label
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueEditLabel
+  :: (Consumes IssueEditLabel MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the label to edit
+  -> GiteaRequest IssueEditLabel MimeJSON Label MimeJSON
+issueEditLabel (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "PATCH" ["/repos/",toPath owner,"/",toPath repo,"/labels/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueEditLabel 
+instance HasBodyParam IssueEditLabel EditLabelOption 
+
+-- | @application/json@
+instance Consumes IssueEditLabel MimeJSON
+
+-- | @application/json@
+instance Produces IssueEditLabel MimeJSON
+
+
+-- *** issueEditMilestone
+
+-- | @PATCH \/repos\/{owner}\/{repo}\/milestones\/{id}@
+-- 
+-- Update a milestone
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueEditMilestone
+  :: (Consumes IssueEditMilestone MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> IdText -- ^ "id" -  the milestone to edit, identified by ID and if not available by name
+  -> GiteaRequest IssueEditMilestone MimeJSON Milestone MimeJSON
+issueEditMilestone (Owner owner) (Repo repo) (IdText id) =
+  _mkRequest "PATCH" ["/repos/",toPath owner,"/",toPath repo,"/milestones/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueEditMilestone 
+instance HasBodyParam IssueEditMilestone EditMilestoneOption 
+
+-- | @application/json@
+instance Consumes IssueEditMilestone MimeJSON
+
+-- | @application/json@
+instance Produces IssueEditMilestone MimeJSON
+
+
+-- *** issueGetComment
+
+-- | @GET \/repos\/{owner}\/{repo}\/issues\/comments\/{id}@
+-- 
+-- Get a comment
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueGetComment
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the comment
+  -> GiteaRequest IssueGetComment MimeNoContent Comment MimeJSON
+issueGetComment (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/issues/comments/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueGetComment  
+-- | @application/json@
+instance Produces IssueGetComment MimeJSON
+
+
+-- *** issueGetCommentReactions
+
+-- | @GET \/repos\/{owner}\/{repo}\/issues\/comments\/{id}\/reactions@
+-- 
+-- Get a list of reactions from a comment of an issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueGetCommentReactions
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the comment to edit
+  -> GiteaRequest IssueGetCommentReactions MimeNoContent [Reaction] MimeJSON
+issueGetCommentReactions (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/issues/comments/",toPath id,"/reactions"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueGetCommentReactions  
+-- | @application/json@
+instance Produces IssueGetCommentReactions MimeJSON
+
+
+-- *** issueGetComments
+
+-- | @GET \/repos\/{owner}\/{repo}\/issues\/{index}\/comments@
+-- 
+-- List all comments on an issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueGetComments
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> GiteaRequest IssueGetComments MimeNoContent [Comment] MimeJSON
+issueGetComments (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/comments"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueGetComments  
+
+-- | /Optional Param/ "since" - if provided, only comments updated since the specified time are returned.
+instance HasOptionalParam IssueGetComments Since where
+  applyOptionalParam req (Since xs) =
+    req `addQuery` toQuery ("since", Just xs)
+
+-- | /Optional Param/ "before" - if provided, only comments updated before the provided time are returned.
+instance HasOptionalParam IssueGetComments Before where
+  applyOptionalParam req (Before xs) =
+    req `addQuery` toQuery ("before", Just xs)
+-- | @application/json@
+instance Produces IssueGetComments MimeJSON
+
+
+-- *** issueGetCommentsAndTimeline
+
+-- | @GET \/repos\/{owner}\/{repo}\/issues\/{index}\/timeline@
+-- 
+-- List all comments and events on an issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueGetCommentsAndTimeline
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> GiteaRequest IssueGetCommentsAndTimeline MimeNoContent [TimelineComment] MimeJSON
+issueGetCommentsAndTimeline (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/timeline"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueGetCommentsAndTimeline  
+
+-- | /Optional Param/ "since" - if provided, only comments updated since the specified time are returned.
+instance HasOptionalParam IssueGetCommentsAndTimeline Since where
+  applyOptionalParam req (Since xs) =
+    req `addQuery` toQuery ("since", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam IssueGetCommentsAndTimeline Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam IssueGetCommentsAndTimeline Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+
+-- | /Optional Param/ "before" - if provided, only comments updated before the provided time are returned.
+instance HasOptionalParam IssueGetCommentsAndTimeline Before where
+  applyOptionalParam req (Before xs) =
+    req `addQuery` toQuery ("before", Just xs)
+-- | @application/json@
+instance Produces IssueGetCommentsAndTimeline MimeJSON
+
+
+-- *** issueGetIssue
+
+-- | @GET \/repos\/{owner}\/{repo}\/issues\/{index}@
+-- 
+-- Get an issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueGetIssue
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue to get
+  -> GiteaRequest IssueGetIssue MimeNoContent Issue MimeJSON
+issueGetIssue (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueGetIssue  
+-- | @application/json@
+instance Produces IssueGetIssue MimeJSON
+
+
+-- *** issueGetIssueAttachment
+
+-- | @GET \/repos\/{owner}\/{repo}\/issues\/{index}\/assets\/{attachment_id}@
+-- 
+-- Get an issue attachment
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueGetIssueAttachment
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> AttachmentId -- ^ "attachmentId" -  id of the attachment to get
+  -> GiteaRequest IssueGetIssueAttachment MimeNoContent Attachment MimeJSON
+issueGetIssueAttachment (Owner owner) (Repo repo) (Index index) (AttachmentId attachmentId) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/assets/",toPath attachmentId]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueGetIssueAttachment  
+-- | @application/json@
+instance Produces IssueGetIssueAttachment MimeJSON
+
+
+-- *** issueGetIssueCommentAttachment
+
+-- | @GET \/repos\/{owner}\/{repo}\/issues\/comments\/{id}\/assets\/{attachment_id}@
+-- 
+-- Get a comment attachment
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueGetIssueCommentAttachment
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the comment
+  -> AttachmentId -- ^ "attachmentId" -  id of the attachment to get
+  -> GiteaRequest IssueGetIssueCommentAttachment MimeNoContent Attachment MimeJSON
+issueGetIssueCommentAttachment (Owner owner) (Repo repo) (Id id) (AttachmentId attachmentId) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/issues/comments/",toPath id,"/assets/",toPath attachmentId]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueGetIssueCommentAttachment  
+-- | @application/json@
+instance Produces IssueGetIssueCommentAttachment MimeJSON
+
+
+-- *** issueGetIssueReactions
+
+-- | @GET \/repos\/{owner}\/{repo}\/issues\/{index}\/reactions@
+-- 
+-- Get a list reactions of an issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueGetIssueReactions
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> GiteaRequest IssueGetIssueReactions MimeNoContent [Reaction] MimeJSON
+issueGetIssueReactions (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/reactions"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueGetIssueReactions  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam IssueGetIssueReactions Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam IssueGetIssueReactions Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces IssueGetIssueReactions MimeJSON
+
+
+-- *** issueGetLabel
+
+-- | @GET \/repos\/{owner}\/{repo}\/labels\/{id}@
+-- 
+-- Get a single label
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueGetLabel
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the label to get
+  -> GiteaRequest IssueGetLabel MimeNoContent Label MimeJSON
+issueGetLabel (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/labels/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueGetLabel  
+-- | @application/json@
+instance Produces IssueGetLabel MimeJSON
+
+
+-- *** issueGetLabels
+
+-- | @GET \/repos\/{owner}\/{repo}\/issues\/{index}\/labels@
+-- 
+-- Get an issue's labels
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueGetLabels
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> GiteaRequest IssueGetLabels MimeNoContent [Label] MimeJSON
+issueGetLabels (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/labels"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueGetLabels  
+-- | @application/json@
+instance Produces IssueGetLabels MimeJSON
+
+
+-- *** issueGetMilestone
+
+-- | @GET \/repos\/{owner}\/{repo}\/milestones\/{id}@
+-- 
+-- Get a milestone
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueGetMilestone
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> IdText -- ^ "id" -  the milestone to get, identified by ID and if not available by name
+  -> GiteaRequest IssueGetMilestone MimeNoContent Milestone MimeJSON
+issueGetMilestone (Owner owner) (Repo repo) (IdText id) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/milestones/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueGetMilestone  
+-- | @application/json@
+instance Produces IssueGetMilestone MimeJSON
+
+
+-- *** issueGetMilestonesList
+
+-- | @GET \/repos\/{owner}\/{repo}\/milestones@
+-- 
+-- Get all of a repository's opened milestones
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueGetMilestonesList
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest IssueGetMilestonesList MimeNoContent [Milestone] MimeJSON
+issueGetMilestonesList (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/milestones"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueGetMilestonesList  
+
+-- | /Optional Param/ "state" - Milestone state, Recognized values are open, closed and all. Defaults to \"open\"
+instance HasOptionalParam IssueGetMilestonesList State where
+  applyOptionalParam req (State xs) =
+    req `addQuery` toQuery ("state", Just xs)
+
+-- | /Optional Param/ "name" - filter by milestone name
+instance HasOptionalParam IssueGetMilestonesList Name where
+  applyOptionalParam req (Name xs) =
+    req `addQuery` toQuery ("name", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam IssueGetMilestonesList Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam IssueGetMilestonesList Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces IssueGetMilestonesList MimeJSON
+
+
+-- *** issueGetRepoComments
+
+-- | @GET \/repos\/{owner}\/{repo}\/issues\/comments@
+-- 
+-- List all comments in a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueGetRepoComments
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest IssueGetRepoComments MimeNoContent [Comment] MimeJSON
+issueGetRepoComments (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/issues/comments"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueGetRepoComments  
+
+-- | /Optional Param/ "since" - if provided, only comments updated since the provided time are returned.
+instance HasOptionalParam IssueGetRepoComments Since where
+  applyOptionalParam req (Since xs) =
+    req `addQuery` toQuery ("since", Just xs)
+
+-- | /Optional Param/ "before" - if provided, only comments updated before the provided time are returned.
+instance HasOptionalParam IssueGetRepoComments Before where
+  applyOptionalParam req (Before xs) =
+    req `addQuery` toQuery ("before", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam IssueGetRepoComments Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam IssueGetRepoComments Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces IssueGetRepoComments MimeJSON
+
+
+-- *** issueListIssueAttachments
+
+-- | @GET \/repos\/{owner}\/{repo}\/issues\/{index}\/assets@
+-- 
+-- List issue's attachments
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueListIssueAttachments
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> GiteaRequest IssueListIssueAttachments MimeNoContent [Attachment] MimeJSON
+issueListIssueAttachments (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/assets"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueListIssueAttachments  
+-- | @application/json@
+instance Produces IssueListIssueAttachments MimeJSON
+
+
+-- *** issueListIssueCommentAttachments
+
+-- | @GET \/repos\/{owner}\/{repo}\/issues\/comments\/{id}\/assets@
+-- 
+-- List comment's attachments
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueListIssueCommentAttachments
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the comment
+  -> GiteaRequest IssueListIssueCommentAttachments MimeNoContent [Attachment] MimeJSON
+issueListIssueCommentAttachments (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/issues/comments/",toPath id,"/assets"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueListIssueCommentAttachments  
+-- | @application/json@
+instance Produces IssueListIssueCommentAttachments MimeJSON
+
+
+-- *** issueListIssues
+
+-- | @GET \/repos\/{owner}\/{repo}\/issues@
+-- 
+-- List a repository's issues
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueListIssues
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest IssueListIssues MimeNoContent [Issue] MimeJSON
+issueListIssues (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/issues"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueListIssues  
+
+-- | /Optional Param/ "state" - whether issue is open or closed
+instance HasOptionalParam IssueListIssues State3 where
+  applyOptionalParam req (State3 xs) =
+    req `addQuery` toQuery ("state", Just xs)
+
+-- | /Optional Param/ "labels" - comma separated list of labels. Fetch only issues that have any of this labels. Non existent labels are discarded
+instance HasOptionalParam IssueListIssues Labels where
+  applyOptionalParam req (Labels xs) =
+    req `addQuery` toQuery ("labels", Just xs)
+
+-- | /Optional Param/ "q" - search string
+instance HasOptionalParam IssueListIssues Q where
+  applyOptionalParam req (Q xs) =
+    req `addQuery` toQuery ("q", Just xs)
+
+-- | /Optional Param/ "type" - filter by type (issues / pulls) if set
+instance HasOptionalParam IssueListIssues ParamType2 where
+  applyOptionalParam req (ParamType2 xs) =
+    req `addQuery` toQuery ("type", Just xs)
+
+-- | /Optional Param/ "milestones" - comma separated list of milestone names or ids. It uses names and fall back to ids. Fetch only issues that have any of this milestones. Non existent milestones are discarded
+instance HasOptionalParam IssueListIssues Milestones where
+  applyOptionalParam req (Milestones xs) =
+    req `addQuery` toQuery ("milestones", Just xs)
+
+-- | /Optional Param/ "since" - Only show items updated after the given time. This is a timestamp in RFC 3339 format
+instance HasOptionalParam IssueListIssues Since where
+  applyOptionalParam req (Since xs) =
+    req `addQuery` toQuery ("since", Just xs)
+
+-- | /Optional Param/ "before" - Only show items updated before the given time. This is a timestamp in RFC 3339 format
+instance HasOptionalParam IssueListIssues Before where
+  applyOptionalParam req (Before xs) =
+    req `addQuery` toQuery ("before", Just xs)
+
+-- | /Optional Param/ "created_by" - Only show items which were created by the the given user
+instance HasOptionalParam IssueListIssues CreatedBy where
+  applyOptionalParam req (CreatedBy xs) =
+    req `addQuery` toQuery ("created_by", Just xs)
+
+-- | /Optional Param/ "assigned_by" - Only show items for which the given user is assigned
+instance HasOptionalParam IssueListIssues AssignedBy where
+  applyOptionalParam req (AssignedBy xs) =
+    req `addQuery` toQuery ("assigned_by", Just xs)
+
+-- | /Optional Param/ "mentioned_by" - Only show items in which the given user was mentioned
+instance HasOptionalParam IssueListIssues MentionedBy where
+  applyOptionalParam req (MentionedBy xs) =
+    req `addQuery` toQuery ("mentioned_by", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam IssueListIssues Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam IssueListIssues Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces IssueListIssues MimeJSON
+
+
+-- *** issueListLabels
+
+-- | @GET \/repos\/{owner}\/{repo}\/labels@
+-- 
+-- Get all of a repository's labels
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueListLabels
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest IssueListLabels MimeNoContent [Label] MimeJSON
+issueListLabels (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/labels"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueListLabels  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam IssueListLabels Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam IssueListLabels Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces IssueListLabels MimeJSON
+
+
+-- *** issuePostCommentReaction
+
+-- | @POST \/repos\/{owner}\/{repo}\/issues\/comments\/{id}\/reactions@
+-- 
+-- Add a reaction to a comment of an issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issuePostCommentReaction
+  :: (Consumes IssuePostCommentReaction MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the comment to edit
+  -> GiteaRequest IssuePostCommentReaction MimeJSON Reaction MimeJSON
+issuePostCommentReaction (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/issues/comments/",toPath id,"/reactions"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssuePostCommentReaction 
+instance HasBodyParam IssuePostCommentReaction EditReactionOption 
+
+-- | @application/json@
+instance Consumes IssuePostCommentReaction MimeJSON
+
+-- | @application/json@
+instance Produces IssuePostCommentReaction MimeJSON
+
+
+-- *** issuePostIssueReaction
+
+-- | @POST \/repos\/{owner}\/{repo}\/issues\/{index}\/reactions@
+-- 
+-- Add a reaction to an issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issuePostIssueReaction
+  :: (Consumes IssuePostIssueReaction MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> GiteaRequest IssuePostIssueReaction MimeJSON Reaction MimeJSON
+issuePostIssueReaction (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/reactions"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssuePostIssueReaction 
+instance HasBodyParam IssuePostIssueReaction EditReactionOption 
+
+-- | @application/json@
+instance Consumes IssuePostIssueReaction MimeJSON
+
+-- | @application/json@
+instance Produces IssuePostIssueReaction MimeJSON
+
+
+-- *** issueRemoveLabel
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/issues\/{index}\/labels\/{id}@
+-- 
+-- Remove a label from an issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueRemoveLabel
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> Id -- ^ "id" -  id of the label to remove
+  -> GiteaRequest IssueRemoveLabel MimeNoContent NoContent MimeNoContent
+issueRemoveLabel (Owner owner) (Repo repo) (Index index) (Id id) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/labels/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueRemoveLabel  
+instance Produces IssueRemoveLabel MimeNoContent
+
+
+-- *** issueReplaceLabels
+
+-- | @PUT \/repos\/{owner}\/{repo}\/issues\/{index}\/labels@
+-- 
+-- Replace an issue's labels
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueReplaceLabels
+  :: (Consumes IssueReplaceLabels MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> GiteaRequest IssueReplaceLabels MimeJSON [Label] MimeJSON
+issueReplaceLabels (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "PUT" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/labels"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueReplaceLabels 
+instance HasBodyParam IssueReplaceLabels IssueLabelsOption 
+
+-- | @application/json@
+instance Consumes IssueReplaceLabels MimeJSON
+
+-- | @application/json@
+instance Produces IssueReplaceLabels MimeJSON
+
+
+-- *** issueResetTime
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/issues\/{index}\/times@
+-- 
+-- Reset a tracked time of an issue
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueResetTime
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue to add tracked time to
+  -> GiteaRequest IssueResetTime MimeNoContent NoContent MimeNoContent
+issueResetTime (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/times"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueResetTime  
+instance Produces IssueResetTime MimeNoContent
+
+
+-- *** issueSearchIssues
+
+-- | @GET \/repos\/issues\/search@
+-- 
+-- Search for issues across the repositories that the user has access to
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueSearchIssues
+  :: GiteaRequest IssueSearchIssues MimeNoContent [Issue] MimeJSON
+issueSearchIssues =
+  _mkRequest "GET" ["/repos/issues/search"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueSearchIssues  
+
+-- | /Optional Param/ "state" - whether issue is open or closed
+instance HasOptionalParam IssueSearchIssues State where
+  applyOptionalParam req (State xs) =
+    req `addQuery` toQuery ("state", Just xs)
+
+-- | /Optional Param/ "labels" - comma separated list of labels. Fetch only issues that have any of this labels. Non existent labels are discarded
+instance HasOptionalParam IssueSearchIssues Labels where
+  applyOptionalParam req (Labels xs) =
+    req `addQuery` toQuery ("labels", Just xs)
+
+-- | /Optional Param/ "milestones" - comma separated list of milestone names. Fetch only issues that have any of this milestones. Non existent are discarded
+instance HasOptionalParam IssueSearchIssues Milestones where
+  applyOptionalParam req (Milestones xs) =
+    req `addQuery` toQuery ("milestones", Just xs)
+
+-- | /Optional Param/ "q" - search string
+instance HasOptionalParam IssueSearchIssues Q where
+  applyOptionalParam req (Q xs) =
+    req `addQuery` toQuery ("q", Just xs)
+
+-- | /Optional Param/ "priority_repo_id" - repository to prioritize in the results
+instance HasOptionalParam IssueSearchIssues PriorityRepoId where
+  applyOptionalParam req (PriorityRepoId xs) =
+    req `addQuery` toQuery ("priority_repo_id", Just xs)
+
+-- | /Optional Param/ "type" - filter by type (issues / pulls) if set
+instance HasOptionalParam IssueSearchIssues ParamTypeText where
+  applyOptionalParam req (ParamTypeText xs) =
+    req `addQuery` toQuery ("type", Just xs)
+
+-- | /Optional Param/ "since" - Only show notifications updated after the given time. This is a timestamp in RFC 3339 format
+instance HasOptionalParam IssueSearchIssues Since where
+  applyOptionalParam req (Since xs) =
+    req `addQuery` toQuery ("since", Just xs)
+
+-- | /Optional Param/ "before" - Only show notifications updated before the given time. This is a timestamp in RFC 3339 format
+instance HasOptionalParam IssueSearchIssues Before where
+  applyOptionalParam req (Before xs) =
+    req `addQuery` toQuery ("before", Just xs)
+
+-- | /Optional Param/ "assigned" - filter (issues / pulls) assigned to you, default is false
+instance HasOptionalParam IssueSearchIssues Assigned where
+  applyOptionalParam req (Assigned xs) =
+    req `addQuery` toQuery ("assigned", Just xs)
+
+-- | /Optional Param/ "created" - filter (issues / pulls) created by you, default is false
+instance HasOptionalParam IssueSearchIssues Created where
+  applyOptionalParam req (Created xs) =
+    req `addQuery` toQuery ("created", Just xs)
+
+-- | /Optional Param/ "mentioned" - filter (issues / pulls) mentioning you, default is false
+instance HasOptionalParam IssueSearchIssues Mentioned where
+  applyOptionalParam req (Mentioned xs) =
+    req `addQuery` toQuery ("mentioned", Just xs)
+
+-- | /Optional Param/ "review_requested" - filter pulls requesting your review, default is false
+instance HasOptionalParam IssueSearchIssues ReviewRequested where
+  applyOptionalParam req (ReviewRequested xs) =
+    req `addQuery` toQuery ("review_requested", Just xs)
+
+-- | /Optional Param/ "owner" - filter by owner
+instance HasOptionalParam IssueSearchIssues Owner where
+  applyOptionalParam req (Owner xs) =
+    req `addQuery` toQuery ("owner", Just xs)
+
+-- | /Optional Param/ "team" - filter by team (requires organization owner parameter to be provided)
+instance HasOptionalParam IssueSearchIssues Team2 where
+  applyOptionalParam req (Team2 xs) =
+    req `addQuery` toQuery ("team", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam IssueSearchIssues Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam IssueSearchIssues Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces IssueSearchIssues MimeJSON
+
+
+-- *** issueStartStopWatch
+
+-- | @POST \/repos\/{owner}\/{repo}\/issues\/{index}\/stopwatch\/start@
+-- 
+-- Start stopwatch on an issue.
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueStartStopWatch
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue to create the stopwatch on
+  -> GiteaRequest IssueStartStopWatch MimeNoContent NoContent MimeNoContent
+issueStartStopWatch (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/stopwatch/start"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueStartStopWatch  
+instance Produces IssueStartStopWatch MimeNoContent
+
+
+-- *** issueStopStopWatch
+
+-- | @POST \/repos\/{owner}\/{repo}\/issues\/{index}\/stopwatch\/stop@
+-- 
+-- Stop an issue's existing stopwatch.
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueStopStopWatch
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue to stop the stopwatch on
+  -> GiteaRequest IssueStopStopWatch MimeNoContent NoContent MimeNoContent
+issueStopStopWatch (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/stopwatch/stop"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueStopStopWatch  
+instance Produces IssueStopStopWatch MimeNoContent
+
+
+-- *** issueSubscriptions
+
+-- | @GET \/repos\/{owner}\/{repo}\/issues\/{index}\/subscriptions@
+-- 
+-- Get users who subscribed on an issue.
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueSubscriptions
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> GiteaRequest IssueSubscriptions MimeNoContent [User] MimeJSON
+issueSubscriptions (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/subscriptions"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueSubscriptions  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam IssueSubscriptions Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam IssueSubscriptions Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces IssueSubscriptions MimeJSON
+
+
+-- *** issueTrackedTimes
+
+-- | @GET \/repos\/{owner}\/{repo}\/issues\/{index}\/times@
+-- 
+-- List an issue's tracked times
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+issueTrackedTimes
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the issue
+  -> GiteaRequest IssueTrackedTimes MimeNoContent [TrackedTime] MimeJSON
+issueTrackedTimes (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/issues/",toPath index,"/times"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data IssueTrackedTimes  
+
+-- | /Optional Param/ "user" - optional filter by user (available for issue managers)
+instance HasOptionalParam IssueTrackedTimes User2 where
+  applyOptionalParam req (User2 xs) =
+    req `addQuery` toQuery ("user", Just xs)
+
+-- | /Optional Param/ "since" - Only show times updated after the given time. This is a timestamp in RFC 3339 format
+instance HasOptionalParam IssueTrackedTimes Since where
+  applyOptionalParam req (Since xs) =
+    req `addQuery` toQuery ("since", Just xs)
+
+-- | /Optional Param/ "before" - Only show times updated before the given time. This is a timestamp in RFC 3339 format
+instance HasOptionalParam IssueTrackedTimes Before where
+  applyOptionalParam req (Before xs) =
+    req `addQuery` toQuery ("before", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam IssueTrackedTimes Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam IssueTrackedTimes Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces IssueTrackedTimes MimeJSON
+
diff --git a/lib/Gitea/API/Miscellaneous.hs b/lib/Gitea/API/Miscellaneous.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/API/Miscellaneous.hs
@@ -0,0 +1,199 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.API.Miscellaneous
+-}
+
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MonoLocalBinds #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-binds -fno-warn-unused-imports #-}
+
+module Gitea.API.Miscellaneous where
+
+import Gitea.Core
+import Gitea.MimeTypes
+import Gitea.Model as M
+
+import qualified Data.Aeson as A
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.Data as P (Typeable, TypeRep, typeOf, typeRep)
+import qualified Data.Foldable as P
+import qualified Data.Map as Map
+import qualified Data.Maybe as P
+import qualified Data.Proxy as P (Proxy(..))
+import qualified Data.Set as Set
+import qualified Data.String as P
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+import qualified Data.Text.Lazy as TL
+import qualified Data.Text.Lazy.Encoding as TL
+import qualified Data.Time as TI
+import qualified Network.HTTP.Client.MultipartFormData as NH
+import qualified Network.HTTP.Media as ME
+import qualified Network.HTTP.Types as NH
+import qualified Web.FormUrlEncoded as WH
+import qualified Web.HttpApiData as WH
+
+import Data.Text (Text)
+import GHC.Base ((<|>))
+
+import Prelude ((==),(/=),($), (.),(<$>),(<*>),(>>=),Maybe(..),Bool(..),Char,Double,FilePath,Float,Int,Integer,String,fmap,undefined,mempty,maybe,pure,Monad,Applicative,Functor)
+import qualified Prelude as P
+
+-- * Operations
+
+
+-- ** Miscellaneous
+
+-- *** getNodeInfo
+
+-- | @GET \/nodeinfo@
+-- 
+-- Returns the nodeinfo of the Gitea application
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+getNodeInfo
+  :: GiteaRequest GetNodeInfo MimeNoContent NodeInfo MimeJSON
+getNodeInfo =
+  _mkRequest "GET" ["/nodeinfo"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data GetNodeInfo  
+-- | @application/json@
+instance Produces GetNodeInfo MimeJSON
+
+
+-- *** getSigningKey
+
+-- | @GET \/signing-key.gpg@
+-- 
+-- Get default signing-key.gpg
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+getSigningKey
+  :: GiteaRequest GetSigningKey MimeNoContent Text MimePlainText
+getSigningKey =
+  _mkRequest "GET" ["/signing-key.gpg"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data GetSigningKey  
+-- | @text/plain@
+instance Produces GetSigningKey MimePlainText
+
+
+-- *** getVersion
+
+-- | @GET \/version@
+-- 
+-- Returns the version of the Gitea application
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+getVersion
+  :: GiteaRequest GetVersion MimeNoContent ServerVersion MimeJSON
+getVersion =
+  _mkRequest "GET" ["/version"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data GetVersion  
+-- | @application/json@
+instance Produces GetVersion MimeJSON
+
+
+-- *** renderMarkdown
+
+-- | @POST \/markdown@
+-- 
+-- Render a markdown document as HTML
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+renderMarkdown
+  :: (Consumes RenderMarkdown MimeJSON)
+  => GiteaRequest RenderMarkdown MimeJSON Text MimeTextHtml
+renderMarkdown =
+  _mkRequest "POST" ["/markdown"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RenderMarkdown 
+instance HasBodyParam RenderMarkdown MarkdownOption 
+
+-- | @application/json@
+instance Consumes RenderMarkdown MimeJSON
+
+-- | @text/html@
+instance Produces RenderMarkdown MimeTextHtml
+
+
+-- *** renderMarkdownRaw
+
+-- | @POST \/markdown\/raw@
+-- 
+-- Render raw markdown as HTML
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+renderMarkdownRaw
+  :: (Consumes RenderMarkdownRaw MimePlainText, MimeRender MimePlainText Body)
+  => Body -- ^ "body" -  Request body to render
+  -> GiteaRequest RenderMarkdownRaw MimePlainText Text MimeTextHtml
+renderMarkdownRaw body =
+  _mkRequest "POST" ["/markdown/raw"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` body
+
+data RenderMarkdownRaw 
+
+-- | /Body Param/ "body" - Request body to render
+instance HasBodyParam RenderMarkdownRaw Body 
+
+-- | @text/plain@
+instance Consumes RenderMarkdownRaw MimePlainText
+
+-- | @text/html@
+instance Produces RenderMarkdownRaw MimeTextHtml
+
diff --git a/lib/Gitea/API/Notification.hs b/lib/Gitea/API/Notification.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/API/Notification.hs
@@ -0,0 +1,357 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.API.Notification
+-}
+
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MonoLocalBinds #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-binds -fno-warn-unused-imports #-}
+
+module Gitea.API.Notification where
+
+import Gitea.Core
+import Gitea.MimeTypes
+import Gitea.Model as M
+
+import qualified Data.Aeson as A
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.Data as P (Typeable, TypeRep, typeOf, typeRep)
+import qualified Data.Foldable as P
+import qualified Data.Map as Map
+import qualified Data.Maybe as P
+import qualified Data.Proxy as P (Proxy(..))
+import qualified Data.Set as Set
+import qualified Data.String as P
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+import qualified Data.Text.Lazy as TL
+import qualified Data.Text.Lazy.Encoding as TL
+import qualified Data.Time as TI
+import qualified Network.HTTP.Client.MultipartFormData as NH
+import qualified Network.HTTP.Media as ME
+import qualified Network.HTTP.Types as NH
+import qualified Web.FormUrlEncoded as WH
+import qualified Web.HttpApiData as WH
+
+import Data.Text (Text)
+import GHC.Base ((<|>))
+
+import Prelude ((==),(/=),($), (.),(<$>),(<*>),(>>=),Maybe(..),Bool(..),Char,Double,FilePath,Float,Int,Integer,String,fmap,undefined,mempty,maybe,pure,Monad,Applicative,Functor)
+import qualified Prelude as P
+
+-- * Operations
+
+
+-- ** Notification
+
+-- *** notifyGetList
+
+-- | @GET \/notifications@
+-- 
+-- List users's notification threads
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+notifyGetList
+  :: GiteaRequest NotifyGetList MimeNoContent [NotificationThread] MimeJSON
+notifyGetList =
+  _mkRequest "GET" ["/notifications"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data NotifyGetList  
+
+-- | /Optional Param/ "all" - If true, show notifications marked as read. Default value is false
+instance HasOptionalParam NotifyGetList All where
+  applyOptionalParam req (All xs) =
+    req `addQuery` toQuery ("all", Just xs)
+
+-- | /Optional Param/ "status-types" - Show notifications with the provided status types. Options are: unread, read and/or pinned. Defaults to unread & pinned.
+instance HasOptionalParam NotifyGetList StatusTypes where
+  applyOptionalParam req (StatusTypes xs) =
+    req `addQuery` toQueryColl MultiParamArray ("status-types", Just xs)
+
+-- | /Optional Param/ "subject-type" - filter notifications by subject type
+instance HasOptionalParam NotifyGetList SubjectType where
+  applyOptionalParam req (SubjectType xs) =
+    req `addQuery` toQueryColl MultiParamArray ("subject-type", Just xs)
+
+-- | /Optional Param/ "since" - Only show notifications updated after the given time. This is a timestamp in RFC 3339 format
+instance HasOptionalParam NotifyGetList Since where
+  applyOptionalParam req (Since xs) =
+    req `addQuery` toQuery ("since", Just xs)
+
+-- | /Optional Param/ "before" - Only show notifications updated before the given time. This is a timestamp in RFC 3339 format
+instance HasOptionalParam NotifyGetList Before where
+  applyOptionalParam req (Before xs) =
+    req `addQuery` toQuery ("before", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam NotifyGetList Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam NotifyGetList Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces NotifyGetList MimeJSON
+
+
+-- *** notifyGetRepoList
+
+-- | @GET \/repos\/{owner}\/{repo}\/notifications@
+-- 
+-- List users's notification threads on a specific repo
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+notifyGetRepoList
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest NotifyGetRepoList MimeNoContent [NotificationThread] MimeJSON
+notifyGetRepoList (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/notifications"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data NotifyGetRepoList  
+
+-- | /Optional Param/ "all" - If true, show notifications marked as read. Default value is false
+instance HasOptionalParam NotifyGetRepoList All where
+  applyOptionalParam req (All xs) =
+    req `addQuery` toQuery ("all", Just xs)
+
+-- | /Optional Param/ "status-types" - Show notifications with the provided status types. Options are: unread, read and/or pinned. Defaults to unread & pinned
+instance HasOptionalParam NotifyGetRepoList StatusTypes where
+  applyOptionalParam req (StatusTypes xs) =
+    req `addQuery` toQueryColl MultiParamArray ("status-types", Just xs)
+
+-- | /Optional Param/ "subject-type" - filter notifications by subject type
+instance HasOptionalParam NotifyGetRepoList SubjectType where
+  applyOptionalParam req (SubjectType xs) =
+    req `addQuery` toQueryColl MultiParamArray ("subject-type", Just xs)
+
+-- | /Optional Param/ "since" - Only show notifications updated after the given time. This is a timestamp in RFC 3339 format
+instance HasOptionalParam NotifyGetRepoList Since where
+  applyOptionalParam req (Since xs) =
+    req `addQuery` toQuery ("since", Just xs)
+
+-- | /Optional Param/ "before" - Only show notifications updated before the given time. This is a timestamp in RFC 3339 format
+instance HasOptionalParam NotifyGetRepoList Before where
+  applyOptionalParam req (Before xs) =
+    req `addQuery` toQuery ("before", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam NotifyGetRepoList Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam NotifyGetRepoList Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces NotifyGetRepoList MimeJSON
+
+
+-- *** notifyGetThread
+
+-- | @GET \/notifications\/threads\/{id}@
+-- 
+-- Get notification thread by ID
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+notifyGetThread
+  :: IdText -- ^ "id" -  id of notification thread
+  -> GiteaRequest NotifyGetThread MimeNoContent NotificationThread MimeJSON
+notifyGetThread (IdText id) =
+  _mkRequest "GET" ["/notifications/threads/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data NotifyGetThread  
+-- | @application/json@
+instance Produces NotifyGetThread MimeJSON
+
+
+-- *** notifyNewAvailable
+
+-- | @GET \/notifications\/new@
+-- 
+-- Check if unread notifications exist
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+notifyNewAvailable
+  :: Accept accept -- ^ request accept ('MimeType')
+  -> GiteaRequest NotifyNewAvailable MimeNoContent NotificationCount accept
+notifyNewAvailable  _ =
+  _mkRequest "GET" ["/notifications/new"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data NotifyNewAvailable  
+-- | @text/html@
+instance Produces NotifyNewAvailable MimeTextHtml
+-- | @application/json@
+instance Produces NotifyNewAvailable MimeJSON
+
+
+-- *** notifyReadList
+
+-- | @PUT \/notifications@
+-- 
+-- Mark notification threads as read, pinned or unread
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+notifyReadList
+  :: GiteaRequest NotifyReadList MimeNoContent [NotificationThread] MimeJSON
+notifyReadList =
+  _mkRequest "PUT" ["/notifications"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data NotifyReadList  
+
+-- | /Optional Param/ "last_read_at" - Describes the last point that notifications were checked. Anything updated since this time will not be updated.
+instance HasOptionalParam NotifyReadList LastReadAt where
+  applyOptionalParam req (LastReadAt xs) =
+    req `addQuery` toQuery ("last_read_at", Just xs)
+
+-- | /Optional Param/ "all" - If true, mark all notifications on this repo. Default value is false
+instance HasOptionalParam NotifyReadList AllText where
+  applyOptionalParam req (AllText xs) =
+    req `addQuery` toQuery ("all", Just xs)
+
+-- | /Optional Param/ "status-types" - Mark notifications with the provided status types. Options are: unread, read and/or pinned. Defaults to unread.
+instance HasOptionalParam NotifyReadList StatusTypes where
+  applyOptionalParam req (StatusTypes xs) =
+    req `addQuery` toQueryColl MultiParamArray ("status-types", Just xs)
+
+-- | /Optional Param/ "to-status" - Status to mark notifications as, Defaults to read.
+instance HasOptionalParam NotifyReadList ToStatus where
+  applyOptionalParam req (ToStatus xs) =
+    req `addQuery` toQuery ("to-status", Just xs)
+-- | @application/json@
+instance Produces NotifyReadList MimeJSON
+
+
+-- *** notifyReadRepoList
+
+-- | @PUT \/repos\/{owner}\/{repo}\/notifications@
+-- 
+-- Mark notification threads as read, pinned or unread on a specific repo
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+notifyReadRepoList
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest NotifyReadRepoList MimeNoContent [NotificationThread] MimeJSON
+notifyReadRepoList (Owner owner) (Repo repo) =
+  _mkRequest "PUT" ["/repos/",toPath owner,"/",toPath repo,"/notifications"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data NotifyReadRepoList  
+
+-- | /Optional Param/ "all" - If true, mark all notifications on this repo. Default value is false
+instance HasOptionalParam NotifyReadRepoList AllText where
+  applyOptionalParam req (AllText xs) =
+    req `addQuery` toQuery ("all", Just xs)
+
+-- | /Optional Param/ "status-types" - Mark notifications with the provided status types. Options are: unread, read and/or pinned. Defaults to unread.
+instance HasOptionalParam NotifyReadRepoList StatusTypes where
+  applyOptionalParam req (StatusTypes xs) =
+    req `addQuery` toQueryColl MultiParamArray ("status-types", Just xs)
+
+-- | /Optional Param/ "to-status" - Status to mark notifications as. Defaults to read.
+instance HasOptionalParam NotifyReadRepoList ToStatus where
+  applyOptionalParam req (ToStatus xs) =
+    req `addQuery` toQuery ("to-status", Just xs)
+
+-- | /Optional Param/ "last_read_at" - Describes the last point that notifications were checked. Anything updated since this time will not be updated.
+instance HasOptionalParam NotifyReadRepoList LastReadAt where
+  applyOptionalParam req (LastReadAt xs) =
+    req `addQuery` toQuery ("last_read_at", Just xs)
+-- | @application/json@
+instance Produces NotifyReadRepoList MimeJSON
+
+
+-- *** notifyReadThread
+
+-- | @PATCH \/notifications\/threads\/{id}@
+-- 
+-- Mark notification thread as read by ID
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+notifyReadThread
+  :: IdText -- ^ "id" -  id of notification thread
+  -> GiteaRequest NotifyReadThread MimeNoContent NotificationThread MimeJSON
+notifyReadThread (IdText id) =
+  _mkRequest "PATCH" ["/notifications/threads/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data NotifyReadThread  
+
+-- | /Optional Param/ "to-status" - Status to mark notifications as
+instance HasOptionalParam NotifyReadThread ToStatus where
+  applyOptionalParam req (ToStatus xs) =
+    req `addQuery` toQuery ("to-status", Just xs)
+-- | @application/json@
+instance Produces NotifyReadThread MimeJSON
+
diff --git a/lib/Gitea/API/Organization.hs b/lib/Gitea/API/Organization.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/API/Organization.hs
@@ -0,0 +1,1355 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.API.Organization
+-}
+
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MonoLocalBinds #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-binds -fno-warn-unused-imports #-}
+
+module Gitea.API.Organization where
+
+import Gitea.Core
+import Gitea.MimeTypes
+import Gitea.Model as M
+
+import qualified Data.Aeson as A
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.Data as P (Typeable, TypeRep, typeOf, typeRep)
+import qualified Data.Foldable as P
+import qualified Data.Map as Map
+import qualified Data.Maybe as P
+import qualified Data.Proxy as P (Proxy(..))
+import qualified Data.Set as Set
+import qualified Data.String as P
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+import qualified Data.Text.Lazy as TL
+import qualified Data.Text.Lazy.Encoding as TL
+import qualified Data.Time as TI
+import qualified Network.HTTP.Client.MultipartFormData as NH
+import qualified Network.HTTP.Media as ME
+import qualified Network.HTTP.Types as NH
+import qualified Web.FormUrlEncoded as WH
+import qualified Web.HttpApiData as WH
+
+import Data.Text (Text)
+import GHC.Base ((<|>))
+
+import Prelude ((==),(/=),($), (.),(<$>),(<*>),(>>=),Maybe(..),Bool(..),Char,Double,FilePath,Float,Int,Integer,String,fmap,undefined,mempty,maybe,pure,Monad,Applicative,Functor)
+import qualified Prelude as P
+
+-- * Operations
+
+
+-- ** Organization
+
+-- *** createOrgRepo
+
+-- | @POST \/orgs\/{org}\/repos@
+-- 
+-- Create a repository in an organization
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+createOrgRepo
+  :: (Consumes CreateOrgRepo MimeJSON)
+  => Org -- ^ "org" -  name of organization
+  -> GiteaRequest CreateOrgRepo MimeJSON Repository MimeJSON
+createOrgRepo (Org org) =
+  _mkRequest "POST" ["/orgs/",toPath org,"/repos"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data CreateOrgRepo 
+instance HasBodyParam CreateOrgRepo CreateRepoOption 
+
+-- | @application/json@
+instance Consumes CreateOrgRepo MimeJSON
+
+-- | @application/json@
+instance Produces CreateOrgRepo MimeJSON
+
+
+-- *** createOrgRepoDeprecated
+
+-- | @POST \/org\/{org}\/repos@
+-- 
+-- Create a repository in an organization
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+createOrgRepoDeprecated
+  :: (Consumes CreateOrgRepoDeprecated MimeJSON)
+  => Org -- ^ "org" -  name of organization
+  -> GiteaRequest CreateOrgRepoDeprecated MimeJSON Repository MimeJSON
+createOrgRepoDeprecated (Org org) =
+  _mkRequest "POST" ["/org/",toPath org,"/repos"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+{-# DEPRECATED createOrgRepoDeprecated "" #-}
+
+data CreateOrgRepoDeprecated 
+instance HasBodyParam CreateOrgRepoDeprecated CreateRepoOption 
+
+-- | @application/json@
+instance Consumes CreateOrgRepoDeprecated MimeJSON
+
+-- | @application/json@
+instance Produces CreateOrgRepoDeprecated MimeJSON
+
+
+-- *** orgAddTeamMember
+
+-- | @PUT \/teams\/{id}\/members\/{username}@
+-- 
+-- Add a team member
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgAddTeamMember
+  :: Id -- ^ "id" -  id of the team
+  -> Username -- ^ "username" -  username of the user to add
+  -> GiteaRequest OrgAddTeamMember MimeNoContent NoContent MimeNoContent
+orgAddTeamMember (Id id) (Username username) =
+  _mkRequest "PUT" ["/teams/",toPath id,"/members/",toPath username]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgAddTeamMember  
+instance Produces OrgAddTeamMember MimeNoContent
+
+
+-- *** orgAddTeamRepository
+
+-- | @PUT \/teams\/{id}\/repos\/{org}\/{repo}@
+-- 
+-- Add a repository to a team
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgAddTeamRepository
+  :: Id -- ^ "id" -  id of the team
+  -> Org -- ^ "org" -  organization that owns the repo to add
+  -> Repo -- ^ "repo" -  name of the repo to add
+  -> GiteaRequest OrgAddTeamRepository MimeNoContent NoContent MimeNoContent
+orgAddTeamRepository (Id id) (Org org) (Repo repo) =
+  _mkRequest "PUT" ["/teams/",toPath id,"/repos/",toPath org,"/",toPath repo]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgAddTeamRepository  
+instance Produces OrgAddTeamRepository MimeNoContent
+
+
+-- *** orgConcealMember
+
+-- | @DELETE \/orgs\/{org}\/public_members\/{username}@
+-- 
+-- Conceal a user's membership
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgConcealMember
+  :: Org -- ^ "org" -  name of the organization
+  -> Username -- ^ "username" -  username of the user
+  -> GiteaRequest OrgConcealMember MimeNoContent NoContent MimeNoContent
+orgConcealMember (Org org) (Username username) =
+  _mkRequest "DELETE" ["/orgs/",toPath org,"/public_members/",toPath username]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgConcealMember  
+instance Produces OrgConcealMember MimeNoContent
+
+
+-- *** orgCreate
+
+-- | @POST \/orgs@
+-- 
+-- Create an organization
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgCreate
+  :: (Consumes OrgCreate MimeJSON, MimeRender MimeJSON CreateOrgOption)
+  => CreateOrgOption -- ^ "organization"
+  -> GiteaRequest OrgCreate MimeJSON Organization MimeJSON
+orgCreate organization =
+  _mkRequest "POST" ["/orgs"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` organization
+
+data OrgCreate 
+instance HasBodyParam OrgCreate CreateOrgOption 
+
+-- | @application/json@
+instance Consumes OrgCreate MimeJSON
+
+-- | @application/json@
+instance Produces OrgCreate MimeJSON
+
+
+-- *** orgCreateHook
+
+-- | @POST \/orgs\/{org}\/hooks@
+-- 
+-- Create a hook
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgCreateHook
+  :: (Consumes OrgCreateHook MimeJSON, MimeRender MimeJSON CreateHookOption)
+  => CreateHookOption -- ^ "body"
+  -> Org -- ^ "org" -  name of the organization
+  -> GiteaRequest OrgCreateHook MimeJSON Hook MimeJSON
+orgCreateHook body (Org org) =
+  _mkRequest "POST" ["/orgs/",toPath org,"/hooks"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` body
+
+data OrgCreateHook 
+instance HasBodyParam OrgCreateHook CreateHookOption 
+
+-- | @application/json@
+instance Consumes OrgCreateHook MimeJSON
+
+-- | @application/json@
+instance Produces OrgCreateHook MimeJSON
+
+
+-- *** orgCreateLabel
+
+-- | @POST \/orgs\/{org}\/labels@
+-- 
+-- Create a label for an organization
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgCreateLabel
+  :: (Consumes OrgCreateLabel MimeJSON)
+  => Org -- ^ "org" -  name of the organization
+  -> GiteaRequest OrgCreateLabel MimeJSON Label MimeJSON
+orgCreateLabel (Org org) =
+  _mkRequest "POST" ["/orgs/",toPath org,"/labels"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgCreateLabel 
+instance HasBodyParam OrgCreateLabel CreateLabelOption 
+
+-- | @application/json@
+instance Consumes OrgCreateLabel MimeJSON
+
+-- | @application/json@
+instance Produces OrgCreateLabel MimeJSON
+
+
+-- *** orgCreateTeam
+
+-- | @POST \/orgs\/{org}\/teams@
+-- 
+-- Create a team
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgCreateTeam
+  :: (Consumes OrgCreateTeam MimeJSON)
+  => Org -- ^ "org" -  name of the organization
+  -> GiteaRequest OrgCreateTeam MimeJSON Team MimeJSON
+orgCreateTeam (Org org) =
+  _mkRequest "POST" ["/orgs/",toPath org,"/teams"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgCreateTeam 
+instance HasBodyParam OrgCreateTeam CreateTeamOption 
+
+-- | @application/json@
+instance Consumes OrgCreateTeam MimeJSON
+
+-- | @application/json@
+instance Produces OrgCreateTeam MimeJSON
+
+
+-- *** orgDelete
+
+-- | @DELETE \/orgs\/{org}@
+-- 
+-- Delete an organization
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgDelete
+  :: Org -- ^ "org" -  organization that is to be deleted
+  -> GiteaRequest OrgDelete MimeNoContent NoContent MimeNoContent
+orgDelete (Org org) =
+  _mkRequest "DELETE" ["/orgs/",toPath org]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgDelete  
+instance Produces OrgDelete MimeNoContent
+
+
+-- *** orgDeleteHook
+
+-- | @DELETE \/orgs\/{org}\/hooks\/{id}@
+-- 
+-- Delete a hook
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgDeleteHook
+  :: Org -- ^ "org" -  name of the organization
+  -> Id -- ^ "id" -  id of the hook to delete
+  -> GiteaRequest OrgDeleteHook MimeNoContent NoContent MimeNoContent
+orgDeleteHook (Org org) (Id id) =
+  _mkRequest "DELETE" ["/orgs/",toPath org,"/hooks/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgDeleteHook  
+instance Produces OrgDeleteHook MimeNoContent
+
+
+-- *** orgDeleteLabel
+
+-- | @DELETE \/orgs\/{org}\/labels\/{id}@
+-- 
+-- Delete a label
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgDeleteLabel
+  :: Org -- ^ "org" -  name of the organization
+  -> Id -- ^ "id" -  id of the label to delete
+  -> GiteaRequest OrgDeleteLabel MimeNoContent NoContent MimeNoContent
+orgDeleteLabel (Org org) (Id id) =
+  _mkRequest "DELETE" ["/orgs/",toPath org,"/labels/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgDeleteLabel  
+instance Produces OrgDeleteLabel MimeNoContent
+
+
+-- *** orgDeleteMember
+
+-- | @DELETE \/orgs\/{org}\/members\/{username}@
+-- 
+-- Remove a member from an organization
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgDeleteMember
+  :: Org -- ^ "org" -  name of the organization
+  -> Username -- ^ "username" -  username of the user
+  -> GiteaRequest OrgDeleteMember MimeNoContent NoContent MimeNoContent
+orgDeleteMember (Org org) (Username username) =
+  _mkRequest "DELETE" ["/orgs/",toPath org,"/members/",toPath username]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgDeleteMember  
+instance Produces OrgDeleteMember MimeNoContent
+
+
+-- *** orgDeleteTeam
+
+-- | @DELETE \/teams\/{id}@
+-- 
+-- Delete a team
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgDeleteTeam
+  :: Id -- ^ "id" -  id of the team to delete
+  -> GiteaRequest OrgDeleteTeam MimeNoContent NoContent MimeNoContent
+orgDeleteTeam (Id id) =
+  _mkRequest "DELETE" ["/teams/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgDeleteTeam  
+instance Produces OrgDeleteTeam MimeNoContent
+
+
+-- *** orgEdit
+
+-- | @PATCH \/orgs\/{org}@
+-- 
+-- Edit an organization
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgEdit
+  :: (Consumes OrgEdit MimeJSON, MimeRender MimeJSON EditOrgOption)
+  => EditOrgOption -- ^ "body"
+  -> Org -- ^ "org" -  name of the organization to edit
+  -> GiteaRequest OrgEdit MimeJSON Organization MimeJSON
+orgEdit body (Org org) =
+  _mkRequest "PATCH" ["/orgs/",toPath org]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` body
+
+data OrgEdit 
+instance HasBodyParam OrgEdit EditOrgOption 
+
+-- | @application/json@
+instance Consumes OrgEdit MimeJSON
+
+-- | @application/json@
+instance Produces OrgEdit MimeJSON
+
+
+-- *** orgEditHook
+
+-- | @PATCH \/orgs\/{org}\/hooks\/{id}@
+-- 
+-- Update a hook
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgEditHook
+  :: (Consumes OrgEditHook MimeJSON)
+  => Org -- ^ "org" -  name of the organization
+  -> Id -- ^ "id" -  id of the hook to update
+  -> GiteaRequest OrgEditHook MimeJSON Hook MimeJSON
+orgEditHook (Org org) (Id id) =
+  _mkRequest "PATCH" ["/orgs/",toPath org,"/hooks/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgEditHook 
+instance HasBodyParam OrgEditHook EditHookOption 
+
+-- | @application/json@
+instance Consumes OrgEditHook MimeJSON
+
+-- | @application/json@
+instance Produces OrgEditHook MimeJSON
+
+
+-- *** orgEditLabel
+
+-- | @PATCH \/orgs\/{org}\/labels\/{id}@
+-- 
+-- Update a label
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgEditLabel
+  :: (Consumes OrgEditLabel MimeJSON)
+  => Org -- ^ "org" -  name of the organization
+  -> Id -- ^ "id" -  id of the label to edit
+  -> GiteaRequest OrgEditLabel MimeJSON Label MimeJSON
+orgEditLabel (Org org) (Id id) =
+  _mkRequest "PATCH" ["/orgs/",toPath org,"/labels/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgEditLabel 
+instance HasBodyParam OrgEditLabel EditLabelOption 
+
+-- | @application/json@
+instance Consumes OrgEditLabel MimeJSON
+
+-- | @application/json@
+instance Produces OrgEditLabel MimeJSON
+
+
+-- *** orgEditTeam
+
+-- | @PATCH \/teams\/{id}@
+-- 
+-- Edit a team
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgEditTeam
+  :: (Consumes OrgEditTeam MimeJSON)
+  => IdInt -- ^ "id" -  id of the team to edit
+  -> GiteaRequest OrgEditTeam MimeJSON Team MimeJSON
+orgEditTeam (IdInt id) =
+  _mkRequest "PATCH" ["/teams/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgEditTeam 
+instance HasBodyParam OrgEditTeam EditTeamOption 
+
+-- | @application/json@
+instance Consumes OrgEditTeam MimeJSON
+
+-- | @application/json@
+instance Produces OrgEditTeam MimeJSON
+
+
+-- *** orgGet
+
+-- | @GET \/orgs\/{org}@
+-- 
+-- Get an organization
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgGet
+  :: Org -- ^ "org" -  name of the organization to get
+  -> GiteaRequest OrgGet MimeNoContent Organization MimeJSON
+orgGet (Org org) =
+  _mkRequest "GET" ["/orgs/",toPath org]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgGet  
+-- | @application/json@
+instance Produces OrgGet MimeJSON
+
+
+-- *** orgGetAll
+
+-- | @GET \/orgs@
+-- 
+-- Get list of organizations
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgGetAll
+  :: GiteaRequest OrgGetAll MimeNoContent [Organization] MimeJSON
+orgGetAll =
+  _mkRequest "GET" ["/orgs"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgGetAll  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam OrgGetAll Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam OrgGetAll Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces OrgGetAll MimeJSON
+
+
+-- *** orgGetHook
+
+-- | @GET \/orgs\/{org}\/hooks\/{id}@
+-- 
+-- Get a hook
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgGetHook
+  :: Org -- ^ "org" -  name of the organization
+  -> Id -- ^ "id" -  id of the hook to get
+  -> GiteaRequest OrgGetHook MimeNoContent Hook MimeJSON
+orgGetHook (Org org) (Id id) =
+  _mkRequest "GET" ["/orgs/",toPath org,"/hooks/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgGetHook  
+-- | @application/json@
+instance Produces OrgGetHook MimeJSON
+
+
+-- *** orgGetLabel
+
+-- | @GET \/orgs\/{org}\/labels\/{id}@
+-- 
+-- Get a single label
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgGetLabel
+  :: Org -- ^ "org" -  name of the organization
+  -> Id -- ^ "id" -  id of the label to get
+  -> GiteaRequest OrgGetLabel MimeNoContent Label MimeJSON
+orgGetLabel (Org org) (Id id) =
+  _mkRequest "GET" ["/orgs/",toPath org,"/labels/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgGetLabel  
+-- | @application/json@
+instance Produces OrgGetLabel MimeJSON
+
+
+-- *** orgGetTeam
+
+-- | @GET \/teams\/{id}@
+-- 
+-- Get a team
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgGetTeam
+  :: Id -- ^ "id" -  id of the team to get
+  -> GiteaRequest OrgGetTeam MimeNoContent Team MimeJSON
+orgGetTeam (Id id) =
+  _mkRequest "GET" ["/teams/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgGetTeam  
+-- | @application/json@
+instance Produces OrgGetTeam MimeJSON
+
+
+-- *** orgGetUserPermissions
+
+-- | @GET \/users\/{username}\/orgs\/{org}\/permissions@
+-- 
+-- Get user permissions in organization
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgGetUserPermissions
+  :: Username -- ^ "username" -  username of user
+  -> Org -- ^ "org" -  name of the organization
+  -> GiteaRequest OrgGetUserPermissions MimeNoContent OrganizationPermissions MimeJSON
+orgGetUserPermissions (Username username) (Org org) =
+  _mkRequest "GET" ["/users/",toPath username,"/orgs/",toPath org,"/permissions"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgGetUserPermissions  
+-- | @application/json@
+instance Produces OrgGetUserPermissions MimeJSON
+
+
+-- *** orgIsMember
+
+-- | @GET \/orgs\/{org}\/members\/{username}@
+-- 
+-- Check if a user is a member of an organization
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgIsMember
+  :: Org -- ^ "org" -  name of the organization
+  -> Username -- ^ "username" -  username of the user
+  -> GiteaRequest OrgIsMember MimeNoContent NoContent MimeNoContent
+orgIsMember (Org org) (Username username) =
+  _mkRequest "GET" ["/orgs/",toPath org,"/members/",toPath username]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgIsMember  
+instance Produces OrgIsMember MimeNoContent
+
+
+-- *** orgIsPublicMember
+
+-- | @GET \/orgs\/{org}\/public_members\/{username}@
+-- 
+-- Check if a user is a public member of an organization
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgIsPublicMember
+  :: Org -- ^ "org" -  name of the organization
+  -> Username -- ^ "username" -  username of the user
+  -> GiteaRequest OrgIsPublicMember MimeNoContent NoContent MimeNoContent
+orgIsPublicMember (Org org) (Username username) =
+  _mkRequest "GET" ["/orgs/",toPath org,"/public_members/",toPath username]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgIsPublicMember  
+instance Produces OrgIsPublicMember MimeNoContent
+
+
+-- *** orgListCurrentUserOrgs
+
+-- | @GET \/user\/orgs@
+-- 
+-- List the current user's organizations
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgListCurrentUserOrgs
+  :: GiteaRequest OrgListCurrentUserOrgs MimeNoContent [Organization] MimeJSON
+orgListCurrentUserOrgs =
+  _mkRequest "GET" ["/user/orgs"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgListCurrentUserOrgs  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam OrgListCurrentUserOrgs Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam OrgListCurrentUserOrgs Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces OrgListCurrentUserOrgs MimeJSON
+
+
+-- *** orgListHooks
+
+-- | @GET \/orgs\/{org}\/hooks@
+-- 
+-- List an organization's webhooks
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgListHooks
+  :: Org -- ^ "org" -  name of the organization
+  -> GiteaRequest OrgListHooks MimeNoContent [Hook] MimeJSON
+orgListHooks (Org org) =
+  _mkRequest "GET" ["/orgs/",toPath org,"/hooks"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgListHooks  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam OrgListHooks Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam OrgListHooks Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces OrgListHooks MimeJSON
+
+
+-- *** orgListLabels
+
+-- | @GET \/orgs\/{org}\/labels@
+-- 
+-- List an organization's labels
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgListLabels
+  :: Org -- ^ "org" -  name of the organization
+  -> GiteaRequest OrgListLabels MimeNoContent [Label] MimeJSON
+orgListLabels (Org org) =
+  _mkRequest "GET" ["/orgs/",toPath org,"/labels"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgListLabels  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam OrgListLabels Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam OrgListLabels Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces OrgListLabels MimeJSON
+
+
+-- *** orgListMembers
+
+-- | @GET \/orgs\/{org}\/members@
+-- 
+-- List an organization's members
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgListMembers
+  :: Org -- ^ "org" -  name of the organization
+  -> GiteaRequest OrgListMembers MimeNoContent [User] MimeJSON
+orgListMembers (Org org) =
+  _mkRequest "GET" ["/orgs/",toPath org,"/members"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgListMembers  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam OrgListMembers Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam OrgListMembers Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces OrgListMembers MimeJSON
+
+
+-- *** orgListPublicMembers
+
+-- | @GET \/orgs\/{org}\/public_members@
+-- 
+-- List an organization's public members
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgListPublicMembers
+  :: Org -- ^ "org" -  name of the organization
+  -> GiteaRequest OrgListPublicMembers MimeNoContent [User] MimeJSON
+orgListPublicMembers (Org org) =
+  _mkRequest "GET" ["/orgs/",toPath org,"/public_members"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgListPublicMembers  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam OrgListPublicMembers Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam OrgListPublicMembers Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces OrgListPublicMembers MimeJSON
+
+
+-- *** orgListRepos
+
+-- | @GET \/orgs\/{org}\/repos@
+-- 
+-- List an organization's repos
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgListRepos
+  :: Org -- ^ "org" -  name of the organization
+  -> GiteaRequest OrgListRepos MimeNoContent [Repository] MimeJSON
+orgListRepos (Org org) =
+  _mkRequest "GET" ["/orgs/",toPath org,"/repos"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgListRepos  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam OrgListRepos Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam OrgListRepos Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces OrgListRepos MimeJSON
+
+
+-- *** orgListTeamMember
+
+-- | @GET \/teams\/{id}\/members\/{username}@
+-- 
+-- List a particular member of team
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgListTeamMember
+  :: Id -- ^ "id" -  id of the team
+  -> Username -- ^ "username" -  username of the member to list
+  -> GiteaRequest OrgListTeamMember MimeNoContent User MimeJSON
+orgListTeamMember (Id id) (Username username) =
+  _mkRequest "GET" ["/teams/",toPath id,"/members/",toPath username]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgListTeamMember  
+-- | @application/json@
+instance Produces OrgListTeamMember MimeJSON
+
+
+-- *** orgListTeamMembers
+
+-- | @GET \/teams\/{id}\/members@
+-- 
+-- List a team's members
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgListTeamMembers
+  :: Id -- ^ "id" -  id of the team
+  -> GiteaRequest OrgListTeamMembers MimeNoContent [User] MimeJSON
+orgListTeamMembers (Id id) =
+  _mkRequest "GET" ["/teams/",toPath id,"/members"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgListTeamMembers  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam OrgListTeamMembers Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam OrgListTeamMembers Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces OrgListTeamMembers MimeJSON
+
+
+-- *** orgListTeamRepo
+
+-- | @GET \/teams\/{id}\/repos\/{org}\/{repo}@
+-- 
+-- List a particular repo of team
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgListTeamRepo
+  :: Id -- ^ "id" -  id of the team
+  -> Org -- ^ "org" -  organization that owns the repo to list
+  -> Repo -- ^ "repo" -  name of the repo to list
+  -> GiteaRequest OrgListTeamRepo MimeNoContent Repository MimeJSON
+orgListTeamRepo (Id id) (Org org) (Repo repo) =
+  _mkRequest "GET" ["/teams/",toPath id,"/repos/",toPath org,"/",toPath repo]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgListTeamRepo  
+-- | @application/json@
+instance Produces OrgListTeamRepo MimeJSON
+
+
+-- *** orgListTeamRepos
+
+-- | @GET \/teams\/{id}\/repos@
+-- 
+-- List a team's repos
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgListTeamRepos
+  :: Id -- ^ "id" -  id of the team
+  -> GiteaRequest OrgListTeamRepos MimeNoContent [Repository] MimeJSON
+orgListTeamRepos (Id id) =
+  _mkRequest "GET" ["/teams/",toPath id,"/repos"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgListTeamRepos  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam OrgListTeamRepos Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam OrgListTeamRepos Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces OrgListTeamRepos MimeJSON
+
+
+-- *** orgListTeams
+
+-- | @GET \/orgs\/{org}\/teams@
+-- 
+-- List an organization's teams
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgListTeams
+  :: Org -- ^ "org" -  name of the organization
+  -> GiteaRequest OrgListTeams MimeNoContent [Team] MimeJSON
+orgListTeams (Org org) =
+  _mkRequest "GET" ["/orgs/",toPath org,"/teams"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgListTeams  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam OrgListTeams Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam OrgListTeams Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces OrgListTeams MimeJSON
+
+
+-- *** orgListUserOrgs
+
+-- | @GET \/users\/{username}\/orgs@
+-- 
+-- List a user's organizations
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgListUserOrgs
+  :: Username -- ^ "username" -  username of user
+  -> GiteaRequest OrgListUserOrgs MimeNoContent [Organization] MimeJSON
+orgListUserOrgs (Username username) =
+  _mkRequest "GET" ["/users/",toPath username,"/orgs"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgListUserOrgs  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam OrgListUserOrgs Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam OrgListUserOrgs Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces OrgListUserOrgs MimeJSON
+
+
+-- *** orgPublicizeMember
+
+-- | @PUT \/orgs\/{org}\/public_members\/{username}@
+-- 
+-- Publicize a user's membership
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgPublicizeMember
+  :: Org -- ^ "org" -  name of the organization
+  -> Username -- ^ "username" -  username of the user
+  -> GiteaRequest OrgPublicizeMember MimeNoContent NoContent MimeNoContent
+orgPublicizeMember (Org org) (Username username) =
+  _mkRequest "PUT" ["/orgs/",toPath org,"/public_members/",toPath username]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgPublicizeMember  
+instance Produces OrgPublicizeMember MimeNoContent
+
+
+-- *** orgRemoveTeamMember
+
+-- | @DELETE \/teams\/{id}\/members\/{username}@
+-- 
+-- Remove a team member
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgRemoveTeamMember
+  :: Id -- ^ "id" -  id of the team
+  -> Username -- ^ "username" -  username of the user to remove
+  -> GiteaRequest OrgRemoveTeamMember MimeNoContent NoContent MimeNoContent
+orgRemoveTeamMember (Id id) (Username username) =
+  _mkRequest "DELETE" ["/teams/",toPath id,"/members/",toPath username]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgRemoveTeamMember  
+instance Produces OrgRemoveTeamMember MimeNoContent
+
+
+-- *** orgRemoveTeamRepository
+
+-- | @DELETE \/teams\/{id}\/repos\/{org}\/{repo}@
+-- 
+-- Remove a repository from a team
+-- 
+-- This does not delete the repository, it only removes the repository from the team.
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+orgRemoveTeamRepository
+  :: Id -- ^ "id" -  id of the team
+  -> Org -- ^ "org" -  organization that owns the repo to remove
+  -> Repo -- ^ "repo" -  name of the repo to remove
+  -> GiteaRequest OrgRemoveTeamRepository MimeNoContent NoContent MimeNoContent
+orgRemoveTeamRepository (Id id) (Org org) (Repo repo) =
+  _mkRequest "DELETE" ["/teams/",toPath id,"/repos/",toPath org,"/",toPath repo]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data OrgRemoveTeamRepository  
+instance Produces OrgRemoveTeamRepository MimeNoContent
+
+
+-- *** teamSearch
+
+-- | @GET \/orgs\/{org}\/teams\/search@
+-- 
+-- Search for teams within an organization
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+teamSearch
+  :: Org -- ^ "org" -  name of the organization
+  -> GiteaRequest TeamSearch MimeNoContent TeamSearch200Response MimeJSON
+teamSearch (Org org) =
+  _mkRequest "GET" ["/orgs/",toPath org,"/teams/search"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data TeamSearch  
+
+-- | /Optional Param/ "q" - keywords to search
+instance HasOptionalParam TeamSearch Q where
+  applyOptionalParam req (Q xs) =
+    req `addQuery` toQuery ("q", Just xs)
+
+-- | /Optional Param/ "include_desc" - include search within team description (defaults to true)
+instance HasOptionalParam TeamSearch IncludeDesc where
+  applyOptionalParam req (IncludeDesc xs) =
+    req `addQuery` toQuery ("include_desc", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam TeamSearch Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam TeamSearch Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces TeamSearch MimeJSON
+
diff --git a/lib/Gitea/API/Package.hs b/lib/Gitea/API/Package.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/API/Package.hs
@@ -0,0 +1,190 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.API.Package
+-}
+
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MonoLocalBinds #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-binds -fno-warn-unused-imports #-}
+
+module Gitea.API.Package where
+
+import Gitea.Core
+import Gitea.MimeTypes
+import Gitea.Model as M
+
+import qualified Data.Aeson as A
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.Data as P (Typeable, TypeRep, typeOf, typeRep)
+import qualified Data.Foldable as P
+import qualified Data.Map as Map
+import qualified Data.Maybe as P
+import qualified Data.Proxy as P (Proxy(..))
+import qualified Data.Set as Set
+import qualified Data.String as P
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+import qualified Data.Text.Lazy as TL
+import qualified Data.Text.Lazy.Encoding as TL
+import qualified Data.Time as TI
+import qualified Network.HTTP.Client.MultipartFormData as NH
+import qualified Network.HTTP.Media as ME
+import qualified Network.HTTP.Types as NH
+import qualified Web.FormUrlEncoded as WH
+import qualified Web.HttpApiData as WH
+
+import Data.Text (Text)
+import GHC.Base ((<|>))
+
+import Prelude ((==),(/=),($), (.),(<$>),(<*>),(>>=),Maybe(..),Bool(..),Char,Double,FilePath,Float,Int,Integer,String,fmap,undefined,mempty,maybe,pure,Monad,Applicative,Functor)
+import qualified Prelude as P
+
+-- * Operations
+
+
+-- ** Package
+
+-- *** deletePackage
+
+-- | @DELETE \/packages\/{owner}\/{type}\/{name}\/{version}@
+-- 
+-- Delete a package
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+deletePackage
+  :: Owner -- ^ "owner" -  owner of the package
+  -> ParamTypeText -- ^ "_type" -  type of the package
+  -> Name -- ^ "name" -  name of the package
+  -> Version -- ^ "version" -  version of the package
+  -> GiteaRequest DeletePackage MimeNoContent NoContent MimeNoContent
+deletePackage (Owner owner) (ParamTypeText _type) (Name name) (Version version) =
+  _mkRequest "DELETE" ["/packages/",toPath owner,"/",toPath _type,"/",toPath name,"/",toPath version]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data DeletePackage  
+instance Produces DeletePackage MimeNoContent
+
+
+-- *** getPackage
+
+-- | @GET \/packages\/{owner}\/{type}\/{name}\/{version}@
+-- 
+-- Gets a package
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+getPackage
+  :: Owner -- ^ "owner" -  owner of the package
+  -> ParamTypeText -- ^ "_type" -  type of the package
+  -> Name -- ^ "name" -  name of the package
+  -> Version -- ^ "version" -  version of the package
+  -> GiteaRequest GetPackage MimeNoContent Package MimeJSON
+getPackage (Owner owner) (ParamTypeText _type) (Name name) (Version version) =
+  _mkRequest "GET" ["/packages/",toPath owner,"/",toPath _type,"/",toPath name,"/",toPath version]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data GetPackage  
+-- | @application/json@
+instance Produces GetPackage MimeJSON
+
+
+-- *** listPackageFiles
+
+-- | @GET \/packages\/{owner}\/{type}\/{name}\/{version}\/files@
+-- 
+-- Gets all files of a package
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+listPackageFiles
+  :: Owner -- ^ "owner" -  owner of the package
+  -> ParamTypeText -- ^ "_type" -  type of the package
+  -> Name -- ^ "name" -  name of the package
+  -> Version -- ^ "version" -  version of the package
+  -> GiteaRequest ListPackageFiles MimeNoContent [PackageFile] MimeJSON
+listPackageFiles (Owner owner) (ParamTypeText _type) (Name name) (Version version) =
+  _mkRequest "GET" ["/packages/",toPath owner,"/",toPath _type,"/",toPath name,"/",toPath version,"/files"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data ListPackageFiles  
+-- | @application/json@
+instance Produces ListPackageFiles MimeJSON
+
+
+-- *** listPackages
+
+-- | @GET \/packages\/{owner}@
+-- 
+-- Gets all packages of an owner
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+listPackages
+  :: Owner -- ^ "owner" -  owner of the packages
+  -> GiteaRequest ListPackages MimeNoContent [Package] MimeJSON
+listPackages (Owner owner) =
+  _mkRequest "GET" ["/packages/",toPath owner]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data ListPackages  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam ListPackages Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam ListPackages Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+
+-- | /Optional Param/ "type" - package type filter
+instance HasOptionalParam ListPackages ParamType where
+  applyOptionalParam req (ParamType xs) =
+    req `addQuery` toQuery ("type", Just xs)
+
+-- | /Optional Param/ "q" - name filter
+instance HasOptionalParam ListPackages Q where
+  applyOptionalParam req (Q xs) =
+    req `addQuery` toQuery ("q", Just xs)
+-- | @application/json@
+instance Produces ListPackages MimeJSON
+
diff --git a/lib/Gitea/API/Repository.hs b/lib/Gitea/API/Repository.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/API/Repository.hs
@@ -0,0 +1,4528 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.API.Repository
+-}
+
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MonoLocalBinds #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-binds -fno-warn-unused-imports #-}
+
+module Gitea.API.Repository where
+
+import Gitea.Core
+import Gitea.MimeTypes
+import Gitea.Model as M
+
+import qualified Data.Aeson as A
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.Data as P (Typeable, TypeRep, typeOf, typeRep)
+import qualified Data.Foldable as P
+import qualified Data.Map as Map
+import qualified Data.Maybe as P
+import qualified Data.Proxy as P (Proxy(..))
+import qualified Data.Set as Set
+import qualified Data.String as P
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+import qualified Data.Text.Lazy as TL
+import qualified Data.Text.Lazy.Encoding as TL
+import qualified Data.Time as TI
+import qualified Network.HTTP.Client.MultipartFormData as NH
+import qualified Network.HTTP.Media as ME
+import qualified Network.HTTP.Types as NH
+import qualified Web.FormUrlEncoded as WH
+import qualified Web.HttpApiData as WH
+
+import Data.Text (Text)
+import GHC.Base ((<|>))
+
+import Prelude ((==),(/=),($), (.),(<$>),(<*>),(>>=),Maybe(..),Bool(..),Char,Double,FilePath,Float,Int,Integer,String,fmap,undefined,mempty,maybe,pure,Monad,Applicative,Functor)
+import qualified Prelude as P
+
+-- * Operations
+
+
+-- ** Repository
+
+-- *** acceptRepoTransfer
+
+-- | @POST \/repos\/{owner}\/{repo}\/transfer\/accept@
+-- 
+-- Accept a repo transfer
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+acceptRepoTransfer
+  :: Owner -- ^ "owner" -  owner of the repo to transfer
+  -> Repo -- ^ "repo" -  name of the repo to transfer
+  -> GiteaRequest AcceptRepoTransfer MimeNoContent Repository MimeJSON
+acceptRepoTransfer (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/transfer/accept"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data AcceptRepoTransfer  
+-- | @application/json@
+instance Produces AcceptRepoTransfer MimeJSON
+
+
+-- *** createCurrentUserRepo
+
+-- | @POST \/user\/repos@
+-- 
+-- Create a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+createCurrentUserRepo
+  :: (Consumes CreateCurrentUserRepo MimeJSON)
+  => GiteaRequest CreateCurrentUserRepo MimeJSON Repository MimeJSON
+createCurrentUserRepo =
+  _mkRequest "POST" ["/user/repos"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data CreateCurrentUserRepo 
+instance HasBodyParam CreateCurrentUserRepo CreateRepoOption 
+
+-- | @application/json@
+instance Consumes CreateCurrentUserRepo MimeJSON
+
+-- | @application/json@
+instance Produces CreateCurrentUserRepo MimeJSON
+
+
+-- *** createFork
+
+-- | @POST \/repos\/{owner}\/{repo}\/forks@
+-- 
+-- Fork a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+createFork
+  :: (Consumes CreateFork contentType)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> Owner -- ^ "owner" -  owner of the repo to fork
+  -> Repo -- ^ "repo" -  name of the repo to fork
+  -> GiteaRequest CreateFork contentType Repository MimeJSON
+createFork _ (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/forks"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data CreateFork 
+instance HasBodyParam CreateFork CreateForkOption 
+
+-- | @application/json@
+instance Consumes CreateFork MimeJSON
+-- | @text/plain@
+instance Consumes CreateFork MimePlainText
+
+-- | @application/json@
+instance Produces CreateFork MimeJSON
+
+
+-- *** generateRepo
+
+-- | @POST \/repos\/{template_owner}\/{template_repo}\/generate@
+-- 
+-- Create a repository using a template
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+generateRepo
+  :: (Consumes GenerateRepo MimeJSON)
+  => TemplateOwner -- ^ "templateOwner" -  name of the template repository owner
+  -> TemplateRepo -- ^ "templateRepo" -  name of the template repository
+  -> GiteaRequest GenerateRepo MimeJSON Repository MimeJSON
+generateRepo (TemplateOwner templateOwner) (TemplateRepo templateRepo) =
+  _mkRequest "POST" ["/repos/",toPath templateOwner,"/",toPath templateRepo,"/generate"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data GenerateRepo 
+instance HasBodyParam GenerateRepo GenerateRepoOption 
+
+-- | @application/json@
+instance Consumes GenerateRepo MimeJSON
+
+-- | @application/json@
+instance Produces GenerateRepo MimeJSON
+
+
+-- *** getAnnotatedTag
+
+-- | @GET \/repos\/{owner}\/{repo}\/git\/tags\/{sha}@
+-- 
+-- Gets the tag object of an annotated tag (not lightweight tags)
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+getAnnotatedTag
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Sha -- ^ "sha" -  sha of the tag. The Git tags API only supports annotated tag objects, not lightweight tags.
+  -> GiteaRequest GetAnnotatedTag MimeNoContent AnnotatedTag MimeJSON
+getAnnotatedTag (Owner owner) (Repo repo) (Sha sha) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/git/tags/",toPath sha]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data GetAnnotatedTag  
+-- | @application/json@
+instance Produces GetAnnotatedTag MimeJSON
+
+
+-- *** getBlob
+
+-- | @GET \/repos\/{owner}\/{repo}\/git\/blobs\/{sha}@
+-- 
+-- Gets the blob of a repository.
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+getBlob
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Sha -- ^ "sha" -  sha of the commit
+  -> GiteaRequest GetBlob MimeNoContent GitBlobResponse MimeJSON
+getBlob (Owner owner) (Repo repo) (Sha sha) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/git/blobs/",toPath sha]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data GetBlob  
+-- | @application/json@
+instance Produces GetBlob MimeJSON
+
+
+-- *** getTree
+
+-- | @GET \/repos\/{owner}\/{repo}\/git\/trees\/{sha}@
+-- 
+-- Gets the tree of a repository.
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+getTree
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Sha -- ^ "sha" -  sha of the commit
+  -> GiteaRequest GetTree MimeNoContent GitTreeResponse MimeJSON
+getTree (Owner owner) (Repo repo) (Sha sha) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/git/trees/",toPath sha]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data GetTree  
+
+-- | /Optional Param/ "recursive" - show all directories and files
+instance HasOptionalParam GetTree Recursive where
+  applyOptionalParam req (Recursive xs) =
+    req `addQuery` toQuery ("recursive", Just xs)
+
+-- | /Optional Param/ "page" - page number; the 'truncated' field in the response will be true if there are still more items after this page, false if the last page
+instance HasOptionalParam GetTree Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "per_page" - number of items per page
+instance HasOptionalParam GetTree PerPage where
+  applyOptionalParam req (PerPage xs) =
+    req `addQuery` toQuery ("per_page", Just xs)
+-- | @application/json@
+instance Produces GetTree MimeJSON
+
+
+-- *** listForks
+
+-- | @GET \/repos\/{owner}\/{repo}\/forks@
+-- 
+-- List a repository's forks
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+listForks
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest ListForks MimeNoContent [Repository] MimeJSON
+listForks (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/forks"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data ListForks  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam ListForks Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam ListForks Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces ListForks MimeJSON
+
+
+-- *** rejectRepoTransfer
+
+-- | @POST \/repos\/{owner}\/{repo}\/transfer\/reject@
+-- 
+-- Reject a repo transfer
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+rejectRepoTransfer
+  :: Owner -- ^ "owner" -  owner of the repo to transfer
+  -> Repo -- ^ "repo" -  name of the repo to transfer
+  -> GiteaRequest RejectRepoTransfer MimeNoContent Repository MimeJSON
+rejectRepoTransfer (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/transfer/reject"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RejectRepoTransfer  
+-- | @application/json@
+instance Produces RejectRepoTransfer MimeJSON
+
+
+-- *** repoAddCollaborator
+
+-- | @PUT \/repos\/{owner}\/{repo}\/collaborators\/{collaborator}@
+-- 
+-- Add a collaborator to a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoAddCollaborator
+  :: (Consumes RepoAddCollaborator contentType)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Collaborator -- ^ "collaborator" -  username of the collaborator to add
+  -> GiteaRequest RepoAddCollaborator contentType NoContent MimeNoContent
+repoAddCollaborator _ (Owner owner) (Repo repo) (Collaborator collaborator) =
+  _mkRequest "PUT" ["/repos/",toPath owner,"/",toPath repo,"/collaborators/",toPath collaborator]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoAddCollaborator 
+instance HasBodyParam RepoAddCollaborator AddCollaboratorOption 
+
+-- | @application/json@
+instance Consumes RepoAddCollaborator MimeJSON
+-- | @text/plain@
+instance Consumes RepoAddCollaborator MimePlainText
+
+instance Produces RepoAddCollaborator MimeNoContent
+
+
+-- *** repoAddPushMirror
+
+-- | @POST \/repos\/{owner}\/{repo}\/push_mirrors@
+-- 
+-- add a push mirror to the repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoAddPushMirror
+  :: (Consumes RepoAddPushMirror MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoAddPushMirror MimeJSON PushMirror MimeJSON
+repoAddPushMirror (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/push_mirrors"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoAddPushMirror 
+instance HasBodyParam RepoAddPushMirror CreatePushMirrorOption 
+
+-- | @application/json@
+instance Consumes RepoAddPushMirror MimeJSON
+
+-- | @application/json@
+instance Produces RepoAddPushMirror MimeJSON
+
+
+-- *** repoAddTeam
+
+-- | @PUT \/repos\/{owner}\/{repo}\/teams\/{team}@
+-- 
+-- Add a team to a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoAddTeam
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Team2 -- ^ "team" -  team name
+  -> GiteaRequest RepoAddTeam MimeNoContent NoContent MimeNoContent
+repoAddTeam (Owner owner) (Repo repo) (Team2 team) =
+  _mkRequest "PUT" ["/repos/",toPath owner,"/",toPath repo,"/teams/",toPath team]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoAddTeam  
+instance Produces RepoAddTeam MimeNoContent
+
+
+-- *** repoAddTopic
+
+-- | @PUT \/repos\/{owner}\/{repo}\/topics\/{topic}@
+-- 
+-- Add a topic to a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoAddTopic
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> TopicText -- ^ "topic" -  name of the topic to add
+  -> GiteaRequest RepoAddTopic MimeNoContent NoContent MimeNoContent
+repoAddTopic (Owner owner) (Repo repo) (TopicText topic) =
+  _mkRequest "PUT" ["/repos/",toPath owner,"/",toPath repo,"/topics/",toPath topic]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoAddTopic  
+instance Produces RepoAddTopic MimeNoContent
+
+
+-- *** repoApplyDiffPatch
+
+-- | @POST \/repos\/{owner}\/{repo}\/diffpatch@
+-- 
+-- Apply diff patch to repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoApplyDiffPatch
+  :: (Consumes RepoApplyDiffPatch MimeJSON, MimeRender MimeJSON UpdateFileOptions)
+  => UpdateFileOptions -- ^ "body"
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoApplyDiffPatch MimeJSON FileResponse MimeJSON
+repoApplyDiffPatch body (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/diffpatch"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` body
+
+data RepoApplyDiffPatch 
+instance HasBodyParam RepoApplyDiffPatch UpdateFileOptions 
+
+-- | @application/json@
+instance Consumes RepoApplyDiffPatch MimeJSON
+
+-- | @application/json@
+instance Produces RepoApplyDiffPatch MimeJSON
+
+
+-- *** repoCancelScheduledAutoMerge
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/pulls\/{index}\/merge@
+-- 
+-- Cancel the scheduled auto merge for the given pull request
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoCancelScheduledAutoMerge
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request to merge
+  -> GiteaRequest RepoCancelScheduledAutoMerge MimeNoContent NoContent MimeNoContent
+repoCancelScheduledAutoMerge (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index,"/merge"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoCancelScheduledAutoMerge  
+instance Produces RepoCancelScheduledAutoMerge MimeNoContent
+
+
+-- *** repoCheckCollaborator
+
+-- | @GET \/repos\/{owner}\/{repo}\/collaborators\/{collaborator}@
+-- 
+-- Check if a user is a collaborator of a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoCheckCollaborator
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Collaborator -- ^ "collaborator" -  username of the collaborator
+  -> GiteaRequest RepoCheckCollaborator MimeNoContent NoContent MimeNoContent
+repoCheckCollaborator (Owner owner) (Repo repo) (Collaborator collaborator) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/collaborators/",toPath collaborator]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoCheckCollaborator  
+instance Produces RepoCheckCollaborator MimeNoContent
+
+
+-- *** repoCheckTeam
+
+-- | @GET \/repos\/{owner}\/{repo}\/teams\/{team}@
+-- 
+-- Check if a team is assigned to a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoCheckTeam
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Team2 -- ^ "team" -  team name
+  -> GiteaRequest RepoCheckTeam MimeNoContent Team MimeJSON
+repoCheckTeam (Owner owner) (Repo repo) (Team2 team) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/teams/",toPath team]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoCheckTeam  
+-- | @application/json@
+instance Produces RepoCheckTeam MimeJSON
+
+
+-- *** repoCreateBranch
+
+-- | @POST \/repos\/{owner}\/{repo}\/branches@
+-- 
+-- Create a branch
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoCreateBranch
+  :: (Consumes RepoCreateBranch MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoCreateBranch MimeJSON Branch MimeJSON
+repoCreateBranch (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/branches"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoCreateBranch 
+instance HasBodyParam RepoCreateBranch CreateBranchRepoOption 
+
+-- | @application/json@
+instance Consumes RepoCreateBranch MimeJSON
+
+-- | @application/json@
+instance Produces RepoCreateBranch MimeJSON
+
+
+-- *** repoCreateBranchProtection
+
+-- | @POST \/repos\/{owner}\/{repo}\/branch_protections@
+-- 
+-- Create a branch protections for a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoCreateBranchProtection
+  :: (Consumes RepoCreateBranchProtection MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoCreateBranchProtection MimeJSON BranchProtection MimeJSON
+repoCreateBranchProtection (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/branch_protections"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoCreateBranchProtection 
+instance HasBodyParam RepoCreateBranchProtection CreateBranchProtectionOption 
+
+-- | @application/json@
+instance Consumes RepoCreateBranchProtection MimeJSON
+
+-- | @application/json@
+instance Produces RepoCreateBranchProtection MimeJSON
+
+
+-- *** repoCreateFile
+
+-- | @POST \/repos\/{owner}\/{repo}\/contents\/{filepath}@
+-- 
+-- Create a file in a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoCreateFile
+  :: (Consumes RepoCreateFile MimeJSON, MimeRender MimeJSON CreateFileOptions)
+  => CreateFileOptions -- ^ "body"
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Filepath -- ^ "filepath" -  path of the file to create
+  -> GiteaRequest RepoCreateFile MimeJSON FileResponse MimeJSON
+repoCreateFile body (Owner owner) (Repo repo) (Filepath filepath) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/contents/",toPath filepath]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` body
+
+data RepoCreateFile 
+instance HasBodyParam RepoCreateFile CreateFileOptions 
+
+-- | @application/json@
+instance Consumes RepoCreateFile MimeJSON
+
+-- | @application/json@
+instance Produces RepoCreateFile MimeJSON
+
+
+-- *** repoCreateHook
+
+-- | @POST \/repos\/{owner}\/{repo}\/hooks@
+-- 
+-- Create a hook
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoCreateHook
+  :: (Consumes RepoCreateHook MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoCreateHook MimeJSON Hook MimeJSON
+repoCreateHook (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/hooks"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoCreateHook 
+instance HasBodyParam RepoCreateHook CreateHookOption 
+
+-- | @application/json@
+instance Consumes RepoCreateHook MimeJSON
+
+-- | @application/json@
+instance Produces RepoCreateHook MimeJSON
+
+
+-- *** repoCreateKey
+
+-- | @POST \/repos\/{owner}\/{repo}\/keys@
+-- 
+-- Add a key to a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoCreateKey
+  :: (Consumes RepoCreateKey MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoCreateKey MimeJSON DeployKey MimeJSON
+repoCreateKey (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/keys"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoCreateKey 
+instance HasBodyParam RepoCreateKey CreateKeyOption 
+
+-- | @application/json@
+instance Consumes RepoCreateKey MimeJSON
+
+-- | @application/json@
+instance Produces RepoCreateKey MimeJSON
+
+
+-- *** repoCreatePullRequest
+
+-- | @POST \/repos\/{owner}\/{repo}\/pulls@
+-- 
+-- Create a pull request
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoCreatePullRequest
+  :: (Consumes RepoCreatePullRequest MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoCreatePullRequest MimeJSON PullRequest MimeJSON
+repoCreatePullRequest (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/pulls"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoCreatePullRequest 
+instance HasBodyParam RepoCreatePullRequest CreatePullRequestOption 
+
+-- | @application/json@
+instance Consumes RepoCreatePullRequest MimeJSON
+
+-- | @application/json@
+instance Produces RepoCreatePullRequest MimeJSON
+
+
+-- *** repoCreatePullReview
+
+-- | @POST \/repos\/{owner}\/{repo}\/pulls\/{index}\/reviews@
+-- 
+-- Create a review to an pull request
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoCreatePullReview
+  :: (Consumes RepoCreatePullReview contentType, MimeRender contentType CreatePullReviewOptions)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> CreatePullReviewOptions -- ^ "body"
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request
+  -> GiteaRequest RepoCreatePullReview contentType PullReview MimeJSON
+repoCreatePullReview _ body (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index,"/reviews"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` body
+
+data RepoCreatePullReview 
+instance HasBodyParam RepoCreatePullReview CreatePullReviewOptions 
+
+-- | @application/json@
+instance Consumes RepoCreatePullReview MimeJSON
+-- | @text/plain@
+instance Consumes RepoCreatePullReview MimePlainText
+
+-- | @application/json@
+instance Produces RepoCreatePullReview MimeJSON
+
+
+-- *** repoCreatePullReviewRequests
+
+-- | @POST \/repos\/{owner}\/{repo}\/pulls\/{index}\/requested_reviewers@
+-- 
+-- create review requests for a pull request
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoCreatePullReviewRequests
+  :: (Consumes RepoCreatePullReviewRequests contentType, MimeRender contentType PullReviewRequestOptions)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> PullReviewRequestOptions -- ^ "body"
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request
+  -> GiteaRequest RepoCreatePullReviewRequests contentType [PullReview] MimeJSON
+repoCreatePullReviewRequests _ body (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index,"/requested_reviewers"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` body
+
+data RepoCreatePullReviewRequests 
+instance HasBodyParam RepoCreatePullReviewRequests PullReviewRequestOptions 
+
+-- | @application/json@
+instance Consumes RepoCreatePullReviewRequests MimeJSON
+-- | @text/plain@
+instance Consumes RepoCreatePullReviewRequests MimePlainText
+
+-- | @application/json@
+instance Produces RepoCreatePullReviewRequests MimeJSON
+
+
+-- *** repoCreateRelease
+
+-- | @POST \/repos\/{owner}\/{repo}\/releases@
+-- 
+-- Create a release
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoCreateRelease
+  :: (Consumes RepoCreateRelease MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoCreateRelease MimeJSON Release MimeJSON
+repoCreateRelease (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/releases"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoCreateRelease 
+instance HasBodyParam RepoCreateRelease CreateReleaseOption 
+
+-- | @application/json@
+instance Consumes RepoCreateRelease MimeJSON
+
+-- | @application/json@
+instance Produces RepoCreateRelease MimeJSON
+
+
+-- *** repoCreateReleaseAttachment
+
+-- | @POST \/repos\/{owner}\/{repo}\/releases\/{id}\/assets@
+-- 
+-- Create a release attachment
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoCreateReleaseAttachment
+  :: (Consumes RepoCreateReleaseAttachment MimeMultipartFormData)
+  => Attachment2 -- ^ "attachment" -  attachment to upload
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the release
+  -> GiteaRequest RepoCreateReleaseAttachment MimeMultipartFormData Attachment MimeJSON
+repoCreateReleaseAttachment (Attachment2 attachment) (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/releases/",toPath id,"/assets"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `_addMultiFormPart` NH.partFileSource "attachment" attachment
+
+data RepoCreateReleaseAttachment  
+
+-- | /Optional Param/ "name" - name of the attachment
+instance HasOptionalParam RepoCreateReleaseAttachment Name where
+  applyOptionalParam req (Name xs) =
+    req `addQuery` toQuery ("name", Just xs)
+
+-- | @multipart/form-data@
+instance Consumes RepoCreateReleaseAttachment MimeMultipartFormData
+
+-- | @application/json@
+instance Produces RepoCreateReleaseAttachment MimeJSON
+
+
+-- *** repoCreateStatus
+
+-- | @POST \/repos\/{owner}\/{repo}\/statuses\/{sha}@
+-- 
+-- Create a commit status
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoCreateStatus
+  :: (Consumes RepoCreateStatus contentType)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Sha -- ^ "sha" -  sha of the commit
+  -> GiteaRequest RepoCreateStatus contentType CommitStatus MimeJSON
+repoCreateStatus _ (Owner owner) (Repo repo) (Sha sha) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/statuses/",toPath sha]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoCreateStatus 
+instance HasBodyParam RepoCreateStatus CreateStatusOption 
+
+-- | @application/json@
+instance Consumes RepoCreateStatus MimeJSON
+-- | @text/plain@
+instance Consumes RepoCreateStatus MimePlainText
+
+-- | @application/json@
+instance Produces RepoCreateStatus MimeJSON
+
+
+-- *** repoCreateTag
+
+-- | @POST \/repos\/{owner}\/{repo}\/tags@
+-- 
+-- Create a new git tag in a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoCreateTag
+  :: (Consumes RepoCreateTag contentType)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoCreateTag contentType Tag MimeJSON
+repoCreateTag _ (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/tags"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoCreateTag 
+instance HasBodyParam RepoCreateTag CreateTagOption 
+
+-- | @application/json@
+instance Consumes RepoCreateTag MimeJSON
+-- | @text/plain@
+instance Consumes RepoCreateTag MimePlainText
+
+-- | @application/json@
+instance Produces RepoCreateTag MimeJSON
+
+
+-- *** repoCreateWikiPage
+
+-- | @POST \/repos\/{owner}\/{repo}\/wiki\/new@
+-- 
+-- Create a wiki page
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoCreateWikiPage
+  :: (Consumes RepoCreateWikiPage MimeJSON)
+  => Accept accept -- ^ request accept ('MimeType')
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoCreateWikiPage MimeJSON WikiPage accept
+repoCreateWikiPage  _ (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/wiki/new"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoCreateWikiPage 
+instance HasBodyParam RepoCreateWikiPage CreateWikiPageOptions 
+
+-- | @application/json@
+instance Consumes RepoCreateWikiPage MimeJSON
+
+-- | @text/html@
+instance Produces RepoCreateWikiPage MimeTextHtml
+-- | @application/json@
+instance Produces RepoCreateWikiPage MimeJSON
+
+
+-- *** repoDelete
+
+-- | @DELETE \/repos\/{owner}\/{repo}@
+-- 
+-- Delete a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDelete
+  :: Owner -- ^ "owner" -  owner of the repo to delete
+  -> Repo -- ^ "repo" -  name of the repo to delete
+  -> GiteaRequest RepoDelete MimeNoContent NoContent MimeNoContent
+repoDelete (Owner owner) (Repo repo) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoDelete  
+instance Produces RepoDelete MimeNoContent
+
+
+-- *** repoDeleteBranch
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/branches\/{branch}@
+-- 
+-- Delete a specific branch from a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDeleteBranch
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Branch2 -- ^ "branch" -  branch to delete
+  -> GiteaRequest RepoDeleteBranch MimeNoContent NoContent MimeNoContent
+repoDeleteBranch (Owner owner) (Repo repo) (Branch2 branch) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/branches/",toPath branch]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoDeleteBranch  
+instance Produces RepoDeleteBranch MimeNoContent
+
+
+-- *** repoDeleteBranchProtection
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/branch_protections\/{name}@
+-- 
+-- Delete a specific branch protection for the repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDeleteBranchProtection
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Name -- ^ "name" -  name of protected branch
+  -> GiteaRequest RepoDeleteBranchProtection MimeNoContent NoContent MimeNoContent
+repoDeleteBranchProtection (Owner owner) (Repo repo) (Name name) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/branch_protections/",toPath name]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoDeleteBranchProtection  
+instance Produces RepoDeleteBranchProtection MimeNoContent
+
+
+-- *** repoDeleteCollaborator
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/collaborators\/{collaborator}@
+-- 
+-- Delete a collaborator from a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDeleteCollaborator
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Collaborator -- ^ "collaborator" -  username of the collaborator to delete
+  -> GiteaRequest RepoDeleteCollaborator MimeNoContent NoContent MimeNoContent
+repoDeleteCollaborator (Owner owner) (Repo repo) (Collaborator collaborator) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/collaborators/",toPath collaborator]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoDeleteCollaborator  
+instance Produces RepoDeleteCollaborator MimeNoContent
+
+
+-- *** repoDeleteFile
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/contents\/{filepath}@
+-- 
+-- Delete a file in a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDeleteFile
+  :: (Consumes RepoDeleteFile MimeJSON, MimeRender MimeJSON DeleteFileOptions)
+  => DeleteFileOptions -- ^ "body"
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Filepath -- ^ "filepath" -  path of the file to delete
+  -> GiteaRequest RepoDeleteFile MimeJSON FileDeleteResponse MimeJSON
+repoDeleteFile body (Owner owner) (Repo repo) (Filepath filepath) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/contents/",toPath filepath]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` body
+
+data RepoDeleteFile 
+instance HasBodyParam RepoDeleteFile DeleteFileOptions 
+
+-- | @application/json@
+instance Consumes RepoDeleteFile MimeJSON
+
+-- | @application/json@
+instance Produces RepoDeleteFile MimeJSON
+
+
+-- *** repoDeleteGitHook
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/hooks\/git\/{id}@
+-- 
+-- Delete a Git hook in a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDeleteGitHook
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> IdText -- ^ "id" -  id of the hook to get
+  -> GiteaRequest RepoDeleteGitHook MimeNoContent NoContent MimeNoContent
+repoDeleteGitHook (Owner owner) (Repo repo) (IdText id) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/hooks/git/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoDeleteGitHook  
+instance Produces RepoDeleteGitHook MimeNoContent
+
+
+-- *** repoDeleteHook
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/hooks\/{id}@
+-- 
+-- Delete a hook in a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDeleteHook
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the hook to delete
+  -> GiteaRequest RepoDeleteHook MimeNoContent NoContent MimeNoContent
+repoDeleteHook (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/hooks/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoDeleteHook  
+instance Produces RepoDeleteHook MimeNoContent
+
+
+-- *** repoDeleteKey
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/keys\/{id}@
+-- 
+-- Delete a key from a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDeleteKey
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the key to delete
+  -> GiteaRequest RepoDeleteKey MimeNoContent NoContent MimeNoContent
+repoDeleteKey (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/keys/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoDeleteKey  
+instance Produces RepoDeleteKey MimeNoContent
+
+
+-- *** repoDeletePullReview
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/pulls\/{index}\/reviews\/{id}@
+-- 
+-- Delete a specific review from a pull request
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDeletePullReview
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request
+  -> Id -- ^ "id" -  id of the review
+  -> GiteaRequest RepoDeletePullReview MimeNoContent NoContent MimeNoContent
+repoDeletePullReview (Owner owner) (Repo repo) (Index index) (Id id) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index,"/reviews/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoDeletePullReview  
+instance Produces RepoDeletePullReview MimeNoContent
+
+
+-- *** repoDeletePullReviewRequests
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/pulls\/{index}\/requested_reviewers@
+-- 
+-- cancel review requests for a pull request
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDeletePullReviewRequests
+  :: (Consumes RepoDeletePullReviewRequests contentType, MimeRender contentType PullReviewRequestOptions)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> PullReviewRequestOptions -- ^ "body"
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request
+  -> GiteaRequest RepoDeletePullReviewRequests contentType NoContent MimeNoContent
+repoDeletePullReviewRequests _ body (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index,"/requested_reviewers"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` body
+
+data RepoDeletePullReviewRequests 
+instance HasBodyParam RepoDeletePullReviewRequests PullReviewRequestOptions 
+
+-- | @application/json@
+instance Consumes RepoDeletePullReviewRequests MimeJSON
+-- | @text/plain@
+instance Consumes RepoDeletePullReviewRequests MimePlainText
+
+instance Produces RepoDeletePullReviewRequests MimeNoContent
+
+
+-- *** repoDeletePushMirror
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/push_mirrors\/{name}@
+-- 
+-- deletes a push mirror from a repository by remoteName
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDeletePushMirror
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Name -- ^ "name" -  remote name of the pushMirror
+  -> GiteaRequest RepoDeletePushMirror MimeNoContent NoContent MimeNoContent
+repoDeletePushMirror (Owner owner) (Repo repo) (Name name) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/push_mirrors/",toPath name]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoDeletePushMirror  
+instance Produces RepoDeletePushMirror MimeNoContent
+
+
+-- *** repoDeleteRelease
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/releases\/{id}@
+-- 
+-- Delete a release
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDeleteRelease
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the release to delete
+  -> GiteaRequest RepoDeleteRelease MimeNoContent NoContent MimeNoContent
+repoDeleteRelease (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/releases/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoDeleteRelease  
+instance Produces RepoDeleteRelease MimeNoContent
+
+
+-- *** repoDeleteReleaseAttachment
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/releases\/{id}\/assets\/{attachment_id}@
+-- 
+-- Delete a release attachment
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDeleteReleaseAttachment
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the release
+  -> AttachmentId -- ^ "attachmentId" -  id of the attachment to delete
+  -> GiteaRequest RepoDeleteReleaseAttachment MimeNoContent NoContent MimeNoContent
+repoDeleteReleaseAttachment (Owner owner) (Repo repo) (Id id) (AttachmentId attachmentId) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/releases/",toPath id,"/assets/",toPath attachmentId]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoDeleteReleaseAttachment  
+instance Produces RepoDeleteReleaseAttachment MimeNoContent
+
+
+-- *** repoDeleteReleaseByTag
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/releases\/tags\/{tag}@
+-- 
+-- Delete a release by tag name
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDeleteReleaseByTag
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Tag2 -- ^ "tag" -  tag name of the release to delete
+  -> GiteaRequest RepoDeleteReleaseByTag MimeNoContent NoContent MimeNoContent
+repoDeleteReleaseByTag (Owner owner) (Repo repo) (Tag2 tag) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/releases/tags/",toPath tag]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoDeleteReleaseByTag  
+instance Produces RepoDeleteReleaseByTag MimeNoContent
+
+
+-- *** repoDeleteTag
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/tags\/{tag}@
+-- 
+-- Delete a repository's tag by name
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDeleteTag
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Tag2 -- ^ "tag" -  name of tag to delete
+  -> GiteaRequest RepoDeleteTag MimeNoContent NoContent MimeNoContent
+repoDeleteTag (Owner owner) (Repo repo) (Tag2 tag) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/tags/",toPath tag]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoDeleteTag  
+instance Produces RepoDeleteTag MimeNoContent
+
+
+-- *** repoDeleteTeam
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/teams\/{team}@
+-- 
+-- Delete a team from a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDeleteTeam
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Team2 -- ^ "team" -  team name
+  -> GiteaRequest RepoDeleteTeam MimeNoContent NoContent MimeNoContent
+repoDeleteTeam (Owner owner) (Repo repo) (Team2 team) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/teams/",toPath team]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoDeleteTeam  
+instance Produces RepoDeleteTeam MimeNoContent
+
+
+-- *** repoDeleteTopic
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/topics\/{topic}@
+-- 
+-- Delete a topic from a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDeleteTopic
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> TopicText -- ^ "topic" -  name of the topic to delete
+  -> GiteaRequest RepoDeleteTopic MimeNoContent NoContent MimeNoContent
+repoDeleteTopic (Owner owner) (Repo repo) (TopicText topic) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/topics/",toPath topic]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoDeleteTopic  
+instance Produces RepoDeleteTopic MimeNoContent
+
+
+-- *** repoDeleteWikiPage
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/wiki\/page\/{pageName}@
+-- 
+-- Delete a wiki page
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDeleteWikiPage
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> PageName -- ^ "pageName" -  name of the page
+  -> GiteaRequest RepoDeleteWikiPage MimeNoContent NoContent MimeNoContent
+repoDeleteWikiPage (Owner owner) (Repo repo) (PageName pageName) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/wiki/page/",toPath pageName]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoDeleteWikiPage  
+instance Produces RepoDeleteWikiPage MimeNoContent
+
+
+-- *** repoDismissPullReview
+
+-- | @POST \/repos\/{owner}\/{repo}\/pulls\/{index}\/reviews\/{id}\/dismissals@
+-- 
+-- Dismiss a review for a pull request
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDismissPullReview
+  :: (Consumes RepoDismissPullReview contentType, MimeRender contentType DismissPullReviewOptions)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> DismissPullReviewOptions -- ^ "body"
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request
+  -> Id -- ^ "id" -  id of the review
+  -> GiteaRequest RepoDismissPullReview contentType PullReview MimeJSON
+repoDismissPullReview _ body (Owner owner) (Repo repo) (Index index) (Id id) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index,"/reviews/",toPath id,"/dismissals"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` body
+
+data RepoDismissPullReview 
+instance HasBodyParam RepoDismissPullReview DismissPullReviewOptions 
+
+-- | @application/json@
+instance Consumes RepoDismissPullReview MimeJSON
+-- | @text/plain@
+instance Consumes RepoDismissPullReview MimePlainText
+
+-- | @application/json@
+instance Produces RepoDismissPullReview MimeJSON
+
+
+-- *** repoDownloadCommitDiffOrPatch
+
+-- | @GET \/repos\/{owner}\/{repo}\/git\/commits\/{sha}.{diffType}@
+-- 
+-- Get a commit's diff or patch
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDownloadCommitDiffOrPatch
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Sha -- ^ "sha" -  SHA of the commit to get
+  -> DiffType -- ^ "diffType" -  whether the output is diff or patch
+  -> GiteaRequest RepoDownloadCommitDiffOrPatch MimeNoContent Text MimePlainText
+repoDownloadCommitDiffOrPatch (Owner owner) (Repo repo) (Sha sha) (DiffType diffType) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/git/commits/",toPath sha,".",toPath diffType]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoDownloadCommitDiffOrPatch  
+-- | @text/plain@
+instance Produces RepoDownloadCommitDiffOrPatch MimePlainText
+
+
+-- *** repoDownloadPullDiffOrPatch
+
+-- | @GET \/repos\/{owner}\/{repo}\/pulls\/{index}.{diffType}@
+-- 
+-- Get a pull request diff or patch
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoDownloadPullDiffOrPatch
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request to get
+  -> DiffType -- ^ "diffType" -  whether the output is diff or patch
+  -> GiteaRequest RepoDownloadPullDiffOrPatch MimeNoContent Text MimePlainText
+repoDownloadPullDiffOrPatch (Owner owner) (Repo repo) (Index index) (DiffType diffType) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index,".",toPath diffType]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoDownloadPullDiffOrPatch  
+
+-- | /Optional Param/ "binary" - whether to include binary file changes. if true, the diff is applicable with `git apply`
+instance HasOptionalParam RepoDownloadPullDiffOrPatch ParamBinary where
+  applyOptionalParam req (ParamBinary xs) =
+    req `addQuery` toQuery ("binary", Just xs)
+-- | @text/plain@
+instance Produces RepoDownloadPullDiffOrPatch MimePlainText
+
+
+-- *** repoEdit
+
+-- | @PATCH \/repos\/{owner}\/{repo}@
+-- 
+-- Edit a repository's properties. Only fields that are set will be changed.
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoEdit
+  :: (Consumes RepoEdit contentType)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> Owner -- ^ "owner" -  owner of the repo to edit
+  -> Repo -- ^ "repo" -  name of the repo to edit
+  -> GiteaRequest RepoEdit contentType Repository MimeJSON
+repoEdit _ (Owner owner) (Repo repo) =
+  _mkRequest "PATCH" ["/repos/",toPath owner,"/",toPath repo]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoEdit 
+
+-- | /Body Param/ "body" - Properties of a repo that you can edit
+instance HasBodyParam RepoEdit EditRepoOption 
+
+-- | @application/json@
+instance Consumes RepoEdit MimeJSON
+-- | @text/plain@
+instance Consumes RepoEdit MimePlainText
+
+-- | @application/json@
+instance Produces RepoEdit MimeJSON
+
+
+-- *** repoEditBranchProtection
+
+-- | @PATCH \/repos\/{owner}\/{repo}\/branch_protections\/{name}@
+-- 
+-- Edit a branch protections for a repository. Only fields that are set will be changed
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoEditBranchProtection
+  :: (Consumes RepoEditBranchProtection MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Name -- ^ "name" -  name of protected branch
+  -> GiteaRequest RepoEditBranchProtection MimeJSON BranchProtection MimeJSON
+repoEditBranchProtection (Owner owner) (Repo repo) (Name name) =
+  _mkRequest "PATCH" ["/repos/",toPath owner,"/",toPath repo,"/branch_protections/",toPath name]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoEditBranchProtection 
+instance HasBodyParam RepoEditBranchProtection EditBranchProtectionOption 
+
+-- | @application/json@
+instance Consumes RepoEditBranchProtection MimeJSON
+
+-- | @application/json@
+instance Produces RepoEditBranchProtection MimeJSON
+
+
+-- *** repoEditGitHook
+
+-- | @PATCH \/repos\/{owner}\/{repo}\/hooks\/git\/{id}@
+-- 
+-- Edit a Git hook in a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoEditGitHook
+  :: (Consumes RepoEditGitHook contentType)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> IdText -- ^ "id" -  id of the hook to get
+  -> GiteaRequest RepoEditGitHook contentType GitHook MimeJSON
+repoEditGitHook _ (Owner owner) (Repo repo) (IdText id) =
+  _mkRequest "PATCH" ["/repos/",toPath owner,"/",toPath repo,"/hooks/git/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoEditGitHook 
+instance HasBodyParam RepoEditGitHook EditGitHookOption 
+
+-- | @application/json@
+instance Consumes RepoEditGitHook MimeJSON
+-- | @text/plain@
+instance Consumes RepoEditGitHook MimePlainText
+
+-- | @application/json@
+instance Produces RepoEditGitHook MimeJSON
+
+
+-- *** repoEditHook
+
+-- | @PATCH \/repos\/{owner}\/{repo}\/hooks\/{id}@
+-- 
+-- Edit a hook in a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoEditHook
+  :: (Consumes RepoEditHook contentType)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  index of the hook
+  -> GiteaRequest RepoEditHook contentType Hook MimeJSON
+repoEditHook _ (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "PATCH" ["/repos/",toPath owner,"/",toPath repo,"/hooks/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoEditHook 
+instance HasBodyParam RepoEditHook EditHookOption 
+
+-- | @application/json@
+instance Consumes RepoEditHook MimeJSON
+-- | @text/plain@
+instance Consumes RepoEditHook MimePlainText
+
+-- | @application/json@
+instance Produces RepoEditHook MimeJSON
+
+
+-- *** repoEditPullRequest
+
+-- | @PATCH \/repos\/{owner}\/{repo}\/pulls\/{index}@
+-- 
+-- Update a pull request. If using deadline only the date will be taken into account, and time of day ignored.
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoEditPullRequest
+  :: (Consumes RepoEditPullRequest MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request to edit
+  -> GiteaRequest RepoEditPullRequest MimeJSON PullRequest MimeJSON
+repoEditPullRequest (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "PATCH" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoEditPullRequest 
+instance HasBodyParam RepoEditPullRequest EditPullRequestOption 
+
+-- | @application/json@
+instance Consumes RepoEditPullRequest MimeJSON
+
+-- | @application/json@
+instance Produces RepoEditPullRequest MimeJSON
+
+
+-- *** repoEditRelease
+
+-- | @PATCH \/repos\/{owner}\/{repo}\/releases\/{id}@
+-- 
+-- Update a release
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoEditRelease
+  :: (Consumes RepoEditRelease MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the release to edit
+  -> GiteaRequest RepoEditRelease MimeJSON Release MimeJSON
+repoEditRelease (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "PATCH" ["/repos/",toPath owner,"/",toPath repo,"/releases/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoEditRelease 
+instance HasBodyParam RepoEditRelease EditReleaseOption 
+
+-- | @application/json@
+instance Consumes RepoEditRelease MimeJSON
+
+-- | @application/json@
+instance Produces RepoEditRelease MimeJSON
+
+
+-- *** repoEditReleaseAttachment
+
+-- | @PATCH \/repos\/{owner}\/{repo}\/releases\/{id}\/assets\/{attachment_id}@
+-- 
+-- Edit a release attachment
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoEditReleaseAttachment
+  :: (Consumes RepoEditReleaseAttachment MimeJSON)
+  => Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the release
+  -> AttachmentId -- ^ "attachmentId" -  id of the attachment to edit
+  -> GiteaRequest RepoEditReleaseAttachment MimeJSON Attachment MimeJSON
+repoEditReleaseAttachment (Owner owner) (Repo repo) (Id id) (AttachmentId attachmentId) =
+  _mkRequest "PATCH" ["/repos/",toPath owner,"/",toPath repo,"/releases/",toPath id,"/assets/",toPath attachmentId]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoEditReleaseAttachment 
+instance HasBodyParam RepoEditReleaseAttachment EditAttachmentOptions 
+
+-- | @application/json@
+instance Consumes RepoEditReleaseAttachment MimeJSON
+
+-- | @application/json@
+instance Produces RepoEditReleaseAttachment MimeJSON
+
+
+-- *** repoEditWikiPage
+
+-- | @PATCH \/repos\/{owner}\/{repo}\/wiki\/page\/{pageName}@
+-- 
+-- Edit a wiki page
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoEditWikiPage
+  :: (Consumes RepoEditWikiPage MimeJSON)
+  => Accept accept -- ^ request accept ('MimeType')
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> PageName -- ^ "pageName" -  name of the page
+  -> GiteaRequest RepoEditWikiPage MimeJSON WikiPage accept
+repoEditWikiPage  _ (Owner owner) (Repo repo) (PageName pageName) =
+  _mkRequest "PATCH" ["/repos/",toPath owner,"/",toPath repo,"/wiki/page/",toPath pageName]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoEditWikiPage 
+instance HasBodyParam RepoEditWikiPage CreateWikiPageOptions 
+
+-- | @application/json@
+instance Consumes RepoEditWikiPage MimeJSON
+
+-- | @text/html@
+instance Produces RepoEditWikiPage MimeTextHtml
+-- | @application/json@
+instance Produces RepoEditWikiPage MimeJSON
+
+
+-- *** repoGet
+
+-- | @GET \/repos\/{owner}\/{repo}@
+-- 
+-- Get a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGet
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoGet MimeNoContent Repository MimeJSON
+repoGet (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGet  
+-- | @application/json@
+instance Produces RepoGet MimeJSON
+
+
+-- *** repoGetAllCommits
+
+-- | @GET \/repos\/{owner}\/{repo}\/commits@
+-- 
+-- Get a list of all commits from a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetAllCommits
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoGetAllCommits MimeNoContent [Commit] MimeJSON
+repoGetAllCommits (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/commits"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetAllCommits  
+
+-- | /Optional Param/ "sha" - SHA or branch to start listing commits from (usually 'master')
+instance HasOptionalParam RepoGetAllCommits Sha where
+  applyOptionalParam req (Sha xs) =
+    req `addQuery` toQuery ("sha", Just xs)
+
+-- | /Optional Param/ "path" - filepath of a file/dir
+instance HasOptionalParam RepoGetAllCommits Path where
+  applyOptionalParam req (Path xs) =
+    req `addQuery` toQuery ("path", Just xs)
+
+-- | /Optional Param/ "stat" - include diff stats for every commit (disable for speedup, default 'true')
+instance HasOptionalParam RepoGetAllCommits Stat where
+  applyOptionalParam req (Stat xs) =
+    req `addQuery` toQuery ("stat", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoGetAllCommits Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results (ignored if used with 'path')
+instance HasOptionalParam RepoGetAllCommits Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoGetAllCommits MimeJSON
+
+
+-- *** repoGetArchive
+
+-- | @GET \/repos\/{owner}\/{repo}\/archive\/{archive}@
+-- 
+-- Get an archive of a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetArchive
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Archive -- ^ "archive" -  the git reference for download with attached archive format (e.g. master.zip)
+  -> GiteaRequest RepoGetArchive MimeNoContent NoContent MimeNoContent
+repoGetArchive (Owner owner) (Repo repo) (Archive archive) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/archive/",toPath archive]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetArchive  
+instance Produces RepoGetArchive MimeNoContent
+
+
+-- *** repoGetAssignees
+
+-- | @GET \/repos\/{owner}\/{repo}\/assignees@
+-- 
+-- Return all users that have write access and can be assigned to issues
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetAssignees
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoGetAssignees MimeNoContent [User] MimeJSON
+repoGetAssignees (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/assignees"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetAssignees  
+-- | @application/json@
+instance Produces RepoGetAssignees MimeJSON
+
+
+-- *** repoGetBranch
+
+-- | @GET \/repos\/{owner}\/{repo}\/branches\/{branch}@
+-- 
+-- Retrieve a specific branch from a repository, including its effective branch protection
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetBranch
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Branch2 -- ^ "branch" -  branch to get
+  -> GiteaRequest RepoGetBranch MimeNoContent Branch MimeJSON
+repoGetBranch (Owner owner) (Repo repo) (Branch2 branch) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/branches/",toPath branch]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetBranch  
+-- | @application/json@
+instance Produces RepoGetBranch MimeJSON
+
+
+-- *** repoGetBranchProtection
+
+-- | @GET \/repos\/{owner}\/{repo}\/branch_protections\/{name}@
+-- 
+-- Get a specific branch protection for the repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetBranchProtection
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Name -- ^ "name" -  name of protected branch
+  -> GiteaRequest RepoGetBranchProtection MimeNoContent BranchProtection MimeJSON
+repoGetBranchProtection (Owner owner) (Repo repo) (Name name) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/branch_protections/",toPath name]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetBranchProtection  
+-- | @application/json@
+instance Produces RepoGetBranchProtection MimeJSON
+
+
+-- *** repoGetByID
+
+-- | @GET \/repositories\/{id}@
+-- 
+-- Get a repository by id
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetByID
+  :: Id -- ^ "id" -  id of the repo to get
+  -> GiteaRequest RepoGetByID MimeNoContent Repository MimeJSON
+repoGetByID (Id id) =
+  _mkRequest "GET" ["/repositories/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetByID  
+-- | @application/json@
+instance Produces RepoGetByID MimeJSON
+
+
+-- *** repoGetCombinedStatusByRef
+
+-- | @GET \/repos\/{owner}\/{repo}\/commits\/{ref}\/status@
+-- 
+-- Get a commit's combined status, by branch/tag/commit reference
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetCombinedStatusByRef
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Ref -- ^ "ref" -  name of branch/tag/commit
+  -> GiteaRequest RepoGetCombinedStatusByRef MimeNoContent CombinedStatus MimeJSON
+repoGetCombinedStatusByRef (Owner owner) (Repo repo) (Ref ref) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/commits/",toPath ref,"/status"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetCombinedStatusByRef  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoGetCombinedStatusByRef Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoGetCombinedStatusByRef Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoGetCombinedStatusByRef MimeJSON
+
+
+-- *** repoGetContents
+
+-- | @GET \/repos\/{owner}\/{repo}\/contents\/{filepath}@
+-- 
+-- Gets the metadata and contents (if a file) of an entry in a repository, or a list of entries if a dir
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetContents
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Filepath -- ^ "filepath" -  path of the dir, file, symlink or submodule in the repo
+  -> GiteaRequest RepoGetContents MimeNoContent ContentsResponse MimeJSON
+repoGetContents (Owner owner) (Repo repo) (Filepath filepath) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/contents/",toPath filepath]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetContents  
+
+-- | /Optional Param/ "ref" - The name of the commit/branch/tag. Default the repository’s default branch (usually master)
+instance HasOptionalParam RepoGetContents Ref where
+  applyOptionalParam req (Ref xs) =
+    req `addQuery` toQuery ("ref", Just xs)
+-- | @application/json@
+instance Produces RepoGetContents MimeJSON
+
+
+-- *** repoGetContentsList
+
+-- | @GET \/repos\/{owner}\/{repo}\/contents@
+-- 
+-- Gets the metadata of all the entries of the root dir
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetContentsList
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoGetContentsList MimeNoContent [ContentsResponse] MimeJSON
+repoGetContentsList (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/contents"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetContentsList  
+
+-- | /Optional Param/ "ref" - The name of the commit/branch/tag. Default the repository’s default branch (usually master)
+instance HasOptionalParam RepoGetContentsList Ref where
+  applyOptionalParam req (Ref xs) =
+    req `addQuery` toQuery ("ref", Just xs)
+-- | @application/json@
+instance Produces RepoGetContentsList MimeJSON
+
+
+-- *** repoGetEditorConfig
+
+-- | @GET \/repos\/{owner}\/{repo}\/editorconfig\/{filepath}@
+-- 
+-- Get the EditorConfig definitions of a file in a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetEditorConfig
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Filepath -- ^ "filepath" -  filepath of file to get
+  -> GiteaRequest RepoGetEditorConfig MimeNoContent NoContent MimeNoContent
+repoGetEditorConfig (Owner owner) (Repo repo) (Filepath filepath) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/editorconfig/",toPath filepath]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetEditorConfig  
+
+-- | /Optional Param/ "ref" - The name of the commit/branch/tag. Default the repository’s default branch (usually master)
+instance HasOptionalParam RepoGetEditorConfig Ref where
+  applyOptionalParam req (Ref xs) =
+    req `addQuery` toQuery ("ref", Just xs)
+instance Produces RepoGetEditorConfig MimeNoContent
+
+
+-- *** repoGetGitHook
+
+-- | @GET \/repos\/{owner}\/{repo}\/hooks\/git\/{id}@
+-- 
+-- Get a Git hook
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetGitHook
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> IdText -- ^ "id" -  id of the hook to get
+  -> GiteaRequest RepoGetGitHook MimeNoContent GitHook MimeJSON
+repoGetGitHook (Owner owner) (Repo repo) (IdText id) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/hooks/git/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetGitHook  
+-- | @application/json@
+instance Produces RepoGetGitHook MimeJSON
+
+
+-- *** repoGetHook
+
+-- | @GET \/repos\/{owner}\/{repo}\/hooks\/{id}@
+-- 
+-- Get a hook
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetHook
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the hook to get
+  -> GiteaRequest RepoGetHook MimeNoContent Hook MimeJSON
+repoGetHook (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/hooks/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetHook  
+-- | @application/json@
+instance Produces RepoGetHook MimeJSON
+
+
+-- *** repoGetIssueTemplates
+
+-- | @GET \/repos\/{owner}\/{repo}\/issue_templates@
+-- 
+-- Get available issue templates for a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetIssueTemplates
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoGetIssueTemplates MimeNoContent [IssueTemplate] MimeJSON
+repoGetIssueTemplates (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/issue_templates"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetIssueTemplates  
+-- | @application/json@
+instance Produces RepoGetIssueTemplates MimeJSON
+
+
+-- *** repoGetKey
+
+-- | @GET \/repos\/{owner}\/{repo}\/keys\/{id}@
+-- 
+-- Get a repository's key by id
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetKey
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the key to get
+  -> GiteaRequest RepoGetKey MimeNoContent DeployKey MimeJSON
+repoGetKey (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/keys/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetKey  
+-- | @application/json@
+instance Produces RepoGetKey MimeJSON
+
+
+-- *** repoGetLanguages
+
+-- | @GET \/repos\/{owner}\/{repo}\/languages@
+-- 
+-- Get languages and number of bytes of code written
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetLanguages
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoGetLanguages MimeNoContent ((Map.Map String Integer)) MimeJSON
+repoGetLanguages (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/languages"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetLanguages  
+-- | @application/json@
+instance Produces RepoGetLanguages MimeJSON
+
+
+-- *** repoGetLatestRelease
+
+-- | @GET \/repos\/{owner}\/{repo}\/releases\/latest@
+-- 
+-- Gets the most recent non-prerelease, non-draft release of a repository, sorted by created_at
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetLatestRelease
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoGetLatestRelease MimeNoContent Release MimeJSON
+repoGetLatestRelease (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/releases/latest"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetLatestRelease  
+-- | @application/json@
+instance Produces RepoGetLatestRelease MimeJSON
+
+
+-- *** repoGetNote
+
+-- | @GET \/repos\/{owner}\/{repo}\/git\/notes\/{sha}@
+-- 
+-- Get a note corresponding to a single commit from a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetNote
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Sha -- ^ "sha" -  a git ref or commit sha
+  -> GiteaRequest RepoGetNote MimeNoContent Note MimeJSON
+repoGetNote (Owner owner) (Repo repo) (Sha sha) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/git/notes/",toPath sha]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetNote  
+-- | @application/json@
+instance Produces RepoGetNote MimeJSON
+
+
+-- *** repoGetPullRequest
+
+-- | @GET \/repos\/{owner}\/{repo}\/pulls\/{index}@
+-- 
+-- Get a pull request
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetPullRequest
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request to get
+  -> GiteaRequest RepoGetPullRequest MimeNoContent PullRequest MimeJSON
+repoGetPullRequest (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetPullRequest  
+-- | @application/json@
+instance Produces RepoGetPullRequest MimeJSON
+
+
+-- *** repoGetPullRequestCommits
+
+-- | @GET \/repos\/{owner}\/{repo}\/pulls\/{index}\/commits@
+-- 
+-- Get commits for a pull request
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetPullRequestCommits
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request to get
+  -> GiteaRequest RepoGetPullRequestCommits MimeNoContent [Commit] MimeJSON
+repoGetPullRequestCommits (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index,"/commits"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetPullRequestCommits  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoGetPullRequestCommits Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoGetPullRequestCommits Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoGetPullRequestCommits MimeJSON
+
+
+-- *** repoGetPullRequestFiles
+
+-- | @GET \/repos\/{owner}\/{repo}\/pulls\/{index}\/files@
+-- 
+-- Get changed files for a pull request
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetPullRequestFiles
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request to get
+  -> GiteaRequest RepoGetPullRequestFiles MimeNoContent [ChangedFile] MimeJSON
+repoGetPullRequestFiles (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index,"/files"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetPullRequestFiles  
+
+-- | /Optional Param/ "skip-to" - skip to given file
+instance HasOptionalParam RepoGetPullRequestFiles SkipTo where
+  applyOptionalParam req (SkipTo xs) =
+    req `addQuery` toQuery ("skip-to", Just xs)
+
+-- | /Optional Param/ "whitespace" - whitespace behavior
+instance HasOptionalParam RepoGetPullRequestFiles Whitespace where
+  applyOptionalParam req (Whitespace xs) =
+    req `addQuery` toQuery ("whitespace", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoGetPullRequestFiles Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoGetPullRequestFiles Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoGetPullRequestFiles MimeJSON
+
+
+-- *** repoGetPullReview
+
+-- | @GET \/repos\/{owner}\/{repo}\/pulls\/{index}\/reviews\/{id}@
+-- 
+-- Get a specific review for a pull request
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetPullReview
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request
+  -> Id -- ^ "id" -  id of the review
+  -> GiteaRequest RepoGetPullReview MimeNoContent PullReview MimeJSON
+repoGetPullReview (Owner owner) (Repo repo) (Index index) (Id id) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index,"/reviews/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetPullReview  
+-- | @application/json@
+instance Produces RepoGetPullReview MimeJSON
+
+
+-- *** repoGetPullReviewComments
+
+-- | @GET \/repos\/{owner}\/{repo}\/pulls\/{index}\/reviews\/{id}\/comments@
+-- 
+-- Get a specific review for a pull request
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetPullReviewComments
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request
+  -> Id -- ^ "id" -  id of the review
+  -> GiteaRequest RepoGetPullReviewComments MimeNoContent [PullReviewComment] MimeJSON
+repoGetPullReviewComments (Owner owner) (Repo repo) (Index index) (Id id) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index,"/reviews/",toPath id,"/comments"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetPullReviewComments  
+-- | @application/json@
+instance Produces RepoGetPullReviewComments MimeJSON
+
+
+-- *** repoGetPushMirrorByRemoteName
+
+-- | @GET \/repos\/{owner}\/{repo}\/push_mirrors\/{name}@
+-- 
+-- Get push mirror of the repository by remoteName
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetPushMirrorByRemoteName
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Name -- ^ "name" -  remote name of push mirror
+  -> GiteaRequest RepoGetPushMirrorByRemoteName MimeNoContent PushMirror MimeJSON
+repoGetPushMirrorByRemoteName (Owner owner) (Repo repo) (Name name) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/push_mirrors/",toPath name]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetPushMirrorByRemoteName  
+-- | @application/json@
+instance Produces RepoGetPushMirrorByRemoteName MimeJSON
+
+
+-- *** repoGetRawFile
+
+-- | @GET \/repos\/{owner}\/{repo}\/raw\/{filepath}@
+-- 
+-- Get a file from a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetRawFile
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Filepath -- ^ "filepath" -  filepath of the file to get
+  -> GiteaRequest RepoGetRawFile MimeNoContent NoContent MimeNoContent
+repoGetRawFile (Owner owner) (Repo repo) (Filepath filepath) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/raw/",toPath filepath]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetRawFile  
+
+-- | /Optional Param/ "ref" - The name of the commit/branch/tag. Default the repository’s default branch (usually master)
+instance HasOptionalParam RepoGetRawFile Ref where
+  applyOptionalParam req (Ref xs) =
+    req `addQuery` toQuery ("ref", Just xs)
+instance Produces RepoGetRawFile MimeNoContent
+
+
+-- *** repoGetRawFileOrLFS
+
+-- | @GET \/repos\/{owner}\/{repo}\/media\/{filepath}@
+-- 
+-- Get a file or it's LFS object from a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetRawFileOrLFS
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Filepath -- ^ "filepath" -  filepath of the file to get
+  -> GiteaRequest RepoGetRawFileOrLFS MimeNoContent NoContent MimeNoContent
+repoGetRawFileOrLFS (Owner owner) (Repo repo) (Filepath filepath) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/media/",toPath filepath]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetRawFileOrLFS  
+
+-- | /Optional Param/ "ref" - The name of the commit/branch/tag. Default the repository’s default branch (usually master)
+instance HasOptionalParam RepoGetRawFileOrLFS Ref where
+  applyOptionalParam req (Ref xs) =
+    req `addQuery` toQuery ("ref", Just xs)
+instance Produces RepoGetRawFileOrLFS MimeNoContent
+
+
+-- *** repoGetRelease
+
+-- | @GET \/repos\/{owner}\/{repo}\/releases\/{id}@
+-- 
+-- Get a release
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetRelease
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the release to get
+  -> GiteaRequest RepoGetRelease MimeNoContent Release MimeJSON
+repoGetRelease (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/releases/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetRelease  
+-- | @application/json@
+instance Produces RepoGetRelease MimeJSON
+
+
+-- *** repoGetReleaseAttachment
+
+-- | @GET \/repos\/{owner}\/{repo}\/releases\/{id}\/assets\/{attachment_id}@
+-- 
+-- Get a release attachment
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetReleaseAttachment
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the release
+  -> AttachmentId -- ^ "attachmentId" -  id of the attachment to get
+  -> GiteaRequest RepoGetReleaseAttachment MimeNoContent Attachment MimeJSON
+repoGetReleaseAttachment (Owner owner) (Repo repo) (Id id) (AttachmentId attachmentId) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/releases/",toPath id,"/assets/",toPath attachmentId]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetReleaseAttachment  
+-- | @application/json@
+instance Produces RepoGetReleaseAttachment MimeJSON
+
+
+-- *** repoGetReleaseByTag
+
+-- | @GET \/repos\/{owner}\/{repo}\/releases\/tags\/{tag}@
+-- 
+-- Get a release by tag name
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetReleaseByTag
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Tag2 -- ^ "tag" -  tag name of the release to get
+  -> GiteaRequest RepoGetReleaseByTag MimeNoContent Release MimeJSON
+repoGetReleaseByTag (Owner owner) (Repo repo) (Tag2 tag) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/releases/tags/",toPath tag]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetReleaseByTag  
+-- | @application/json@
+instance Produces RepoGetReleaseByTag MimeJSON
+
+
+-- *** repoGetRepoPermissions
+
+-- | @GET \/repos\/{owner}\/{repo}\/collaborators\/{collaborator}\/permission@
+-- 
+-- Get repository permissions for a user
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetRepoPermissions
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Collaborator -- ^ "collaborator" -  username of the collaborator
+  -> GiteaRequest RepoGetRepoPermissions MimeNoContent RepoCollaboratorPermission MimeJSON
+repoGetRepoPermissions (Owner owner) (Repo repo) (Collaborator collaborator) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/collaborators/",toPath collaborator,"/permission"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetRepoPermissions  
+-- | @application/json@
+instance Produces RepoGetRepoPermissions MimeJSON
+
+
+-- *** repoGetReviewers
+
+-- | @GET \/repos\/{owner}\/{repo}\/reviewers@
+-- 
+-- Return all users that can be requested to review in this repo
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetReviewers
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoGetReviewers MimeNoContent [User] MimeJSON
+repoGetReviewers (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/reviewers"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetReviewers  
+-- | @application/json@
+instance Produces RepoGetReviewers MimeJSON
+
+
+-- *** repoGetSingleCommit
+
+-- | @GET \/repos\/{owner}\/{repo}\/git\/commits\/{sha}@
+-- 
+-- Get a single commit from a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetSingleCommit
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Sha -- ^ "sha" -  a git ref or commit sha
+  -> GiteaRequest RepoGetSingleCommit MimeNoContent Commit MimeJSON
+repoGetSingleCommit (Owner owner) (Repo repo) (Sha sha) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/git/commits/",toPath sha]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetSingleCommit  
+-- | @application/json@
+instance Produces RepoGetSingleCommit MimeJSON
+
+
+-- *** repoGetTag
+
+-- | @GET \/repos\/{owner}\/{repo}\/tags\/{tag}@
+-- 
+-- Get the tag of a repository by tag name
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetTag
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Tag2 -- ^ "tag" -  name of tag
+  -> GiteaRequest RepoGetTag MimeNoContent Tag MimeJSON
+repoGetTag (Owner owner) (Repo repo) (Tag2 tag) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/tags/",toPath tag]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetTag  
+-- | @application/json@
+instance Produces RepoGetTag MimeJSON
+
+
+-- *** repoGetWikiPage
+
+-- | @GET \/repos\/{owner}\/{repo}\/wiki\/page\/{pageName}@
+-- 
+-- Get a wiki page
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetWikiPage
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> PageName -- ^ "pageName" -  name of the page
+  -> GiteaRequest RepoGetWikiPage MimeNoContent WikiPage MimeJSON
+repoGetWikiPage (Owner owner) (Repo repo) (PageName pageName) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/wiki/page/",toPath pageName]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetWikiPage  
+-- | @application/json@
+instance Produces RepoGetWikiPage MimeJSON
+
+
+-- *** repoGetWikiPageRevisions
+
+-- | @GET \/repos\/{owner}\/{repo}\/wiki\/revisions\/{pageName}@
+-- 
+-- Get revisions of a wiki page
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetWikiPageRevisions
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> PageName -- ^ "pageName" -  name of the page
+  -> GiteaRequest RepoGetWikiPageRevisions MimeNoContent WikiCommitList MimeJSON
+repoGetWikiPageRevisions (Owner owner) (Repo repo) (PageName pageName) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/wiki/revisions/",toPath pageName]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetWikiPageRevisions  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoGetWikiPageRevisions Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+-- | @application/json@
+instance Produces RepoGetWikiPageRevisions MimeJSON
+
+
+-- *** repoGetWikiPages
+
+-- | @GET \/repos\/{owner}\/{repo}\/wiki\/pages@
+-- 
+-- Get all wiki pages
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoGetWikiPages
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoGetWikiPages MimeNoContent [WikiPageMetaData] MimeJSON
+repoGetWikiPages (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/wiki/pages"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoGetWikiPages  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoGetWikiPages Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoGetWikiPages Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoGetWikiPages MimeJSON
+
+
+-- *** repoListAllGitRefs
+
+-- | @GET \/repos\/{owner}\/{repo}\/git\/refs@
+-- 
+-- Get specified ref or filtered repository's refs
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListAllGitRefs
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoListAllGitRefs MimeNoContent [Reference] MimeJSON
+repoListAllGitRefs (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/git/refs"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListAllGitRefs  
+-- | @application/json@
+instance Produces RepoListAllGitRefs MimeJSON
+
+
+-- *** repoListBranchProtection
+
+-- | @GET \/repos\/{owner}\/{repo}\/branch_protections@
+-- 
+-- List branch protections for a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListBranchProtection
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoListBranchProtection MimeNoContent [BranchProtection] MimeJSON
+repoListBranchProtection (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/branch_protections"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListBranchProtection  
+-- | @application/json@
+instance Produces RepoListBranchProtection MimeJSON
+
+
+-- *** repoListBranches
+
+-- | @GET \/repos\/{owner}\/{repo}\/branches@
+-- 
+-- List a repository's branches
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListBranches
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoListBranches MimeNoContent [Branch] MimeJSON
+repoListBranches (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/branches"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListBranches  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoListBranches Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoListBranches Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoListBranches MimeJSON
+
+
+-- *** repoListCollaborators
+
+-- | @GET \/repos\/{owner}\/{repo}\/collaborators@
+-- 
+-- List a repository's collaborators
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListCollaborators
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoListCollaborators MimeNoContent [User] MimeJSON
+repoListCollaborators (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/collaborators"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListCollaborators  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoListCollaborators Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoListCollaborators Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoListCollaborators MimeJSON
+
+
+-- *** repoListGitHooks
+
+-- | @GET \/repos\/{owner}\/{repo}\/hooks\/git@
+-- 
+-- List the Git hooks in a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListGitHooks
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoListGitHooks MimeNoContent [GitHook] MimeJSON
+repoListGitHooks (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/hooks/git"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListGitHooks  
+-- | @application/json@
+instance Produces RepoListGitHooks MimeJSON
+
+
+-- *** repoListGitRefs
+
+-- | @GET \/repos\/{owner}\/{repo}\/git\/refs\/{ref}@
+-- 
+-- Get specified ref or filtered repository's refs
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListGitRefs
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Ref -- ^ "ref" -  part or full name of the ref
+  -> GiteaRequest RepoListGitRefs MimeNoContent [Reference] MimeJSON
+repoListGitRefs (Owner owner) (Repo repo) (Ref ref) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/git/refs/",toPath ref]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListGitRefs  
+-- | @application/json@
+instance Produces RepoListGitRefs MimeJSON
+
+
+-- *** repoListHooks
+
+-- | @GET \/repos\/{owner}\/{repo}\/hooks@
+-- 
+-- List the hooks in a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListHooks
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoListHooks MimeNoContent [Hook] MimeJSON
+repoListHooks (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/hooks"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListHooks  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoListHooks Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoListHooks Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoListHooks MimeJSON
+
+
+-- *** repoListKeys
+
+-- | @GET \/repos\/{owner}\/{repo}\/keys@
+-- 
+-- List a repository's keys
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListKeys
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoListKeys MimeNoContent [DeployKey] MimeJSON
+repoListKeys (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/keys"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListKeys  
+
+-- | /Optional Param/ "key_id" - the key_id to search for
+instance HasOptionalParam RepoListKeys KeyId where
+  applyOptionalParam req (KeyId xs) =
+    req `addQuery` toQuery ("key_id", Just xs)
+
+-- | /Optional Param/ "fingerprint" - fingerprint of the key
+instance HasOptionalParam RepoListKeys Fingerprint where
+  applyOptionalParam req (Fingerprint xs) =
+    req `addQuery` toQuery ("fingerprint", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoListKeys Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoListKeys Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoListKeys MimeJSON
+
+
+-- *** repoListPullRequests
+
+-- | @GET \/repos\/{owner}\/{repo}\/pulls@
+-- 
+-- List a repo's pull requests
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListPullRequests
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoListPullRequests MimeNoContent [PullRequest] MimeJSON
+repoListPullRequests (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/pulls"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListPullRequests  
+
+-- | /Optional Param/ "state" - State of pull request: open or closed (optional)
+instance HasOptionalParam RepoListPullRequests State3 where
+  applyOptionalParam req (State3 xs) =
+    req `addQuery` toQuery ("state", Just xs)
+
+-- | /Optional Param/ "sort" - Type of sort
+instance HasOptionalParam RepoListPullRequests Sort3 where
+  applyOptionalParam req (Sort3 xs) =
+    req `addQuery` toQuery ("sort", Just xs)
+
+-- | /Optional Param/ "milestone" - ID of the milestone
+instance HasOptionalParam RepoListPullRequests Milestone2 where
+  applyOptionalParam req (Milestone2 xs) =
+    req `addQuery` toQuery ("milestone", Just xs)
+
+-- | /Optional Param/ "labels" - Label IDs
+instance HasOptionalParam RepoListPullRequests LabelsInteger where
+  applyOptionalParam req (LabelsInteger xs) =
+    req `addQuery` toQueryColl MultiParamArray ("labels", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoListPullRequests Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoListPullRequests Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoListPullRequests MimeJSON
+
+
+-- *** repoListPullReviews
+
+-- | @GET \/repos\/{owner}\/{repo}\/pulls\/{index}\/reviews@
+-- 
+-- List all reviews for a pull request
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListPullReviews
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request
+  -> GiteaRequest RepoListPullReviews MimeNoContent [PullReview] MimeJSON
+repoListPullReviews (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index,"/reviews"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListPullReviews  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoListPullReviews Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoListPullReviews Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoListPullReviews MimeJSON
+
+
+-- *** repoListPushMirrors
+
+-- | @GET \/repos\/{owner}\/{repo}\/push_mirrors@
+-- 
+-- Get all push mirrors of the repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListPushMirrors
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoListPushMirrors MimeNoContent [PushMirror] MimeJSON
+repoListPushMirrors (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/push_mirrors"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListPushMirrors  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoListPushMirrors Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoListPushMirrors Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoListPushMirrors MimeJSON
+
+
+-- *** repoListReleaseAttachments
+
+-- | @GET \/repos\/{owner}\/{repo}\/releases\/{id}\/assets@
+-- 
+-- List release's attachments
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListReleaseAttachments
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the release
+  -> GiteaRequest RepoListReleaseAttachments MimeNoContent [Attachment] MimeJSON
+repoListReleaseAttachments (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/releases/",toPath id,"/assets"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListReleaseAttachments  
+-- | @application/json@
+instance Produces RepoListReleaseAttachments MimeJSON
+
+
+-- *** repoListReleases
+
+-- | @GET \/repos\/{owner}\/{repo}\/releases@
+-- 
+-- List a repo's releases
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListReleases
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoListReleases MimeNoContent [Release] MimeJSON
+repoListReleases (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/releases"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListReleases  
+
+-- | /Optional Param/ "draft" - filter (exclude / include) drafts, if you dont have repo write access none will show
+instance HasOptionalParam RepoListReleases Draft where
+  applyOptionalParam req (Draft xs) =
+    req `addQuery` toQuery ("draft", Just xs)
+
+-- | /Optional Param/ "pre-release" - filter (exclude / include) pre-releases
+instance HasOptionalParam RepoListReleases PreRelease where
+  applyOptionalParam req (PreRelease xs) =
+    req `addQuery` toQuery ("pre-release", Just xs)
+
+-- | /Optional Param/ "per_page" - page size of results, deprecated - use limit
+instance HasOptionalParam RepoListReleases PerPage where
+  applyOptionalParam req (PerPage xs) =
+    req `addQuery` toQuery ("per_page", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoListReleases Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoListReleases Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoListReleases MimeJSON
+
+
+-- *** repoListStargazers
+
+-- | @GET \/repos\/{owner}\/{repo}\/stargazers@
+-- 
+-- List a repo's stargazers
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListStargazers
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoListStargazers MimeNoContent [User] MimeJSON
+repoListStargazers (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/stargazers"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListStargazers  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoListStargazers Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoListStargazers Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoListStargazers MimeJSON
+
+
+-- *** repoListStatuses
+
+-- | @GET \/repos\/{owner}\/{repo}\/statuses\/{sha}@
+-- 
+-- Get a commit's statuses
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListStatuses
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Sha -- ^ "sha" -  sha of the commit
+  -> GiteaRequest RepoListStatuses MimeNoContent [CommitStatus] MimeJSON
+repoListStatuses (Owner owner) (Repo repo) (Sha sha) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/statuses/",toPath sha]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListStatuses  
+
+-- | /Optional Param/ "sort" - type of sort
+instance HasOptionalParam RepoListStatuses Sort2 where
+  applyOptionalParam req (Sort2 xs) =
+    req `addQuery` toQuery ("sort", Just xs)
+
+-- | /Optional Param/ "state" - type of state
+instance HasOptionalParam RepoListStatuses State2 where
+  applyOptionalParam req (State2 xs) =
+    req `addQuery` toQuery ("state", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoListStatuses Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoListStatuses Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoListStatuses MimeJSON
+
+
+-- *** repoListStatusesByRef
+
+-- | @GET \/repos\/{owner}\/{repo}\/commits\/{ref}\/statuses@
+-- 
+-- Get a commit's statuses, by branch/tag/commit reference
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListStatusesByRef
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Ref -- ^ "ref" -  name of branch/tag/commit
+  -> GiteaRequest RepoListStatusesByRef MimeNoContent [CommitStatus] MimeJSON
+repoListStatusesByRef (Owner owner) (Repo repo) (Ref ref) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/commits/",toPath ref,"/statuses"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListStatusesByRef  
+
+-- | /Optional Param/ "sort" - type of sort
+instance HasOptionalParam RepoListStatusesByRef Sort2 where
+  applyOptionalParam req (Sort2 xs) =
+    req `addQuery` toQuery ("sort", Just xs)
+
+-- | /Optional Param/ "state" - type of state
+instance HasOptionalParam RepoListStatusesByRef State2 where
+  applyOptionalParam req (State2 xs) =
+    req `addQuery` toQuery ("state", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoListStatusesByRef Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoListStatusesByRef Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoListStatusesByRef MimeJSON
+
+
+-- *** repoListSubscribers
+
+-- | @GET \/repos\/{owner}\/{repo}\/subscribers@
+-- 
+-- List a repo's watchers
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListSubscribers
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoListSubscribers MimeNoContent [User] MimeJSON
+repoListSubscribers (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/subscribers"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListSubscribers  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoListSubscribers Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoListSubscribers Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoListSubscribers MimeJSON
+
+
+-- *** repoListTags
+
+-- | @GET \/repos\/{owner}\/{repo}\/tags@
+-- 
+-- List a repository's tags
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListTags
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoListTags MimeNoContent [Tag] MimeJSON
+repoListTags (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/tags"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListTags  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoListTags Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results, default maximum page size is 50
+instance HasOptionalParam RepoListTags Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoListTags MimeJSON
+
+
+-- *** repoListTeams
+
+-- | @GET \/repos\/{owner}\/{repo}\/teams@
+-- 
+-- List a repository's teams
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListTeams
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoListTeams MimeNoContent [Team] MimeJSON
+repoListTeams (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/teams"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListTeams  
+-- | @application/json@
+instance Produces RepoListTeams MimeJSON
+
+
+-- *** repoListTopics
+
+-- | @GET \/repos\/{owner}\/{repo}\/topics@
+-- 
+-- Get list of topics that a repository has
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoListTopics
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoListTopics MimeNoContent TopicName MimeJSON
+repoListTopics (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/topics"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoListTopics  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoListTopics Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoListTopics Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoListTopics MimeJSON
+
+
+-- *** repoMergePullRequest
+
+-- | @POST \/repos\/{owner}\/{repo}\/pulls\/{index}\/merge@
+-- 
+-- Merge a pull request
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoMergePullRequest
+  :: (Consumes RepoMergePullRequest contentType)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request to merge
+  -> GiteaRequest RepoMergePullRequest contentType NoContent MimeNoContent
+repoMergePullRequest _ (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index,"/merge"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoMergePullRequest 
+instance HasBodyParam RepoMergePullRequest MergePullRequestOption 
+
+-- | @application/json@
+instance Consumes RepoMergePullRequest MimeJSON
+-- | @text/plain@
+instance Consumes RepoMergePullRequest MimePlainText
+
+instance Produces RepoMergePullRequest MimeNoContent
+
+
+-- *** repoMigrate
+
+-- | @POST \/repos\/migrate@
+-- 
+-- Migrate a remote git repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoMigrate
+  :: (Consumes RepoMigrate MimeJSON)
+  => GiteaRequest RepoMigrate MimeJSON Repository MimeJSON
+repoMigrate =
+  _mkRequest "POST" ["/repos/migrate"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoMigrate 
+instance HasBodyParam RepoMigrate MigrateRepoOptions 
+
+-- | @application/json@
+instance Consumes RepoMigrate MimeJSON
+
+-- | @application/json@
+instance Produces RepoMigrate MimeJSON
+
+
+-- *** repoMirrorSync
+
+-- | @POST \/repos\/{owner}\/{repo}\/mirror-sync@
+-- 
+-- Sync a mirrored repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoMirrorSync
+  :: Owner -- ^ "owner" -  owner of the repo to sync
+  -> Repo -- ^ "repo" -  name of the repo to sync
+  -> GiteaRequest RepoMirrorSync MimeNoContent NoContent MimeNoContent
+repoMirrorSync (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/mirror-sync"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoMirrorSync  
+instance Produces RepoMirrorSync MimeNoContent
+
+
+-- *** repoPullRequestIsMerged
+
+-- | @GET \/repos\/{owner}\/{repo}\/pulls\/{index}\/merge@
+-- 
+-- Check if a pull request has been merged
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoPullRequestIsMerged
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request
+  -> GiteaRequest RepoPullRequestIsMerged MimeNoContent NoContent MimeNoContent
+repoPullRequestIsMerged (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index,"/merge"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoPullRequestIsMerged  
+instance Produces RepoPullRequestIsMerged MimeNoContent
+
+
+-- *** repoPushMirrorSync
+
+-- | @POST \/repos\/{owner}\/{repo}\/push_mirrors-sync@
+-- 
+-- Sync all push mirrored repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoPushMirrorSync
+  :: Owner -- ^ "owner" -  owner of the repo to sync
+  -> Repo -- ^ "repo" -  name of the repo to sync
+  -> GiteaRequest RepoPushMirrorSync MimeNoContent NoContent MimeNoContent
+repoPushMirrorSync (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/push_mirrors-sync"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoPushMirrorSync  
+instance Produces RepoPushMirrorSync MimeNoContent
+
+
+-- *** repoSearch
+
+-- | @GET \/repos\/search@
+-- 
+-- Search for repositories
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoSearch
+  :: GiteaRequest RepoSearch MimeNoContent SearchResults MimeJSON
+repoSearch =
+  _mkRequest "GET" ["/repos/search"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoSearch  
+
+-- | /Optional Param/ "q" - keyword
+instance HasOptionalParam RepoSearch Q where
+  applyOptionalParam req (Q xs) =
+    req `addQuery` toQuery ("q", Just xs)
+
+-- | /Optional Param/ "topic" - Limit search to repositories with keyword as topic
+instance HasOptionalParam RepoSearch Topic where
+  applyOptionalParam req (Topic xs) =
+    req `addQuery` toQuery ("topic", Just xs)
+
+-- | /Optional Param/ "includeDesc" - include search of keyword within repository description
+instance HasOptionalParam RepoSearch IncludeDesc where
+  applyOptionalParam req (IncludeDesc xs) =
+    req `addQuery` toQuery ("includeDesc", Just xs)
+
+-- | /Optional Param/ "uid" - search only for repos that the user with the given id owns or contributes to
+instance HasOptionalParam RepoSearch Uid where
+  applyOptionalParam req (Uid xs) =
+    req `addQuery` toQuery ("uid", Just xs)
+
+-- | /Optional Param/ "priority_owner_id" - repo owner to prioritize in the results
+instance HasOptionalParam RepoSearch PriorityOwnerId where
+  applyOptionalParam req (PriorityOwnerId xs) =
+    req `addQuery` toQuery ("priority_owner_id", Just xs)
+
+-- | /Optional Param/ "team_id" - search only for repos that belong to the given team id
+instance HasOptionalParam RepoSearch TeamId where
+  applyOptionalParam req (TeamId xs) =
+    req `addQuery` toQuery ("team_id", Just xs)
+
+-- | /Optional Param/ "starredBy" - search only for repos that the user with the given id has starred
+instance HasOptionalParam RepoSearch StarredBy where
+  applyOptionalParam req (StarredBy xs) =
+    req `addQuery` toQuery ("starredBy", Just xs)
+
+-- | /Optional Param/ "private" - include private repositories this user has access to (defaults to true)
+instance HasOptionalParam RepoSearch Private where
+  applyOptionalParam req (Private xs) =
+    req `addQuery` toQuery ("private", Just xs)
+
+-- | /Optional Param/ "is_private" - show only pubic, private or all repositories (defaults to all)
+instance HasOptionalParam RepoSearch IsPrivate where
+  applyOptionalParam req (IsPrivate xs) =
+    req `addQuery` toQuery ("is_private", Just xs)
+
+-- | /Optional Param/ "template" - include template repositories this user has access to (defaults to true)
+instance HasOptionalParam RepoSearch Template where
+  applyOptionalParam req (Template xs) =
+    req `addQuery` toQuery ("template", Just xs)
+
+-- | /Optional Param/ "archived" - show only archived, non-archived or all repositories (defaults to all)
+instance HasOptionalParam RepoSearch Archived where
+  applyOptionalParam req (Archived xs) =
+    req `addQuery` toQuery ("archived", Just xs)
+
+-- | /Optional Param/ "mode" - type of repository to search for. Supported values are \"fork\", \"source\", \"mirror\" and \"collaborative\"
+instance HasOptionalParam RepoSearch Mode where
+  applyOptionalParam req (Mode xs) =
+    req `addQuery` toQuery ("mode", Just xs)
+
+-- | /Optional Param/ "exclusive" - if `uid` is given, search only for repos that the user owns
+instance HasOptionalParam RepoSearch Exclusive where
+  applyOptionalParam req (Exclusive xs) =
+    req `addQuery` toQuery ("exclusive", Just xs)
+
+-- | /Optional Param/ "sort" - sort repos by attribute. Supported values are \"alpha\", \"created\", \"updated\", \"size\", and \"id\". Default is \"alpha\"
+instance HasOptionalParam RepoSearch Sort where
+  applyOptionalParam req (Sort xs) =
+    req `addQuery` toQuery ("sort", Just xs)
+
+-- | /Optional Param/ "order" - sort order, either \"asc\" (ascending) or \"desc\" (descending). Default is \"asc\", ignored if \"sort\" is not specified.
+instance HasOptionalParam RepoSearch Order where
+  applyOptionalParam req (Order xs) =
+    req `addQuery` toQuery ("order", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoSearch Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoSearch Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoSearch MimeJSON
+
+
+-- *** repoSigningKey
+
+-- | @GET \/repos\/{owner}\/{repo}\/signing-key.gpg@
+-- 
+-- Get signing-key.gpg for given repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoSigningKey
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoSigningKey MimeNoContent Text MimePlainText
+repoSigningKey (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/signing-key.gpg"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoSigningKey  
+-- | @text/plain@
+instance Produces RepoSigningKey MimePlainText
+
+
+-- *** repoSubmitPullReview
+
+-- | @POST \/repos\/{owner}\/{repo}\/pulls\/{index}\/reviews\/{id}@
+-- 
+-- Submit a pending review to an pull request
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoSubmitPullReview
+  :: (Consumes RepoSubmitPullReview contentType, MimeRender contentType SubmitPullReviewOptions)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> SubmitPullReviewOptions -- ^ "body"
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request
+  -> Id -- ^ "id" -  id of the review
+  -> GiteaRequest RepoSubmitPullReview contentType PullReview MimeJSON
+repoSubmitPullReview _ body (Owner owner) (Repo repo) (Index index) (Id id) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index,"/reviews/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` body
+
+data RepoSubmitPullReview 
+instance HasBodyParam RepoSubmitPullReview SubmitPullReviewOptions 
+
+-- | @application/json@
+instance Consumes RepoSubmitPullReview MimeJSON
+-- | @text/plain@
+instance Consumes RepoSubmitPullReview MimePlainText
+
+-- | @application/json@
+instance Produces RepoSubmitPullReview MimeJSON
+
+
+-- *** repoTestHook
+
+-- | @POST \/repos\/{owner}\/{repo}\/hooks\/{id}\/tests@
+-- 
+-- Test a push webhook
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoTestHook
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Id -- ^ "id" -  id of the hook to test
+  -> GiteaRequest RepoTestHook MimeNoContent NoContent MimeNoContent
+repoTestHook (Owner owner) (Repo repo) (Id id) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/hooks/",toPath id,"/tests"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoTestHook  
+
+-- | /Optional Param/ "ref" - The name of the commit/branch/tag, indicates which commit will be loaded to the webhook payload.
+instance HasOptionalParam RepoTestHook Ref where
+  applyOptionalParam req (Ref xs) =
+    req `addQuery` toQuery ("ref", Just xs)
+instance Produces RepoTestHook MimeNoContent
+
+
+-- *** repoTrackedTimes
+
+-- | @GET \/repos\/{owner}\/{repo}\/times@
+-- 
+-- List a repo's tracked times
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoTrackedTimes
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoTrackedTimes MimeNoContent [TrackedTime] MimeJSON
+repoTrackedTimes (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/times"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoTrackedTimes  
+
+-- | /Optional Param/ "user" - optional filter by user (available for issue managers)
+instance HasOptionalParam RepoTrackedTimes User2 where
+  applyOptionalParam req (User2 xs) =
+    req `addQuery` toQuery ("user", Just xs)
+
+-- | /Optional Param/ "since" - Only show times updated after the given time. This is a timestamp in RFC 3339 format
+instance HasOptionalParam RepoTrackedTimes Since where
+  applyOptionalParam req (Since xs) =
+    req `addQuery` toQuery ("since", Just xs)
+
+-- | /Optional Param/ "before" - Only show times updated before the given time. This is a timestamp in RFC 3339 format
+instance HasOptionalParam RepoTrackedTimes Before where
+  applyOptionalParam req (Before xs) =
+    req `addQuery` toQuery ("before", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam RepoTrackedTimes Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam RepoTrackedTimes Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces RepoTrackedTimes MimeJSON
+
+
+-- *** repoTransfer0
+
+-- | @POST \/repos\/{owner}\/{repo}\/transfer@
+-- 
+-- Transfer a repo ownership
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoTransfer0
+  :: (Consumes RepoTransfer0 contentType, MimeRender contentType TransferRepoOption)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> TransferRepoOption -- ^ "body" -  Transfer Options
+  -> Owner -- ^ "owner" -  owner of the repo to transfer
+  -> Repo -- ^ "repo" -  name of the repo to transfer
+  -> GiteaRequest RepoTransfer0 contentType Repository MimeJSON
+repoTransfer0 _ body (Owner owner) (Repo repo) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/transfer"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` body
+
+data RepoTransfer0 
+
+-- | /Body Param/ "body" - Transfer Options
+instance HasBodyParam RepoTransfer0 TransferRepoOption 
+
+-- | @application/json@
+instance Consumes RepoTransfer0 MimeJSON
+-- | @text/plain@
+instance Consumes RepoTransfer0 MimePlainText
+
+-- | @application/json@
+instance Produces RepoTransfer0 MimeJSON
+
+
+-- *** repoUnDismissPullReview
+
+-- | @POST \/repos\/{owner}\/{repo}\/pulls\/{index}\/reviews\/{id}\/undismissals@
+-- 
+-- Cancel to dismiss a review for a pull request
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoUnDismissPullReview
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request
+  -> Id -- ^ "id" -  id of the review
+  -> GiteaRequest RepoUnDismissPullReview MimeNoContent PullReview MimeJSON
+repoUnDismissPullReview (Owner owner) (Repo repo) (Index index) (Id id) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index,"/reviews/",toPath id,"/undismissals"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoUnDismissPullReview  
+-- | @application/json@
+instance Produces RepoUnDismissPullReview MimeJSON
+
+
+-- *** repoUpdateFile
+
+-- | @PUT \/repos\/{owner}\/{repo}\/contents\/{filepath}@
+-- 
+-- Update a file in a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoUpdateFile
+  :: (Consumes RepoUpdateFile MimeJSON, MimeRender MimeJSON UpdateFileOptions)
+  => UpdateFileOptions -- ^ "body"
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Filepath -- ^ "filepath" -  path of the file to update
+  -> GiteaRequest RepoUpdateFile MimeJSON FileResponse MimeJSON
+repoUpdateFile body (Owner owner) (Repo repo) (Filepath filepath) =
+  _mkRequest "PUT" ["/repos/",toPath owner,"/",toPath repo,"/contents/",toPath filepath]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` body
+
+data RepoUpdateFile 
+instance HasBodyParam RepoUpdateFile UpdateFileOptions 
+
+-- | @application/json@
+instance Consumes RepoUpdateFile MimeJSON
+
+-- | @application/json@
+instance Produces RepoUpdateFile MimeJSON
+
+
+-- *** repoUpdatePullRequest
+
+-- | @POST \/repos\/{owner}\/{repo}\/pulls\/{index}\/update@
+-- 
+-- Merge PR's baseBranch into headBranch
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoUpdatePullRequest
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> Index -- ^ "index" -  index of the pull request to get
+  -> GiteaRequest RepoUpdatePullRequest MimeNoContent NoContent MimeNoContent
+repoUpdatePullRequest (Owner owner) (Repo repo) (Index index) =
+  _mkRequest "POST" ["/repos/",toPath owner,"/",toPath repo,"/pulls/",toPath index,"/update"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoUpdatePullRequest  
+
+-- | /Optional Param/ "style" - how to update pull request
+instance HasOptionalParam RepoUpdatePullRequest Style where
+  applyOptionalParam req (Style xs) =
+    req `addQuery` toQuery ("style", Just xs)
+instance Produces RepoUpdatePullRequest MimeNoContent
+
+
+-- *** repoUpdateTopics
+
+-- | @PUT \/repos\/{owner}\/{repo}\/topics@
+-- 
+-- Replace list of topics for a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+repoUpdateTopics
+  :: (Consumes RepoUpdateTopics contentType)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest RepoUpdateTopics contentType NoContent MimeNoContent
+repoUpdateTopics _ (Owner owner) (Repo repo) =
+  _mkRequest "PUT" ["/repos/",toPath owner,"/",toPath repo,"/topics"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data RepoUpdateTopics 
+instance HasBodyParam RepoUpdateTopics RepoTopicOptions 
+
+-- | @application/json@
+instance Consumes RepoUpdateTopics MimeJSON
+-- | @text/plain@
+instance Consumes RepoUpdateTopics MimePlainText
+
+instance Produces RepoUpdateTopics MimeNoContent
+
+
+-- *** topicSearch
+
+-- | @GET \/topics\/search@
+-- 
+-- search topics via keyword
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+topicSearch
+  :: Q -- ^ "q" -  keywords to search
+  -> GiteaRequest TopicSearch MimeNoContent [TopicResponse] MimeJSON
+topicSearch (Q q) =
+  _mkRequest "GET" ["/topics/search"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `addQuery` toQuery ("q", Just q)
+
+data TopicSearch  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam TopicSearch Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam TopicSearch Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces TopicSearch MimeJSON
+
+
+-- *** userCurrentCheckSubscription
+
+-- | @GET \/repos\/{owner}\/{repo}\/subscription@
+-- 
+-- Check if the current user is watching a repo
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentCheckSubscription
+  :: Accept accept -- ^ request accept ('MimeType')
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest UserCurrentCheckSubscription MimeNoContent WatchInfo accept
+userCurrentCheckSubscription  _ (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/subscription"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentCheckSubscription  
+-- | @text/html@
+instance Produces UserCurrentCheckSubscription MimeTextHtml
+-- | @application/json@
+instance Produces UserCurrentCheckSubscription MimeJSON
+
+
+-- *** userCurrentDeleteSubscription
+
+-- | @DELETE \/repos\/{owner}\/{repo}\/subscription@
+-- 
+-- Unwatch a repo
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentDeleteSubscription
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest UserCurrentDeleteSubscription MimeNoContent NoContent MimeNoContent
+userCurrentDeleteSubscription (Owner owner) (Repo repo) =
+  _mkRequest "DELETE" ["/repos/",toPath owner,"/",toPath repo,"/subscription"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentDeleteSubscription  
+instance Produces UserCurrentDeleteSubscription MimeNoContent
+
+
+-- *** userCurrentPutSubscription
+
+-- | @PUT \/repos\/{owner}\/{repo}\/subscription@
+-- 
+-- Watch a repo
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentPutSubscription
+  :: Accept accept -- ^ request accept ('MimeType')
+  -> Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest UserCurrentPutSubscription MimeNoContent WatchInfo accept
+userCurrentPutSubscription  _ (Owner owner) (Repo repo) =
+  _mkRequest "PUT" ["/repos/",toPath owner,"/",toPath repo,"/subscription"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentPutSubscription  
+-- | @text/html@
+instance Produces UserCurrentPutSubscription MimeTextHtml
+-- | @application/json@
+instance Produces UserCurrentPutSubscription MimeJSON
+
+
+-- *** userTrackedTimes
+
+-- | @GET \/repos\/{owner}\/{repo}\/times\/{user}@
+-- 
+-- List a user's tracked times in a repo
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userTrackedTimes
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> User2 -- ^ "user" -  username of user
+  -> GiteaRequest UserTrackedTimes MimeNoContent [TrackedTime] MimeJSON
+userTrackedTimes (Owner owner) (Repo repo) (User2 user) =
+  _mkRequest "GET" ["/repos/",toPath owner,"/",toPath repo,"/times/",toPath user]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+{-# DEPRECATED userTrackedTimes "" #-}
+
+data UserTrackedTimes  
+-- | @application/json@
+instance Produces UserTrackedTimes MimeJSON
+
diff --git a/lib/Gitea/API/Settings.hs b/lib/Gitea/API/Settings.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/API/Settings.hs
@@ -0,0 +1,158 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.API.Settings
+-}
+
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MonoLocalBinds #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-binds -fno-warn-unused-imports #-}
+
+module Gitea.API.Settings where
+
+import Gitea.Core
+import Gitea.MimeTypes
+import Gitea.Model as M
+
+import qualified Data.Aeson as A
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.Data as P (Typeable, TypeRep, typeOf, typeRep)
+import qualified Data.Foldable as P
+import qualified Data.Map as Map
+import qualified Data.Maybe as P
+import qualified Data.Proxy as P (Proxy(..))
+import qualified Data.Set as Set
+import qualified Data.String as P
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+import qualified Data.Text.Lazy as TL
+import qualified Data.Text.Lazy.Encoding as TL
+import qualified Data.Time as TI
+import qualified Network.HTTP.Client.MultipartFormData as NH
+import qualified Network.HTTP.Media as ME
+import qualified Network.HTTP.Types as NH
+import qualified Web.FormUrlEncoded as WH
+import qualified Web.HttpApiData as WH
+
+import Data.Text (Text)
+import GHC.Base ((<|>))
+
+import Prelude ((==),(/=),($), (.),(<$>),(<*>),(>>=),Maybe(..),Bool(..),Char,Double,FilePath,Float,Int,Integer,String,fmap,undefined,mempty,maybe,pure,Monad,Applicative,Functor)
+import qualified Prelude as P
+
+-- * Operations
+
+
+-- ** Settings
+
+-- *** getGeneralAPISettings
+
+-- | @GET \/settings\/api@
+-- 
+-- Get instance's global settings for api
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+getGeneralAPISettings
+  :: GiteaRequest GetGeneralAPISettings MimeNoContent GeneralAPISettings MimeJSON
+getGeneralAPISettings =
+  _mkRequest "GET" ["/settings/api"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data GetGeneralAPISettings  
+-- | @application/json@
+instance Produces GetGeneralAPISettings MimeJSON
+
+
+-- *** getGeneralAttachmentSettings
+
+-- | @GET \/settings\/attachment@
+-- 
+-- Get instance's global settings for Attachment
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+getGeneralAttachmentSettings
+  :: GiteaRequest GetGeneralAttachmentSettings MimeNoContent GeneralAttachmentSettings MimeJSON
+getGeneralAttachmentSettings =
+  _mkRequest "GET" ["/settings/attachment"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data GetGeneralAttachmentSettings  
+-- | @application/json@
+instance Produces GetGeneralAttachmentSettings MimeJSON
+
+
+-- *** getGeneralRepositorySettings
+
+-- | @GET \/settings\/repository@
+-- 
+-- Get instance's global settings for repositories
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+getGeneralRepositorySettings
+  :: GiteaRequest GetGeneralRepositorySettings MimeNoContent GeneralRepoSettings MimeJSON
+getGeneralRepositorySettings =
+  _mkRequest "GET" ["/settings/repository"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data GetGeneralRepositorySettings  
+-- | @application/json@
+instance Produces GetGeneralRepositorySettings MimeJSON
+
+
+-- *** getGeneralUISettings
+
+-- | @GET \/settings\/ui@
+-- 
+-- Get instance's global settings for ui
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+getGeneralUISettings
+  :: GiteaRequest GetGeneralUISettings MimeNoContent GeneralUISettings MimeJSON
+getGeneralUISettings =
+  _mkRequest "GET" ["/settings/ui"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data GetGeneralUISettings  
+-- | @application/json@
+instance Produces GetGeneralUISettings MimeJSON
+
diff --git a/lib/Gitea/API/User.hs b/lib/Gitea/API/User.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/API/User.hs
@@ -0,0 +1,1630 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.API.User
+-}
+
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MonoLocalBinds #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-binds -fno-warn-unused-imports #-}
+
+module Gitea.API.User where
+
+import Gitea.Core
+import Gitea.MimeTypes
+import Gitea.Model as M
+
+import qualified Data.Aeson as A
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.Data as P (Typeable, TypeRep, typeOf, typeRep)
+import qualified Data.Foldable as P
+import qualified Data.Map as Map
+import qualified Data.Maybe as P
+import qualified Data.Proxy as P (Proxy(..))
+import qualified Data.Set as Set
+import qualified Data.String as P
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+import qualified Data.Text.Lazy as TL
+import qualified Data.Text.Lazy.Encoding as TL
+import qualified Data.Time as TI
+import qualified Network.HTTP.Client.MultipartFormData as NH
+import qualified Network.HTTP.Media as ME
+import qualified Network.HTTP.Types as NH
+import qualified Web.FormUrlEncoded as WH
+import qualified Web.HttpApiData as WH
+
+import Data.Text (Text)
+import GHC.Base ((<|>))
+
+import Prelude ((==),(/=),($), (.),(<$>),(<*>),(>>=),Maybe(..),Bool(..),Char,Double,FilePath,Float,Int,Integer,String,fmap,undefined,mempty,maybe,pure,Monad,Applicative,Functor)
+import qualified Prelude as P
+
+-- * Operations
+
+
+-- ** User
+
+-- *** createCurrentUserRepo0
+
+-- | @POST \/user\/repos@
+-- 
+-- Create a repository
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+createCurrentUserRepo0
+  :: (Consumes CreateCurrentUserRepo0 MimeJSON)
+  => GiteaRequest CreateCurrentUserRepo0 MimeJSON Repository MimeJSON
+createCurrentUserRepo0 =
+  _mkRequest "POST" ["/user/repos"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data CreateCurrentUserRepo0 
+instance HasBodyParam CreateCurrentUserRepo0 CreateRepoOption 
+
+-- | @application/json@
+instance Consumes CreateCurrentUserRepo0 MimeJSON
+
+-- | @application/json@
+instance Produces CreateCurrentUserRepo0 MimeJSON
+
+
+-- *** getUserSettings
+
+-- | @GET \/user\/settings@
+-- 
+-- Get user settings
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+getUserSettings
+  :: GiteaRequest GetUserSettings MimeNoContent [UserSettings] MimeJSON
+getUserSettings =
+  _mkRequest "GET" ["/user/settings"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data GetUserSettings  
+-- | @application/json@
+instance Produces GetUserSettings MimeJSON
+
+
+-- *** getVerificationToken
+
+-- | @GET \/user\/gpg_key_token@
+-- 
+-- Get a Token to verify
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+getVerificationToken
+  :: GiteaRequest GetVerificationToken MimeNoContent Text MimePlainText
+getVerificationToken =
+  _mkRequest "GET" ["/user/gpg_key_token"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data GetVerificationToken  
+-- | @text/plain@
+instance Produces GetVerificationToken MimePlainText
+
+
+-- *** updateUserSettings
+
+-- | @PATCH \/user\/settings@
+-- 
+-- Update user settings
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+updateUserSettings
+  :: (Consumes UpdateUserSettings contentType)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> GiteaRequest UpdateUserSettings contentType [UserSettings] MimeJSON
+updateUserSettings _ =
+  _mkRequest "PATCH" ["/user/settings"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UpdateUserSettings 
+instance HasBodyParam UpdateUserSettings UserSettingsOptions 
+
+-- | @application/json@
+instance Consumes UpdateUserSettings MimeJSON
+-- | @text/plain@
+instance Consumes UpdateUserSettings MimePlainText
+
+-- | @application/json@
+instance Produces UpdateUserSettings MimeJSON
+
+
+-- *** userAddEmail
+
+-- | @POST \/user\/emails@
+-- 
+-- Add email addresses
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userAddEmail
+  :: (Consumes UserAddEmail contentType)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> GiteaRequest UserAddEmail contentType [Email] MimeJSON
+userAddEmail _ =
+  _mkRequest "POST" ["/user/emails"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserAddEmail 
+instance HasBodyParam UserAddEmail CreateEmailOption 
+
+-- | @application/json@
+instance Consumes UserAddEmail MimeJSON
+-- | @text/plain@
+instance Consumes UserAddEmail MimePlainText
+
+-- | @application/json@
+instance Produces UserAddEmail MimeJSON
+
+
+-- *** userCheckFollowing
+
+-- | @GET \/users\/{username}\/following\/{target}@
+-- 
+-- Check if one user is following another user
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCheckFollowing
+  :: Username -- ^ "username" -  username of following user
+  -> Target -- ^ "target" -  username of followed user
+  -> GiteaRequest UserCheckFollowing MimeNoContent NoContent MimeNoContent
+userCheckFollowing (Username username) (Target target) =
+  _mkRequest "GET" ["/users/",toPath username,"/following/",toPath target]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCheckFollowing  
+instance Produces UserCheckFollowing MimeNoContent
+
+
+-- *** userCreateOAuth2Application
+
+-- | @POST \/user\/applications\/oauth2@
+-- 
+-- creates a new OAuth2 application
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCreateOAuth2Application
+  :: (Consumes UserCreateOAuth2Application contentType, MimeRender contentType CreateOAuth2ApplicationOptions)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> CreateOAuth2ApplicationOptions -- ^ "body"
+  -> GiteaRequest UserCreateOAuth2Application contentType OAuth2Application MimeJSON
+userCreateOAuth2Application _ body =
+  _mkRequest "POST" ["/user/applications/oauth2"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` body
+
+data UserCreateOAuth2Application 
+instance HasBodyParam UserCreateOAuth2Application CreateOAuth2ApplicationOptions 
+
+-- | @application/json@
+instance Consumes UserCreateOAuth2Application MimeJSON
+-- | @text/plain@
+instance Consumes UserCreateOAuth2Application MimePlainText
+
+-- | @application/json@
+instance Produces UserCreateOAuth2Application MimeJSON
+
+
+-- *** userCreateToken
+
+-- | @POST \/users\/{username}\/tokens@
+-- 
+-- Create an access token
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCreateToken
+  :: (Consumes UserCreateToken MimeJSON)
+  => Username -- ^ "username" -  username of user
+  -> GiteaRequest UserCreateToken MimeJSON AccessToken MimeJSON
+userCreateToken (Username username) =
+  _mkRequest "POST" ["/users/",toPath username,"/tokens"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCreateToken 
+instance HasBodyParam UserCreateToken CreateAccessTokenOption 
+
+-- | @application/json@
+instance Consumes UserCreateToken MimeJSON
+
+-- | @application/json@
+instance Produces UserCreateToken MimeJSON
+
+
+-- *** userCurrentCheckFollowing
+
+-- | @GET \/user\/following\/{username}@
+-- 
+-- Check whether a user is followed by the authenticated user
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentCheckFollowing
+  :: Username -- ^ "username" -  username of followed user
+  -> GiteaRequest UserCurrentCheckFollowing MimeNoContent NoContent MimeNoContent
+userCurrentCheckFollowing (Username username) =
+  _mkRequest "GET" ["/user/following/",toPath username]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentCheckFollowing  
+instance Produces UserCurrentCheckFollowing MimeNoContent
+
+
+-- *** userCurrentCheckStarring
+
+-- | @GET \/user\/starred\/{owner}\/{repo}@
+-- 
+-- Whether the authenticated is starring the repo
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentCheckStarring
+  :: Owner -- ^ "owner" -  owner of the repo
+  -> Repo -- ^ "repo" -  name of the repo
+  -> GiteaRequest UserCurrentCheckStarring MimeNoContent NoContent MimeNoContent
+userCurrentCheckStarring (Owner owner) (Repo repo) =
+  _mkRequest "GET" ["/user/starred/",toPath owner,"/",toPath repo]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentCheckStarring  
+instance Produces UserCurrentCheckStarring MimeNoContent
+
+
+-- *** userCurrentDeleteFollow
+
+-- | @DELETE \/user\/following\/{username}@
+-- 
+-- Unfollow a user
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentDeleteFollow
+  :: Username -- ^ "username" -  username of user to unfollow
+  -> GiteaRequest UserCurrentDeleteFollow MimeNoContent NoContent MimeNoContent
+userCurrentDeleteFollow (Username username) =
+  _mkRequest "DELETE" ["/user/following/",toPath username]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentDeleteFollow  
+instance Produces UserCurrentDeleteFollow MimeNoContent
+
+
+-- *** userCurrentDeleteGPGKey
+
+-- | @DELETE \/user\/gpg_keys\/{id}@
+-- 
+-- Remove a GPG key
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentDeleteGPGKey
+  :: Id -- ^ "id" -  id of key to delete
+  -> GiteaRequest UserCurrentDeleteGPGKey MimeNoContent NoContent MimeNoContent
+userCurrentDeleteGPGKey (Id id) =
+  _mkRequest "DELETE" ["/user/gpg_keys/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentDeleteGPGKey  
+instance Produces UserCurrentDeleteGPGKey MimeNoContent
+
+
+-- *** userCurrentDeleteKey
+
+-- | @DELETE \/user\/keys\/{id}@
+-- 
+-- Delete a public key
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentDeleteKey
+  :: Id -- ^ "id" -  id of key to delete
+  -> GiteaRequest UserCurrentDeleteKey MimeNoContent NoContent MimeNoContent
+userCurrentDeleteKey (Id id) =
+  _mkRequest "DELETE" ["/user/keys/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentDeleteKey  
+instance Produces UserCurrentDeleteKey MimeNoContent
+
+
+-- *** userCurrentDeleteStar
+
+-- | @DELETE \/user\/starred\/{owner}\/{repo}@
+-- 
+-- Unstar the given repo
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentDeleteStar
+  :: Owner -- ^ "owner" -  owner of the repo to unstar
+  -> Repo -- ^ "repo" -  name of the repo to unstar
+  -> GiteaRequest UserCurrentDeleteStar MimeNoContent NoContent MimeNoContent
+userCurrentDeleteStar (Owner owner) (Repo repo) =
+  _mkRequest "DELETE" ["/user/starred/",toPath owner,"/",toPath repo]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentDeleteStar  
+instance Produces UserCurrentDeleteStar MimeNoContent
+
+
+-- *** userCurrentGetGPGKey
+
+-- | @GET \/user\/gpg_keys\/{id}@
+-- 
+-- Get a GPG key
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentGetGPGKey
+  :: Id -- ^ "id" -  id of key to get
+  -> GiteaRequest UserCurrentGetGPGKey MimeNoContent GPGKey MimeJSON
+userCurrentGetGPGKey (Id id) =
+  _mkRequest "GET" ["/user/gpg_keys/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentGetGPGKey  
+-- | @application/json@
+instance Produces UserCurrentGetGPGKey MimeJSON
+
+
+-- *** userCurrentGetKey
+
+-- | @GET \/user\/keys\/{id}@
+-- 
+-- Get a public key
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentGetKey
+  :: Id -- ^ "id" -  id of key to get
+  -> GiteaRequest UserCurrentGetKey MimeNoContent PublicKey MimeJSON
+userCurrentGetKey (Id id) =
+  _mkRequest "GET" ["/user/keys/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentGetKey  
+-- | @application/json@
+instance Produces UserCurrentGetKey MimeJSON
+
+
+-- *** userCurrentListFollowers
+
+-- | @GET \/user\/followers@
+-- 
+-- List the authenticated user's followers
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentListFollowers
+  :: GiteaRequest UserCurrentListFollowers MimeNoContent [User] MimeJSON
+userCurrentListFollowers =
+  _mkRequest "GET" ["/user/followers"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentListFollowers  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserCurrentListFollowers Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserCurrentListFollowers Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserCurrentListFollowers MimeJSON
+
+
+-- *** userCurrentListFollowing
+
+-- | @GET \/user\/following@
+-- 
+-- List the users that the authenticated user is following
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentListFollowing
+  :: GiteaRequest UserCurrentListFollowing MimeNoContent [User] MimeJSON
+userCurrentListFollowing =
+  _mkRequest "GET" ["/user/following"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentListFollowing  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserCurrentListFollowing Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserCurrentListFollowing Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserCurrentListFollowing MimeJSON
+
+
+-- *** userCurrentListGPGKeys
+
+-- | @GET \/user\/gpg_keys@
+-- 
+-- List the authenticated user's GPG keys
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentListGPGKeys
+  :: GiteaRequest UserCurrentListGPGKeys MimeNoContent [GPGKey] MimeJSON
+userCurrentListGPGKeys =
+  _mkRequest "GET" ["/user/gpg_keys"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentListGPGKeys  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserCurrentListGPGKeys Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserCurrentListGPGKeys Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserCurrentListGPGKeys MimeJSON
+
+
+-- *** userCurrentListKeys
+
+-- | @GET \/user\/keys@
+-- 
+-- List the authenticated user's public keys
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentListKeys
+  :: GiteaRequest UserCurrentListKeys MimeNoContent [PublicKey] MimeJSON
+userCurrentListKeys =
+  _mkRequest "GET" ["/user/keys"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentListKeys  
+
+-- | /Optional Param/ "fingerprint" - fingerprint of the key
+instance HasOptionalParam UserCurrentListKeys Fingerprint where
+  applyOptionalParam req (Fingerprint xs) =
+    req `addQuery` toQuery ("fingerprint", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserCurrentListKeys Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserCurrentListKeys Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserCurrentListKeys MimeJSON
+
+
+-- *** userCurrentListRepos
+
+-- | @GET \/user\/repos@
+-- 
+-- List the repos that the authenticated user owns
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentListRepos
+  :: GiteaRequest UserCurrentListRepos MimeNoContent [Repository] MimeJSON
+userCurrentListRepos =
+  _mkRequest "GET" ["/user/repos"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentListRepos  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserCurrentListRepos Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserCurrentListRepos Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserCurrentListRepos MimeJSON
+
+
+-- *** userCurrentListStarred
+
+-- | @GET \/user\/starred@
+-- 
+-- The repos that the authenticated user has starred
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentListStarred
+  :: GiteaRequest UserCurrentListStarred MimeNoContent [Repository] MimeJSON
+userCurrentListStarred =
+  _mkRequest "GET" ["/user/starred"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentListStarred  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserCurrentListStarred Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserCurrentListStarred Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserCurrentListStarred MimeJSON
+
+
+-- *** userCurrentListSubscriptions
+
+-- | @GET \/user\/subscriptions@
+-- 
+-- List repositories watched by the authenticated user
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentListSubscriptions
+  :: GiteaRequest UserCurrentListSubscriptions MimeNoContent [Repository] MimeJSON
+userCurrentListSubscriptions =
+  _mkRequest "GET" ["/user/subscriptions"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentListSubscriptions  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserCurrentListSubscriptions Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserCurrentListSubscriptions Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserCurrentListSubscriptions MimeJSON
+
+
+-- *** userCurrentPostGPGKey
+
+-- | @POST \/user\/gpg_keys@
+-- 
+-- Create a GPG key
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentPostGPGKey
+  :: (Consumes UserCurrentPostGPGKey MimeJSON)
+  => GiteaRequest UserCurrentPostGPGKey MimeJSON GPGKey MimeJSON
+userCurrentPostGPGKey =
+  _mkRequest "POST" ["/user/gpg_keys"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentPostGPGKey 
+instance HasBodyParam UserCurrentPostGPGKey CreateGPGKeyOption 
+
+-- | @application/json@
+instance Consumes UserCurrentPostGPGKey MimeJSON
+
+-- | @application/json@
+instance Produces UserCurrentPostGPGKey MimeJSON
+
+
+-- *** userCurrentPostKey
+
+-- | @POST \/user\/keys@
+-- 
+-- Create a public key
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentPostKey
+  :: (Consumes UserCurrentPostKey MimeJSON)
+  => GiteaRequest UserCurrentPostKey MimeJSON PublicKey MimeJSON
+userCurrentPostKey =
+  _mkRequest "POST" ["/user/keys"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentPostKey 
+instance HasBodyParam UserCurrentPostKey CreateKeyOption 
+
+-- | @application/json@
+instance Consumes UserCurrentPostKey MimeJSON
+
+-- | @application/json@
+instance Produces UserCurrentPostKey MimeJSON
+
+
+-- *** userCurrentPutFollow
+
+-- | @PUT \/user\/following\/{username}@
+-- 
+-- Follow a user
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentPutFollow
+  :: Username -- ^ "username" -  username of user to follow
+  -> GiteaRequest UserCurrentPutFollow MimeNoContent NoContent MimeNoContent
+userCurrentPutFollow (Username username) =
+  _mkRequest "PUT" ["/user/following/",toPath username]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentPutFollow  
+instance Produces UserCurrentPutFollow MimeNoContent
+
+
+-- *** userCurrentPutStar
+
+-- | @PUT \/user\/starred\/{owner}\/{repo}@
+-- 
+-- Star the given repo
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentPutStar
+  :: Owner -- ^ "owner" -  owner of the repo to star
+  -> Repo -- ^ "repo" -  name of the repo to star
+  -> GiteaRequest UserCurrentPutStar MimeNoContent NoContent MimeNoContent
+userCurrentPutStar (Owner owner) (Repo repo) =
+  _mkRequest "PUT" ["/user/starred/",toPath owner,"/",toPath repo]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentPutStar  
+instance Produces UserCurrentPutStar MimeNoContent
+
+
+-- *** userCurrentTrackedTimes
+
+-- | @GET \/user\/times@
+-- 
+-- List the current user's tracked times
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userCurrentTrackedTimes
+  :: GiteaRequest UserCurrentTrackedTimes MimeNoContent [TrackedTime] MimeJSON
+userCurrentTrackedTimes =
+  _mkRequest "GET" ["/user/times"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserCurrentTrackedTimes  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserCurrentTrackedTimes Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserCurrentTrackedTimes Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+
+-- | /Optional Param/ "since" - Only show times updated after the given time. This is a timestamp in RFC 3339 format
+instance HasOptionalParam UserCurrentTrackedTimes Since where
+  applyOptionalParam req (Since xs) =
+    req `addQuery` toQuery ("since", Just xs)
+
+-- | /Optional Param/ "before" - Only show times updated before the given time. This is a timestamp in RFC 3339 format
+instance HasOptionalParam UserCurrentTrackedTimes Before where
+  applyOptionalParam req (Before xs) =
+    req `addQuery` toQuery ("before", Just xs)
+-- | @application/json@
+instance Produces UserCurrentTrackedTimes MimeJSON
+
+
+-- *** userDeleteAccessToken
+
+-- | @DELETE \/users\/{username}\/tokens\/{token}@
+-- 
+-- delete an access token
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userDeleteAccessToken
+  :: Username -- ^ "username" -  username of user
+  -> Token -- ^ "token" -  token to be deleted, identified by ID and if not available by name
+  -> GiteaRequest UserDeleteAccessToken MimeNoContent NoContent MimeNoContent
+userDeleteAccessToken (Username username) (Token token) =
+  _mkRequest "DELETE" ["/users/",toPath username,"/tokens/",toPath token]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserDeleteAccessToken  
+instance Produces UserDeleteAccessToken MimeNoContent
+
+
+-- *** userDeleteEmail
+
+-- | @DELETE \/user\/emails@
+-- 
+-- Delete email addresses
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userDeleteEmail
+  :: (Consumes UserDeleteEmail contentType)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> GiteaRequest UserDeleteEmail contentType NoContent MimeNoContent
+userDeleteEmail _ =
+  _mkRequest "DELETE" ["/user/emails"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserDeleteEmail 
+instance HasBodyParam UserDeleteEmail DeleteEmailOption 
+
+-- | @application/json@
+instance Consumes UserDeleteEmail MimeJSON
+-- | @text/plain@
+instance Consumes UserDeleteEmail MimePlainText
+
+instance Produces UserDeleteEmail MimeNoContent
+
+
+-- *** userDeleteOAuth2Application
+
+-- | @DELETE \/user\/applications\/oauth2\/{id}@
+-- 
+-- delete an OAuth2 Application
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userDeleteOAuth2Application
+  :: Id -- ^ "id" -  token to be deleted
+  -> GiteaRequest UserDeleteOAuth2Application MimeNoContent NoContent MimeNoContent
+userDeleteOAuth2Application (Id id) =
+  _mkRequest "DELETE" ["/user/applications/oauth2/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserDeleteOAuth2Application  
+instance Produces UserDeleteOAuth2Application MimeNoContent
+
+
+-- *** userGet
+
+-- | @GET \/users\/{username}@
+-- 
+-- Get a user
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userGet
+  :: Username -- ^ "username" -  username of user to get
+  -> GiteaRequest UserGet MimeNoContent User MimeJSON
+userGet (Username username) =
+  _mkRequest "GET" ["/users/",toPath username]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserGet  
+-- | @application/json@
+instance Produces UserGet MimeJSON
+
+
+-- *** userGetCurrent
+
+-- | @GET \/user@
+-- 
+-- Get the authenticated user
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userGetCurrent
+  :: GiteaRequest UserGetCurrent MimeNoContent User MimeJSON
+userGetCurrent =
+  _mkRequest "GET" ["/user"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserGetCurrent  
+-- | @application/json@
+instance Produces UserGetCurrent MimeJSON
+
+
+-- *** userGetHeatmapData
+
+-- | @GET \/users\/{username}\/heatmap@
+-- 
+-- Get a user's heatmap
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userGetHeatmapData
+  :: Username -- ^ "username" -  username of user to get
+  -> GiteaRequest UserGetHeatmapData MimeNoContent [UserHeatmapData] MimeJSON
+userGetHeatmapData (Username username) =
+  _mkRequest "GET" ["/users/",toPath username,"/heatmap"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserGetHeatmapData  
+-- | @application/json@
+instance Produces UserGetHeatmapData MimeJSON
+
+
+-- *** userGetOAuth2Application
+
+-- | @GET \/user\/applications\/oauth2\/{id}@
+-- 
+-- get an OAuth2 Application
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userGetOAuth2Application
+  :: Id -- ^ "id" -  Application ID to be found
+  -> GiteaRequest UserGetOAuth2Application MimeNoContent OAuth2Application MimeJSON
+userGetOAuth2Application (Id id) =
+  _mkRequest "GET" ["/user/applications/oauth2/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserGetOAuth2Application  
+-- | @application/json@
+instance Produces UserGetOAuth2Application MimeJSON
+
+
+-- *** userGetOauth2Application
+
+-- | @GET \/user\/applications\/oauth2@
+-- 
+-- List the authenticated user's oauth2 applications
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userGetOauth2Application
+  :: GiteaRequest UserGetOauth2Application MimeNoContent [OAuth2Application] MimeJSON
+userGetOauth2Application =
+  _mkRequest "GET" ["/user/applications/oauth2"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserGetOauth2Application  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserGetOauth2Application Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserGetOauth2Application Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserGetOauth2Application MimeJSON
+
+
+-- *** userGetStopWatches
+
+-- | @GET \/user\/stopwatches@
+-- 
+-- Get list of all existing stopwatches
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userGetStopWatches
+  :: GiteaRequest UserGetStopWatches MimeNoContent [StopWatch] MimeJSON
+userGetStopWatches =
+  _mkRequest "GET" ["/user/stopwatches"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserGetStopWatches  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserGetStopWatches Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserGetStopWatches Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserGetStopWatches MimeJSON
+
+
+-- *** userGetTokens
+
+-- | @GET \/users\/{username}\/tokens@
+-- 
+-- List the authenticated user's access tokens
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userGetTokens
+  :: Username -- ^ "username" -  username of user
+  -> GiteaRequest UserGetTokens MimeNoContent [AccessToken] MimeJSON
+userGetTokens (Username username) =
+  _mkRequest "GET" ["/users/",toPath username,"/tokens"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserGetTokens  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserGetTokens Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserGetTokens Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserGetTokens MimeJSON
+
+
+-- *** userListEmails
+
+-- | @GET \/user\/emails@
+-- 
+-- List the authenticated user's email addresses
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userListEmails
+  :: GiteaRequest UserListEmails MimeNoContent [Email] MimeJSON
+userListEmails =
+  _mkRequest "GET" ["/user/emails"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserListEmails  
+-- | @application/json@
+instance Produces UserListEmails MimeJSON
+
+
+-- *** userListFollowers
+
+-- | @GET \/users\/{username}\/followers@
+-- 
+-- List the given user's followers
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userListFollowers
+  :: Username -- ^ "username" -  username of user
+  -> GiteaRequest UserListFollowers MimeNoContent [User] MimeJSON
+userListFollowers (Username username) =
+  _mkRequest "GET" ["/users/",toPath username,"/followers"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserListFollowers  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserListFollowers Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserListFollowers Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserListFollowers MimeJSON
+
+
+-- *** userListFollowing
+
+-- | @GET \/users\/{username}\/following@
+-- 
+-- List the users that the given user is following
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userListFollowing
+  :: Username -- ^ "username" -  username of user
+  -> GiteaRequest UserListFollowing MimeNoContent [User] MimeJSON
+userListFollowing (Username username) =
+  _mkRequest "GET" ["/users/",toPath username,"/following"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserListFollowing  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserListFollowing Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserListFollowing Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserListFollowing MimeJSON
+
+
+-- *** userListGPGKeys
+
+-- | @GET \/users\/{username}\/gpg_keys@
+-- 
+-- List the given user's GPG keys
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userListGPGKeys
+  :: Username -- ^ "username" -  username of user
+  -> GiteaRequest UserListGPGKeys MimeNoContent [GPGKey] MimeJSON
+userListGPGKeys (Username username) =
+  _mkRequest "GET" ["/users/",toPath username,"/gpg_keys"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserListGPGKeys  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserListGPGKeys Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserListGPGKeys Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserListGPGKeys MimeJSON
+
+
+-- *** userListKeys
+
+-- | @GET \/users\/{username}\/keys@
+-- 
+-- List the given user's public keys
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userListKeys
+  :: Username -- ^ "username" -  username of user
+  -> GiteaRequest UserListKeys MimeNoContent [PublicKey] MimeJSON
+userListKeys (Username username) =
+  _mkRequest "GET" ["/users/",toPath username,"/keys"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserListKeys  
+
+-- | /Optional Param/ "fingerprint" - fingerprint of the key
+instance HasOptionalParam UserListKeys Fingerprint where
+  applyOptionalParam req (Fingerprint xs) =
+    req `addQuery` toQuery ("fingerprint", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserListKeys Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserListKeys Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserListKeys MimeJSON
+
+
+-- *** userListRepos
+
+-- | @GET \/users\/{username}\/repos@
+-- 
+-- List the repos owned by the given user
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userListRepos
+  :: Username -- ^ "username" -  username of user
+  -> GiteaRequest UserListRepos MimeNoContent [Repository] MimeJSON
+userListRepos (Username username) =
+  _mkRequest "GET" ["/users/",toPath username,"/repos"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserListRepos  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserListRepos Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserListRepos Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserListRepos MimeJSON
+
+
+-- *** userListStarred
+
+-- | @GET \/users\/{username}\/starred@
+-- 
+-- The repos that the given user has starred
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userListStarred
+  :: Username -- ^ "username" -  username of user
+  -> GiteaRequest UserListStarred MimeNoContent [Repository] MimeJSON
+userListStarred (Username username) =
+  _mkRequest "GET" ["/users/",toPath username,"/starred"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserListStarred  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserListStarred Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserListStarred Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserListStarred MimeJSON
+
+
+-- *** userListSubscriptions
+
+-- | @GET \/users\/{username}\/subscriptions@
+-- 
+-- List the repositories watched by a user
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userListSubscriptions
+  :: Username -- ^ "username" -  username of the user
+  -> GiteaRequest UserListSubscriptions MimeNoContent [Repository] MimeJSON
+userListSubscriptions (Username username) =
+  _mkRequest "GET" ["/users/",toPath username,"/subscriptions"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserListSubscriptions  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserListSubscriptions Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserListSubscriptions Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserListSubscriptions MimeJSON
+
+
+-- *** userListTeams
+
+-- | @GET \/user\/teams@
+-- 
+-- List all the teams a user belongs to
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userListTeams
+  :: GiteaRequest UserListTeams MimeNoContent [Team] MimeJSON
+userListTeams =
+  _mkRequest "GET" ["/user/teams"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserListTeams  
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserListTeams Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserListTeams Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserListTeams MimeJSON
+
+
+-- *** userSearch
+
+-- | @GET \/users\/search@
+-- 
+-- Search for users
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userSearch
+  :: GiteaRequest UserSearch MimeNoContent UserSearch200Response MimeJSON
+userSearch =
+  _mkRequest "GET" ["/users/search"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserSearch  
+
+-- | /Optional Param/ "q" - keyword
+instance HasOptionalParam UserSearch Q where
+  applyOptionalParam req (Q xs) =
+    req `addQuery` toQuery ("q", Just xs)
+
+-- | /Optional Param/ "uid" - ID of the user to search for
+instance HasOptionalParam UserSearch Uid where
+  applyOptionalParam req (Uid xs) =
+    req `addQuery` toQuery ("uid", Just xs)
+
+-- | /Optional Param/ "page" - page number of results to return (1-based)
+instance HasOptionalParam UserSearch Page where
+  applyOptionalParam req (Page xs) =
+    req `addQuery` toQuery ("page", Just xs)
+
+-- | /Optional Param/ "limit" - page size of results
+instance HasOptionalParam UserSearch Limit where
+  applyOptionalParam req (Limit xs) =
+    req `addQuery` toQuery ("limit", Just xs)
+-- | @application/json@
+instance Produces UserSearch MimeJSON
+
+
+-- *** userUpdateOAuth2Application
+
+-- | @PATCH \/user\/applications\/oauth2\/{id}@
+-- 
+-- update an OAuth2 Application, this includes regenerating the client secret
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userUpdateOAuth2Application
+  :: (Consumes UserUpdateOAuth2Application contentType, MimeRender contentType CreateOAuth2ApplicationOptions)
+  => ContentType contentType -- ^ request content-type ('MimeType')
+  -> CreateOAuth2ApplicationOptions -- ^ "body"
+  -> Id -- ^ "id" -  application to be updated
+  -> GiteaRequest UserUpdateOAuth2Application contentType OAuth2Application MimeJSON
+userUpdateOAuth2Application _ body (Id id) =
+  _mkRequest "PATCH" ["/user/applications/oauth2/",toPath id]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+    `setBodyParam` body
+
+data UserUpdateOAuth2Application 
+instance HasBodyParam UserUpdateOAuth2Application CreateOAuth2ApplicationOptions 
+
+-- | @application/json@
+instance Consumes UserUpdateOAuth2Application MimeJSON
+-- | @text/plain@
+instance Consumes UserUpdateOAuth2Application MimePlainText
+
+-- | @application/json@
+instance Produces UserUpdateOAuth2Application MimeJSON
+
+
+-- *** userVerifyGPGKey
+
+-- | @POST \/user\/gpg_key_verify@
+-- 
+-- Verify a GPG key
+-- 
+-- AuthMethod: 'AuthApiKeyTOTPHeader', 'AuthApiKeyAuthorizationHeaderToken', 'AuthApiKeySudoHeader', 'AuthBasicBasicAuth', 'AuthApiKeyAccessToken', 'AuthApiKeySudoParam', 'AuthApiKeyToken'
+-- 
+userVerifyGPGKey
+  :: GiteaRequest UserVerifyGPGKey MimeNoContent GPGKey MimeJSON
+userVerifyGPGKey =
+  _mkRequest "POST" ["/user/gpg_key_verify"]
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyTOTPHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAuthorizationHeaderToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoHeader)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicBasicAuth)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAccessToken)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeySudoParam)
+    `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyToken)
+
+data UserVerifyGPGKey  
+-- | @application/json@
+instance Produces UserVerifyGPGKey MimeJSON
+
diff --git a/lib/Gitea/Client.hs b/lib/Gitea/Client.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/Client.hs
@@ -0,0 +1,223 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.Client
+-}
+
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE DeriveFunctor #-}
+{-# LANGUAGE DeriveFoldable #-}
+{-# LANGUAGE DeriveTraversable #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds -fno-warn-unused-imports #-}
+
+module Gitea.Client where
+
+import Gitea.Core
+import Gitea.Logging
+import Gitea.MimeTypes
+
+import qualified Control.Exception.Safe as E
+import qualified Control.Monad.IO.Class as P
+import qualified Control.Monad as P
+import qualified Data.Aeson.Types as A
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Char8 as BC
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.ByteString.Lazy.Char8 as BCL
+import qualified Data.Proxy as P (Proxy(..))
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+import qualified Network.HTTP.Client as NH
+import qualified Network.HTTP.Client.MultipartFormData as NH
+import qualified Network.HTTP.Types as NH
+import qualified Web.FormUrlEncoded as WH
+import qualified Web.HttpApiData as WH
+
+import Data.Function ((&))
+import Data.Monoid ((<>))
+import Data.Text (Text)
+import GHC.Exts (IsString(..))
+
+-- * Dispatch
+
+-- ** Lbs
+
+-- | send a request returning the raw http response
+dispatchLbs
+  :: (Produces req accept, MimeType contentType)
+  => NH.Manager -- ^ http-client Connection manager
+  -> GiteaConfig -- ^ config
+  -> GiteaRequest req contentType res accept -- ^ request
+  -> IO (NH.Response BCL.ByteString) -- ^ response
+dispatchLbs manager config request  = do
+  initReq <- _toInitRequest config request
+  dispatchInitUnsafe manager config initReq
+
+-- ** Mime
+
+-- | pair of decoded http body and http response
+data MimeResult res =
+  MimeResult { mimeResult :: Either MimeError res -- ^ decoded http body
+             , mimeResultResponse :: NH.Response BCL.ByteString -- ^ http response
+             }
+  deriving (Show, Functor, Foldable, Traversable)
+
+-- | pair of unrender/parser error and http response
+data MimeError =
+  MimeError {
+    mimeError :: String -- ^ unrender/parser error
+  , mimeErrorResponse :: NH.Response BCL.ByteString -- ^ http response
+  } deriving (Show)
+
+-- | send a request returning the 'MimeResult'
+dispatchMime
+  :: forall req contentType res accept. (Produces req accept, MimeUnrender accept res, MimeType contentType)
+  => NH.Manager -- ^ http-client Connection manager
+  -> GiteaConfig -- ^ config
+  -> GiteaRequest req contentType res accept -- ^ request
+  -> IO (MimeResult res) -- ^ response
+dispatchMime manager config request = do
+  httpResponse <- dispatchLbs manager config request
+  let statusCode = NH.statusCode . NH.responseStatus $ httpResponse
+  parsedResult <-
+    runConfigLogWithExceptions "Client" config $
+    do if (statusCode >= 400 && statusCode < 600)
+         then do
+           let s = "error statusCode: " ++ show statusCode
+           _log "Client" levelError (T.pack s)
+           pure (Left (MimeError s httpResponse))
+         else case mimeUnrender (P.Proxy :: P.Proxy accept) (NH.responseBody httpResponse) of
+           Left s -> do
+             _log "Client" levelError (T.pack s)
+             pure (Left (MimeError s httpResponse))
+           Right r -> pure (Right r)
+  return (MimeResult parsedResult httpResponse)
+
+-- | like 'dispatchMime', but only returns the decoded http body
+dispatchMime'
+  :: (Produces req accept, MimeUnrender accept res, MimeType contentType)
+  => NH.Manager -- ^ http-client Connection manager
+  -> GiteaConfig -- ^ config
+  -> GiteaRequest req contentType res accept -- ^ request
+  -> IO (Either MimeError res) -- ^ response
+dispatchMime' manager config request  = do
+    MimeResult parsedResult _ <- dispatchMime manager config request
+    return parsedResult
+
+-- ** Unsafe
+
+-- | like 'dispatchReqLbs', but does not validate the operation is a 'Producer' of the "accept" 'MimeType'.  (Useful if the server's response is undocumented)
+dispatchLbsUnsafe
+  :: (MimeType accept, MimeType contentType)
+  => NH.Manager -- ^ http-client Connection manager
+  -> GiteaConfig -- ^ config
+  -> GiteaRequest req contentType res accept -- ^ request
+  -> IO (NH.Response BCL.ByteString) -- ^ response
+dispatchLbsUnsafe manager config request  = do
+  initReq <- _toInitRequest config request
+  dispatchInitUnsafe manager config initReq
+
+-- | dispatch an InitRequest
+dispatchInitUnsafe
+  :: NH.Manager -- ^ http-client Connection manager
+  -> GiteaConfig -- ^ config
+  -> InitRequest req contentType res accept -- ^ init request
+  -> IO (NH.Response BCL.ByteString) -- ^ response
+dispatchInitUnsafe manager config (InitRequest req) = do
+  runConfigLogWithExceptions src config $
+    do _log src levelInfo requestLogMsg
+       _log src levelDebug requestDbgLogMsg
+       res <- P.liftIO $ NH.httpLbs req manager
+       _log src levelInfo (responseLogMsg res)
+       _log src levelDebug ((T.pack . show) res)
+       return res
+  where
+    src = "Client"
+    endpoint =
+      T.pack $
+      BC.unpack $
+      NH.method req <> " " <> NH.host req <> NH.path req <> NH.queryString req
+    requestLogMsg = "REQ:" <> endpoint
+    requestDbgLogMsg =
+      "Headers=" <> (T.pack . show) (NH.requestHeaders req) <> " Body=" <>
+      (case NH.requestBody req of
+         NH.RequestBodyLBS xs -> T.decodeUtf8 (BL.toStrict xs)
+         _ -> "<RequestBody>")
+    responseStatusCode = (T.pack . show) . NH.statusCode . NH.responseStatus
+    responseLogMsg res =
+      "RES:statusCode=" <> responseStatusCode res <> " (" <> endpoint <> ")"
+
+-- * InitRequest
+
+-- | wraps an http-client 'Request' with request/response type parameters
+newtype InitRequest req contentType res accept = InitRequest
+  { unInitRequest :: NH.Request
+  } deriving (Show)
+
+-- |  Build an http-client 'Request' record from the supplied config and request
+_toInitRequest
+  :: (MimeType accept, MimeType contentType)
+  => GiteaConfig -- ^ config
+  -> GiteaRequest req contentType res accept -- ^ request
+  -> IO (InitRequest req contentType res accept) -- ^ initialized request
+_toInitRequest config req0  =
+  runConfigLogWithExceptions "Client" config $ do
+    parsedReq <- P.liftIO $ NH.parseRequest $ BCL.unpack $ BCL.append (configHost config) (BCL.concat (rUrlPath req0))
+    req1 <- P.liftIO $ _applyAuthMethods req0 config
+    P.when
+        (configValidateAuthMethods config && (not . null . rAuthTypes) req1)
+        (E.throw $ AuthMethodException $ "AuthMethod not configured: " <> (show . head . rAuthTypes) req1)
+    let req2 = req1 & _setContentTypeHeader & _setAcceptHeader
+        params = rParams req2
+        reqHeaders = ("User-Agent", WH.toHeader (configUserAgent config)) : paramsHeaders params
+        reqQuery = let query = paramsQuery params
+                       queryExtraUnreserved = configQueryExtraUnreserved config
+                   in if B.null queryExtraUnreserved
+                        then NH.renderQuery True query
+                        else NH.renderQueryPartialEscape True (toPartialEscapeQuery queryExtraUnreserved query)
+        pReq = parsedReq { NH.method = rMethod req2
+                        , NH.requestHeaders = reqHeaders
+                        , NH.queryString = reqQuery
+                        }
+    outReq <- case paramsBody params of
+        ParamBodyNone -> pure (pReq { NH.requestBody = mempty })
+        ParamBodyB bs -> pure (pReq { NH.requestBody = NH.RequestBodyBS bs })
+        ParamBodyBL bl -> pure (pReq { NH.requestBody = NH.RequestBodyLBS bl })
+        ParamBodyFormUrlEncoded form -> pure (pReq { NH.requestBody = NH.RequestBodyLBS (WH.urlEncodeForm form) })
+        ParamBodyMultipartFormData parts -> NH.formDataBody parts pReq
+
+    pure (InitRequest outReq)
+
+-- | modify the underlying Request
+modifyInitRequest :: InitRequest req contentType res accept -> (NH.Request -> NH.Request) -> InitRequest req contentType res accept
+modifyInitRequest (InitRequest req) f = InitRequest (f req)
+
+-- | modify the underlying Request (monadic)
+modifyInitRequestM :: Monad m => InitRequest req contentType res accept -> (NH.Request -> m NH.Request) -> m (InitRequest req contentType res accept)
+modifyInitRequestM (InitRequest req) f = fmap InitRequest (f req)
+
+-- ** Logging
+
+-- | Run a block using the configured logger instance
+runConfigLog
+  :: P.MonadIO m
+  => GiteaConfig -> LogExec m a
+runConfigLog config = configLogExecWithContext config (configLogContext config)
+
+-- | Run a block using the configured logger instance (logs exceptions)
+runConfigLogWithExceptions
+  :: (E.MonadCatch m, P.MonadIO m)
+  => T.Text -> GiteaConfig -> LogExec m a
+runConfigLogWithExceptions src config = runConfigLog config . logExceptions src
diff --git a/lib/Gitea/Core.hs b/lib/Gitea/Core.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/Core.hs
@@ -0,0 +1,588 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.Core
+-}
+
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE ExistentialQuantification #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TupleSections #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE CPP #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-binds -fno-warn-unused-imports #-}
+
+module Gitea.Core where
+
+import Gitea.MimeTypes
+import Gitea.Logging
+
+import qualified Control.Arrow as P (left)
+import qualified Control.DeepSeq as NF
+import qualified Control.Exception.Safe as E
+import qualified Data.Aeson as A
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Base64.Lazy as BL64
+import qualified Data.ByteString.Builder as BB
+import qualified Data.ByteString.Char8 as BC
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.ByteString.Lazy.Char8 as BCL
+import qualified Data.CaseInsensitive as CI
+import qualified Data.Data as P (Data, Typeable, TypeRep, typeRep)
+import qualified Data.Foldable as P
+import qualified Data.Ix as P
+import qualified Data.Kind as K (Type)
+import qualified Data.Maybe as P
+import qualified Data.Proxy as P (Proxy(..))
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+import qualified Data.Text.Lazy.Encoding as TL
+import qualified Data.Time as TI
+import qualified Data.Time.ISO8601 as TI
+import qualified GHC.Base as P (Alternative)
+import qualified Lens.Micro as L
+import qualified Network.HTTP.Client.MultipartFormData as NH
+import qualified Network.HTTP.Types as NH
+import qualified Prelude as P
+import qualified Text.Printf as T
+import qualified Web.FormUrlEncoded as WH
+import qualified Web.HttpApiData as WH
+
+import Control.Applicative ((<|>))
+import Control.Applicative (Alternative)
+import Control.Monad.Fail (MonadFail)
+import Data.Function ((&))
+import Data.Foldable(foldlM)
+import Data.Monoid ((<>))
+import Data.Text (Text)
+import Prelude (($), (.), (&&), (<$>), (<*>), Maybe(..), Bool(..), Char, String, fmap, mempty, pure, return, show, IO, Monad, Functor, maybe)
+
+-- * GiteaConfig
+
+-- |
+data GiteaConfig = GiteaConfig
+  { configHost  :: BCL.ByteString -- ^ host supplied in the Request
+  , configUserAgent :: Text -- ^ user-agent supplied in the Request
+  , configLogExecWithContext :: LogExecWithContext -- ^ Run a block using a Logger instance
+  , configLogContext :: LogContext -- ^ Configures the logger
+  , configAuthMethods :: [AnyAuthMethod] -- ^ List of configured auth methods
+  , configValidateAuthMethods :: Bool -- ^ throw exceptions if auth methods are not configured
+  , configQueryExtraUnreserved :: B.ByteString -- ^ Configures additional querystring characters which must not be URI encoded, e.g. '+' or ':'
+  }
+
+-- | display the config
+instance P.Show GiteaConfig where
+  show c =
+    T.printf
+      "{ configHost = %v, configUserAgent = %v, ..}"
+      (show (configHost c))
+      (show (configUserAgent c))
+
+-- | constructs a default GiteaConfig
+--
+-- configHost:
+--
+-- @http://https://gitea.com/api/v1@
+--
+-- configUserAgent:
+--
+-- @"gitea-api/1.19.4.0"@
+--
+newConfig :: IO GiteaConfig
+newConfig = do
+    logCxt <- initLogContext
+    return $ GiteaConfig
+        { configHost = "http://https://gitea.com/api/v1"
+        , configUserAgent = "gitea-api/1.19.4.0"
+        , configLogExecWithContext = runDefaultLogExecWithContext
+        , configLogContext = logCxt
+        , configAuthMethods = []
+        , configValidateAuthMethods = True
+        , configQueryExtraUnreserved = ""
+        }
+
+-- | updates config use AuthMethod on matching requests
+addAuthMethod :: AuthMethod auth => GiteaConfig -> auth -> GiteaConfig
+addAuthMethod config@GiteaConfig {configAuthMethods = as} a =
+  config { configAuthMethods = AnyAuthMethod a : as}
+
+-- | updates the config to use stdout logging
+withStdoutLogging :: GiteaConfig -> IO GiteaConfig
+withStdoutLogging p = do
+    logCxt <- stdoutLoggingContext (configLogContext p)
+    return $ p { configLogExecWithContext = stdoutLoggingExec, configLogContext = logCxt }
+
+-- | updates the config to use stderr logging
+withStderrLogging :: GiteaConfig -> IO GiteaConfig
+withStderrLogging p = do
+    logCxt <- stderrLoggingContext (configLogContext p)
+    return $ p { configLogExecWithContext = stderrLoggingExec, configLogContext = logCxt }
+
+-- | updates the config to disable logging
+withNoLogging :: GiteaConfig -> GiteaConfig
+withNoLogging p = p { configLogExecWithContext =  runNullLogExec}
+
+-- * GiteaRequest
+
+-- | Represents a request.
+--
+--   Type Variables:
+--
+--   * req - request operation
+--   * contentType - 'MimeType' associated with request body
+--   * res - response model
+--   * accept - 'MimeType' associated with response body
+data GiteaRequest req contentType res accept = GiteaRequest
+  { rMethod  :: NH.Method   -- ^ Method of GiteaRequest
+  , rUrlPath :: [BCL.ByteString] -- ^ Endpoint of GiteaRequest
+  , rParams   :: Params -- ^ params of GiteaRequest
+  , rAuthTypes :: [P.TypeRep] -- ^ types of auth methods
+  }
+  deriving (P.Show)
+
+-- | 'rMethod' Lens
+rMethodL :: Lens_' (GiteaRequest req contentType res accept) NH.Method
+rMethodL f GiteaRequest{..} = (\rMethod -> GiteaRequest { rMethod, ..} ) <$> f rMethod
+{-# INLINE rMethodL #-}
+
+-- | 'rUrlPath' Lens
+rUrlPathL :: Lens_' (GiteaRequest req contentType res accept) [BCL.ByteString]
+rUrlPathL f GiteaRequest{..} = (\rUrlPath -> GiteaRequest { rUrlPath, ..} ) <$> f rUrlPath
+{-# INLINE rUrlPathL #-}
+
+-- | 'rParams' Lens
+rParamsL :: Lens_' (GiteaRequest req contentType res accept) Params
+rParamsL f GiteaRequest{..} = (\rParams -> GiteaRequest { rParams, ..} ) <$> f rParams
+{-# INLINE rParamsL #-}
+
+-- | 'rParams' Lens
+rAuthTypesL :: Lens_' (GiteaRequest req contentType res accept) [P.TypeRep]
+rAuthTypesL f GiteaRequest{..} = (\rAuthTypes -> GiteaRequest { rAuthTypes, ..} ) <$> f rAuthTypes
+{-# INLINE rAuthTypesL #-}
+
+-- * HasBodyParam
+
+-- | Designates the body parameter of a request
+class HasBodyParam req param where
+  setBodyParam :: forall contentType res accept. (Consumes req contentType, MimeRender contentType param) => GiteaRequest req contentType res accept -> param -> GiteaRequest req contentType res accept
+  setBodyParam req xs =
+    req `_setBodyLBS` mimeRender (P.Proxy :: P.Proxy contentType) xs & _setContentTypeHeader
+
+-- * HasOptionalParam
+
+-- | Designates the optional parameters of a request
+class HasOptionalParam req param where
+  {-# MINIMAL applyOptionalParam | (-&-) #-}
+
+  -- | Apply an optional parameter to a request
+  applyOptionalParam :: GiteaRequest req contentType res accept -> param -> GiteaRequest req contentType res accept
+  applyOptionalParam = (-&-)
+  {-# INLINE applyOptionalParam #-}
+
+  -- | infix operator \/ alias for 'addOptionalParam'
+  (-&-) :: GiteaRequest req contentType res accept -> param -> GiteaRequest req contentType res accept
+  (-&-) = applyOptionalParam
+  {-# INLINE (-&-) #-}
+
+infixl 2 -&-
+
+-- | Request Params
+data Params = Params
+  { paramsQuery :: NH.Query
+  , paramsHeaders :: NH.RequestHeaders
+  , paramsBody :: ParamBody
+  }
+  deriving (P.Show)
+
+-- | 'paramsQuery' Lens
+paramsQueryL :: Lens_' Params NH.Query
+paramsQueryL f Params{..} = (\paramsQuery -> Params { paramsQuery, ..} ) <$> f paramsQuery
+{-# INLINE paramsQueryL #-}
+
+-- | 'paramsHeaders' Lens
+paramsHeadersL :: Lens_' Params NH.RequestHeaders
+paramsHeadersL f Params{..} = (\paramsHeaders -> Params { paramsHeaders, ..} ) <$> f paramsHeaders
+{-# INLINE paramsHeadersL #-}
+
+-- | 'paramsBody' Lens
+paramsBodyL :: Lens_' Params ParamBody
+paramsBodyL f Params{..} = (\paramsBody -> Params { paramsBody, ..} ) <$> f paramsBody
+{-# INLINE paramsBodyL #-}
+
+-- | Request Body
+data ParamBody
+  = ParamBodyNone
+  | ParamBodyB B.ByteString
+  | ParamBodyBL BL.ByteString
+  | ParamBodyFormUrlEncoded WH.Form
+  | ParamBodyMultipartFormData [NH.Part]
+  deriving (P.Show)
+
+-- ** GiteaRequest Utils
+
+_mkRequest :: NH.Method -- ^ Method
+          -> [BCL.ByteString] -- ^ Endpoint
+          -> GiteaRequest req contentType res accept -- ^ req: Request Type, res: Response Type
+_mkRequest m u = GiteaRequest m u _mkParams []
+
+_mkParams :: Params
+_mkParams = Params [] [] ParamBodyNone
+
+setHeader ::
+     GiteaRequest req contentType res accept
+  -> [NH.Header]
+  -> GiteaRequest req contentType res accept
+setHeader req header =
+  req `removeHeader` P.fmap P.fst header
+  & (`addHeader` header)
+
+addHeader ::
+     GiteaRequest req contentType res accept
+  -> [NH.Header]
+  -> GiteaRequest req contentType res accept
+addHeader req header = L.over (rParamsL . paramsHeadersL) (header P.++) req
+
+removeHeader :: GiteaRequest req contentType res accept -> [NH.HeaderName] -> GiteaRequest req contentType res accept
+removeHeader req header =
+  req &
+  L.over
+    (rParamsL . paramsHeadersL)
+    (P.filter (\h -> cifst h `P.notElem` P.fmap CI.mk header))
+  where
+    cifst = CI.mk . P.fst
+
+
+_setContentTypeHeader :: forall req contentType res accept. MimeType contentType => GiteaRequest req contentType res accept -> GiteaRequest req contentType res accept
+_setContentTypeHeader req =
+    case mimeType (P.Proxy :: P.Proxy contentType) of
+        Just m -> req `setHeader` [("content-type", BC.pack $ P.show m)]
+        Nothing -> req `removeHeader` ["content-type"]
+
+_setAcceptHeader :: forall req contentType res accept. MimeType accept => GiteaRequest req contentType res accept -> GiteaRequest req contentType res accept
+_setAcceptHeader req =
+    case mimeType (P.Proxy :: P.Proxy accept) of
+        Just m -> req `setHeader` [("accept", BC.pack $ P.show m)]
+        Nothing -> req `removeHeader` ["accept"]
+
+setQuery ::
+     GiteaRequest req contentType res accept
+  -> [NH.QueryItem]
+  -> GiteaRequest req contentType res accept
+setQuery req query =
+  req &
+  L.over
+    (rParamsL . paramsQueryL)
+    (P.filter (\q -> cifst q `P.notElem` P.fmap cifst query)) &
+  (`addQuery` query)
+  where
+    cifst = CI.mk . P.fst
+
+addQuery ::
+     GiteaRequest req contentType res accept
+  -> [NH.QueryItem]
+  -> GiteaRequest req contentType res accept
+addQuery req query = req & L.over (rParamsL . paramsQueryL) (query P.++)
+
+addForm :: GiteaRequest req contentType res accept -> WH.Form -> GiteaRequest req contentType res accept
+addForm req newform =
+    let form = case paramsBody (rParams req) of
+            ParamBodyFormUrlEncoded _form -> _form
+            _ -> mempty
+    in req & L.set (rParamsL . paramsBodyL) (ParamBodyFormUrlEncoded (newform <> form))
+
+_addMultiFormPart :: GiteaRequest req contentType res accept -> NH.Part -> GiteaRequest req contentType res accept
+_addMultiFormPart req newpart =
+    let parts = case paramsBody (rParams req) of
+            ParamBodyMultipartFormData _parts -> _parts
+            _ -> []
+    in req & L.set (rParamsL . paramsBodyL) (ParamBodyMultipartFormData (newpart : parts))
+
+_setBodyBS :: GiteaRequest req contentType res accept -> B.ByteString -> GiteaRequest req contentType res accept
+_setBodyBS req body =
+    req & L.set (rParamsL . paramsBodyL) (ParamBodyB body)
+
+_setBodyLBS :: GiteaRequest req contentType res accept -> BL.ByteString -> GiteaRequest req contentType res accept
+_setBodyLBS req body =
+    req & L.set (rParamsL . paramsBodyL) (ParamBodyBL body)
+
+_hasAuthType :: AuthMethod authMethod => GiteaRequest req contentType res accept -> P.Proxy authMethod -> GiteaRequest req contentType res accept
+_hasAuthType req proxy =
+  req & L.over rAuthTypesL (P.typeRep proxy :)
+
+-- ** Params Utils
+
+toPath
+  :: WH.ToHttpApiData a
+  => a -> BCL.ByteString
+toPath = BB.toLazyByteString . WH.toEncodedUrlPiece
+
+toHeader :: WH.ToHttpApiData a => (NH.HeaderName, a) -> [NH.Header]
+toHeader x = [fmap WH.toHeader x]
+
+toForm :: WH.ToHttpApiData v => (BC.ByteString, v) -> WH.Form
+toForm (k,v) = WH.toForm [(BC.unpack k,v)]
+
+toQuery :: WH.ToHttpApiData a => (BC.ByteString, Maybe a) -> [NH.QueryItem]
+toQuery x = [(fmap . fmap) toQueryParam x]
+  where toQueryParam = T.encodeUtf8 . WH.toQueryParam
+
+toJsonQuery :: A.ToJSON a => (BC.ByteString, Maybe a) -> [NH.QueryItem]
+toJsonQuery = toQuery . (fmap . fmap) (TL.decodeUtf8 . A.encode)
+
+toPartialEscapeQuery :: B.ByteString -> NH.Query -> NH.PartialEscapeQuery
+toPartialEscapeQuery extraUnreserved query = fmap (\(k, v) -> (k, maybe [] go v)) query
+  where go :: B.ByteString -> [NH.EscapeItem]
+        go v = v & B.groupBy (\a b -> a `B.notElem` extraUnreserved && b `B.notElem` extraUnreserved)
+                 & fmap (\xs -> if B.null xs then NH.QN xs
+                                  else if B.head xs `B.elem` extraUnreserved
+                                          then NH.QN xs -- Not Encoded
+                                          else NH.QE xs -- Encoded
+                        )
+
+-- *** OpenAPI `CollectionFormat` Utils
+
+-- | Determines the format of the array if type array is used.
+data CollectionFormat
+  = CommaSeparated -- ^ CSV format for multiple parameters.
+  | SpaceSeparated -- ^ Also called "SSV"
+  | TabSeparated -- ^ Also called "TSV"
+  | PipeSeparated -- ^ `value1|value2|value2`
+  | MultiParamArray -- ^ Using multiple GET parameters, e.g. `foo=bar&foo=baz`. This is valid only for parameters in "query" ('NH.Query') or "formData" ('WH.Form')
+
+toHeaderColl :: WH.ToHttpApiData a => CollectionFormat -> (NH.HeaderName, [a]) -> [NH.Header]
+toHeaderColl c xs = _toColl c toHeader xs
+
+toFormColl :: WH.ToHttpApiData v => CollectionFormat -> (BC.ByteString, [v]) -> WH.Form
+toFormColl c xs = WH.toForm $ fmap unpack $ _toColl c toHeader $ pack xs
+  where
+    pack (k,v) = (CI.mk k, v)
+    unpack (k,v) = (BC.unpack (CI.original k), BC.unpack v)
+
+toQueryColl :: WH.ToHttpApiData a => CollectionFormat -> (BC.ByteString, Maybe [a]) -> NH.Query
+toQueryColl c xs = _toCollA c toQuery xs
+
+toJsonQueryColl :: A.ToJSON a => CollectionFormat -> (BC.ByteString, Maybe [a]) -> NH.Query
+toJsonQueryColl c xs = _toCollA c toJsonQuery xs
+
+_toColl :: P.Traversable f => CollectionFormat -> (f a -> [(b, BC.ByteString)]) -> f [a] -> [(b, BC.ByteString)]
+_toColl c encode xs = fmap (fmap P.fromJust) (_toCollA' c fencode BC.singleton (fmap Just xs))
+  where fencode = fmap (fmap Just) . encode . fmap P.fromJust
+        {-# INLINE fencode #-}
+
+_toCollA :: (P.Traversable f, P.Traversable t, P.Alternative t) => CollectionFormat -> (f (t a) -> [(b, t BC.ByteString)]) -> f (t [a]) -> [(b, t BC.ByteString)]
+_toCollA c encode xs = _toCollA' c encode BC.singleton xs
+
+_toCollA' :: (P.Monoid c, P.Traversable f, P.Traversable t, P.Alternative t) => CollectionFormat -> (f (t a) -> [(b, t c)]) -> (Char -> c) -> f (t [a]) -> [(b, t c)]
+_toCollA' c encode one xs = case c of
+  CommaSeparated -> go (one ',')
+  SpaceSeparated -> go (one ' ')
+  TabSeparated -> go (one '\t')
+  PipeSeparated -> go (one '|')
+  MultiParamArray -> expandList
+  where
+    go sep =
+      [P.foldl1 (\(sk, sv) (_, v) -> (sk, (combine sep <$> sv <*> v) <|> sv <|> v)) expandList]
+    combine sep x y = x <> sep <> y
+    expandList = (P.concatMap encode . (P.traverse . P.traverse) P.toList) xs
+    {-# INLINE go #-}
+    {-# INLINE expandList #-}
+    {-# INLINE combine #-}
+
+-- * AuthMethods
+
+-- | Provides a method to apply auth methods to requests
+class P.Typeable a =>
+      AuthMethod a  where
+  applyAuthMethod
+    :: GiteaConfig
+    -> a
+    -> GiteaRequest req contentType res accept
+    -> IO (GiteaRequest req contentType res accept)
+
+-- | An existential wrapper for any AuthMethod
+data AnyAuthMethod = forall a. AuthMethod a => AnyAuthMethod a deriving (P.Typeable)
+
+instance AuthMethod AnyAuthMethod where applyAuthMethod config (AnyAuthMethod a) req = applyAuthMethod config a req
+
+-- | indicates exceptions related to AuthMethods
+data AuthMethodException = AuthMethodException String deriving (P.Show, P.Typeable)
+
+instance E.Exception AuthMethodException
+
+-- | apply all matching AuthMethods in config to request
+_applyAuthMethods
+  :: GiteaRequest req contentType res accept
+  -> GiteaConfig
+  -> IO (GiteaRequest req contentType res accept)
+_applyAuthMethods req config@(GiteaConfig {configAuthMethods = as}) =
+  foldlM go req as
+  where
+    go r (AnyAuthMethod a) = applyAuthMethod config a r
+
+-- * Utils
+
+-- | Removes Null fields.  (OpenAPI-Specification 2.0 does not allow Null in JSON)
+#if MIN_VERSION_aeson(2,0,0)
+_omitNulls :: [(A.Key, A.Value)] -> A.Value
+#else
+_omitNulls :: [(Text, A.Value)] -> A.Value
+#endif
+_omitNulls = A.object . P.filter notNull
+  where
+    notNull (_, A.Null) = False
+    notNull _ = True
+
+-- | Encodes fields using WH.toQueryParam
+_toFormItem :: (WH.ToHttpApiData a, Functor f) => t -> f a -> f (t, [Text])
+_toFormItem name x = (name,) . (:[]) . WH.toQueryParam <$> x
+
+-- | Collapse (Just "") to Nothing
+_emptyToNothing :: Maybe String -> Maybe String
+_emptyToNothing (Just "") = Nothing
+_emptyToNothing x = x
+{-# INLINE _emptyToNothing #-}
+
+-- | Collapse (Just mempty) to Nothing
+_memptyToNothing :: (P.Monoid a, P.Eq a) => Maybe a -> Maybe a
+_memptyToNothing (Just x) | x P.== P.mempty = Nothing
+_memptyToNothing x = x
+{-# INLINE _memptyToNothing #-}
+
+-- * DateTime Formatting
+
+newtype DateTime = DateTime { unDateTime :: TI.UTCTime }
+  deriving (P.Eq,P.Data,P.Ord,P.Typeable,NF.NFData)
+instance A.FromJSON DateTime where
+  parseJSON = A.withText "DateTime" (_readDateTime . T.unpack)
+instance A.ToJSON DateTime where
+  toJSON (DateTime t) = A.toJSON (_showDateTime t)
+instance WH.FromHttpApiData DateTime where
+  parseUrlPiece = P.maybe (P.Left "parseUrlPiece @DateTime") P.Right . _readDateTime . T.unpack
+instance WH.ToHttpApiData DateTime where
+  toUrlPiece (DateTime t) = T.pack (_showDateTime t)
+instance P.Show DateTime where
+  show (DateTime t) = _showDateTime t
+instance MimeRender MimeMultipartFormData DateTime where
+  mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | @_parseISO8601@
+_readDateTime :: (MonadFail m, Alternative m) => String -> m DateTime
+_readDateTime s =
+  DateTime <$> _parseISO8601 s
+{-# INLINE _readDateTime #-}
+
+-- | @TI.formatISO8601Millis@
+_showDateTime :: (t ~ TI.UTCTime, TI.FormatTime t) => t -> String
+_showDateTime =
+  TI.formatISO8601Millis
+{-# INLINE _showDateTime #-}
+
+-- | parse an ISO8601 date-time string
+_parseISO8601 :: (TI.ParseTime t, MonadFail m, Alternative m) => String -> m t
+_parseISO8601 t =
+  P.asum $
+  P.flip (TI.parseTimeM True TI.defaultTimeLocale) t <$>
+  ["%FT%T%QZ", "%FT%T%Q%z", "%FT%T%Q%Z"]
+{-# INLINE _parseISO8601 #-}
+
+-- * Date Formatting
+
+newtype Date = Date { unDate :: TI.Day }
+  deriving (P.Enum,P.Eq,P.Data,P.Ord,P.Ix,NF.NFData)
+instance A.FromJSON Date where
+  parseJSON = A.withText "Date" (_readDate . T.unpack)
+instance A.ToJSON Date where
+  toJSON (Date t) = A.toJSON (_showDate t)
+instance WH.FromHttpApiData Date where
+  parseUrlPiece = P.maybe (P.Left "parseUrlPiece @Date") P.Right . _readDate . T.unpack
+instance WH.ToHttpApiData Date where
+  toUrlPiece (Date t) = T.pack (_showDate t)
+instance P.Show Date where
+  show (Date t) = _showDate t
+instance MimeRender MimeMultipartFormData Date where
+  mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | @TI.parseTimeM True TI.defaultTimeLocale "%Y-%m-%d"@
+_readDate :: MonadFail m => String -> m Date
+_readDate s = Date <$> TI.parseTimeM True TI.defaultTimeLocale "%Y-%m-%d" s
+{-# INLINE _readDate #-}
+
+-- | @TI.formatTime TI.defaultTimeLocale "%Y-%m-%d"@
+_showDate :: TI.FormatTime t => t -> String
+_showDate =
+  TI.formatTime TI.defaultTimeLocale "%Y-%m-%d"
+{-# INLINE _showDate #-}
+
+-- * Byte/Binary Formatting
+
+
+-- | base64 encoded characters
+newtype ByteArray = ByteArray { unByteArray :: BL.ByteString }
+  deriving (P.Eq,P.Data,P.Ord,P.Typeable,NF.NFData)
+
+instance A.FromJSON ByteArray where
+  parseJSON = A.withText "ByteArray" _readByteArray
+instance A.ToJSON ByteArray where
+  toJSON = A.toJSON . _showByteArray
+instance WH.FromHttpApiData ByteArray where
+  parseUrlPiece = P.maybe (P.Left "parseUrlPiece @ByteArray") P.Right . _readByteArray
+instance WH.ToHttpApiData ByteArray where
+  toUrlPiece = _showByteArray
+instance P.Show ByteArray where
+  show = T.unpack . _showByteArray
+instance MimeRender MimeMultipartFormData ByteArray where
+  mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | read base64 encoded characters
+_readByteArray :: MonadFail m => Text -> m ByteArray
+_readByteArray = P.either P.fail (pure . ByteArray) . BL64.decode . BL.fromStrict . T.encodeUtf8
+{-# INLINE _readByteArray #-}
+
+-- | show base64 encoded characters
+_showByteArray :: ByteArray -> Text
+_showByteArray = T.decodeUtf8 . BL.toStrict . BL64.encode . unByteArray
+{-# INLINE _showByteArray #-}
+
+-- | any sequence of octets
+newtype Binary = Binary { unBinary :: BL.ByteString }
+  deriving (P.Eq,P.Data,P.Ord,P.Typeable,NF.NFData)
+
+instance A.FromJSON Binary where
+  parseJSON = A.withText "Binary" _readBinaryBase64
+instance A.ToJSON Binary where
+  toJSON = A.toJSON . _showBinaryBase64
+instance WH.FromHttpApiData Binary where
+  parseUrlPiece = P.maybe (P.Left "parseUrlPiece @Binary") P.Right . _readBinaryBase64
+instance WH.ToHttpApiData Binary where
+  toUrlPiece = _showBinaryBase64
+instance P.Show Binary where
+  show = T.unpack . _showBinaryBase64
+instance MimeRender MimeMultipartFormData Binary where
+  mimeRender _ = unBinary
+
+_readBinaryBase64 :: MonadFail m => Text -> m Binary
+_readBinaryBase64 = P.either P.fail (pure . Binary) . BL64.decode . BL.fromStrict . T.encodeUtf8
+{-# INLINE _readBinaryBase64 #-}
+
+_showBinaryBase64 :: Binary -> Text
+_showBinaryBase64 = T.decodeUtf8 . BL.toStrict . BL64.encode . unBinary
+{-# INLINE _showBinaryBase64 #-}
+
+-- * Lens Type Aliases
+
+type Lens_' s a = Lens_ s s a a
+type Lens_ s t a b = forall (f :: K.Type -> K.Type). Functor f => (a -> f b) -> s -> f t
diff --git a/lib/Gitea/Logging.hs b/lib/Gitea/Logging.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/Logging.hs
@@ -0,0 +1,33 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.Logging
+Logging functions
+-}
+{-# LANGUAGE CPP #-}
+
+#ifdef USE_KATIP
+
+module Gitea.Logging
+  ( module Gitea.LoggingKatip
+  ) where
+
+import Gitea.LoggingKatip
+
+#else
+
+module Gitea.Logging
+  ( module Gitea.LoggingMonadLogger
+  ) where
+
+import Gitea.LoggingMonadLogger
+
+#endif
diff --git a/lib/Gitea/LoggingKatip.hs b/lib/Gitea/LoggingKatip.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/LoggingKatip.hs
@@ -0,0 +1,117 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.LoggingKatip
+Katip Logging functions
+-}
+
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+
+module Gitea.LoggingKatip where
+
+import qualified Control.Exception.Safe as E
+import qualified Control.Monad.IO.Class as P
+import qualified Control.Monad.Trans.Reader as P
+import qualified Data.Text as T
+import qualified Lens.Micro as L
+import qualified System.IO as IO
+
+import Data.Text (Text)
+import GHC.Exts (IsString(..))
+
+import qualified Katip as LG
+
+-- * Type Aliases (for compatibility)
+
+-- | Runs a Katip logging block with the Log environment
+type LogExecWithContext = forall m a. P.MonadIO m =>
+                                      LogContext -> LogExec m a
+
+-- | A Katip logging block
+type LogExec m a = LG.KatipT m a -> m a
+
+-- | A Katip Log environment
+type LogContext = LG.LogEnv
+
+-- | A Katip Log severity
+type LogLevel = LG.Severity
+
+-- * default logger
+
+-- | the default log environment
+initLogContext :: IO LogContext
+initLogContext = LG.initLogEnv "Gitea" "dev"
+
+-- | Runs a Katip logging block with the Log environment
+runDefaultLogExecWithContext :: LogExecWithContext
+runDefaultLogExecWithContext = LG.runKatipT
+
+-- * stdout logger
+
+-- | Runs a Katip logging block with the Log environment
+stdoutLoggingExec :: LogExecWithContext
+stdoutLoggingExec = runDefaultLogExecWithContext
+
+-- | A Katip Log environment which targets stdout
+stdoutLoggingContext :: LogContext -> IO LogContext
+stdoutLoggingContext cxt = do
+    handleScribe <- LG.mkHandleScribe LG.ColorIfTerminal IO.stdout (LG.permitItem LG.InfoS) LG.V2
+    LG.registerScribe "stdout" handleScribe LG.defaultScribeSettings cxt
+
+-- * stderr logger
+
+-- | Runs a Katip logging block with the Log environment
+stderrLoggingExec :: LogExecWithContext
+stderrLoggingExec = runDefaultLogExecWithContext
+
+-- | A Katip Log environment which targets stderr
+stderrLoggingContext :: LogContext -> IO LogContext
+stderrLoggingContext cxt = do
+    handleScribe <- LG.mkHandleScribe LG.ColorIfTerminal IO.stderr (LG.permitItem LG.InfoS) LG.V2
+    LG.registerScribe "stderr" handleScribe LG.defaultScribeSettings cxt
+
+-- * Null logger
+
+-- | Disables Katip logging
+runNullLogExec :: LogExecWithContext
+runNullLogExec le (LG.KatipT f) = P.runReaderT f (L.set LG.logEnvScribes mempty le)
+
+-- * Log Msg
+
+-- | Log a katip message
+_log :: (Applicative m, LG.Katip m) => Text -> LogLevel -> Text -> m ()
+_log src level msg = do
+  LG.logMsg (fromString $ T.unpack src) level (LG.logStr msg)
+
+-- * Log Exceptions
+
+-- | re-throws exceptions after logging them
+logExceptions
+  :: (LG.Katip m, E.MonadCatch m, Applicative m)
+  => Text -> m a -> m a
+logExceptions src =
+  E.handle
+    (\(e :: E.SomeException) -> do
+       _log src LG.ErrorS ((T.pack . show) e)
+       E.throw e)
+
+-- * Log Level
+
+levelInfo :: LogLevel
+levelInfo = LG.InfoS
+
+levelError :: LogLevel
+levelError = LG.ErrorS
+
+levelDebug :: LogLevel
+levelDebug = LG.DebugS
diff --git a/lib/Gitea/LoggingMonadLogger.hs b/lib/Gitea/LoggingMonadLogger.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/LoggingMonadLogger.hs
@@ -0,0 +1,126 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.LoggingMonadLogger
+monad-logger Logging functions
+-}
+
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+
+module Gitea.LoggingMonadLogger where
+
+import qualified Control.Exception.Safe as E
+import qualified Control.Monad.IO.Class as P
+import qualified Data.Text as T
+import qualified Data.Time as TI
+
+import Data.Text (Text)
+
+import qualified Control.Monad.Logger as LG
+
+-- * Type Aliases (for compatibility)
+
+-- | Runs a monad-logger  block with the filter predicate
+type LogExecWithContext = forall m a. P.MonadIO m =>
+                                      LogContext -> LogExec m a
+
+-- | A monad-logger block
+type LogExec m a = LG.LoggingT m a -> m a
+
+-- | A monad-logger filter predicate
+type LogContext = LG.LogSource -> LG.LogLevel -> Bool
+
+-- | A monad-logger log level
+type LogLevel = LG.LogLevel
+
+-- * default logger
+
+-- | the default log environment
+initLogContext :: IO LogContext
+initLogContext = pure infoLevelFilter
+
+-- | Runs a monad-logger block with the filter predicate
+runDefaultLogExecWithContext :: LogExecWithContext
+runDefaultLogExecWithContext = runNullLogExec
+
+-- * stdout logger
+
+-- | Runs a monad-logger block targeting stdout, with the filter predicate
+stdoutLoggingExec :: LogExecWithContext
+stdoutLoggingExec cxt = LG.runStdoutLoggingT . LG.filterLogger cxt
+
+-- | @pure@
+stdoutLoggingContext :: LogContext -> IO LogContext
+stdoutLoggingContext = pure
+
+-- * stderr logger
+
+-- | Runs a monad-logger block targeting stderr, with the filter predicate
+stderrLoggingExec :: LogExecWithContext
+stderrLoggingExec cxt = LG.runStderrLoggingT . LG.filterLogger cxt
+
+-- | @pure@
+stderrLoggingContext :: LogContext -> IO LogContext
+stderrLoggingContext = pure
+
+-- * Null logger
+
+-- | Disables monad-logger logging
+runNullLogExec :: LogExecWithContext
+runNullLogExec = const (`LG.runLoggingT` nullLogger)
+
+-- | monad-logger which does nothing
+nullLogger :: LG.Loc -> LG.LogSource -> LG.LogLevel -> LG.LogStr -> IO ()
+nullLogger _ _ _ _ = return ()
+
+-- * Log Msg
+
+-- | Log a message using the current time
+_log :: (P.MonadIO m, LG.MonadLogger m) => Text -> LG.LogLevel -> Text -> m ()
+_log src level msg = do
+  now <- P.liftIO (formatTimeLog <$> TI.getCurrentTime)
+  LG.logOtherNS ("Gitea." <> src) level ("[" <> now <> "] " <> msg)
+ where
+  formatTimeLog =
+    T.pack . TI.formatTime TI.defaultTimeLocale "%Y-%m-%dT%H:%M:%S%Z"
+
+-- * Log Exceptions
+
+-- | re-throws exceptions after logging them
+logExceptions
+   :: (LG.MonadLogger m, E.MonadCatch m, P.MonadIO m)
+   => Text -> m a -> m a
+logExceptions src =
+   E.handle
+     (\(e :: E.SomeException) -> do
+        _log src LG.LevelError ((T.pack . show) e)
+        E.throw e)
+
+-- * Log Level
+
+levelInfo :: LogLevel
+levelInfo = LG.LevelInfo
+
+levelError :: LogLevel
+levelError = LG.LevelError
+
+levelDebug :: LogLevel
+levelDebug = LG.LevelDebug
+
+-- * Level Filter
+
+minLevelFilter :: LG.LogLevel -> LG.LogSource -> LG.LogLevel -> Bool
+minLevelFilter l _ l' = l' >= l
+
+infoLevelFilter :: LG.LogSource -> LG.LogLevel -> Bool
+infoLevelFilter = minLevelFilter LG.LevelInfo
diff --git a/lib/Gitea/MimeTypes.hs b/lib/Gitea/MimeTypes.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/MimeTypes.hs
@@ -0,0 +1,215 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.MimeTypes
+-}
+
+{-# LANGUAGE ConstraintKinds #-}
+{-# LANGUAGE ExistentialQuantification #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds -fno-warn-unused-imports #-}
+
+module Gitea.MimeTypes where
+
+import qualified Control.Arrow as P (left)
+import qualified Data.Aeson as A
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Builder as BB
+import qualified Data.ByteString.Char8 as BC
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.ByteString.Lazy.Char8 as BCL
+import qualified Data.Data as P (Typeable)
+import qualified Data.Proxy as P (Proxy(..))
+import qualified Data.String as P
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+import qualified Network.HTTP.Media as ME
+import qualified Web.FormUrlEncoded as WH
+import qualified Web.HttpApiData as WH
+
+import Prelude (($), (.),(<$>),(<*>),Maybe(..),Bool(..),Char,Double,FilePath,Float,Int,Integer,String,fmap,undefined,mempty)
+import qualified Prelude as P
+
+-- * ContentType MimeType
+
+data ContentType a = MimeType a => ContentType { unContentType :: a }
+
+-- * Accept MimeType
+
+data Accept a = MimeType a => Accept { unAccept :: a }
+
+-- * Consumes Class
+
+class MimeType mtype => Consumes req mtype where
+
+-- * Produces Class
+
+class MimeType mtype => Produces req mtype where
+
+-- * Default Mime Types
+
+data MimeJSON = MimeJSON deriving (P.Typeable)
+data MimeXML = MimeXML deriving (P.Typeable)
+data MimePlainText = MimePlainText deriving (P.Typeable)
+data MimeFormUrlEncoded = MimeFormUrlEncoded deriving (P.Typeable)
+data MimeMultipartFormData = MimeMultipartFormData deriving (P.Typeable)
+data MimeOctetStream = MimeOctetStream deriving (P.Typeable)
+data MimeNoContent = MimeNoContent deriving (P.Typeable)
+data MimeAny = MimeAny deriving (P.Typeable)
+
+-- | A type for responses without content-body.
+data NoContent = NoContent
+  deriving (P.Show, P.Eq, P.Typeable)
+
+
+-- * MimeType Class
+
+class P.Typeable mtype => MimeType mtype  where
+  {-# MINIMAL mimeType | mimeTypes #-}
+
+  mimeTypes :: P.Proxy mtype -> [ME.MediaType]
+  mimeTypes p =
+    case mimeType p of
+      Just x -> [x]
+      Nothing -> []
+
+  mimeType :: P.Proxy mtype -> Maybe ME.MediaType
+  mimeType p =
+    case mimeTypes p of
+      [] -> Nothing
+      (x:_) -> Just x
+
+  mimeType' :: mtype -> Maybe ME.MediaType
+  mimeType' _ = mimeType (P.Proxy :: P.Proxy mtype)
+  mimeTypes' :: mtype -> [ME.MediaType]
+  mimeTypes' _ = mimeTypes (P.Proxy :: P.Proxy mtype)
+
+-- Default MimeType Instances
+
+-- | @application/json; charset=utf-8@
+instance MimeType MimeJSON where
+  mimeType _ = Just $ P.fromString "application/json"
+-- | @application/xml; charset=utf-8@
+instance MimeType MimeXML where
+  mimeType _ = Just $ P.fromString "application/xml"
+-- | @application/x-www-form-urlencoded@
+instance MimeType MimeFormUrlEncoded where
+  mimeType _ = Just $ P.fromString "application/x-www-form-urlencoded"
+-- | @multipart/form-data@
+instance MimeType MimeMultipartFormData where
+  mimeType _ = Just $ P.fromString "multipart/form-data"
+-- | @text/plain; charset=utf-8@
+instance MimeType MimePlainText where
+  mimeType _ = Just $ P.fromString "text/plain"
+-- | @application/octet-stream@
+instance MimeType MimeOctetStream where
+  mimeType _ = Just $ P.fromString "application/octet-stream"
+-- | @"*/*"@
+instance MimeType MimeAny where
+  mimeType _ = Just $ P.fromString "*/*"
+instance MimeType MimeNoContent where
+  mimeType _ = Nothing
+
+-- * MimeRender Class
+
+class MimeType mtype => MimeRender mtype x where
+    mimeRender  :: P.Proxy mtype -> x -> BL.ByteString
+    mimeRender' :: mtype -> x -> BL.ByteString
+    mimeRender' _ x = mimeRender (P.Proxy :: P.Proxy mtype) x
+
+
+mimeRenderDefaultMultipartFormData :: WH.ToHttpApiData a => a -> BL.ByteString
+mimeRenderDefaultMultipartFormData = BL.fromStrict . T.encodeUtf8 . WH.toQueryParam
+
+-- Default MimeRender Instances
+
+-- | `A.encode`
+instance A.ToJSON a => MimeRender MimeJSON a where mimeRender _ = A.encode
+-- | @WH.urlEncodeAsForm@
+instance WH.ToForm a => MimeRender MimeFormUrlEncoded a where mimeRender _ = WH.urlEncodeAsForm
+
+-- | @P.id@
+instance MimeRender MimePlainText BL.ByteString where mimeRender _ = P.id
+-- | @BL.fromStrict . T.encodeUtf8@
+instance MimeRender MimePlainText T.Text where mimeRender _ = BL.fromStrict . T.encodeUtf8
+-- | @BCL.pack@
+instance MimeRender MimePlainText String where mimeRender _ = BCL.pack
+
+-- | @P.id@
+instance MimeRender MimeOctetStream BL.ByteString where mimeRender _ = P.id
+-- | @BL.fromStrict . T.encodeUtf8@
+instance MimeRender MimeOctetStream T.Text where mimeRender _ = BL.fromStrict . T.encodeUtf8
+-- | @BCL.pack@
+instance MimeRender MimeOctetStream String where mimeRender _ = BCL.pack
+
+instance MimeRender MimeMultipartFormData BL.ByteString where mimeRender _ = P.id
+
+instance MimeRender MimeMultipartFormData Bool where mimeRender _ = mimeRenderDefaultMultipartFormData
+instance MimeRender MimeMultipartFormData Char where mimeRender _ = mimeRenderDefaultMultipartFormData
+instance MimeRender MimeMultipartFormData Double where mimeRender _ = mimeRenderDefaultMultipartFormData
+instance MimeRender MimeMultipartFormData Float where mimeRender _ = mimeRenderDefaultMultipartFormData
+instance MimeRender MimeMultipartFormData Int where mimeRender _ = mimeRenderDefaultMultipartFormData
+instance MimeRender MimeMultipartFormData Integer where mimeRender _ = mimeRenderDefaultMultipartFormData
+instance MimeRender MimeMultipartFormData String where mimeRender _ = mimeRenderDefaultMultipartFormData
+instance MimeRender MimeMultipartFormData T.Text where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | @P.Right . P.const NoContent@
+instance MimeRender MimeNoContent NoContent where mimeRender _ = P.const BCL.empty
+
+
+-- * MimeUnrender Class
+
+class MimeType mtype => MimeUnrender mtype o where
+    mimeUnrender :: P.Proxy mtype -> BL.ByteString -> P.Either String o
+    mimeUnrender' :: mtype -> BL.ByteString -> P.Either String o
+    mimeUnrender' _ x = mimeUnrender (P.Proxy :: P.Proxy mtype) x
+
+-- Default MimeUnrender Instances
+
+-- | @A.eitherDecode@
+instance A.FromJSON a => MimeUnrender MimeJSON a where mimeUnrender _ = A.eitherDecode
+-- | @P.left T.unpack . WH.urlDecodeAsForm@
+instance WH.FromForm a => MimeUnrender MimeFormUrlEncoded a where mimeUnrender _ = P.left T.unpack . WH.urlDecodeAsForm
+-- | @P.Right . P.id@
+
+instance MimeUnrender MimePlainText BL.ByteString where mimeUnrender _ = P.Right . P.id
+-- | @P.left P.show . TL.decodeUtf8'@
+instance MimeUnrender MimePlainText T.Text where mimeUnrender _ = P.left P.show . T.decodeUtf8' . BL.toStrict
+-- | @P.Right . BCL.unpack@
+instance MimeUnrender MimePlainText String where mimeUnrender _ = P.Right . BCL.unpack
+
+-- | @P.Right . P.id@
+instance MimeUnrender MimeOctetStream BL.ByteString where mimeUnrender _ = P.Right . P.id
+-- | @P.left P.show . T.decodeUtf8' . BL.toStrict@
+instance MimeUnrender MimeOctetStream T.Text where mimeUnrender _ = P.left P.show . T.decodeUtf8' . BL.toStrict
+-- | @P.Right . BCL.unpack@
+instance MimeUnrender MimeOctetStream String where mimeUnrender _ = P.Right . BCL.unpack
+
+-- | @P.Right . P.const NoContent@
+instance MimeUnrender MimeNoContent NoContent where mimeUnrender _ = P.Right . P.const NoContent
+
+
+-- * Custom Mime Types
+
+-- ** MimeTextHtml
+
+data MimeTextHtml = MimeTextHtml deriving (P.Typeable)
+
+-- | @text/html@
+instance MimeType MimeTextHtml where
+  mimeType _ = Just $ P.fromString "text/html"
+-- instance MimeRender MimeTextHtml T.Text where mimeRender _ = undefined
+-- instance MimeUnrender MimeTextHtml T.Text where mimeUnrender _ = undefined
+
diff --git a/lib/Gitea/Model.hs b/lib/Gitea/Model.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/Model.hs
@@ -0,0 +1,9243 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.Model
+-}
+
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveFoldable #-}
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DeriveTraversable #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches -fno-warn-unused-binds -fno-warn-unused-imports #-}
+
+module Gitea.Model where
+
+import Gitea.Core
+import Gitea.MimeTypes
+
+import Data.Aeson ((.:),(.:!),(.:?),(.=))
+
+import qualified Control.Arrow as P (left)
+import qualified Data.Aeson as A
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Base64 as B64
+import qualified Data.ByteString.Char8 as BC
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.Data as P (Typeable, TypeRep, typeOf, typeRep)
+import qualified Data.Foldable as P
+import qualified Data.HashMap.Lazy as HM
+import qualified Data.Map as Map
+import qualified Data.Maybe as P
+import qualified Data.Set as Set
+import qualified Data.Text as T
+import qualified Data.Text.Encoding as T
+import qualified Data.Time as TI
+import qualified Lens.Micro as L
+import qualified Web.FormUrlEncoded as WH
+import qualified Web.HttpApiData as WH
+
+import Control.Applicative ((<|>))
+import Control.Applicative (Alternative)
+import Data.Function ((&))
+import Data.Monoid ((<>))
+import Data.Text (Text)
+import Prelude (($),(/=),(.),(<$>),(<*>),(>>=),(=<<),Maybe(..),Bool(..),Char,Double,FilePath,Float,Int,Integer,String,fmap,undefined,mempty,maybe,pure,Monad,Applicative,Functor)
+
+import qualified Prelude as P
+
+
+
+-- * Parameter newtypes
+
+
+-- ** All
+newtype All = All { unAll :: Bool } deriving (P.Eq, P.Show)
+
+-- ** AllText
+newtype AllText = AllText { unAllText :: Text } deriving (P.Eq, P.Show)
+
+-- ** Archive
+newtype Archive = Archive { unArchive :: Text } deriving (P.Eq, P.Show)
+
+-- ** Archived
+newtype Archived = Archived { unArchived :: Bool } deriving (P.Eq, P.Show)
+
+-- ** Assigned
+newtype Assigned = Assigned { unAssigned :: Bool } deriving (P.Eq, P.Show)
+
+-- ** AssignedBy
+newtype AssignedBy = AssignedBy { unAssignedBy :: Text } deriving (P.Eq, P.Show)
+
+-- ** Attachment2
+newtype Attachment2 = Attachment2 { unAttachment2 :: FilePath } deriving (P.Eq, P.Show)
+
+-- ** AttachmentId
+newtype AttachmentId = AttachmentId { unAttachmentId :: Integer } deriving (P.Eq, P.Show)
+
+-- ** Before
+newtype Before = Before { unBefore :: DateTime } deriving (P.Eq, P.Show)
+
+-- ** Body
+newtype Body = Body { unBody :: Text } deriving (P.Eq, P.Show, A.ToJSON)
+
+-- ** Branch2
+newtype Branch2 = Branch2 { unBranch2 :: Text } deriving (P.Eq, P.Show)
+
+-- ** Collaborator
+newtype Collaborator = Collaborator { unCollaborator :: Text } deriving (P.Eq, P.Show)
+
+-- ** Created
+newtype Created = Created { unCreated :: Bool } deriving (P.Eq, P.Show)
+
+-- ** CreatedBy
+newtype CreatedBy = CreatedBy { unCreatedBy :: Text } deriving (P.Eq, P.Show)
+
+-- ** DiffType
+newtype DiffType = DiffType { unDiffType :: E'DiffType } deriving (P.Eq, P.Show)
+
+-- ** Draft
+newtype Draft = Draft { unDraft :: Bool } deriving (P.Eq, P.Show)
+
+-- ** Exclusive
+newtype Exclusive = Exclusive { unExclusive :: Bool } deriving (P.Eq, P.Show)
+
+-- ** Filepath
+newtype Filepath = Filepath { unFilepath :: Text } deriving (P.Eq, P.Show)
+
+-- ** Fingerprint
+newtype Fingerprint = Fingerprint { unFingerprint :: Text } deriving (P.Eq, P.Show)
+
+-- ** Id
+newtype Id = Id { unId :: Integer } deriving (P.Eq, P.Show)
+
+-- ** IdInt
+newtype IdInt = IdInt { unIdInt :: Int } deriving (P.Eq, P.Show)
+
+-- ** IdText
+newtype IdText = IdText { unIdText :: Text } deriving (P.Eq, P.Show)
+
+-- ** IncludeDesc
+newtype IncludeDesc = IncludeDesc { unIncludeDesc :: Bool } deriving (P.Eq, P.Show)
+
+-- ** Index
+newtype Index = Index { unIndex :: Integer } deriving (P.Eq, P.Show)
+
+-- ** IndexInt
+newtype IndexInt = IndexInt { unIndexInt :: Int } deriving (P.Eq, P.Show)
+
+-- ** IsPrivate
+newtype IsPrivate = IsPrivate { unIsPrivate :: Bool } deriving (P.Eq, P.Show)
+
+-- ** KeyId
+newtype KeyId = KeyId { unKeyId :: Int } deriving (P.Eq, P.Show)
+
+-- ** Labels
+newtype Labels = Labels { unLabels :: Text } deriving (P.Eq, P.Show)
+
+-- ** LabelsInteger
+newtype LabelsInteger = LabelsInteger { unLabelsInteger :: [Integer] } deriving (P.Eq, P.Show)
+
+-- ** LastReadAt
+newtype LastReadAt = LastReadAt { unLastReadAt :: DateTime } deriving (P.Eq, P.Show)
+
+-- ** Limit
+newtype Limit = Limit { unLimit :: Int } deriving (P.Eq, P.Show)
+
+-- ** Mentioned
+newtype Mentioned = Mentioned { unMentioned :: Bool } deriving (P.Eq, P.Show)
+
+-- ** MentionedBy
+newtype MentionedBy = MentionedBy { unMentionedBy :: Text } deriving (P.Eq, P.Show)
+
+-- ** Milestone2
+newtype Milestone2 = Milestone2 { unMilestone2 :: Integer } deriving (P.Eq, P.Show)
+
+-- ** Milestones
+newtype Milestones = Milestones { unMilestones :: Text } deriving (P.Eq, P.Show)
+
+-- ** Mode
+newtype Mode = Mode { unMode :: Text } deriving (P.Eq, P.Show)
+
+-- ** Name
+newtype Name = Name { unName :: Text } deriving (P.Eq, P.Show)
+
+-- ** Order
+newtype Order = Order { unOrder :: Text } deriving (P.Eq, P.Show)
+
+-- ** Org
+newtype Org = Org { unOrg :: Text } deriving (P.Eq, P.Show)
+
+-- ** Owner
+newtype Owner = Owner { unOwner :: Text } deriving (P.Eq, P.Show)
+
+-- ** Page
+newtype Page = Page { unPage :: Int } deriving (P.Eq, P.Show)
+
+-- ** PageName
+newtype PageName = PageName { unPageName :: Text } deriving (P.Eq, P.Show)
+
+-- ** ParamBinary
+newtype ParamBinary = ParamBinary { unParamBinary :: Bool } deriving (P.Eq, P.Show)
+
+-- ** ParamType
+newtype ParamType = ParamType { unParamType :: E'Type2 } deriving (P.Eq, P.Show)
+
+-- ** ParamType2
+newtype ParamType2 = ParamType2 { unParamType2 :: E'Type3 } deriving (P.Eq, P.Show)
+
+-- ** ParamTypeText
+newtype ParamTypeText = ParamTypeText { unParamTypeText :: Text } deriving (P.Eq, P.Show)
+
+-- ** Path
+newtype Path = Path { unPath :: Text } deriving (P.Eq, P.Show)
+
+-- ** Pattern
+newtype Pattern = Pattern { unPattern :: Text } deriving (P.Eq, P.Show)
+
+-- ** PerPage
+newtype PerPage = PerPage { unPerPage :: Int } deriving (P.Eq, P.Show)
+
+-- ** PreRelease
+newtype PreRelease = PreRelease { unPreRelease :: Bool } deriving (P.Eq, P.Show)
+
+-- ** PriorityOwnerId
+newtype PriorityOwnerId = PriorityOwnerId { unPriorityOwnerId :: Integer } deriving (P.Eq, P.Show)
+
+-- ** PriorityRepoId
+newtype PriorityRepoId = PriorityRepoId { unPriorityRepoId :: Integer } deriving (P.Eq, P.Show)
+
+-- ** Private
+newtype Private = Private { unPrivate :: Bool } deriving (P.Eq, P.Show)
+
+-- ** Purge
+newtype Purge = Purge { unPurge :: Bool } deriving (P.Eq, P.Show)
+
+-- ** Q
+newtype Q = Q { unQ :: Text } deriving (P.Eq, P.Show)
+
+-- ** Recursive
+newtype Recursive = Recursive { unRecursive :: Bool } deriving (P.Eq, P.Show)
+
+-- ** Ref
+newtype Ref = Ref { unRef :: Text } deriving (P.Eq, P.Show)
+
+-- ** Repo
+newtype Repo = Repo { unRepo :: Text } deriving (P.Eq, P.Show)
+
+-- ** ReviewRequested
+newtype ReviewRequested = ReviewRequested { unReviewRequested :: Bool } deriving (P.Eq, P.Show)
+
+-- ** Sha
+newtype Sha = Sha { unSha :: Text } deriving (P.Eq, P.Show)
+
+-- ** Since
+newtype Since = Since { unSince :: DateTime } deriving (P.Eq, P.Show)
+
+-- ** SkipTo
+newtype SkipTo = SkipTo { unSkipTo :: Text } deriving (P.Eq, P.Show)
+
+-- ** Sort
+newtype Sort = Sort { unSort :: Text } deriving (P.Eq, P.Show)
+
+-- ** Sort2
+newtype Sort2 = Sort2 { unSort2 :: E'Sort } deriving (P.Eq, P.Show)
+
+-- ** Sort3
+newtype Sort3 = Sort3 { unSort3 :: E'Sort2 } deriving (P.Eq, P.Show)
+
+-- ** StarredBy
+newtype StarredBy = StarredBy { unStarredBy :: Integer } deriving (P.Eq, P.Show)
+
+-- ** Stat
+newtype Stat = Stat { unStat :: Bool } deriving (P.Eq, P.Show)
+
+-- ** State
+newtype State = State { unState :: Text } deriving (P.Eq, P.Show)
+
+-- ** State2
+newtype State2 = State2 { unState2 :: E'State2 } deriving (P.Eq, P.Show)
+
+-- ** State3
+newtype State3 = State3 { unState3 :: E'State3 } deriving (P.Eq, P.Show)
+
+-- ** StatusTypes
+newtype StatusTypes = StatusTypes { unStatusTypes :: [Text] } deriving (P.Eq, P.Show)
+
+-- ** Style
+newtype Style = Style { unStyle :: E'Style } deriving (P.Eq, P.Show)
+
+-- ** SubjectType
+newtype SubjectType = SubjectType { unSubjectType :: [E'SubjectType] } deriving (P.Eq, P.Show)
+
+-- ** Tag2
+newtype Tag2 = Tag2 { unTag2 :: Text } deriving (P.Eq, P.Show)
+
+-- ** Target
+newtype Target = Target { unTarget :: Text } deriving (P.Eq, P.Show)
+
+-- ** Task
+newtype Task = Task { unTask :: Text } deriving (P.Eq, P.Show)
+
+-- ** Team2
+newtype Team2 = Team2 { unTeam2 :: Text } deriving (P.Eq, P.Show)
+
+-- ** TeamId
+newtype TeamId = TeamId { unTeamId :: Integer } deriving (P.Eq, P.Show)
+
+-- ** Template
+newtype Template = Template { unTemplate :: Bool } deriving (P.Eq, P.Show)
+
+-- ** TemplateOwner
+newtype TemplateOwner = TemplateOwner { unTemplateOwner :: Text } deriving (P.Eq, P.Show)
+
+-- ** TemplateRepo
+newtype TemplateRepo = TemplateRepo { unTemplateRepo :: Text } deriving (P.Eq, P.Show)
+
+-- ** ToStatus
+newtype ToStatus = ToStatus { unToStatus :: Text } deriving (P.Eq, P.Show)
+
+-- ** Token
+newtype Token = Token { unToken :: Text } deriving (P.Eq, P.Show)
+
+-- ** Topic
+newtype Topic = Topic { unTopic :: Bool } deriving (P.Eq, P.Show)
+
+-- ** TopicText
+newtype TopicText = TopicText { unTopicText :: Text } deriving (P.Eq, P.Show)
+
+-- ** Uid
+newtype Uid = Uid { unUid :: Integer } deriving (P.Eq, P.Show)
+
+-- ** User2
+newtype User2 = User2 { unUser2 :: Text } deriving (P.Eq, P.Show)
+
+-- ** UserId
+newtype UserId = UserId { unUserId :: Int } deriving (P.Eq, P.Show)
+
+-- ** Username
+newtype Username = Username { unUsername :: Text } deriving (P.Eq, P.Show)
+
+-- ** Version
+newtype Version = Version { unVersion :: Text } deriving (P.Eq, P.Show)
+
+-- ** Whitespace
+newtype Whitespace = Whitespace { unWhitespace :: E'Whitespace } deriving (P.Eq, P.Show)
+
+-- * Models
+
+
+-- ** APIError
+-- | APIError
+-- APIError is an api error with a message
+data APIError = APIError
+  { aPIErrorMessage :: !(Maybe Text) -- ^ "message"
+  , aPIErrorUrl :: !(Maybe Text) -- ^ "url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON APIError
+instance A.FromJSON APIError where
+  parseJSON = A.withObject "APIError" $ \o ->
+    APIError
+      <$> (o .:? "message")
+      <*> (o .:? "url")
+
+-- | ToJSON APIError
+instance A.ToJSON APIError where
+  toJSON APIError {..} =
+   _omitNulls
+      [ "message" .= aPIErrorMessage
+      , "url" .= aPIErrorUrl
+      ]
+
+
+-- | Construct a value of type 'APIError' (by applying it's required fields, if any)
+mkAPIError
+  :: APIError
+mkAPIError =
+  APIError
+  { aPIErrorMessage = Nothing
+  , aPIErrorUrl = Nothing
+  }
+
+-- ** AccessToken
+-- | AccessToken
+-- AccessToken represents an API access token.
+-- 
+data AccessToken = AccessToken
+  { accessTokenId :: !(Maybe Integer) -- ^ "id"
+  , accessTokenName :: !(Maybe Text) -- ^ "name"
+  , accessTokenScopes :: !(Maybe [Text]) -- ^ "scopes"
+  , accessTokenSha1 :: !(Maybe Text) -- ^ "sha1"
+  , accessTokenTokenLastEight :: !(Maybe Text) -- ^ "token_last_eight"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON AccessToken
+instance A.FromJSON AccessToken where
+  parseJSON = A.withObject "AccessToken" $ \o ->
+    AccessToken
+      <$> (o .:? "id")
+      <*> (o .:? "name")
+      <*> (o .:? "scopes")
+      <*> (o .:? "sha1")
+      <*> (o .:? "token_last_eight")
+
+-- | ToJSON AccessToken
+instance A.ToJSON AccessToken where
+  toJSON AccessToken {..} =
+   _omitNulls
+      [ "id" .= accessTokenId
+      , "name" .= accessTokenName
+      , "scopes" .= accessTokenScopes
+      , "sha1" .= accessTokenSha1
+      , "token_last_eight" .= accessTokenTokenLastEight
+      ]
+
+
+-- | Construct a value of type 'AccessToken' (by applying it's required fields, if any)
+mkAccessToken
+  :: AccessToken
+mkAccessToken =
+  AccessToken
+  { accessTokenId = Nothing
+  , accessTokenName = Nothing
+  , accessTokenScopes = Nothing
+  , accessTokenSha1 = Nothing
+  , accessTokenTokenLastEight = Nothing
+  }
+
+-- ** ActivityPub
+-- | ActivityPub
+-- ActivityPub type
+data ActivityPub = ActivityPub
+  { activityPubContext :: !(Maybe Text) -- ^ "@context"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON ActivityPub
+instance A.FromJSON ActivityPub where
+  parseJSON = A.withObject "ActivityPub" $ \o ->
+    ActivityPub
+      <$> (o .:? "@context")
+
+-- | ToJSON ActivityPub
+instance A.ToJSON ActivityPub where
+  toJSON ActivityPub {..} =
+   _omitNulls
+      [ "@context" .= activityPubContext
+      ]
+
+
+-- | Construct a value of type 'ActivityPub' (by applying it's required fields, if any)
+mkActivityPub
+  :: ActivityPub
+mkActivityPub =
+  ActivityPub
+  { activityPubContext = Nothing
+  }
+
+-- ** AddCollaboratorOption
+-- | AddCollaboratorOption
+-- AddCollaboratorOption options when adding a user as a collaborator of a repository
+data AddCollaboratorOption = AddCollaboratorOption
+  { addCollaboratorOptionPermission :: !(Maybe Text) -- ^ "permission"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON AddCollaboratorOption
+instance A.FromJSON AddCollaboratorOption where
+  parseJSON = A.withObject "AddCollaboratorOption" $ \o ->
+    AddCollaboratorOption
+      <$> (o .:? "permission")
+
+-- | ToJSON AddCollaboratorOption
+instance A.ToJSON AddCollaboratorOption where
+  toJSON AddCollaboratorOption {..} =
+   _omitNulls
+      [ "permission" .= addCollaboratorOptionPermission
+      ]
+
+
+-- | Construct a value of type 'AddCollaboratorOption' (by applying it's required fields, if any)
+mkAddCollaboratorOption
+  :: AddCollaboratorOption
+mkAddCollaboratorOption =
+  AddCollaboratorOption
+  { addCollaboratorOptionPermission = Nothing
+  }
+
+-- ** AddTimeOption
+-- | AddTimeOption
+-- AddTimeOption options for adding time to an issue
+data AddTimeOption = AddTimeOption
+  { addTimeOptionCreated :: !(Maybe DateTime) -- ^ "created"
+  , addTimeOptionTime :: !(Integer) -- ^ /Required/ "time" - time in seconds
+  , addTimeOptionUserName :: !(Maybe Text) -- ^ "user_name" - User who spent the time (optional)
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON AddTimeOption
+instance A.FromJSON AddTimeOption where
+  parseJSON = A.withObject "AddTimeOption" $ \o ->
+    AddTimeOption
+      <$> (o .:? "created")
+      <*> (o .:  "time")
+      <*> (o .:? "user_name")
+
+-- | ToJSON AddTimeOption
+instance A.ToJSON AddTimeOption where
+  toJSON AddTimeOption {..} =
+   _omitNulls
+      [ "created" .= addTimeOptionCreated
+      , "time" .= addTimeOptionTime
+      , "user_name" .= addTimeOptionUserName
+      ]
+
+
+-- | Construct a value of type 'AddTimeOption' (by applying it's required fields, if any)
+mkAddTimeOption
+  :: Integer -- ^ 'addTimeOptionTime': time in seconds
+  -> AddTimeOption
+mkAddTimeOption addTimeOptionTime =
+  AddTimeOption
+  { addTimeOptionCreated = Nothing
+  , addTimeOptionTime
+  , addTimeOptionUserName = Nothing
+  }
+
+-- ** AnnotatedTag
+-- | AnnotatedTag
+-- AnnotatedTag represents an annotated tag
+data AnnotatedTag = AnnotatedTag
+  { annotatedTagMessage :: !(Maybe Text) -- ^ "message"
+  , annotatedTagObject :: !(Maybe AnnotatedTagObject) -- ^ "object"
+  , annotatedTagSha :: !(Maybe Text) -- ^ "sha"
+  , annotatedTagTag :: !(Maybe Text) -- ^ "tag"
+  , annotatedTagTagger :: !(Maybe CommitUser) -- ^ "tagger"
+  , annotatedTagUrl :: !(Maybe Text) -- ^ "url"
+  , annotatedTagVerification :: !(Maybe PayloadCommitVerification) -- ^ "verification"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON AnnotatedTag
+instance A.FromJSON AnnotatedTag where
+  parseJSON = A.withObject "AnnotatedTag" $ \o ->
+    AnnotatedTag
+      <$> (o .:? "message")
+      <*> (o .:? "object")
+      <*> (o .:? "sha")
+      <*> (o .:? "tag")
+      <*> (o .:? "tagger")
+      <*> (o .:? "url")
+      <*> (o .:? "verification")
+
+-- | ToJSON AnnotatedTag
+instance A.ToJSON AnnotatedTag where
+  toJSON AnnotatedTag {..} =
+   _omitNulls
+      [ "message" .= annotatedTagMessage
+      , "object" .= annotatedTagObject
+      , "sha" .= annotatedTagSha
+      , "tag" .= annotatedTagTag
+      , "tagger" .= annotatedTagTagger
+      , "url" .= annotatedTagUrl
+      , "verification" .= annotatedTagVerification
+      ]
+
+
+-- | Construct a value of type 'AnnotatedTag' (by applying it's required fields, if any)
+mkAnnotatedTag
+  :: AnnotatedTag
+mkAnnotatedTag =
+  AnnotatedTag
+  { annotatedTagMessage = Nothing
+  , annotatedTagObject = Nothing
+  , annotatedTagSha = Nothing
+  , annotatedTagTag = Nothing
+  , annotatedTagTagger = Nothing
+  , annotatedTagUrl = Nothing
+  , annotatedTagVerification = Nothing
+  }
+
+-- ** AnnotatedTagObject
+-- | AnnotatedTagObject
+-- AnnotatedTagObject contains meta information of the tag object
+data AnnotatedTagObject = AnnotatedTagObject
+  { annotatedTagObjectSha :: !(Maybe Text) -- ^ "sha"
+  , annotatedTagObjectType :: !(Maybe Text) -- ^ "type"
+  , annotatedTagObjectUrl :: !(Maybe Text) -- ^ "url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON AnnotatedTagObject
+instance A.FromJSON AnnotatedTagObject where
+  parseJSON = A.withObject "AnnotatedTagObject" $ \o ->
+    AnnotatedTagObject
+      <$> (o .:? "sha")
+      <*> (o .:? "type")
+      <*> (o .:? "url")
+
+-- | ToJSON AnnotatedTagObject
+instance A.ToJSON AnnotatedTagObject where
+  toJSON AnnotatedTagObject {..} =
+   _omitNulls
+      [ "sha" .= annotatedTagObjectSha
+      , "type" .= annotatedTagObjectType
+      , "url" .= annotatedTagObjectUrl
+      ]
+
+
+-- | Construct a value of type 'AnnotatedTagObject' (by applying it's required fields, if any)
+mkAnnotatedTagObject
+  :: AnnotatedTagObject
+mkAnnotatedTagObject =
+  AnnotatedTagObject
+  { annotatedTagObjectSha = Nothing
+  , annotatedTagObjectType = Nothing
+  , annotatedTagObjectUrl = Nothing
+  }
+
+-- ** Attachment
+-- | Attachment
+-- Attachment a generic attachment
+data Attachment = Attachment
+  { attachmentBrowserDownloadUrl :: !(Maybe Text) -- ^ "browser_download_url"
+  , attachmentCreatedAt :: !(Maybe DateTime) -- ^ "created_at"
+  , attachmentDownloadCount :: !(Maybe Integer) -- ^ "download_count"
+  , attachmentId :: !(Maybe Integer) -- ^ "id"
+  , attachmentName :: !(Maybe Text) -- ^ "name"
+  , attachmentSize :: !(Maybe Integer) -- ^ "size"
+  , attachmentUuid :: !(Maybe Text) -- ^ "uuid"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Attachment
+instance A.FromJSON Attachment where
+  parseJSON = A.withObject "Attachment" $ \o ->
+    Attachment
+      <$> (o .:? "browser_download_url")
+      <*> (o .:? "created_at")
+      <*> (o .:? "download_count")
+      <*> (o .:? "id")
+      <*> (o .:? "name")
+      <*> (o .:? "size")
+      <*> (o .:? "uuid")
+
+-- | ToJSON Attachment
+instance A.ToJSON Attachment where
+  toJSON Attachment {..} =
+   _omitNulls
+      [ "browser_download_url" .= attachmentBrowserDownloadUrl
+      , "created_at" .= attachmentCreatedAt
+      , "download_count" .= attachmentDownloadCount
+      , "id" .= attachmentId
+      , "name" .= attachmentName
+      , "size" .= attachmentSize
+      , "uuid" .= attachmentUuid
+      ]
+
+
+-- | Construct a value of type 'Attachment' (by applying it's required fields, if any)
+mkAttachment
+  :: Attachment
+mkAttachment =
+  Attachment
+  { attachmentBrowserDownloadUrl = Nothing
+  , attachmentCreatedAt = Nothing
+  , attachmentDownloadCount = Nothing
+  , attachmentId = Nothing
+  , attachmentName = Nothing
+  , attachmentSize = Nothing
+  , attachmentUuid = Nothing
+  }
+
+-- ** Branch
+-- | Branch
+-- Branch represents a repository branch
+data Branch = Branch
+  { branchCommit :: !(Maybe PayloadCommit) -- ^ "commit"
+  , branchEffectiveBranchProtectionName :: !(Maybe Text) -- ^ "effective_branch_protection_name"
+  , branchEnableStatusCheck :: !(Maybe Bool) -- ^ "enable_status_check"
+  , branchName :: !(Maybe Text) -- ^ "name"
+  , branchProtected :: !(Maybe Bool) -- ^ "protected"
+  , branchRequiredApprovals :: !(Maybe Integer) -- ^ "required_approvals"
+  , branchStatusCheckContexts :: !(Maybe [Text]) -- ^ "status_check_contexts"
+  , branchUserCanMerge :: !(Maybe Bool) -- ^ "user_can_merge"
+  , branchUserCanPush :: !(Maybe Bool) -- ^ "user_can_push"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Branch
+instance A.FromJSON Branch where
+  parseJSON = A.withObject "Branch" $ \o ->
+    Branch
+      <$> (o .:? "commit")
+      <*> (o .:? "effective_branch_protection_name")
+      <*> (o .:? "enable_status_check")
+      <*> (o .:? "name")
+      <*> (o .:? "protected")
+      <*> (o .:? "required_approvals")
+      <*> (o .:? "status_check_contexts")
+      <*> (o .:? "user_can_merge")
+      <*> (o .:? "user_can_push")
+
+-- | ToJSON Branch
+instance A.ToJSON Branch where
+  toJSON Branch {..} =
+   _omitNulls
+      [ "commit" .= branchCommit
+      , "effective_branch_protection_name" .= branchEffectiveBranchProtectionName
+      , "enable_status_check" .= branchEnableStatusCheck
+      , "name" .= branchName
+      , "protected" .= branchProtected
+      , "required_approvals" .= branchRequiredApprovals
+      , "status_check_contexts" .= branchStatusCheckContexts
+      , "user_can_merge" .= branchUserCanMerge
+      , "user_can_push" .= branchUserCanPush
+      ]
+
+
+-- | Construct a value of type 'Branch' (by applying it's required fields, if any)
+mkBranch
+  :: Branch
+mkBranch =
+  Branch
+  { branchCommit = Nothing
+  , branchEffectiveBranchProtectionName = Nothing
+  , branchEnableStatusCheck = Nothing
+  , branchName = Nothing
+  , branchProtected = Nothing
+  , branchRequiredApprovals = Nothing
+  , branchStatusCheckContexts = Nothing
+  , branchUserCanMerge = Nothing
+  , branchUserCanPush = Nothing
+  }
+
+-- ** BranchProtection
+-- | BranchProtection
+-- BranchProtection represents a branch protection for a repository
+data BranchProtection = BranchProtection
+  { branchProtectionApprovalsWhitelistTeams :: !(Maybe [Text]) -- ^ "approvals_whitelist_teams"
+  , branchProtectionApprovalsWhitelistUsername :: !(Maybe [Text]) -- ^ "approvals_whitelist_username"
+  , branchProtectionBlockOnOfficialReviewRequests :: !(Maybe Bool) -- ^ "block_on_official_review_requests"
+  , branchProtectionBlockOnOutdatedBranch :: !(Maybe Bool) -- ^ "block_on_outdated_branch"
+  , branchProtectionBlockOnRejectedReviews :: !(Maybe Bool) -- ^ "block_on_rejected_reviews"
+  , branchProtectionBranchName :: !(Maybe Text) -- ^ "branch_name" - Deprecated: true
+  , branchProtectionCreatedAt :: !(Maybe DateTime) -- ^ "created_at"
+  , branchProtectionDismissStaleApprovals :: !(Maybe Bool) -- ^ "dismiss_stale_approvals"
+  , branchProtectionEnableApprovalsWhitelist :: !(Maybe Bool) -- ^ "enable_approvals_whitelist"
+  , branchProtectionEnableMergeWhitelist :: !(Maybe Bool) -- ^ "enable_merge_whitelist"
+  , branchProtectionEnablePush :: !(Maybe Bool) -- ^ "enable_push"
+  , branchProtectionEnablePushWhitelist :: !(Maybe Bool) -- ^ "enable_push_whitelist"
+  , branchProtectionEnableStatusCheck :: !(Maybe Bool) -- ^ "enable_status_check"
+  , branchProtectionMergeWhitelistTeams :: !(Maybe [Text]) -- ^ "merge_whitelist_teams"
+  , branchProtectionMergeWhitelistUsernames :: !(Maybe [Text]) -- ^ "merge_whitelist_usernames"
+  , branchProtectionProtectedFilePatterns :: !(Maybe Text) -- ^ "protected_file_patterns"
+  , branchProtectionPushWhitelistDeployKeys :: !(Maybe Bool) -- ^ "push_whitelist_deploy_keys"
+  , branchProtectionPushWhitelistTeams :: !(Maybe [Text]) -- ^ "push_whitelist_teams"
+  , branchProtectionPushWhitelistUsernames :: !(Maybe [Text]) -- ^ "push_whitelist_usernames"
+  , branchProtectionRequireSignedCommits :: !(Maybe Bool) -- ^ "require_signed_commits"
+  , branchProtectionRequiredApprovals :: !(Maybe Integer) -- ^ "required_approvals"
+  , branchProtectionRuleName :: !(Maybe Text) -- ^ "rule_name"
+  , branchProtectionStatusCheckContexts :: !(Maybe [Text]) -- ^ "status_check_contexts"
+  , branchProtectionUnprotectedFilePatterns :: !(Maybe Text) -- ^ "unprotected_file_patterns"
+  , branchProtectionUpdatedAt :: !(Maybe DateTime) -- ^ "updated_at"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON BranchProtection
+instance A.FromJSON BranchProtection where
+  parseJSON = A.withObject "BranchProtection" $ \o ->
+    BranchProtection
+      <$> (o .:? "approvals_whitelist_teams")
+      <*> (o .:? "approvals_whitelist_username")
+      <*> (o .:? "block_on_official_review_requests")
+      <*> (o .:? "block_on_outdated_branch")
+      <*> (o .:? "block_on_rejected_reviews")
+      <*> (o .:? "branch_name")
+      <*> (o .:? "created_at")
+      <*> (o .:? "dismiss_stale_approvals")
+      <*> (o .:? "enable_approvals_whitelist")
+      <*> (o .:? "enable_merge_whitelist")
+      <*> (o .:? "enable_push")
+      <*> (o .:? "enable_push_whitelist")
+      <*> (o .:? "enable_status_check")
+      <*> (o .:? "merge_whitelist_teams")
+      <*> (o .:? "merge_whitelist_usernames")
+      <*> (o .:? "protected_file_patterns")
+      <*> (o .:? "push_whitelist_deploy_keys")
+      <*> (o .:? "push_whitelist_teams")
+      <*> (o .:? "push_whitelist_usernames")
+      <*> (o .:? "require_signed_commits")
+      <*> (o .:? "required_approvals")
+      <*> (o .:? "rule_name")
+      <*> (o .:? "status_check_contexts")
+      <*> (o .:? "unprotected_file_patterns")
+      <*> (o .:? "updated_at")
+
+-- | ToJSON BranchProtection
+instance A.ToJSON BranchProtection where
+  toJSON BranchProtection {..} =
+   _omitNulls
+      [ "approvals_whitelist_teams" .= branchProtectionApprovalsWhitelistTeams
+      , "approvals_whitelist_username" .= branchProtectionApprovalsWhitelistUsername
+      , "block_on_official_review_requests" .= branchProtectionBlockOnOfficialReviewRequests
+      , "block_on_outdated_branch" .= branchProtectionBlockOnOutdatedBranch
+      , "block_on_rejected_reviews" .= branchProtectionBlockOnRejectedReviews
+      , "branch_name" .= branchProtectionBranchName
+      , "created_at" .= branchProtectionCreatedAt
+      , "dismiss_stale_approvals" .= branchProtectionDismissStaleApprovals
+      , "enable_approvals_whitelist" .= branchProtectionEnableApprovalsWhitelist
+      , "enable_merge_whitelist" .= branchProtectionEnableMergeWhitelist
+      , "enable_push" .= branchProtectionEnablePush
+      , "enable_push_whitelist" .= branchProtectionEnablePushWhitelist
+      , "enable_status_check" .= branchProtectionEnableStatusCheck
+      , "merge_whitelist_teams" .= branchProtectionMergeWhitelistTeams
+      , "merge_whitelist_usernames" .= branchProtectionMergeWhitelistUsernames
+      , "protected_file_patterns" .= branchProtectionProtectedFilePatterns
+      , "push_whitelist_deploy_keys" .= branchProtectionPushWhitelistDeployKeys
+      , "push_whitelist_teams" .= branchProtectionPushWhitelistTeams
+      , "push_whitelist_usernames" .= branchProtectionPushWhitelistUsernames
+      , "require_signed_commits" .= branchProtectionRequireSignedCommits
+      , "required_approvals" .= branchProtectionRequiredApprovals
+      , "rule_name" .= branchProtectionRuleName
+      , "status_check_contexts" .= branchProtectionStatusCheckContexts
+      , "unprotected_file_patterns" .= branchProtectionUnprotectedFilePatterns
+      , "updated_at" .= branchProtectionUpdatedAt
+      ]
+
+
+-- | Construct a value of type 'BranchProtection' (by applying it's required fields, if any)
+mkBranchProtection
+  :: BranchProtection
+mkBranchProtection =
+  BranchProtection
+  { branchProtectionApprovalsWhitelistTeams = Nothing
+  , branchProtectionApprovalsWhitelistUsername = Nothing
+  , branchProtectionBlockOnOfficialReviewRequests = Nothing
+  , branchProtectionBlockOnOutdatedBranch = Nothing
+  , branchProtectionBlockOnRejectedReviews = Nothing
+  , branchProtectionBranchName = Nothing
+  , branchProtectionCreatedAt = Nothing
+  , branchProtectionDismissStaleApprovals = Nothing
+  , branchProtectionEnableApprovalsWhitelist = Nothing
+  , branchProtectionEnableMergeWhitelist = Nothing
+  , branchProtectionEnablePush = Nothing
+  , branchProtectionEnablePushWhitelist = Nothing
+  , branchProtectionEnableStatusCheck = Nothing
+  , branchProtectionMergeWhitelistTeams = Nothing
+  , branchProtectionMergeWhitelistUsernames = Nothing
+  , branchProtectionProtectedFilePatterns = Nothing
+  , branchProtectionPushWhitelistDeployKeys = Nothing
+  , branchProtectionPushWhitelistTeams = Nothing
+  , branchProtectionPushWhitelistUsernames = Nothing
+  , branchProtectionRequireSignedCommits = Nothing
+  , branchProtectionRequiredApprovals = Nothing
+  , branchProtectionRuleName = Nothing
+  , branchProtectionStatusCheckContexts = Nothing
+  , branchProtectionUnprotectedFilePatterns = Nothing
+  , branchProtectionUpdatedAt = Nothing
+  }
+
+-- ** ChangedFile
+-- | ChangedFile
+-- ChangedFile store information about files affected by the pull request
+data ChangedFile = ChangedFile
+  { changedFileAdditions :: !(Maybe Integer) -- ^ "additions"
+  , changedFileChanges :: !(Maybe Integer) -- ^ "changes"
+  , changedFileContentsUrl :: !(Maybe Text) -- ^ "contents_url"
+  , changedFileDeletions :: !(Maybe Integer) -- ^ "deletions"
+  , changedFileFilename :: !(Maybe Text) -- ^ "filename"
+  , changedFileHtmlUrl :: !(Maybe Text) -- ^ "html_url"
+  , changedFilePreviousFilename :: !(Maybe Text) -- ^ "previous_filename"
+  , changedFileRawUrl :: !(Maybe Text) -- ^ "raw_url"
+  , changedFileStatus :: !(Maybe Text) -- ^ "status"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON ChangedFile
+instance A.FromJSON ChangedFile where
+  parseJSON = A.withObject "ChangedFile" $ \o ->
+    ChangedFile
+      <$> (o .:? "additions")
+      <*> (o .:? "changes")
+      <*> (o .:? "contents_url")
+      <*> (o .:? "deletions")
+      <*> (o .:? "filename")
+      <*> (o .:? "html_url")
+      <*> (o .:? "previous_filename")
+      <*> (o .:? "raw_url")
+      <*> (o .:? "status")
+
+-- | ToJSON ChangedFile
+instance A.ToJSON ChangedFile where
+  toJSON ChangedFile {..} =
+   _omitNulls
+      [ "additions" .= changedFileAdditions
+      , "changes" .= changedFileChanges
+      , "contents_url" .= changedFileContentsUrl
+      , "deletions" .= changedFileDeletions
+      , "filename" .= changedFileFilename
+      , "html_url" .= changedFileHtmlUrl
+      , "previous_filename" .= changedFilePreviousFilename
+      , "raw_url" .= changedFileRawUrl
+      , "status" .= changedFileStatus
+      ]
+
+
+-- | Construct a value of type 'ChangedFile' (by applying it's required fields, if any)
+mkChangedFile
+  :: ChangedFile
+mkChangedFile =
+  ChangedFile
+  { changedFileAdditions = Nothing
+  , changedFileChanges = Nothing
+  , changedFileContentsUrl = Nothing
+  , changedFileDeletions = Nothing
+  , changedFileFilename = Nothing
+  , changedFileHtmlUrl = Nothing
+  , changedFilePreviousFilename = Nothing
+  , changedFileRawUrl = Nothing
+  , changedFileStatus = Nothing
+  }
+
+-- ** CombinedStatus
+-- | CombinedStatus
+-- CombinedStatus holds the combined state of several statuses for a single commit
+data CombinedStatus = CombinedStatus
+  { combinedStatusCommitUrl :: !(Maybe Text) -- ^ "commit_url"
+  , combinedStatusRepository :: !(Maybe Repository) -- ^ "repository"
+  , combinedStatusSha :: !(Maybe Text) -- ^ "sha"
+  , combinedStatusState :: !(Maybe Text) -- ^ "state" - CommitStatusState holds the state of a CommitStatus It can be \&quot;pending\&quot;, \&quot;success\&quot;, \&quot;error\&quot;, \&quot;failure\&quot;, and \&quot;warning\&quot;
+  , combinedStatusStatuses :: !(Maybe [CommitStatus]) -- ^ "statuses"
+  , combinedStatusTotalCount :: !(Maybe Integer) -- ^ "total_count"
+  , combinedStatusUrl :: !(Maybe Text) -- ^ "url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CombinedStatus
+instance A.FromJSON CombinedStatus where
+  parseJSON = A.withObject "CombinedStatus" $ \o ->
+    CombinedStatus
+      <$> (o .:? "commit_url")
+      <*> (o .:? "repository")
+      <*> (o .:? "sha")
+      <*> (o .:? "state")
+      <*> (o .:? "statuses")
+      <*> (o .:? "total_count")
+      <*> (o .:? "url")
+
+-- | ToJSON CombinedStatus
+instance A.ToJSON CombinedStatus where
+  toJSON CombinedStatus {..} =
+   _omitNulls
+      [ "commit_url" .= combinedStatusCommitUrl
+      , "repository" .= combinedStatusRepository
+      , "sha" .= combinedStatusSha
+      , "state" .= combinedStatusState
+      , "statuses" .= combinedStatusStatuses
+      , "total_count" .= combinedStatusTotalCount
+      , "url" .= combinedStatusUrl
+      ]
+
+
+-- | Construct a value of type 'CombinedStatus' (by applying it's required fields, if any)
+mkCombinedStatus
+  :: CombinedStatus
+mkCombinedStatus =
+  CombinedStatus
+  { combinedStatusCommitUrl = Nothing
+  , combinedStatusRepository = Nothing
+  , combinedStatusSha = Nothing
+  , combinedStatusState = Nothing
+  , combinedStatusStatuses = Nothing
+  , combinedStatusTotalCount = Nothing
+  , combinedStatusUrl = Nothing
+  }
+
+-- ** Comment
+-- | Comment
+-- Comment represents a comment on a commit or issue
+data Comment = Comment
+  { commentAssets :: !(Maybe [Attachment]) -- ^ "assets"
+  , commentBody :: !(Maybe Text) -- ^ "body"
+  , commentCreatedAt :: !(Maybe DateTime) -- ^ "created_at"
+  , commentHtmlUrl :: !(Maybe Text) -- ^ "html_url"
+  , commentId :: !(Maybe Integer) -- ^ "id"
+  , commentIssueUrl :: !(Maybe Text) -- ^ "issue_url"
+  , commentOriginalAuthor :: !(Maybe Text) -- ^ "original_author"
+  , commentOriginalAuthorId :: !(Maybe Integer) -- ^ "original_author_id"
+  , commentPullRequestUrl :: !(Maybe Text) -- ^ "pull_request_url"
+  , commentUpdatedAt :: !(Maybe DateTime) -- ^ "updated_at"
+  , commentUser :: !(Maybe User) -- ^ "user"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Comment
+instance A.FromJSON Comment where
+  parseJSON = A.withObject "Comment" $ \o ->
+    Comment
+      <$> (o .:? "assets")
+      <*> (o .:? "body")
+      <*> (o .:? "created_at")
+      <*> (o .:? "html_url")
+      <*> (o .:? "id")
+      <*> (o .:? "issue_url")
+      <*> (o .:? "original_author")
+      <*> (o .:? "original_author_id")
+      <*> (o .:? "pull_request_url")
+      <*> (o .:? "updated_at")
+      <*> (o .:? "user")
+
+-- | ToJSON Comment
+instance A.ToJSON Comment where
+  toJSON Comment {..} =
+   _omitNulls
+      [ "assets" .= commentAssets
+      , "body" .= commentBody
+      , "created_at" .= commentCreatedAt
+      , "html_url" .= commentHtmlUrl
+      , "id" .= commentId
+      , "issue_url" .= commentIssueUrl
+      , "original_author" .= commentOriginalAuthor
+      , "original_author_id" .= commentOriginalAuthorId
+      , "pull_request_url" .= commentPullRequestUrl
+      , "updated_at" .= commentUpdatedAt
+      , "user" .= commentUser
+      ]
+
+
+-- | Construct a value of type 'Comment' (by applying it's required fields, if any)
+mkComment
+  :: Comment
+mkComment =
+  Comment
+  { commentAssets = Nothing
+  , commentBody = Nothing
+  , commentCreatedAt = Nothing
+  , commentHtmlUrl = Nothing
+  , commentId = Nothing
+  , commentIssueUrl = Nothing
+  , commentOriginalAuthor = Nothing
+  , commentOriginalAuthorId = Nothing
+  , commentPullRequestUrl = Nothing
+  , commentUpdatedAt = Nothing
+  , commentUser = Nothing
+  }
+
+-- ** Commit
+-- | Commit
+-- Commit contains information generated from a Git commit.
+-- 
+data Commit = Commit
+  { commitAuthor :: !(Maybe User) -- ^ "author"
+  , commitCommit :: !(Maybe RepoCommit) -- ^ "commit"
+  , commitCommitter :: !(Maybe User) -- ^ "committer"
+  , commitCreated :: !(Maybe DateTime) -- ^ "created"
+  , commitFiles :: !(Maybe [CommitAffectedFiles]) -- ^ "files"
+  , commitHtmlUrl :: !(Maybe Text) -- ^ "html_url"
+  , commitParents :: !(Maybe [CommitMeta]) -- ^ "parents"
+  , commitSha :: !(Maybe Text) -- ^ "sha"
+  , commitStats :: !(Maybe CommitStats) -- ^ "stats"
+  , commitUrl :: !(Maybe Text) -- ^ "url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Commit
+instance A.FromJSON Commit where
+  parseJSON = A.withObject "Commit" $ \o ->
+    Commit
+      <$> (o .:? "author")
+      <*> (o .:? "commit")
+      <*> (o .:? "committer")
+      <*> (o .:? "created")
+      <*> (o .:? "files")
+      <*> (o .:? "html_url")
+      <*> (o .:? "parents")
+      <*> (o .:? "sha")
+      <*> (o .:? "stats")
+      <*> (o .:? "url")
+
+-- | ToJSON Commit
+instance A.ToJSON Commit where
+  toJSON Commit {..} =
+   _omitNulls
+      [ "author" .= commitAuthor
+      , "commit" .= commitCommit
+      , "committer" .= commitCommitter
+      , "created" .= commitCreated
+      , "files" .= commitFiles
+      , "html_url" .= commitHtmlUrl
+      , "parents" .= commitParents
+      , "sha" .= commitSha
+      , "stats" .= commitStats
+      , "url" .= commitUrl
+      ]
+
+
+-- | Construct a value of type 'Commit' (by applying it's required fields, if any)
+mkCommit
+  :: Commit
+mkCommit =
+  Commit
+  { commitAuthor = Nothing
+  , commitCommit = Nothing
+  , commitCommitter = Nothing
+  , commitCreated = Nothing
+  , commitFiles = Nothing
+  , commitHtmlUrl = Nothing
+  , commitParents = Nothing
+  , commitSha = Nothing
+  , commitStats = Nothing
+  , commitUrl = Nothing
+  }
+
+-- ** CommitAffectedFiles
+-- | CommitAffectedFiles
+-- CommitAffectedFiles store information about files affected by the commit
+data CommitAffectedFiles = CommitAffectedFiles
+  { commitAffectedFilesFilename :: !(Maybe Text) -- ^ "filename"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CommitAffectedFiles
+instance A.FromJSON CommitAffectedFiles where
+  parseJSON = A.withObject "CommitAffectedFiles" $ \o ->
+    CommitAffectedFiles
+      <$> (o .:? "filename")
+
+-- | ToJSON CommitAffectedFiles
+instance A.ToJSON CommitAffectedFiles where
+  toJSON CommitAffectedFiles {..} =
+   _omitNulls
+      [ "filename" .= commitAffectedFilesFilename
+      ]
+
+
+-- | Construct a value of type 'CommitAffectedFiles' (by applying it's required fields, if any)
+mkCommitAffectedFiles
+  :: CommitAffectedFiles
+mkCommitAffectedFiles =
+  CommitAffectedFiles
+  { commitAffectedFilesFilename = Nothing
+  }
+
+-- ** CommitDateOptions
+-- | CommitDateOptions
+-- CommitDateOptions store dates for GIT_AUTHOR_DATE and GIT_COMMITTER_DATE
+data CommitDateOptions = CommitDateOptions
+  { commitDateOptionsAuthor :: !(Maybe DateTime) -- ^ "author"
+  , commitDateOptionsCommitter :: !(Maybe DateTime) -- ^ "committer"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CommitDateOptions
+instance A.FromJSON CommitDateOptions where
+  parseJSON = A.withObject "CommitDateOptions" $ \o ->
+    CommitDateOptions
+      <$> (o .:? "author")
+      <*> (o .:? "committer")
+
+-- | ToJSON CommitDateOptions
+instance A.ToJSON CommitDateOptions where
+  toJSON CommitDateOptions {..} =
+   _omitNulls
+      [ "author" .= commitDateOptionsAuthor
+      , "committer" .= commitDateOptionsCommitter
+      ]
+
+
+-- | Construct a value of type 'CommitDateOptions' (by applying it's required fields, if any)
+mkCommitDateOptions
+  :: CommitDateOptions
+mkCommitDateOptions =
+  CommitDateOptions
+  { commitDateOptionsAuthor = Nothing
+  , commitDateOptionsCommitter = Nothing
+  }
+
+-- ** CommitMeta
+-- | CommitMeta
+-- CommitMeta contains meta information of a commit in terms of API.
+-- 
+data CommitMeta = CommitMeta
+  { commitMetaCreated :: !(Maybe DateTime) -- ^ "created"
+  , commitMetaSha :: !(Maybe Text) -- ^ "sha"
+  , commitMetaUrl :: !(Maybe Text) -- ^ "url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CommitMeta
+instance A.FromJSON CommitMeta where
+  parseJSON = A.withObject "CommitMeta" $ \o ->
+    CommitMeta
+      <$> (o .:? "created")
+      <*> (o .:? "sha")
+      <*> (o .:? "url")
+
+-- | ToJSON CommitMeta
+instance A.ToJSON CommitMeta where
+  toJSON CommitMeta {..} =
+   _omitNulls
+      [ "created" .= commitMetaCreated
+      , "sha" .= commitMetaSha
+      , "url" .= commitMetaUrl
+      ]
+
+
+-- | Construct a value of type 'CommitMeta' (by applying it's required fields, if any)
+mkCommitMeta
+  :: CommitMeta
+mkCommitMeta =
+  CommitMeta
+  { commitMetaCreated = Nothing
+  , commitMetaSha = Nothing
+  , commitMetaUrl = Nothing
+  }
+
+-- ** CommitStats
+-- | CommitStats
+-- CommitStats is statistics for a RepoCommit
+data CommitStats = CommitStats
+  { commitStatsAdditions :: !(Maybe Integer) -- ^ "additions"
+  , commitStatsDeletions :: !(Maybe Integer) -- ^ "deletions"
+  , commitStatsTotal :: !(Maybe Integer) -- ^ "total"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CommitStats
+instance A.FromJSON CommitStats where
+  parseJSON = A.withObject "CommitStats" $ \o ->
+    CommitStats
+      <$> (o .:? "additions")
+      <*> (o .:? "deletions")
+      <*> (o .:? "total")
+
+-- | ToJSON CommitStats
+instance A.ToJSON CommitStats where
+  toJSON CommitStats {..} =
+   _omitNulls
+      [ "additions" .= commitStatsAdditions
+      , "deletions" .= commitStatsDeletions
+      , "total" .= commitStatsTotal
+      ]
+
+
+-- | Construct a value of type 'CommitStats' (by applying it's required fields, if any)
+mkCommitStats
+  :: CommitStats
+mkCommitStats =
+  CommitStats
+  { commitStatsAdditions = Nothing
+  , commitStatsDeletions = Nothing
+  , commitStatsTotal = Nothing
+  }
+
+-- ** CommitStatus
+-- | CommitStatus
+-- CommitStatus holds a single status of a single Commit
+data CommitStatus = CommitStatus
+  { commitStatusContext :: !(Maybe Text) -- ^ "context"
+  , commitStatusCreatedAt :: !(Maybe DateTime) -- ^ "created_at"
+  , commitStatusCreator :: !(Maybe User) -- ^ "creator"
+  , commitStatusDescription :: !(Maybe Text) -- ^ "description"
+  , commitStatusId :: !(Maybe Integer) -- ^ "id"
+  , commitStatusStatus :: !(Maybe Text) -- ^ "status" - CommitStatusState holds the state of a CommitStatus It can be \&quot;pending\&quot;, \&quot;success\&quot;, \&quot;error\&quot;, \&quot;failure\&quot;, and \&quot;warning\&quot;
+  , commitStatusTargetUrl :: !(Maybe Text) -- ^ "target_url"
+  , commitStatusUpdatedAt :: !(Maybe DateTime) -- ^ "updated_at"
+  , commitStatusUrl :: !(Maybe Text) -- ^ "url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CommitStatus
+instance A.FromJSON CommitStatus where
+  parseJSON = A.withObject "CommitStatus" $ \o ->
+    CommitStatus
+      <$> (o .:? "context")
+      <*> (o .:? "created_at")
+      <*> (o .:? "creator")
+      <*> (o .:? "description")
+      <*> (o .:? "id")
+      <*> (o .:? "status")
+      <*> (o .:? "target_url")
+      <*> (o .:? "updated_at")
+      <*> (o .:? "url")
+
+-- | ToJSON CommitStatus
+instance A.ToJSON CommitStatus where
+  toJSON CommitStatus {..} =
+   _omitNulls
+      [ "context" .= commitStatusContext
+      , "created_at" .= commitStatusCreatedAt
+      , "creator" .= commitStatusCreator
+      , "description" .= commitStatusDescription
+      , "id" .= commitStatusId
+      , "status" .= commitStatusStatus
+      , "target_url" .= commitStatusTargetUrl
+      , "updated_at" .= commitStatusUpdatedAt
+      , "url" .= commitStatusUrl
+      ]
+
+
+-- | Construct a value of type 'CommitStatus' (by applying it's required fields, if any)
+mkCommitStatus
+  :: CommitStatus
+mkCommitStatus =
+  CommitStatus
+  { commitStatusContext = Nothing
+  , commitStatusCreatedAt = Nothing
+  , commitStatusCreator = Nothing
+  , commitStatusDescription = Nothing
+  , commitStatusId = Nothing
+  , commitStatusStatus = Nothing
+  , commitStatusTargetUrl = Nothing
+  , commitStatusUpdatedAt = Nothing
+  , commitStatusUrl = Nothing
+  }
+
+-- ** CommitUser
+-- | CommitUser
+-- CommitUser contains information of a user in the context of a commit.
+-- 
+data CommitUser = CommitUser
+  { commitUserDate :: !(Maybe Text) -- ^ "date"
+  , commitUserEmail :: !(Maybe Text) -- ^ "email"
+  , commitUserName :: !(Maybe Text) -- ^ "name"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CommitUser
+instance A.FromJSON CommitUser where
+  parseJSON = A.withObject "CommitUser" $ \o ->
+    CommitUser
+      <$> (o .:? "date")
+      <*> (o .:? "email")
+      <*> (o .:? "name")
+
+-- | ToJSON CommitUser
+instance A.ToJSON CommitUser where
+  toJSON CommitUser {..} =
+   _omitNulls
+      [ "date" .= commitUserDate
+      , "email" .= commitUserEmail
+      , "name" .= commitUserName
+      ]
+
+
+-- | Construct a value of type 'CommitUser' (by applying it's required fields, if any)
+mkCommitUser
+  :: CommitUser
+mkCommitUser =
+  CommitUser
+  { commitUserDate = Nothing
+  , commitUserEmail = Nothing
+  , commitUserName = Nothing
+  }
+
+-- ** ContentsResponse
+-- | ContentsResponse
+-- ContentsResponse contains information about a repo's entry's (dir, file, symlink, submodule) metadata and content
+data ContentsResponse = ContentsResponse
+  { contentsResponseLinks :: !(Maybe FileLinksResponse) -- ^ "_links"
+  , contentsResponseContent :: !(Maybe Text) -- ^ "content" - &#x60;content&#x60; is populated when &#x60;type&#x60; is &#x60;file&#x60;, otherwise null
+  , contentsResponseDownloadUrl :: !(Maybe Text) -- ^ "download_url"
+  , contentsResponseEncoding :: !(Maybe Text) -- ^ "encoding" - &#x60;encoding&#x60; is populated when &#x60;type&#x60; is &#x60;file&#x60;, otherwise null
+  , contentsResponseGitUrl :: !(Maybe Text) -- ^ "git_url"
+  , contentsResponseHtmlUrl :: !(Maybe Text) -- ^ "html_url"
+  , contentsResponseLastCommitSha :: !(Maybe Text) -- ^ "last_commit_sha"
+  , contentsResponseName :: !(Maybe Text) -- ^ "name"
+  , contentsResponsePath :: !(Maybe Text) -- ^ "path"
+  , contentsResponseSha :: !(Maybe Text) -- ^ "sha"
+  , contentsResponseSize :: !(Maybe Integer) -- ^ "size"
+  , contentsResponseSubmoduleGitUrl :: !(Maybe Text) -- ^ "submodule_git_url" - &#x60;submodule_git_url&#x60; is populated when &#x60;type&#x60; is &#x60;submodule&#x60;, otherwise null
+  , contentsResponseTarget :: !(Maybe Text) -- ^ "target" - &#x60;target&#x60; is populated when &#x60;type&#x60; is &#x60;symlink&#x60;, otherwise null
+  , contentsResponseType :: !(Maybe Text) -- ^ "type" - &#x60;type&#x60; will be &#x60;file&#x60;, &#x60;dir&#x60;, &#x60;symlink&#x60;, or &#x60;submodule&#x60;
+  , contentsResponseUrl :: !(Maybe Text) -- ^ "url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON ContentsResponse
+instance A.FromJSON ContentsResponse where
+  parseJSON = A.withObject "ContentsResponse" $ \o ->
+    ContentsResponse
+      <$> (o .:? "_links")
+      <*> (o .:? "content")
+      <*> (o .:? "download_url")
+      <*> (o .:? "encoding")
+      <*> (o .:? "git_url")
+      <*> (o .:? "html_url")
+      <*> (o .:? "last_commit_sha")
+      <*> (o .:? "name")
+      <*> (o .:? "path")
+      <*> (o .:? "sha")
+      <*> (o .:? "size")
+      <*> (o .:? "submodule_git_url")
+      <*> (o .:? "target")
+      <*> (o .:? "type")
+      <*> (o .:? "url")
+
+-- | ToJSON ContentsResponse
+instance A.ToJSON ContentsResponse where
+  toJSON ContentsResponse {..} =
+   _omitNulls
+      [ "_links" .= contentsResponseLinks
+      , "content" .= contentsResponseContent
+      , "download_url" .= contentsResponseDownloadUrl
+      , "encoding" .= contentsResponseEncoding
+      , "git_url" .= contentsResponseGitUrl
+      , "html_url" .= contentsResponseHtmlUrl
+      , "last_commit_sha" .= contentsResponseLastCommitSha
+      , "name" .= contentsResponseName
+      , "path" .= contentsResponsePath
+      , "sha" .= contentsResponseSha
+      , "size" .= contentsResponseSize
+      , "submodule_git_url" .= contentsResponseSubmoduleGitUrl
+      , "target" .= contentsResponseTarget
+      , "type" .= contentsResponseType
+      , "url" .= contentsResponseUrl
+      ]
+
+
+-- | Construct a value of type 'ContentsResponse' (by applying it's required fields, if any)
+mkContentsResponse
+  :: ContentsResponse
+mkContentsResponse =
+  ContentsResponse
+  { contentsResponseLinks = Nothing
+  , contentsResponseContent = Nothing
+  , contentsResponseDownloadUrl = Nothing
+  , contentsResponseEncoding = Nothing
+  , contentsResponseGitUrl = Nothing
+  , contentsResponseHtmlUrl = Nothing
+  , contentsResponseLastCommitSha = Nothing
+  , contentsResponseName = Nothing
+  , contentsResponsePath = Nothing
+  , contentsResponseSha = Nothing
+  , contentsResponseSize = Nothing
+  , contentsResponseSubmoduleGitUrl = Nothing
+  , contentsResponseTarget = Nothing
+  , contentsResponseType = Nothing
+  , contentsResponseUrl = Nothing
+  }
+
+-- ** CreateAccessTokenOption
+-- | CreateAccessTokenOption
+-- CreateAccessTokenOption options when create access token
+data CreateAccessTokenOption = CreateAccessTokenOption
+  { createAccessTokenOptionName :: !(Text) -- ^ /Required/ "name"
+  , createAccessTokenOptionScopes :: !(Maybe [Text]) -- ^ "scopes"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateAccessTokenOption
+instance A.FromJSON CreateAccessTokenOption where
+  parseJSON = A.withObject "CreateAccessTokenOption" $ \o ->
+    CreateAccessTokenOption
+      <$> (o .:  "name")
+      <*> (o .:? "scopes")
+
+-- | ToJSON CreateAccessTokenOption
+instance A.ToJSON CreateAccessTokenOption where
+  toJSON CreateAccessTokenOption {..} =
+   _omitNulls
+      [ "name" .= createAccessTokenOptionName
+      , "scopes" .= createAccessTokenOptionScopes
+      ]
+
+
+-- | Construct a value of type 'CreateAccessTokenOption' (by applying it's required fields, if any)
+mkCreateAccessTokenOption
+  :: Text -- ^ 'createAccessTokenOptionName' 
+  -> CreateAccessTokenOption
+mkCreateAccessTokenOption createAccessTokenOptionName =
+  CreateAccessTokenOption
+  { createAccessTokenOptionName
+  , createAccessTokenOptionScopes = Nothing
+  }
+
+-- ** CreateBranchProtectionOption
+-- | CreateBranchProtectionOption
+-- CreateBranchProtectionOption options for creating a branch protection
+data CreateBranchProtectionOption = CreateBranchProtectionOption
+  { createBranchProtectionOptionApprovalsWhitelistTeams :: !(Maybe [Text]) -- ^ "approvals_whitelist_teams"
+  , createBranchProtectionOptionApprovalsWhitelistUsername :: !(Maybe [Text]) -- ^ "approvals_whitelist_username"
+  , createBranchProtectionOptionBlockOnOfficialReviewRequests :: !(Maybe Bool) -- ^ "block_on_official_review_requests"
+  , createBranchProtectionOptionBlockOnOutdatedBranch :: !(Maybe Bool) -- ^ "block_on_outdated_branch"
+  , createBranchProtectionOptionBlockOnRejectedReviews :: !(Maybe Bool) -- ^ "block_on_rejected_reviews"
+  , createBranchProtectionOptionBranchName :: !(Maybe Text) -- ^ "branch_name" - Deprecated: true
+  , createBranchProtectionOptionDismissStaleApprovals :: !(Maybe Bool) -- ^ "dismiss_stale_approvals"
+  , createBranchProtectionOptionEnableApprovalsWhitelist :: !(Maybe Bool) -- ^ "enable_approvals_whitelist"
+  , createBranchProtectionOptionEnableMergeWhitelist :: !(Maybe Bool) -- ^ "enable_merge_whitelist"
+  , createBranchProtectionOptionEnablePush :: !(Maybe Bool) -- ^ "enable_push"
+  , createBranchProtectionOptionEnablePushWhitelist :: !(Maybe Bool) -- ^ "enable_push_whitelist"
+  , createBranchProtectionOptionEnableStatusCheck :: !(Maybe Bool) -- ^ "enable_status_check"
+  , createBranchProtectionOptionMergeWhitelistTeams :: !(Maybe [Text]) -- ^ "merge_whitelist_teams"
+  , createBranchProtectionOptionMergeWhitelistUsernames :: !(Maybe [Text]) -- ^ "merge_whitelist_usernames"
+  , createBranchProtectionOptionProtectedFilePatterns :: !(Maybe Text) -- ^ "protected_file_patterns"
+  , createBranchProtectionOptionPushWhitelistDeployKeys :: !(Maybe Bool) -- ^ "push_whitelist_deploy_keys"
+  , createBranchProtectionOptionPushWhitelistTeams :: !(Maybe [Text]) -- ^ "push_whitelist_teams"
+  , createBranchProtectionOptionPushWhitelistUsernames :: !(Maybe [Text]) -- ^ "push_whitelist_usernames"
+  , createBranchProtectionOptionRequireSignedCommits :: !(Maybe Bool) -- ^ "require_signed_commits"
+  , createBranchProtectionOptionRequiredApprovals :: !(Maybe Integer) -- ^ "required_approvals"
+  , createBranchProtectionOptionRuleName :: !(Maybe Text) -- ^ "rule_name"
+  , createBranchProtectionOptionStatusCheckContexts :: !(Maybe [Text]) -- ^ "status_check_contexts"
+  , createBranchProtectionOptionUnprotectedFilePatterns :: !(Maybe Text) -- ^ "unprotected_file_patterns"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateBranchProtectionOption
+instance A.FromJSON CreateBranchProtectionOption where
+  parseJSON = A.withObject "CreateBranchProtectionOption" $ \o ->
+    CreateBranchProtectionOption
+      <$> (o .:? "approvals_whitelist_teams")
+      <*> (o .:? "approvals_whitelist_username")
+      <*> (o .:? "block_on_official_review_requests")
+      <*> (o .:? "block_on_outdated_branch")
+      <*> (o .:? "block_on_rejected_reviews")
+      <*> (o .:? "branch_name")
+      <*> (o .:? "dismiss_stale_approvals")
+      <*> (o .:? "enable_approvals_whitelist")
+      <*> (o .:? "enable_merge_whitelist")
+      <*> (o .:? "enable_push")
+      <*> (o .:? "enable_push_whitelist")
+      <*> (o .:? "enable_status_check")
+      <*> (o .:? "merge_whitelist_teams")
+      <*> (o .:? "merge_whitelist_usernames")
+      <*> (o .:? "protected_file_patterns")
+      <*> (o .:? "push_whitelist_deploy_keys")
+      <*> (o .:? "push_whitelist_teams")
+      <*> (o .:? "push_whitelist_usernames")
+      <*> (o .:? "require_signed_commits")
+      <*> (o .:? "required_approvals")
+      <*> (o .:? "rule_name")
+      <*> (o .:? "status_check_contexts")
+      <*> (o .:? "unprotected_file_patterns")
+
+-- | ToJSON CreateBranchProtectionOption
+instance A.ToJSON CreateBranchProtectionOption where
+  toJSON CreateBranchProtectionOption {..} =
+   _omitNulls
+      [ "approvals_whitelist_teams" .= createBranchProtectionOptionApprovalsWhitelistTeams
+      , "approvals_whitelist_username" .= createBranchProtectionOptionApprovalsWhitelistUsername
+      , "block_on_official_review_requests" .= createBranchProtectionOptionBlockOnOfficialReviewRequests
+      , "block_on_outdated_branch" .= createBranchProtectionOptionBlockOnOutdatedBranch
+      , "block_on_rejected_reviews" .= createBranchProtectionOptionBlockOnRejectedReviews
+      , "branch_name" .= createBranchProtectionOptionBranchName
+      , "dismiss_stale_approvals" .= createBranchProtectionOptionDismissStaleApprovals
+      , "enable_approvals_whitelist" .= createBranchProtectionOptionEnableApprovalsWhitelist
+      , "enable_merge_whitelist" .= createBranchProtectionOptionEnableMergeWhitelist
+      , "enable_push" .= createBranchProtectionOptionEnablePush
+      , "enable_push_whitelist" .= createBranchProtectionOptionEnablePushWhitelist
+      , "enable_status_check" .= createBranchProtectionOptionEnableStatusCheck
+      , "merge_whitelist_teams" .= createBranchProtectionOptionMergeWhitelistTeams
+      , "merge_whitelist_usernames" .= createBranchProtectionOptionMergeWhitelistUsernames
+      , "protected_file_patterns" .= createBranchProtectionOptionProtectedFilePatterns
+      , "push_whitelist_deploy_keys" .= createBranchProtectionOptionPushWhitelistDeployKeys
+      , "push_whitelist_teams" .= createBranchProtectionOptionPushWhitelistTeams
+      , "push_whitelist_usernames" .= createBranchProtectionOptionPushWhitelistUsernames
+      , "require_signed_commits" .= createBranchProtectionOptionRequireSignedCommits
+      , "required_approvals" .= createBranchProtectionOptionRequiredApprovals
+      , "rule_name" .= createBranchProtectionOptionRuleName
+      , "status_check_contexts" .= createBranchProtectionOptionStatusCheckContexts
+      , "unprotected_file_patterns" .= createBranchProtectionOptionUnprotectedFilePatterns
+      ]
+
+
+-- | Construct a value of type 'CreateBranchProtectionOption' (by applying it's required fields, if any)
+mkCreateBranchProtectionOption
+  :: CreateBranchProtectionOption
+mkCreateBranchProtectionOption =
+  CreateBranchProtectionOption
+  { createBranchProtectionOptionApprovalsWhitelistTeams = Nothing
+  , createBranchProtectionOptionApprovalsWhitelistUsername = Nothing
+  , createBranchProtectionOptionBlockOnOfficialReviewRequests = Nothing
+  , createBranchProtectionOptionBlockOnOutdatedBranch = Nothing
+  , createBranchProtectionOptionBlockOnRejectedReviews = Nothing
+  , createBranchProtectionOptionBranchName = Nothing
+  , createBranchProtectionOptionDismissStaleApprovals = Nothing
+  , createBranchProtectionOptionEnableApprovalsWhitelist = Nothing
+  , createBranchProtectionOptionEnableMergeWhitelist = Nothing
+  , createBranchProtectionOptionEnablePush = Nothing
+  , createBranchProtectionOptionEnablePushWhitelist = Nothing
+  , createBranchProtectionOptionEnableStatusCheck = Nothing
+  , createBranchProtectionOptionMergeWhitelistTeams = Nothing
+  , createBranchProtectionOptionMergeWhitelistUsernames = Nothing
+  , createBranchProtectionOptionProtectedFilePatterns = Nothing
+  , createBranchProtectionOptionPushWhitelistDeployKeys = Nothing
+  , createBranchProtectionOptionPushWhitelistTeams = Nothing
+  , createBranchProtectionOptionPushWhitelistUsernames = Nothing
+  , createBranchProtectionOptionRequireSignedCommits = Nothing
+  , createBranchProtectionOptionRequiredApprovals = Nothing
+  , createBranchProtectionOptionRuleName = Nothing
+  , createBranchProtectionOptionStatusCheckContexts = Nothing
+  , createBranchProtectionOptionUnprotectedFilePatterns = Nothing
+  }
+
+-- ** CreateBranchRepoOption
+-- | CreateBranchRepoOption
+-- CreateBranchRepoOption options when creating a branch in a repository
+data CreateBranchRepoOption = CreateBranchRepoOption
+  { createBranchRepoOptionNewBranchName :: !(Text) -- ^ /Required/ "new_branch_name" - Name of the branch to create
+  , createBranchRepoOptionOldBranchName :: !(Maybe Text) -- ^ "old_branch_name" - Name of the old branch to create from
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateBranchRepoOption
+instance A.FromJSON CreateBranchRepoOption where
+  parseJSON = A.withObject "CreateBranchRepoOption" $ \o ->
+    CreateBranchRepoOption
+      <$> (o .:  "new_branch_name")
+      <*> (o .:? "old_branch_name")
+
+-- | ToJSON CreateBranchRepoOption
+instance A.ToJSON CreateBranchRepoOption where
+  toJSON CreateBranchRepoOption {..} =
+   _omitNulls
+      [ "new_branch_name" .= createBranchRepoOptionNewBranchName
+      , "old_branch_name" .= createBranchRepoOptionOldBranchName
+      ]
+
+
+-- | Construct a value of type 'CreateBranchRepoOption' (by applying it's required fields, if any)
+mkCreateBranchRepoOption
+  :: Text -- ^ 'createBranchRepoOptionNewBranchName': Name of the branch to create
+  -> CreateBranchRepoOption
+mkCreateBranchRepoOption createBranchRepoOptionNewBranchName =
+  CreateBranchRepoOption
+  { createBranchRepoOptionNewBranchName
+  , createBranchRepoOptionOldBranchName = Nothing
+  }
+
+-- ** CreateEmailOption
+-- | CreateEmailOption
+-- CreateEmailOption options when creating email addresses
+data CreateEmailOption = CreateEmailOption
+  { createEmailOptionEmails :: !(Maybe [Text]) -- ^ "emails" - email addresses to add
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateEmailOption
+instance A.FromJSON CreateEmailOption where
+  parseJSON = A.withObject "CreateEmailOption" $ \o ->
+    CreateEmailOption
+      <$> (o .:? "emails")
+
+-- | ToJSON CreateEmailOption
+instance A.ToJSON CreateEmailOption where
+  toJSON CreateEmailOption {..} =
+   _omitNulls
+      [ "emails" .= createEmailOptionEmails
+      ]
+
+
+-- | Construct a value of type 'CreateEmailOption' (by applying it's required fields, if any)
+mkCreateEmailOption
+  :: CreateEmailOption
+mkCreateEmailOption =
+  CreateEmailOption
+  { createEmailOptionEmails = Nothing
+  }
+
+-- ** CreateFileOptions
+-- | CreateFileOptions
+-- CreateFileOptions options for creating files Note: `author` and `committer` are optional (if only one is given, it will be used for the other, otherwise the authenticated user will be used)
+data CreateFileOptions = CreateFileOptions
+  { createFileOptionsAuthor :: !(Maybe Identity) -- ^ "author"
+  , createFileOptionsBranch :: !(Maybe Text) -- ^ "branch" - branch (optional) to base this file from. if not given, the default branch is used
+  , createFileOptionsCommitter :: !(Maybe Identity) -- ^ "committer"
+  , createFileOptionsContent :: !(Text) -- ^ /Required/ "content" - content must be base64 encoded
+  , createFileOptionsDates :: !(Maybe CommitDateOptions) -- ^ "dates"
+  , createFileOptionsMessage :: !(Maybe Text) -- ^ "message" - message (optional) for the commit of this file. if not supplied, a default message will be used
+  , createFileOptionsNewBranch :: !(Maybe Text) -- ^ "new_branch" - new_branch (optional) will make a new branch from &#x60;branch&#x60; before creating the file
+  , createFileOptionsSignoff :: !(Maybe Bool) -- ^ "signoff" - Add a Signed-off-by trailer by the committer at the end of the commit log message.
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateFileOptions
+instance A.FromJSON CreateFileOptions where
+  parseJSON = A.withObject "CreateFileOptions" $ \o ->
+    CreateFileOptions
+      <$> (o .:? "author")
+      <*> (o .:? "branch")
+      <*> (o .:? "committer")
+      <*> (o .:  "content")
+      <*> (o .:? "dates")
+      <*> (o .:? "message")
+      <*> (o .:? "new_branch")
+      <*> (o .:? "signoff")
+
+-- | ToJSON CreateFileOptions
+instance A.ToJSON CreateFileOptions where
+  toJSON CreateFileOptions {..} =
+   _omitNulls
+      [ "author" .= createFileOptionsAuthor
+      , "branch" .= createFileOptionsBranch
+      , "committer" .= createFileOptionsCommitter
+      , "content" .= createFileOptionsContent
+      , "dates" .= createFileOptionsDates
+      , "message" .= createFileOptionsMessage
+      , "new_branch" .= createFileOptionsNewBranch
+      , "signoff" .= createFileOptionsSignoff
+      ]
+
+
+-- | Construct a value of type 'CreateFileOptions' (by applying it's required fields, if any)
+mkCreateFileOptions
+  :: Text -- ^ 'createFileOptionsContent': content must be base64 encoded
+  -> CreateFileOptions
+mkCreateFileOptions createFileOptionsContent =
+  CreateFileOptions
+  { createFileOptionsAuthor = Nothing
+  , createFileOptionsBranch = Nothing
+  , createFileOptionsCommitter = Nothing
+  , createFileOptionsContent
+  , createFileOptionsDates = Nothing
+  , createFileOptionsMessage = Nothing
+  , createFileOptionsNewBranch = Nothing
+  , createFileOptionsSignoff = Nothing
+  }
+
+-- ** CreateForkOption
+-- | CreateForkOption
+-- CreateForkOption options for creating a fork
+data CreateForkOption = CreateForkOption
+  { createForkOptionName :: !(Maybe Text) -- ^ "name" - name of the forked repository
+  , createForkOptionOrganization :: !(Maybe Text) -- ^ "organization" - organization name, if forking into an organization
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateForkOption
+instance A.FromJSON CreateForkOption where
+  parseJSON = A.withObject "CreateForkOption" $ \o ->
+    CreateForkOption
+      <$> (o .:? "name")
+      <*> (o .:? "organization")
+
+-- | ToJSON CreateForkOption
+instance A.ToJSON CreateForkOption where
+  toJSON CreateForkOption {..} =
+   _omitNulls
+      [ "name" .= createForkOptionName
+      , "organization" .= createForkOptionOrganization
+      ]
+
+
+-- | Construct a value of type 'CreateForkOption' (by applying it's required fields, if any)
+mkCreateForkOption
+  :: CreateForkOption
+mkCreateForkOption =
+  CreateForkOption
+  { createForkOptionName = Nothing
+  , createForkOptionOrganization = Nothing
+  }
+
+-- ** CreateGPGKeyOption
+-- | CreateGPGKeyOption
+-- CreateGPGKeyOption options create user GPG key
+data CreateGPGKeyOption = CreateGPGKeyOption
+  { createGPGKeyOptionArmoredPublicKey :: !(Text) -- ^ /Required/ "armored_public_key" - An armored GPG key to add
+  , createGPGKeyOptionArmoredSignature :: !(Maybe Text) -- ^ "armored_signature"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateGPGKeyOption
+instance A.FromJSON CreateGPGKeyOption where
+  parseJSON = A.withObject "CreateGPGKeyOption" $ \o ->
+    CreateGPGKeyOption
+      <$> (o .:  "armored_public_key")
+      <*> (o .:? "armored_signature")
+
+-- | ToJSON CreateGPGKeyOption
+instance A.ToJSON CreateGPGKeyOption where
+  toJSON CreateGPGKeyOption {..} =
+   _omitNulls
+      [ "armored_public_key" .= createGPGKeyOptionArmoredPublicKey
+      , "armored_signature" .= createGPGKeyOptionArmoredSignature
+      ]
+
+
+-- | Construct a value of type 'CreateGPGKeyOption' (by applying it's required fields, if any)
+mkCreateGPGKeyOption
+  :: Text -- ^ 'createGPGKeyOptionArmoredPublicKey': An armored GPG key to add
+  -> CreateGPGKeyOption
+mkCreateGPGKeyOption createGPGKeyOptionArmoredPublicKey =
+  CreateGPGKeyOption
+  { createGPGKeyOptionArmoredPublicKey
+  , createGPGKeyOptionArmoredSignature = Nothing
+  }
+
+-- ** CreateHookOption
+-- | CreateHookOption
+-- CreateHookOption options when create a hook
+data CreateHookOption = CreateHookOption
+  { createHookOptionActive :: !(Maybe Bool) -- ^ "active"
+  , createHookOptionAuthorizationHeader :: !(Maybe Text) -- ^ "authorization_header"
+  , createHookOptionBranchFilter :: !(Maybe Text) -- ^ "branch_filter"
+  , createHookOptionConfig :: !((Map.Map String Text)) -- ^ /Required/ "config" - CreateHookOptionConfig has all config options in it required are \&quot;content_type\&quot; and \&quot;url\&quot; Required
+  , createHookOptionEvents :: !(Maybe [Text]) -- ^ "events"
+  , createHookOptionType :: !(E'Type) -- ^ /Required/ "type"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateHookOption
+instance A.FromJSON CreateHookOption where
+  parseJSON = A.withObject "CreateHookOption" $ \o ->
+    CreateHookOption
+      <$> (o .:? "active")
+      <*> (o .:? "authorization_header")
+      <*> (o .:? "branch_filter")
+      <*> (o .:  "config")
+      <*> (o .:? "events")
+      <*> (o .:  "type")
+
+-- | ToJSON CreateHookOption
+instance A.ToJSON CreateHookOption where
+  toJSON CreateHookOption {..} =
+   _omitNulls
+      [ "active" .= createHookOptionActive
+      , "authorization_header" .= createHookOptionAuthorizationHeader
+      , "branch_filter" .= createHookOptionBranchFilter
+      , "config" .= createHookOptionConfig
+      , "events" .= createHookOptionEvents
+      , "type" .= createHookOptionType
+      ]
+
+
+-- | Construct a value of type 'CreateHookOption' (by applying it's required fields, if any)
+mkCreateHookOption
+  :: (Map.Map String Text) -- ^ 'createHookOptionConfig': CreateHookOptionConfig has all config options in it required are \"content_type\" and \"url\" Required
+  -> E'Type -- ^ 'createHookOptionType' 
+  -> CreateHookOption
+mkCreateHookOption createHookOptionConfig createHookOptionType =
+  CreateHookOption
+  { createHookOptionActive = Nothing
+  , createHookOptionAuthorizationHeader = Nothing
+  , createHookOptionBranchFilter = Nothing
+  , createHookOptionConfig
+  , createHookOptionEvents = Nothing
+  , createHookOptionType
+  }
+
+-- ** CreateIssueCommentOption
+-- | CreateIssueCommentOption
+-- CreateIssueCommentOption options for creating a comment on an issue
+data CreateIssueCommentOption = CreateIssueCommentOption
+  { createIssueCommentOptionBody :: !(Text) -- ^ /Required/ "body"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateIssueCommentOption
+instance A.FromJSON CreateIssueCommentOption where
+  parseJSON = A.withObject "CreateIssueCommentOption" $ \o ->
+    CreateIssueCommentOption
+      <$> (o .:  "body")
+
+-- | ToJSON CreateIssueCommentOption
+instance A.ToJSON CreateIssueCommentOption where
+  toJSON CreateIssueCommentOption {..} =
+   _omitNulls
+      [ "body" .= createIssueCommentOptionBody
+      ]
+
+
+-- | Construct a value of type 'CreateIssueCommentOption' (by applying it's required fields, if any)
+mkCreateIssueCommentOption
+  :: Text -- ^ 'createIssueCommentOptionBody' 
+  -> CreateIssueCommentOption
+mkCreateIssueCommentOption createIssueCommentOptionBody =
+  CreateIssueCommentOption
+  { createIssueCommentOptionBody
+  }
+
+-- ** CreateIssueOption
+-- | CreateIssueOption
+-- CreateIssueOption options to create one issue
+data CreateIssueOption = CreateIssueOption
+  { createIssueOptionAssignee :: !(Maybe Text) -- ^ "assignee" - deprecated
+  , createIssueOptionAssignees :: !(Maybe [Text]) -- ^ "assignees"
+  , createIssueOptionBody :: !(Maybe Text) -- ^ "body"
+  , createIssueOptionClosed :: !(Maybe Bool) -- ^ "closed"
+  , createIssueOptionDueDate :: !(Maybe DateTime) -- ^ "due_date"
+  , createIssueOptionLabels :: !(Maybe [Integer]) -- ^ "labels" - list of label ids
+  , createIssueOptionMilestone :: !(Maybe Integer) -- ^ "milestone" - milestone id
+  , createIssueOptionRef :: !(Maybe Text) -- ^ "ref"
+  , createIssueOptionTitle :: !(Text) -- ^ /Required/ "title"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateIssueOption
+instance A.FromJSON CreateIssueOption where
+  parseJSON = A.withObject "CreateIssueOption" $ \o ->
+    CreateIssueOption
+      <$> (o .:? "assignee")
+      <*> (o .:? "assignees")
+      <*> (o .:? "body")
+      <*> (o .:? "closed")
+      <*> (o .:? "due_date")
+      <*> (o .:? "labels")
+      <*> (o .:? "milestone")
+      <*> (o .:? "ref")
+      <*> (o .:  "title")
+
+-- | ToJSON CreateIssueOption
+instance A.ToJSON CreateIssueOption where
+  toJSON CreateIssueOption {..} =
+   _omitNulls
+      [ "assignee" .= createIssueOptionAssignee
+      , "assignees" .= createIssueOptionAssignees
+      , "body" .= createIssueOptionBody
+      , "closed" .= createIssueOptionClosed
+      , "due_date" .= createIssueOptionDueDate
+      , "labels" .= createIssueOptionLabels
+      , "milestone" .= createIssueOptionMilestone
+      , "ref" .= createIssueOptionRef
+      , "title" .= createIssueOptionTitle
+      ]
+
+
+-- | Construct a value of type 'CreateIssueOption' (by applying it's required fields, if any)
+mkCreateIssueOption
+  :: Text -- ^ 'createIssueOptionTitle' 
+  -> CreateIssueOption
+mkCreateIssueOption createIssueOptionTitle =
+  CreateIssueOption
+  { createIssueOptionAssignee = Nothing
+  , createIssueOptionAssignees = Nothing
+  , createIssueOptionBody = Nothing
+  , createIssueOptionClosed = Nothing
+  , createIssueOptionDueDate = Nothing
+  , createIssueOptionLabels = Nothing
+  , createIssueOptionMilestone = Nothing
+  , createIssueOptionRef = Nothing
+  , createIssueOptionTitle
+  }
+
+-- ** CreateKeyOption
+-- | CreateKeyOption
+-- CreateKeyOption options when creating a key
+data CreateKeyOption = CreateKeyOption
+  { createKeyOptionKey :: !(Text) -- ^ /Required/ "key" - An armored SSH key to add
+  , createKeyOptionReadOnly :: !(Maybe Bool) -- ^ "read_only" - Describe if the key has only read access or read/write
+  , createKeyOptionTitle :: !(Text) -- ^ /Required/ "title" - Title of the key to add
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateKeyOption
+instance A.FromJSON CreateKeyOption where
+  parseJSON = A.withObject "CreateKeyOption" $ \o ->
+    CreateKeyOption
+      <$> (o .:  "key")
+      <*> (o .:? "read_only")
+      <*> (o .:  "title")
+
+-- | ToJSON CreateKeyOption
+instance A.ToJSON CreateKeyOption where
+  toJSON CreateKeyOption {..} =
+   _omitNulls
+      [ "key" .= createKeyOptionKey
+      , "read_only" .= createKeyOptionReadOnly
+      , "title" .= createKeyOptionTitle
+      ]
+
+
+-- | Construct a value of type 'CreateKeyOption' (by applying it's required fields, if any)
+mkCreateKeyOption
+  :: Text -- ^ 'createKeyOptionKey': An armored SSH key to add
+  -> Text -- ^ 'createKeyOptionTitle': Title of the key to add
+  -> CreateKeyOption
+mkCreateKeyOption createKeyOptionKey createKeyOptionTitle =
+  CreateKeyOption
+  { createKeyOptionKey
+  , createKeyOptionReadOnly = Nothing
+  , createKeyOptionTitle
+  }
+
+-- ** CreateLabelOption
+-- | CreateLabelOption
+-- CreateLabelOption options for creating a label
+data CreateLabelOption = CreateLabelOption
+  { createLabelOptionColor :: !(Text) -- ^ /Required/ "color"
+  , createLabelOptionDescription :: !(Maybe Text) -- ^ "description"
+  , createLabelOptionExclusive :: !(Maybe Bool) -- ^ "exclusive"
+  , createLabelOptionName :: !(Text) -- ^ /Required/ "name"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateLabelOption
+instance A.FromJSON CreateLabelOption where
+  parseJSON = A.withObject "CreateLabelOption" $ \o ->
+    CreateLabelOption
+      <$> (o .:  "color")
+      <*> (o .:? "description")
+      <*> (o .:? "exclusive")
+      <*> (o .:  "name")
+
+-- | ToJSON CreateLabelOption
+instance A.ToJSON CreateLabelOption where
+  toJSON CreateLabelOption {..} =
+   _omitNulls
+      [ "color" .= createLabelOptionColor
+      , "description" .= createLabelOptionDescription
+      , "exclusive" .= createLabelOptionExclusive
+      , "name" .= createLabelOptionName
+      ]
+
+
+-- | Construct a value of type 'CreateLabelOption' (by applying it's required fields, if any)
+mkCreateLabelOption
+  :: Text -- ^ 'createLabelOptionColor' 
+  -> Text -- ^ 'createLabelOptionName' 
+  -> CreateLabelOption
+mkCreateLabelOption createLabelOptionColor createLabelOptionName =
+  CreateLabelOption
+  { createLabelOptionColor
+  , createLabelOptionDescription = Nothing
+  , createLabelOptionExclusive = Nothing
+  , createLabelOptionName
+  }
+
+-- ** CreateMilestoneOption
+-- | CreateMilestoneOption
+-- CreateMilestoneOption options for creating a milestone
+data CreateMilestoneOption = CreateMilestoneOption
+  { createMilestoneOptionDescription :: !(Maybe Text) -- ^ "description"
+  , createMilestoneOptionDueOn :: !(Maybe DateTime) -- ^ "due_on"
+  , createMilestoneOptionState :: !(Maybe E'State) -- ^ "state"
+  , createMilestoneOptionTitle :: !(Maybe Text) -- ^ "title"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateMilestoneOption
+instance A.FromJSON CreateMilestoneOption where
+  parseJSON = A.withObject "CreateMilestoneOption" $ \o ->
+    CreateMilestoneOption
+      <$> (o .:? "description")
+      <*> (o .:? "due_on")
+      <*> (o .:? "state")
+      <*> (o .:? "title")
+
+-- | ToJSON CreateMilestoneOption
+instance A.ToJSON CreateMilestoneOption where
+  toJSON CreateMilestoneOption {..} =
+   _omitNulls
+      [ "description" .= createMilestoneOptionDescription
+      , "due_on" .= createMilestoneOptionDueOn
+      , "state" .= createMilestoneOptionState
+      , "title" .= createMilestoneOptionTitle
+      ]
+
+
+-- | Construct a value of type 'CreateMilestoneOption' (by applying it's required fields, if any)
+mkCreateMilestoneOption
+  :: CreateMilestoneOption
+mkCreateMilestoneOption =
+  CreateMilestoneOption
+  { createMilestoneOptionDescription = Nothing
+  , createMilestoneOptionDueOn = Nothing
+  , createMilestoneOptionState = Nothing
+  , createMilestoneOptionTitle = Nothing
+  }
+
+-- ** CreateOAuth2ApplicationOptions
+-- | CreateOAuth2ApplicationOptions
+-- CreateOAuth2ApplicationOptions holds options to create an oauth2 application
+data CreateOAuth2ApplicationOptions = CreateOAuth2ApplicationOptions
+  { createOAuth2ApplicationOptionsConfidentialClient :: !(Maybe Bool) -- ^ "confidential_client"
+  , createOAuth2ApplicationOptionsName :: !(Maybe Text) -- ^ "name"
+  , createOAuth2ApplicationOptionsRedirectUris :: !(Maybe [Text]) -- ^ "redirect_uris"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateOAuth2ApplicationOptions
+instance A.FromJSON CreateOAuth2ApplicationOptions where
+  parseJSON = A.withObject "CreateOAuth2ApplicationOptions" $ \o ->
+    CreateOAuth2ApplicationOptions
+      <$> (o .:? "confidential_client")
+      <*> (o .:? "name")
+      <*> (o .:? "redirect_uris")
+
+-- | ToJSON CreateOAuth2ApplicationOptions
+instance A.ToJSON CreateOAuth2ApplicationOptions where
+  toJSON CreateOAuth2ApplicationOptions {..} =
+   _omitNulls
+      [ "confidential_client" .= createOAuth2ApplicationOptionsConfidentialClient
+      , "name" .= createOAuth2ApplicationOptionsName
+      , "redirect_uris" .= createOAuth2ApplicationOptionsRedirectUris
+      ]
+
+
+-- | Construct a value of type 'CreateOAuth2ApplicationOptions' (by applying it's required fields, if any)
+mkCreateOAuth2ApplicationOptions
+  :: CreateOAuth2ApplicationOptions
+mkCreateOAuth2ApplicationOptions =
+  CreateOAuth2ApplicationOptions
+  { createOAuth2ApplicationOptionsConfidentialClient = Nothing
+  , createOAuth2ApplicationOptionsName = Nothing
+  , createOAuth2ApplicationOptionsRedirectUris = Nothing
+  }
+
+-- ** CreateOrgOption
+-- | CreateOrgOption
+-- CreateOrgOption options for creating an organization
+data CreateOrgOption = CreateOrgOption
+  { createOrgOptionDescription :: !(Maybe Text) -- ^ "description"
+  , createOrgOptionFullName :: !(Maybe Text) -- ^ "full_name"
+  , createOrgOptionLocation :: !(Maybe Text) -- ^ "location"
+  , createOrgOptionRepoAdminChangeTeamAccess :: !(Maybe Bool) -- ^ "repo_admin_change_team_access"
+  , createOrgOptionUsername :: !(Text) -- ^ /Required/ "username"
+  , createOrgOptionVisibility :: !(Maybe E'Visibility) -- ^ "visibility" - possible values are &#x60;public&#x60; (default), &#x60;limited&#x60; or &#x60;private&#x60;
+  , createOrgOptionWebsite :: !(Maybe Text) -- ^ "website"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateOrgOption
+instance A.FromJSON CreateOrgOption where
+  parseJSON = A.withObject "CreateOrgOption" $ \o ->
+    CreateOrgOption
+      <$> (o .:? "description")
+      <*> (o .:? "full_name")
+      <*> (o .:? "location")
+      <*> (o .:? "repo_admin_change_team_access")
+      <*> (o .:  "username")
+      <*> (o .:? "visibility")
+      <*> (o .:? "website")
+
+-- | ToJSON CreateOrgOption
+instance A.ToJSON CreateOrgOption where
+  toJSON CreateOrgOption {..} =
+   _omitNulls
+      [ "description" .= createOrgOptionDescription
+      , "full_name" .= createOrgOptionFullName
+      , "location" .= createOrgOptionLocation
+      , "repo_admin_change_team_access" .= createOrgOptionRepoAdminChangeTeamAccess
+      , "username" .= createOrgOptionUsername
+      , "visibility" .= createOrgOptionVisibility
+      , "website" .= createOrgOptionWebsite
+      ]
+
+
+-- | Construct a value of type 'CreateOrgOption' (by applying it's required fields, if any)
+mkCreateOrgOption
+  :: Text -- ^ 'createOrgOptionUsername' 
+  -> CreateOrgOption
+mkCreateOrgOption createOrgOptionUsername =
+  CreateOrgOption
+  { createOrgOptionDescription = Nothing
+  , createOrgOptionFullName = Nothing
+  , createOrgOptionLocation = Nothing
+  , createOrgOptionRepoAdminChangeTeamAccess = Nothing
+  , createOrgOptionUsername
+  , createOrgOptionVisibility = Nothing
+  , createOrgOptionWebsite = Nothing
+  }
+
+-- ** CreatePullRequestOption
+-- | CreatePullRequestOption
+-- CreatePullRequestOption options when creating a pull request
+data CreatePullRequestOption = CreatePullRequestOption
+  { createPullRequestOptionAssignee :: !(Maybe Text) -- ^ "assignee"
+  , createPullRequestOptionAssignees :: !(Maybe [Text]) -- ^ "assignees"
+  , createPullRequestOptionBase :: !(Maybe Text) -- ^ "base"
+  , createPullRequestOptionBody :: !(Maybe Text) -- ^ "body"
+  , createPullRequestOptionDueDate :: !(Maybe DateTime) -- ^ "due_date"
+  , createPullRequestOptionHead :: !(Maybe Text) -- ^ "head"
+  , createPullRequestOptionLabels :: !(Maybe [Integer]) -- ^ "labels"
+  , createPullRequestOptionMilestone :: !(Maybe Integer) -- ^ "milestone"
+  , createPullRequestOptionTitle :: !(Maybe Text) -- ^ "title"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreatePullRequestOption
+instance A.FromJSON CreatePullRequestOption where
+  parseJSON = A.withObject "CreatePullRequestOption" $ \o ->
+    CreatePullRequestOption
+      <$> (o .:? "assignee")
+      <*> (o .:? "assignees")
+      <*> (o .:? "base")
+      <*> (o .:? "body")
+      <*> (o .:? "due_date")
+      <*> (o .:? "head")
+      <*> (o .:? "labels")
+      <*> (o .:? "milestone")
+      <*> (o .:? "title")
+
+-- | ToJSON CreatePullRequestOption
+instance A.ToJSON CreatePullRequestOption where
+  toJSON CreatePullRequestOption {..} =
+   _omitNulls
+      [ "assignee" .= createPullRequestOptionAssignee
+      , "assignees" .= createPullRequestOptionAssignees
+      , "base" .= createPullRequestOptionBase
+      , "body" .= createPullRequestOptionBody
+      , "due_date" .= createPullRequestOptionDueDate
+      , "head" .= createPullRequestOptionHead
+      , "labels" .= createPullRequestOptionLabels
+      , "milestone" .= createPullRequestOptionMilestone
+      , "title" .= createPullRequestOptionTitle
+      ]
+
+
+-- | Construct a value of type 'CreatePullRequestOption' (by applying it's required fields, if any)
+mkCreatePullRequestOption
+  :: CreatePullRequestOption
+mkCreatePullRequestOption =
+  CreatePullRequestOption
+  { createPullRequestOptionAssignee = Nothing
+  , createPullRequestOptionAssignees = Nothing
+  , createPullRequestOptionBase = Nothing
+  , createPullRequestOptionBody = Nothing
+  , createPullRequestOptionDueDate = Nothing
+  , createPullRequestOptionHead = Nothing
+  , createPullRequestOptionLabels = Nothing
+  , createPullRequestOptionMilestone = Nothing
+  , createPullRequestOptionTitle = Nothing
+  }
+
+-- ** CreatePullReviewComment
+-- | CreatePullReviewComment
+-- CreatePullReviewComment represent a review comment for creation api
+data CreatePullReviewComment = CreatePullReviewComment
+  { createPullReviewCommentBody :: !(Maybe Text) -- ^ "body"
+  , createPullReviewCommentNewPosition :: !(Maybe Integer) -- ^ "new_position" - if comment to new file line or 0
+  , createPullReviewCommentOldPosition :: !(Maybe Integer) -- ^ "old_position" - if comment to old file line or 0
+  , createPullReviewCommentPath :: !(Maybe Text) -- ^ "path" - the tree path
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreatePullReviewComment
+instance A.FromJSON CreatePullReviewComment where
+  parseJSON = A.withObject "CreatePullReviewComment" $ \o ->
+    CreatePullReviewComment
+      <$> (o .:? "body")
+      <*> (o .:? "new_position")
+      <*> (o .:? "old_position")
+      <*> (o .:? "path")
+
+-- | ToJSON CreatePullReviewComment
+instance A.ToJSON CreatePullReviewComment where
+  toJSON CreatePullReviewComment {..} =
+   _omitNulls
+      [ "body" .= createPullReviewCommentBody
+      , "new_position" .= createPullReviewCommentNewPosition
+      , "old_position" .= createPullReviewCommentOldPosition
+      , "path" .= createPullReviewCommentPath
+      ]
+
+
+-- | Construct a value of type 'CreatePullReviewComment' (by applying it's required fields, if any)
+mkCreatePullReviewComment
+  :: CreatePullReviewComment
+mkCreatePullReviewComment =
+  CreatePullReviewComment
+  { createPullReviewCommentBody = Nothing
+  , createPullReviewCommentNewPosition = Nothing
+  , createPullReviewCommentOldPosition = Nothing
+  , createPullReviewCommentPath = Nothing
+  }
+
+-- ** CreatePullReviewOptions
+-- | CreatePullReviewOptions
+-- CreatePullReviewOptions are options to create a pull review
+data CreatePullReviewOptions = CreatePullReviewOptions
+  { createPullReviewOptionsBody :: !(Maybe Text) -- ^ "body"
+  , createPullReviewOptionsComments :: !(Maybe [CreatePullReviewComment]) -- ^ "comments"
+  , createPullReviewOptionsCommitId :: !(Maybe Text) -- ^ "commit_id"
+  , createPullReviewOptionsEvent :: !(Maybe Text) -- ^ "event" - ReviewStateType review state type
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreatePullReviewOptions
+instance A.FromJSON CreatePullReviewOptions where
+  parseJSON = A.withObject "CreatePullReviewOptions" $ \o ->
+    CreatePullReviewOptions
+      <$> (o .:? "body")
+      <*> (o .:? "comments")
+      <*> (o .:? "commit_id")
+      <*> (o .:? "event")
+
+-- | ToJSON CreatePullReviewOptions
+instance A.ToJSON CreatePullReviewOptions where
+  toJSON CreatePullReviewOptions {..} =
+   _omitNulls
+      [ "body" .= createPullReviewOptionsBody
+      , "comments" .= createPullReviewOptionsComments
+      , "commit_id" .= createPullReviewOptionsCommitId
+      , "event" .= createPullReviewOptionsEvent
+      ]
+
+
+-- | Construct a value of type 'CreatePullReviewOptions' (by applying it's required fields, if any)
+mkCreatePullReviewOptions
+  :: CreatePullReviewOptions
+mkCreatePullReviewOptions =
+  CreatePullReviewOptions
+  { createPullReviewOptionsBody = Nothing
+  , createPullReviewOptionsComments = Nothing
+  , createPullReviewOptionsCommitId = Nothing
+  , createPullReviewOptionsEvent = Nothing
+  }
+
+-- ** CreatePushMirrorOption
+-- | CreatePushMirrorOption
+-- CreatePushMirrorOption represents need information to create a push mirror of a repository.
+-- 
+data CreatePushMirrorOption = CreatePushMirrorOption
+  { createPushMirrorOptionInterval :: !(Maybe Text) -- ^ "interval"
+  , createPushMirrorOptionRemoteAddress :: !(Maybe Text) -- ^ "remote_address"
+  , createPushMirrorOptionRemotePassword :: !(Maybe Text) -- ^ "remote_password"
+  , createPushMirrorOptionRemoteUsername :: !(Maybe Text) -- ^ "remote_username"
+  , createPushMirrorOptionSyncOnCommit :: !(Maybe Bool) -- ^ "sync_on_commit"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreatePushMirrorOption
+instance A.FromJSON CreatePushMirrorOption where
+  parseJSON = A.withObject "CreatePushMirrorOption" $ \o ->
+    CreatePushMirrorOption
+      <$> (o .:? "interval")
+      <*> (o .:? "remote_address")
+      <*> (o .:? "remote_password")
+      <*> (o .:? "remote_username")
+      <*> (o .:? "sync_on_commit")
+
+-- | ToJSON CreatePushMirrorOption
+instance A.ToJSON CreatePushMirrorOption where
+  toJSON CreatePushMirrorOption {..} =
+   _omitNulls
+      [ "interval" .= createPushMirrorOptionInterval
+      , "remote_address" .= createPushMirrorOptionRemoteAddress
+      , "remote_password" .= createPushMirrorOptionRemotePassword
+      , "remote_username" .= createPushMirrorOptionRemoteUsername
+      , "sync_on_commit" .= createPushMirrorOptionSyncOnCommit
+      ]
+
+
+-- | Construct a value of type 'CreatePushMirrorOption' (by applying it's required fields, if any)
+mkCreatePushMirrorOption
+  :: CreatePushMirrorOption
+mkCreatePushMirrorOption =
+  CreatePushMirrorOption
+  { createPushMirrorOptionInterval = Nothing
+  , createPushMirrorOptionRemoteAddress = Nothing
+  , createPushMirrorOptionRemotePassword = Nothing
+  , createPushMirrorOptionRemoteUsername = Nothing
+  , createPushMirrorOptionSyncOnCommit = Nothing
+  }
+
+-- ** CreateReleaseOption
+-- | CreateReleaseOption
+-- CreateReleaseOption options when creating a release
+data CreateReleaseOption = CreateReleaseOption
+  { createReleaseOptionBody :: !(Maybe Text) -- ^ "body"
+  , createReleaseOptionDraft :: !(Maybe Bool) -- ^ "draft"
+  , createReleaseOptionName :: !(Maybe Text) -- ^ "name"
+  , createReleaseOptionPrerelease :: !(Maybe Bool) -- ^ "prerelease"
+  , createReleaseOptionTagName :: !(Text) -- ^ /Required/ "tag_name"
+  , createReleaseOptionTargetCommitish :: !(Maybe Text) -- ^ "target_commitish"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateReleaseOption
+instance A.FromJSON CreateReleaseOption where
+  parseJSON = A.withObject "CreateReleaseOption" $ \o ->
+    CreateReleaseOption
+      <$> (o .:? "body")
+      <*> (o .:? "draft")
+      <*> (o .:? "name")
+      <*> (o .:? "prerelease")
+      <*> (o .:  "tag_name")
+      <*> (o .:? "target_commitish")
+
+-- | ToJSON CreateReleaseOption
+instance A.ToJSON CreateReleaseOption where
+  toJSON CreateReleaseOption {..} =
+   _omitNulls
+      [ "body" .= createReleaseOptionBody
+      , "draft" .= createReleaseOptionDraft
+      , "name" .= createReleaseOptionName
+      , "prerelease" .= createReleaseOptionPrerelease
+      , "tag_name" .= createReleaseOptionTagName
+      , "target_commitish" .= createReleaseOptionTargetCommitish
+      ]
+
+
+-- | Construct a value of type 'CreateReleaseOption' (by applying it's required fields, if any)
+mkCreateReleaseOption
+  :: Text -- ^ 'createReleaseOptionTagName' 
+  -> CreateReleaseOption
+mkCreateReleaseOption createReleaseOptionTagName =
+  CreateReleaseOption
+  { createReleaseOptionBody = Nothing
+  , createReleaseOptionDraft = Nothing
+  , createReleaseOptionName = Nothing
+  , createReleaseOptionPrerelease = Nothing
+  , createReleaseOptionTagName
+  , createReleaseOptionTargetCommitish = Nothing
+  }
+
+-- ** CreateRepoOption
+-- | CreateRepoOption
+-- CreateRepoOption options when creating repository
+data CreateRepoOption = CreateRepoOption
+  { createRepoOptionAutoInit :: !(Maybe Bool) -- ^ "auto_init" - Whether the repository should be auto-initialized?
+  , createRepoOptionDefaultBranch :: !(Maybe Text) -- ^ "default_branch" - DefaultBranch of the repository (used when initializes and in template)
+  , createRepoOptionDescription :: !(Maybe Text) -- ^ "description" - Description of the repository to create
+  , createRepoOptionGitignores :: !(Maybe Text) -- ^ "gitignores" - Gitignores to use
+  , createRepoOptionIssueLabels :: !(Maybe Text) -- ^ "issue_labels" - Label-Set to use
+  , createRepoOptionLicense :: !(Maybe Text) -- ^ "license" - License to use
+  , createRepoOptionName :: !(Text) -- ^ /Required/ "name" - Name of the repository to create
+  , createRepoOptionPrivate :: !(Maybe Bool) -- ^ "private" - Whether the repository is private
+  , createRepoOptionReadme :: !(Maybe Text) -- ^ "readme" - Readme of the repository to create
+  , createRepoOptionTemplate :: !(Maybe Bool) -- ^ "template" - Whether the repository is template
+  , createRepoOptionTrustModel :: !(Maybe E'TrustModel) -- ^ "trust_model" - TrustModel of the repository
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateRepoOption
+instance A.FromJSON CreateRepoOption where
+  parseJSON = A.withObject "CreateRepoOption" $ \o ->
+    CreateRepoOption
+      <$> (o .:? "auto_init")
+      <*> (o .:? "default_branch")
+      <*> (o .:? "description")
+      <*> (o .:? "gitignores")
+      <*> (o .:? "issue_labels")
+      <*> (o .:? "license")
+      <*> (o .:  "name")
+      <*> (o .:? "private")
+      <*> (o .:? "readme")
+      <*> (o .:? "template")
+      <*> (o .:? "trust_model")
+
+-- | ToJSON CreateRepoOption
+instance A.ToJSON CreateRepoOption where
+  toJSON CreateRepoOption {..} =
+   _omitNulls
+      [ "auto_init" .= createRepoOptionAutoInit
+      , "default_branch" .= createRepoOptionDefaultBranch
+      , "description" .= createRepoOptionDescription
+      , "gitignores" .= createRepoOptionGitignores
+      , "issue_labels" .= createRepoOptionIssueLabels
+      , "license" .= createRepoOptionLicense
+      , "name" .= createRepoOptionName
+      , "private" .= createRepoOptionPrivate
+      , "readme" .= createRepoOptionReadme
+      , "template" .= createRepoOptionTemplate
+      , "trust_model" .= createRepoOptionTrustModel
+      ]
+
+
+-- | Construct a value of type 'CreateRepoOption' (by applying it's required fields, if any)
+mkCreateRepoOption
+  :: Text -- ^ 'createRepoOptionName': Name of the repository to create
+  -> CreateRepoOption
+mkCreateRepoOption createRepoOptionName =
+  CreateRepoOption
+  { createRepoOptionAutoInit = Nothing
+  , createRepoOptionDefaultBranch = Nothing
+  , createRepoOptionDescription = Nothing
+  , createRepoOptionGitignores = Nothing
+  , createRepoOptionIssueLabels = Nothing
+  , createRepoOptionLicense = Nothing
+  , createRepoOptionName
+  , createRepoOptionPrivate = Nothing
+  , createRepoOptionReadme = Nothing
+  , createRepoOptionTemplate = Nothing
+  , createRepoOptionTrustModel = Nothing
+  }
+
+-- ** CreateStatusOption
+-- | CreateStatusOption
+-- CreateStatusOption holds the information needed to create a new CommitStatus for a Commit
+data CreateStatusOption = CreateStatusOption
+  { createStatusOptionContext :: !(Maybe Text) -- ^ "context"
+  , createStatusOptionDescription :: !(Maybe Text) -- ^ "description"
+  , createStatusOptionState :: !(Maybe Text) -- ^ "state" - CommitStatusState holds the state of a CommitStatus It can be \&quot;pending\&quot;, \&quot;success\&quot;, \&quot;error\&quot;, \&quot;failure\&quot;, and \&quot;warning\&quot;
+  , createStatusOptionTargetUrl :: !(Maybe Text) -- ^ "target_url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateStatusOption
+instance A.FromJSON CreateStatusOption where
+  parseJSON = A.withObject "CreateStatusOption" $ \o ->
+    CreateStatusOption
+      <$> (o .:? "context")
+      <*> (o .:? "description")
+      <*> (o .:? "state")
+      <*> (o .:? "target_url")
+
+-- | ToJSON CreateStatusOption
+instance A.ToJSON CreateStatusOption where
+  toJSON CreateStatusOption {..} =
+   _omitNulls
+      [ "context" .= createStatusOptionContext
+      , "description" .= createStatusOptionDescription
+      , "state" .= createStatusOptionState
+      , "target_url" .= createStatusOptionTargetUrl
+      ]
+
+
+-- | Construct a value of type 'CreateStatusOption' (by applying it's required fields, if any)
+mkCreateStatusOption
+  :: CreateStatusOption
+mkCreateStatusOption =
+  CreateStatusOption
+  { createStatusOptionContext = Nothing
+  , createStatusOptionDescription = Nothing
+  , createStatusOptionState = Nothing
+  , createStatusOptionTargetUrl = Nothing
+  }
+
+-- ** CreateTagOption
+-- | CreateTagOption
+-- CreateTagOption options when creating a tag
+data CreateTagOption = CreateTagOption
+  { createTagOptionMessage :: !(Maybe Text) -- ^ "message"
+  , createTagOptionTagName :: !(Text) -- ^ /Required/ "tag_name"
+  , createTagOptionTarget :: !(Maybe Text) -- ^ "target"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateTagOption
+instance A.FromJSON CreateTagOption where
+  parseJSON = A.withObject "CreateTagOption" $ \o ->
+    CreateTagOption
+      <$> (o .:? "message")
+      <*> (o .:  "tag_name")
+      <*> (o .:? "target")
+
+-- | ToJSON CreateTagOption
+instance A.ToJSON CreateTagOption where
+  toJSON CreateTagOption {..} =
+   _omitNulls
+      [ "message" .= createTagOptionMessage
+      , "tag_name" .= createTagOptionTagName
+      , "target" .= createTagOptionTarget
+      ]
+
+
+-- | Construct a value of type 'CreateTagOption' (by applying it's required fields, if any)
+mkCreateTagOption
+  :: Text -- ^ 'createTagOptionTagName' 
+  -> CreateTagOption
+mkCreateTagOption createTagOptionTagName =
+  CreateTagOption
+  { createTagOptionMessage = Nothing
+  , createTagOptionTagName
+  , createTagOptionTarget = Nothing
+  }
+
+-- ** CreateTeamOption
+-- | CreateTeamOption
+-- CreateTeamOption options for creating a team
+data CreateTeamOption = CreateTeamOption
+  { createTeamOptionCanCreateOrgRepo :: !(Maybe Bool) -- ^ "can_create_org_repo"
+  , createTeamOptionDescription :: !(Maybe Text) -- ^ "description"
+  , createTeamOptionIncludesAllRepositories :: !(Maybe Bool) -- ^ "includes_all_repositories"
+  , createTeamOptionName :: !(Text) -- ^ /Required/ "name"
+  , createTeamOptionPermission :: !(Maybe E'Permission) -- ^ "permission"
+  , createTeamOptionUnits :: !(Maybe [Text]) -- ^ "units"
+  , createTeamOptionUnitsMap :: !(Maybe (Map.Map String Text)) -- ^ "units_map"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateTeamOption
+instance A.FromJSON CreateTeamOption where
+  parseJSON = A.withObject "CreateTeamOption" $ \o ->
+    CreateTeamOption
+      <$> (o .:? "can_create_org_repo")
+      <*> (o .:? "description")
+      <*> (o .:? "includes_all_repositories")
+      <*> (o .:  "name")
+      <*> (o .:? "permission")
+      <*> (o .:? "units")
+      <*> (o .:? "units_map")
+
+-- | ToJSON CreateTeamOption
+instance A.ToJSON CreateTeamOption where
+  toJSON CreateTeamOption {..} =
+   _omitNulls
+      [ "can_create_org_repo" .= createTeamOptionCanCreateOrgRepo
+      , "description" .= createTeamOptionDescription
+      , "includes_all_repositories" .= createTeamOptionIncludesAllRepositories
+      , "name" .= createTeamOptionName
+      , "permission" .= createTeamOptionPermission
+      , "units" .= createTeamOptionUnits
+      , "units_map" .= createTeamOptionUnitsMap
+      ]
+
+
+-- | Construct a value of type 'CreateTeamOption' (by applying it's required fields, if any)
+mkCreateTeamOption
+  :: Text -- ^ 'createTeamOptionName' 
+  -> CreateTeamOption
+mkCreateTeamOption createTeamOptionName =
+  CreateTeamOption
+  { createTeamOptionCanCreateOrgRepo = Nothing
+  , createTeamOptionDescription = Nothing
+  , createTeamOptionIncludesAllRepositories = Nothing
+  , createTeamOptionName
+  , createTeamOptionPermission = Nothing
+  , createTeamOptionUnits = Nothing
+  , createTeamOptionUnitsMap = Nothing
+  }
+
+-- ** CreateUserOption
+-- | CreateUserOption
+-- CreateUserOption create user options
+data CreateUserOption = CreateUserOption
+  { createUserOptionCreatedAt :: !(Maybe DateTime) -- ^ "created_at" - For explicitly setting the user creation timestamp. Useful when users are migrated from other systems. When omitted, the user&#39;s creation timestamp will be set to \&quot;now\&quot;.
+  , createUserOptionEmail :: !(Text) -- ^ /Required/ "email"
+  , createUserOptionFullName :: !(Maybe Text) -- ^ "full_name"
+  , createUserOptionLoginName :: !(Maybe Text) -- ^ "login_name"
+  , createUserOptionMustChangePassword :: !(Maybe Bool) -- ^ "must_change_password"
+  , createUserOptionPassword :: !(Text) -- ^ /Required/ "password"
+  , createUserOptionRestricted :: !(Maybe Bool) -- ^ "restricted"
+  , createUserOptionSendNotify :: !(Maybe Bool) -- ^ "send_notify"
+  , createUserOptionSourceId :: !(Maybe Integer) -- ^ "source_id"
+  , createUserOptionUsername :: !(Text) -- ^ /Required/ "username"
+  , createUserOptionVisibility :: !(Maybe Text) -- ^ "visibility"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateUserOption
+instance A.FromJSON CreateUserOption where
+  parseJSON = A.withObject "CreateUserOption" $ \o ->
+    CreateUserOption
+      <$> (o .:? "created_at")
+      <*> (o .:  "email")
+      <*> (o .:? "full_name")
+      <*> (o .:? "login_name")
+      <*> (o .:? "must_change_password")
+      <*> (o .:  "password")
+      <*> (o .:? "restricted")
+      <*> (o .:? "send_notify")
+      <*> (o .:? "source_id")
+      <*> (o .:  "username")
+      <*> (o .:? "visibility")
+
+-- | ToJSON CreateUserOption
+instance A.ToJSON CreateUserOption where
+  toJSON CreateUserOption {..} =
+   _omitNulls
+      [ "created_at" .= createUserOptionCreatedAt
+      , "email" .= createUserOptionEmail
+      , "full_name" .= createUserOptionFullName
+      , "login_name" .= createUserOptionLoginName
+      , "must_change_password" .= createUserOptionMustChangePassword
+      , "password" .= createUserOptionPassword
+      , "restricted" .= createUserOptionRestricted
+      , "send_notify" .= createUserOptionSendNotify
+      , "source_id" .= createUserOptionSourceId
+      , "username" .= createUserOptionUsername
+      , "visibility" .= createUserOptionVisibility
+      ]
+
+
+-- | Construct a value of type 'CreateUserOption' (by applying it's required fields, if any)
+mkCreateUserOption
+  :: Text -- ^ 'createUserOptionEmail' 
+  -> Text -- ^ 'createUserOptionPassword' 
+  -> Text -- ^ 'createUserOptionUsername' 
+  -> CreateUserOption
+mkCreateUserOption createUserOptionEmail createUserOptionPassword createUserOptionUsername =
+  CreateUserOption
+  { createUserOptionCreatedAt = Nothing
+  , createUserOptionEmail
+  , createUserOptionFullName = Nothing
+  , createUserOptionLoginName = Nothing
+  , createUserOptionMustChangePassword = Nothing
+  , createUserOptionPassword
+  , createUserOptionRestricted = Nothing
+  , createUserOptionSendNotify = Nothing
+  , createUserOptionSourceId = Nothing
+  , createUserOptionUsername
+  , createUserOptionVisibility = Nothing
+  }
+
+-- ** CreateWikiPageOptions
+-- | CreateWikiPageOptions
+-- CreateWikiPageOptions form for creating wiki
+data CreateWikiPageOptions = CreateWikiPageOptions
+  { createWikiPageOptionsContentBase64 :: !(Maybe Text) -- ^ "content_base64" - content must be base64 encoded
+  , createWikiPageOptionsMessage :: !(Maybe Text) -- ^ "message" - optional commit message summarizing the change
+  , createWikiPageOptionsTitle :: !(Maybe Text) -- ^ "title" - page title. leave empty to keep unchanged
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON CreateWikiPageOptions
+instance A.FromJSON CreateWikiPageOptions where
+  parseJSON = A.withObject "CreateWikiPageOptions" $ \o ->
+    CreateWikiPageOptions
+      <$> (o .:? "content_base64")
+      <*> (o .:? "message")
+      <*> (o .:? "title")
+
+-- | ToJSON CreateWikiPageOptions
+instance A.ToJSON CreateWikiPageOptions where
+  toJSON CreateWikiPageOptions {..} =
+   _omitNulls
+      [ "content_base64" .= createWikiPageOptionsContentBase64
+      , "message" .= createWikiPageOptionsMessage
+      , "title" .= createWikiPageOptionsTitle
+      ]
+
+
+-- | Construct a value of type 'CreateWikiPageOptions' (by applying it's required fields, if any)
+mkCreateWikiPageOptions
+  :: CreateWikiPageOptions
+mkCreateWikiPageOptions =
+  CreateWikiPageOptions
+  { createWikiPageOptionsContentBase64 = Nothing
+  , createWikiPageOptionsMessage = Nothing
+  , createWikiPageOptionsTitle = Nothing
+  }
+
+-- ** Cron
+-- | Cron
+-- Cron represents a Cron task
+data Cron = Cron
+  { cronExecTimes :: !(Maybe Integer) -- ^ "exec_times"
+  , cronName :: !(Maybe Text) -- ^ "name"
+  , cronNext :: !(Maybe DateTime) -- ^ "next"
+  , cronPrev :: !(Maybe DateTime) -- ^ "prev"
+  , cronSchedule :: !(Maybe Text) -- ^ "schedule"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Cron
+instance A.FromJSON Cron where
+  parseJSON = A.withObject "Cron" $ \o ->
+    Cron
+      <$> (o .:? "exec_times")
+      <*> (o .:? "name")
+      <*> (o .:? "next")
+      <*> (o .:? "prev")
+      <*> (o .:? "schedule")
+
+-- | ToJSON Cron
+instance A.ToJSON Cron where
+  toJSON Cron {..} =
+   _omitNulls
+      [ "exec_times" .= cronExecTimes
+      , "name" .= cronName
+      , "next" .= cronNext
+      , "prev" .= cronPrev
+      , "schedule" .= cronSchedule
+      ]
+
+
+-- | Construct a value of type 'Cron' (by applying it's required fields, if any)
+mkCron
+  :: Cron
+mkCron =
+  Cron
+  { cronExecTimes = Nothing
+  , cronName = Nothing
+  , cronNext = Nothing
+  , cronPrev = Nothing
+  , cronSchedule = Nothing
+  }
+
+-- ** DeleteEmailOption
+-- | DeleteEmailOption
+-- DeleteEmailOption options when deleting email addresses
+data DeleteEmailOption = DeleteEmailOption
+  { deleteEmailOptionEmails :: !(Maybe [Text]) -- ^ "emails" - email addresses to delete
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON DeleteEmailOption
+instance A.FromJSON DeleteEmailOption where
+  parseJSON = A.withObject "DeleteEmailOption" $ \o ->
+    DeleteEmailOption
+      <$> (o .:? "emails")
+
+-- | ToJSON DeleteEmailOption
+instance A.ToJSON DeleteEmailOption where
+  toJSON DeleteEmailOption {..} =
+   _omitNulls
+      [ "emails" .= deleteEmailOptionEmails
+      ]
+
+
+-- | Construct a value of type 'DeleteEmailOption' (by applying it's required fields, if any)
+mkDeleteEmailOption
+  :: DeleteEmailOption
+mkDeleteEmailOption =
+  DeleteEmailOption
+  { deleteEmailOptionEmails = Nothing
+  }
+
+-- ** DeleteFileOptions
+-- | DeleteFileOptions
+-- DeleteFileOptions options for deleting files (used for other File structs below) Note: `author` and `committer` are optional (if only one is given, it will be used for the other, otherwise the authenticated user will be used)
+data DeleteFileOptions = DeleteFileOptions
+  { deleteFileOptionsAuthor :: !(Maybe Identity) -- ^ "author"
+  , deleteFileOptionsBranch :: !(Maybe Text) -- ^ "branch" - branch (optional) to base this file from. if not given, the default branch is used
+  , deleteFileOptionsCommitter :: !(Maybe Identity) -- ^ "committer"
+  , deleteFileOptionsDates :: !(Maybe CommitDateOptions) -- ^ "dates"
+  , deleteFileOptionsMessage :: !(Maybe Text) -- ^ "message" - message (optional) for the commit of this file. if not supplied, a default message will be used
+  , deleteFileOptionsNewBranch :: !(Maybe Text) -- ^ "new_branch" - new_branch (optional) will make a new branch from &#x60;branch&#x60; before creating the file
+  , deleteFileOptionsSha :: !(Text) -- ^ /Required/ "sha" - sha is the SHA for the file that already exists
+  , deleteFileOptionsSignoff :: !(Maybe Bool) -- ^ "signoff" - Add a Signed-off-by trailer by the committer at the end of the commit log message.
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON DeleteFileOptions
+instance A.FromJSON DeleteFileOptions where
+  parseJSON = A.withObject "DeleteFileOptions" $ \o ->
+    DeleteFileOptions
+      <$> (o .:? "author")
+      <*> (o .:? "branch")
+      <*> (o .:? "committer")
+      <*> (o .:? "dates")
+      <*> (o .:? "message")
+      <*> (o .:? "new_branch")
+      <*> (o .:  "sha")
+      <*> (o .:? "signoff")
+
+-- | ToJSON DeleteFileOptions
+instance A.ToJSON DeleteFileOptions where
+  toJSON DeleteFileOptions {..} =
+   _omitNulls
+      [ "author" .= deleteFileOptionsAuthor
+      , "branch" .= deleteFileOptionsBranch
+      , "committer" .= deleteFileOptionsCommitter
+      , "dates" .= deleteFileOptionsDates
+      , "message" .= deleteFileOptionsMessage
+      , "new_branch" .= deleteFileOptionsNewBranch
+      , "sha" .= deleteFileOptionsSha
+      , "signoff" .= deleteFileOptionsSignoff
+      ]
+
+
+-- | Construct a value of type 'DeleteFileOptions' (by applying it's required fields, if any)
+mkDeleteFileOptions
+  :: Text -- ^ 'deleteFileOptionsSha': sha is the SHA for the file that already exists
+  -> DeleteFileOptions
+mkDeleteFileOptions deleteFileOptionsSha =
+  DeleteFileOptions
+  { deleteFileOptionsAuthor = Nothing
+  , deleteFileOptionsBranch = Nothing
+  , deleteFileOptionsCommitter = Nothing
+  , deleteFileOptionsDates = Nothing
+  , deleteFileOptionsMessage = Nothing
+  , deleteFileOptionsNewBranch = Nothing
+  , deleteFileOptionsSha
+  , deleteFileOptionsSignoff = Nothing
+  }
+
+-- ** DeployKey
+-- | DeployKey
+-- DeployKey a deploy key
+data DeployKey = DeployKey
+  { deployKeyCreatedAt :: !(Maybe DateTime) -- ^ "created_at"
+  , deployKeyFingerprint :: !(Maybe Text) -- ^ "fingerprint"
+  , deployKeyId :: !(Maybe Integer) -- ^ "id"
+  , deployKeyKey :: !(Maybe Text) -- ^ "key"
+  , deployKeyKeyId :: !(Maybe Integer) -- ^ "key_id"
+  , deployKeyReadOnly :: !(Maybe Bool) -- ^ "read_only"
+  , deployKeyRepository :: !(Maybe Repository) -- ^ "repository"
+  , deployKeyTitle :: !(Maybe Text) -- ^ "title"
+  , deployKeyUrl :: !(Maybe Text) -- ^ "url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON DeployKey
+instance A.FromJSON DeployKey where
+  parseJSON = A.withObject "DeployKey" $ \o ->
+    DeployKey
+      <$> (o .:? "created_at")
+      <*> (o .:? "fingerprint")
+      <*> (o .:? "id")
+      <*> (o .:? "key")
+      <*> (o .:? "key_id")
+      <*> (o .:? "read_only")
+      <*> (o .:? "repository")
+      <*> (o .:? "title")
+      <*> (o .:? "url")
+
+-- | ToJSON DeployKey
+instance A.ToJSON DeployKey where
+  toJSON DeployKey {..} =
+   _omitNulls
+      [ "created_at" .= deployKeyCreatedAt
+      , "fingerprint" .= deployKeyFingerprint
+      , "id" .= deployKeyId
+      , "key" .= deployKeyKey
+      , "key_id" .= deployKeyKeyId
+      , "read_only" .= deployKeyReadOnly
+      , "repository" .= deployKeyRepository
+      , "title" .= deployKeyTitle
+      , "url" .= deployKeyUrl
+      ]
+
+
+-- | Construct a value of type 'DeployKey' (by applying it's required fields, if any)
+mkDeployKey
+  :: DeployKey
+mkDeployKey =
+  DeployKey
+  { deployKeyCreatedAt = Nothing
+  , deployKeyFingerprint = Nothing
+  , deployKeyId = Nothing
+  , deployKeyKey = Nothing
+  , deployKeyKeyId = Nothing
+  , deployKeyReadOnly = Nothing
+  , deployKeyRepository = Nothing
+  , deployKeyTitle = Nothing
+  , deployKeyUrl = Nothing
+  }
+
+-- ** DismissPullReviewOptions
+-- | DismissPullReviewOptions
+-- DismissPullReviewOptions are options to dismiss a pull review
+data DismissPullReviewOptions = DismissPullReviewOptions
+  { dismissPullReviewOptionsMessage :: !(Maybe Text) -- ^ "message"
+  , dismissPullReviewOptionsPriors :: !(Maybe Bool) -- ^ "priors"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON DismissPullReviewOptions
+instance A.FromJSON DismissPullReviewOptions where
+  parseJSON = A.withObject "DismissPullReviewOptions" $ \o ->
+    DismissPullReviewOptions
+      <$> (o .:? "message")
+      <*> (o .:? "priors")
+
+-- | ToJSON DismissPullReviewOptions
+instance A.ToJSON DismissPullReviewOptions where
+  toJSON DismissPullReviewOptions {..} =
+   _omitNulls
+      [ "message" .= dismissPullReviewOptionsMessage
+      , "priors" .= dismissPullReviewOptionsPriors
+      ]
+
+
+-- | Construct a value of type 'DismissPullReviewOptions' (by applying it's required fields, if any)
+mkDismissPullReviewOptions
+  :: DismissPullReviewOptions
+mkDismissPullReviewOptions =
+  DismissPullReviewOptions
+  { dismissPullReviewOptionsMessage = Nothing
+  , dismissPullReviewOptionsPriors = Nothing
+  }
+
+-- ** EditAttachmentOptions
+-- | EditAttachmentOptions
+-- EditAttachmentOptions options for editing attachments
+data EditAttachmentOptions = EditAttachmentOptions
+  { editAttachmentOptionsName :: !(Maybe Text) -- ^ "name"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON EditAttachmentOptions
+instance A.FromJSON EditAttachmentOptions where
+  parseJSON = A.withObject "EditAttachmentOptions" $ \o ->
+    EditAttachmentOptions
+      <$> (o .:? "name")
+
+-- | ToJSON EditAttachmentOptions
+instance A.ToJSON EditAttachmentOptions where
+  toJSON EditAttachmentOptions {..} =
+   _omitNulls
+      [ "name" .= editAttachmentOptionsName
+      ]
+
+
+-- | Construct a value of type 'EditAttachmentOptions' (by applying it's required fields, if any)
+mkEditAttachmentOptions
+  :: EditAttachmentOptions
+mkEditAttachmentOptions =
+  EditAttachmentOptions
+  { editAttachmentOptionsName = Nothing
+  }
+
+-- ** EditBranchProtectionOption
+-- | EditBranchProtectionOption
+-- EditBranchProtectionOption options for editing a branch protection
+data EditBranchProtectionOption = EditBranchProtectionOption
+  { editBranchProtectionOptionApprovalsWhitelistTeams :: !(Maybe [Text]) -- ^ "approvals_whitelist_teams"
+  , editBranchProtectionOptionApprovalsWhitelistUsername :: !(Maybe [Text]) -- ^ "approvals_whitelist_username"
+  , editBranchProtectionOptionBlockOnOfficialReviewRequests :: !(Maybe Bool) -- ^ "block_on_official_review_requests"
+  , editBranchProtectionOptionBlockOnOutdatedBranch :: !(Maybe Bool) -- ^ "block_on_outdated_branch"
+  , editBranchProtectionOptionBlockOnRejectedReviews :: !(Maybe Bool) -- ^ "block_on_rejected_reviews"
+  , editBranchProtectionOptionDismissStaleApprovals :: !(Maybe Bool) -- ^ "dismiss_stale_approvals"
+  , editBranchProtectionOptionEnableApprovalsWhitelist :: !(Maybe Bool) -- ^ "enable_approvals_whitelist"
+  , editBranchProtectionOptionEnableMergeWhitelist :: !(Maybe Bool) -- ^ "enable_merge_whitelist"
+  , editBranchProtectionOptionEnablePush :: !(Maybe Bool) -- ^ "enable_push"
+  , editBranchProtectionOptionEnablePushWhitelist :: !(Maybe Bool) -- ^ "enable_push_whitelist"
+  , editBranchProtectionOptionEnableStatusCheck :: !(Maybe Bool) -- ^ "enable_status_check"
+  , editBranchProtectionOptionMergeWhitelistTeams :: !(Maybe [Text]) -- ^ "merge_whitelist_teams"
+  , editBranchProtectionOptionMergeWhitelistUsernames :: !(Maybe [Text]) -- ^ "merge_whitelist_usernames"
+  , editBranchProtectionOptionProtectedFilePatterns :: !(Maybe Text) -- ^ "protected_file_patterns"
+  , editBranchProtectionOptionPushWhitelistDeployKeys :: !(Maybe Bool) -- ^ "push_whitelist_deploy_keys"
+  , editBranchProtectionOptionPushWhitelistTeams :: !(Maybe [Text]) -- ^ "push_whitelist_teams"
+  , editBranchProtectionOptionPushWhitelistUsernames :: !(Maybe [Text]) -- ^ "push_whitelist_usernames"
+  , editBranchProtectionOptionRequireSignedCommits :: !(Maybe Bool) -- ^ "require_signed_commits"
+  , editBranchProtectionOptionRequiredApprovals :: !(Maybe Integer) -- ^ "required_approvals"
+  , editBranchProtectionOptionStatusCheckContexts :: !(Maybe [Text]) -- ^ "status_check_contexts"
+  , editBranchProtectionOptionUnprotectedFilePatterns :: !(Maybe Text) -- ^ "unprotected_file_patterns"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON EditBranchProtectionOption
+instance A.FromJSON EditBranchProtectionOption where
+  parseJSON = A.withObject "EditBranchProtectionOption" $ \o ->
+    EditBranchProtectionOption
+      <$> (o .:? "approvals_whitelist_teams")
+      <*> (o .:? "approvals_whitelist_username")
+      <*> (o .:? "block_on_official_review_requests")
+      <*> (o .:? "block_on_outdated_branch")
+      <*> (o .:? "block_on_rejected_reviews")
+      <*> (o .:? "dismiss_stale_approvals")
+      <*> (o .:? "enable_approvals_whitelist")
+      <*> (o .:? "enable_merge_whitelist")
+      <*> (o .:? "enable_push")
+      <*> (o .:? "enable_push_whitelist")
+      <*> (o .:? "enable_status_check")
+      <*> (o .:? "merge_whitelist_teams")
+      <*> (o .:? "merge_whitelist_usernames")
+      <*> (o .:? "protected_file_patterns")
+      <*> (o .:? "push_whitelist_deploy_keys")
+      <*> (o .:? "push_whitelist_teams")
+      <*> (o .:? "push_whitelist_usernames")
+      <*> (o .:? "require_signed_commits")
+      <*> (o .:? "required_approvals")
+      <*> (o .:? "status_check_contexts")
+      <*> (o .:? "unprotected_file_patterns")
+
+-- | ToJSON EditBranchProtectionOption
+instance A.ToJSON EditBranchProtectionOption where
+  toJSON EditBranchProtectionOption {..} =
+   _omitNulls
+      [ "approvals_whitelist_teams" .= editBranchProtectionOptionApprovalsWhitelistTeams
+      , "approvals_whitelist_username" .= editBranchProtectionOptionApprovalsWhitelistUsername
+      , "block_on_official_review_requests" .= editBranchProtectionOptionBlockOnOfficialReviewRequests
+      , "block_on_outdated_branch" .= editBranchProtectionOptionBlockOnOutdatedBranch
+      , "block_on_rejected_reviews" .= editBranchProtectionOptionBlockOnRejectedReviews
+      , "dismiss_stale_approvals" .= editBranchProtectionOptionDismissStaleApprovals
+      , "enable_approvals_whitelist" .= editBranchProtectionOptionEnableApprovalsWhitelist
+      , "enable_merge_whitelist" .= editBranchProtectionOptionEnableMergeWhitelist
+      , "enable_push" .= editBranchProtectionOptionEnablePush
+      , "enable_push_whitelist" .= editBranchProtectionOptionEnablePushWhitelist
+      , "enable_status_check" .= editBranchProtectionOptionEnableStatusCheck
+      , "merge_whitelist_teams" .= editBranchProtectionOptionMergeWhitelistTeams
+      , "merge_whitelist_usernames" .= editBranchProtectionOptionMergeWhitelistUsernames
+      , "protected_file_patterns" .= editBranchProtectionOptionProtectedFilePatterns
+      , "push_whitelist_deploy_keys" .= editBranchProtectionOptionPushWhitelistDeployKeys
+      , "push_whitelist_teams" .= editBranchProtectionOptionPushWhitelistTeams
+      , "push_whitelist_usernames" .= editBranchProtectionOptionPushWhitelistUsernames
+      , "require_signed_commits" .= editBranchProtectionOptionRequireSignedCommits
+      , "required_approvals" .= editBranchProtectionOptionRequiredApprovals
+      , "status_check_contexts" .= editBranchProtectionOptionStatusCheckContexts
+      , "unprotected_file_patterns" .= editBranchProtectionOptionUnprotectedFilePatterns
+      ]
+
+
+-- | Construct a value of type 'EditBranchProtectionOption' (by applying it's required fields, if any)
+mkEditBranchProtectionOption
+  :: EditBranchProtectionOption
+mkEditBranchProtectionOption =
+  EditBranchProtectionOption
+  { editBranchProtectionOptionApprovalsWhitelistTeams = Nothing
+  , editBranchProtectionOptionApprovalsWhitelistUsername = Nothing
+  , editBranchProtectionOptionBlockOnOfficialReviewRequests = Nothing
+  , editBranchProtectionOptionBlockOnOutdatedBranch = Nothing
+  , editBranchProtectionOptionBlockOnRejectedReviews = Nothing
+  , editBranchProtectionOptionDismissStaleApprovals = Nothing
+  , editBranchProtectionOptionEnableApprovalsWhitelist = Nothing
+  , editBranchProtectionOptionEnableMergeWhitelist = Nothing
+  , editBranchProtectionOptionEnablePush = Nothing
+  , editBranchProtectionOptionEnablePushWhitelist = Nothing
+  , editBranchProtectionOptionEnableStatusCheck = Nothing
+  , editBranchProtectionOptionMergeWhitelistTeams = Nothing
+  , editBranchProtectionOptionMergeWhitelistUsernames = Nothing
+  , editBranchProtectionOptionProtectedFilePatterns = Nothing
+  , editBranchProtectionOptionPushWhitelistDeployKeys = Nothing
+  , editBranchProtectionOptionPushWhitelistTeams = Nothing
+  , editBranchProtectionOptionPushWhitelistUsernames = Nothing
+  , editBranchProtectionOptionRequireSignedCommits = Nothing
+  , editBranchProtectionOptionRequiredApprovals = Nothing
+  , editBranchProtectionOptionStatusCheckContexts = Nothing
+  , editBranchProtectionOptionUnprotectedFilePatterns = Nothing
+  }
+
+-- ** EditDeadlineOption
+-- | EditDeadlineOption
+-- EditDeadlineOption options for creating a deadline
+data EditDeadlineOption = EditDeadlineOption
+  { editDeadlineOptionDueDate :: !(DateTime) -- ^ /Required/ "due_date"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON EditDeadlineOption
+instance A.FromJSON EditDeadlineOption where
+  parseJSON = A.withObject "EditDeadlineOption" $ \o ->
+    EditDeadlineOption
+      <$> (o .:  "due_date")
+
+-- | ToJSON EditDeadlineOption
+instance A.ToJSON EditDeadlineOption where
+  toJSON EditDeadlineOption {..} =
+   _omitNulls
+      [ "due_date" .= editDeadlineOptionDueDate
+      ]
+
+
+-- | Construct a value of type 'EditDeadlineOption' (by applying it's required fields, if any)
+mkEditDeadlineOption
+  :: DateTime -- ^ 'editDeadlineOptionDueDate' 
+  -> EditDeadlineOption
+mkEditDeadlineOption editDeadlineOptionDueDate =
+  EditDeadlineOption
+  { editDeadlineOptionDueDate
+  }
+
+-- ** EditGitHookOption
+-- | EditGitHookOption
+-- EditGitHookOption options when modifying one Git hook
+data EditGitHookOption = EditGitHookOption
+  { editGitHookOptionContent :: !(Maybe Text) -- ^ "content"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON EditGitHookOption
+instance A.FromJSON EditGitHookOption where
+  parseJSON = A.withObject "EditGitHookOption" $ \o ->
+    EditGitHookOption
+      <$> (o .:? "content")
+
+-- | ToJSON EditGitHookOption
+instance A.ToJSON EditGitHookOption where
+  toJSON EditGitHookOption {..} =
+   _omitNulls
+      [ "content" .= editGitHookOptionContent
+      ]
+
+
+-- | Construct a value of type 'EditGitHookOption' (by applying it's required fields, if any)
+mkEditGitHookOption
+  :: EditGitHookOption
+mkEditGitHookOption =
+  EditGitHookOption
+  { editGitHookOptionContent = Nothing
+  }
+
+-- ** EditHookOption
+-- | EditHookOption
+-- EditHookOption options when modify one hook
+data EditHookOption = EditHookOption
+  { editHookOptionActive :: !(Maybe Bool) -- ^ "active"
+  , editHookOptionAuthorizationHeader :: !(Maybe Text) -- ^ "authorization_header"
+  , editHookOptionBranchFilter :: !(Maybe Text) -- ^ "branch_filter"
+  , editHookOptionConfig :: !(Maybe (Map.Map String Text)) -- ^ "config"
+  , editHookOptionEvents :: !(Maybe [Text]) -- ^ "events"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON EditHookOption
+instance A.FromJSON EditHookOption where
+  parseJSON = A.withObject "EditHookOption" $ \o ->
+    EditHookOption
+      <$> (o .:? "active")
+      <*> (o .:? "authorization_header")
+      <*> (o .:? "branch_filter")
+      <*> (o .:? "config")
+      <*> (o .:? "events")
+
+-- | ToJSON EditHookOption
+instance A.ToJSON EditHookOption where
+  toJSON EditHookOption {..} =
+   _omitNulls
+      [ "active" .= editHookOptionActive
+      , "authorization_header" .= editHookOptionAuthorizationHeader
+      , "branch_filter" .= editHookOptionBranchFilter
+      , "config" .= editHookOptionConfig
+      , "events" .= editHookOptionEvents
+      ]
+
+
+-- | Construct a value of type 'EditHookOption' (by applying it's required fields, if any)
+mkEditHookOption
+  :: EditHookOption
+mkEditHookOption =
+  EditHookOption
+  { editHookOptionActive = Nothing
+  , editHookOptionAuthorizationHeader = Nothing
+  , editHookOptionBranchFilter = Nothing
+  , editHookOptionConfig = Nothing
+  , editHookOptionEvents = Nothing
+  }
+
+-- ** EditIssueCommentOption
+-- | EditIssueCommentOption
+-- EditIssueCommentOption options for editing a comment
+data EditIssueCommentOption = EditIssueCommentOption
+  { editIssueCommentOptionBody :: !(Text) -- ^ /Required/ "body"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON EditIssueCommentOption
+instance A.FromJSON EditIssueCommentOption where
+  parseJSON = A.withObject "EditIssueCommentOption" $ \o ->
+    EditIssueCommentOption
+      <$> (o .:  "body")
+
+-- | ToJSON EditIssueCommentOption
+instance A.ToJSON EditIssueCommentOption where
+  toJSON EditIssueCommentOption {..} =
+   _omitNulls
+      [ "body" .= editIssueCommentOptionBody
+      ]
+
+
+-- | Construct a value of type 'EditIssueCommentOption' (by applying it's required fields, if any)
+mkEditIssueCommentOption
+  :: Text -- ^ 'editIssueCommentOptionBody' 
+  -> EditIssueCommentOption
+mkEditIssueCommentOption editIssueCommentOptionBody =
+  EditIssueCommentOption
+  { editIssueCommentOptionBody
+  }
+
+-- ** EditIssueOption
+-- | EditIssueOption
+-- EditIssueOption options for editing an issue
+data EditIssueOption = EditIssueOption
+  { editIssueOptionAssignee :: !(Maybe Text) -- ^ "assignee" - deprecated
+  , editIssueOptionAssignees :: !(Maybe [Text]) -- ^ "assignees"
+  , editIssueOptionBody :: !(Maybe Text) -- ^ "body"
+  , editIssueOptionDueDate :: !(Maybe DateTime) -- ^ "due_date"
+  , editIssueOptionMilestone :: !(Maybe Integer) -- ^ "milestone"
+  , editIssueOptionRef :: !(Maybe Text) -- ^ "ref"
+  , editIssueOptionState :: !(Maybe Text) -- ^ "state"
+  , editIssueOptionTitle :: !(Maybe Text) -- ^ "title"
+  , editIssueOptionUnsetDueDate :: !(Maybe Bool) -- ^ "unset_due_date"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON EditIssueOption
+instance A.FromJSON EditIssueOption where
+  parseJSON = A.withObject "EditIssueOption" $ \o ->
+    EditIssueOption
+      <$> (o .:? "assignee")
+      <*> (o .:? "assignees")
+      <*> (o .:? "body")
+      <*> (o .:? "due_date")
+      <*> (o .:? "milestone")
+      <*> (o .:? "ref")
+      <*> (o .:? "state")
+      <*> (o .:? "title")
+      <*> (o .:? "unset_due_date")
+
+-- | ToJSON EditIssueOption
+instance A.ToJSON EditIssueOption where
+  toJSON EditIssueOption {..} =
+   _omitNulls
+      [ "assignee" .= editIssueOptionAssignee
+      , "assignees" .= editIssueOptionAssignees
+      , "body" .= editIssueOptionBody
+      , "due_date" .= editIssueOptionDueDate
+      , "milestone" .= editIssueOptionMilestone
+      , "ref" .= editIssueOptionRef
+      , "state" .= editIssueOptionState
+      , "title" .= editIssueOptionTitle
+      , "unset_due_date" .= editIssueOptionUnsetDueDate
+      ]
+
+
+-- | Construct a value of type 'EditIssueOption' (by applying it's required fields, if any)
+mkEditIssueOption
+  :: EditIssueOption
+mkEditIssueOption =
+  EditIssueOption
+  { editIssueOptionAssignee = Nothing
+  , editIssueOptionAssignees = Nothing
+  , editIssueOptionBody = Nothing
+  , editIssueOptionDueDate = Nothing
+  , editIssueOptionMilestone = Nothing
+  , editIssueOptionRef = Nothing
+  , editIssueOptionState = Nothing
+  , editIssueOptionTitle = Nothing
+  , editIssueOptionUnsetDueDate = Nothing
+  }
+
+-- ** EditLabelOption
+-- | EditLabelOption
+-- EditLabelOption options for editing a label
+data EditLabelOption = EditLabelOption
+  { editLabelOptionColor :: !(Maybe Text) -- ^ "color"
+  , editLabelOptionDescription :: !(Maybe Text) -- ^ "description"
+  , editLabelOptionExclusive :: !(Maybe Bool) -- ^ "exclusive"
+  , editLabelOptionName :: !(Maybe Text) -- ^ "name"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON EditLabelOption
+instance A.FromJSON EditLabelOption where
+  parseJSON = A.withObject "EditLabelOption" $ \o ->
+    EditLabelOption
+      <$> (o .:? "color")
+      <*> (o .:? "description")
+      <*> (o .:? "exclusive")
+      <*> (o .:? "name")
+
+-- | ToJSON EditLabelOption
+instance A.ToJSON EditLabelOption where
+  toJSON EditLabelOption {..} =
+   _omitNulls
+      [ "color" .= editLabelOptionColor
+      , "description" .= editLabelOptionDescription
+      , "exclusive" .= editLabelOptionExclusive
+      , "name" .= editLabelOptionName
+      ]
+
+
+-- | Construct a value of type 'EditLabelOption' (by applying it's required fields, if any)
+mkEditLabelOption
+  :: EditLabelOption
+mkEditLabelOption =
+  EditLabelOption
+  { editLabelOptionColor = Nothing
+  , editLabelOptionDescription = Nothing
+  , editLabelOptionExclusive = Nothing
+  , editLabelOptionName = Nothing
+  }
+
+-- ** EditMilestoneOption
+-- | EditMilestoneOption
+-- EditMilestoneOption options for editing a milestone
+data EditMilestoneOption = EditMilestoneOption
+  { editMilestoneOptionDescription :: !(Maybe Text) -- ^ "description"
+  , editMilestoneOptionDueOn :: !(Maybe DateTime) -- ^ "due_on"
+  , editMilestoneOptionState :: !(Maybe Text) -- ^ "state"
+  , editMilestoneOptionTitle :: !(Maybe Text) -- ^ "title"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON EditMilestoneOption
+instance A.FromJSON EditMilestoneOption where
+  parseJSON = A.withObject "EditMilestoneOption" $ \o ->
+    EditMilestoneOption
+      <$> (o .:? "description")
+      <*> (o .:? "due_on")
+      <*> (o .:? "state")
+      <*> (o .:? "title")
+
+-- | ToJSON EditMilestoneOption
+instance A.ToJSON EditMilestoneOption where
+  toJSON EditMilestoneOption {..} =
+   _omitNulls
+      [ "description" .= editMilestoneOptionDescription
+      , "due_on" .= editMilestoneOptionDueOn
+      , "state" .= editMilestoneOptionState
+      , "title" .= editMilestoneOptionTitle
+      ]
+
+
+-- | Construct a value of type 'EditMilestoneOption' (by applying it's required fields, if any)
+mkEditMilestoneOption
+  :: EditMilestoneOption
+mkEditMilestoneOption =
+  EditMilestoneOption
+  { editMilestoneOptionDescription = Nothing
+  , editMilestoneOptionDueOn = Nothing
+  , editMilestoneOptionState = Nothing
+  , editMilestoneOptionTitle = Nothing
+  }
+
+-- ** EditOrgOption
+-- | EditOrgOption
+-- EditOrgOption options for editing an organization
+data EditOrgOption = EditOrgOption
+  { editOrgOptionDescription :: !(Maybe Text) -- ^ "description"
+  , editOrgOptionFullName :: !(Maybe Text) -- ^ "full_name"
+  , editOrgOptionLocation :: !(Maybe Text) -- ^ "location"
+  , editOrgOptionRepoAdminChangeTeamAccess :: !(Maybe Bool) -- ^ "repo_admin_change_team_access"
+  , editOrgOptionVisibility :: !(Maybe E'Visibility) -- ^ "visibility" - possible values are &#x60;public&#x60;, &#x60;limited&#x60; or &#x60;private&#x60;
+  , editOrgOptionWebsite :: !(Maybe Text) -- ^ "website"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON EditOrgOption
+instance A.FromJSON EditOrgOption where
+  parseJSON = A.withObject "EditOrgOption" $ \o ->
+    EditOrgOption
+      <$> (o .:? "description")
+      <*> (o .:? "full_name")
+      <*> (o .:? "location")
+      <*> (o .:? "repo_admin_change_team_access")
+      <*> (o .:? "visibility")
+      <*> (o .:? "website")
+
+-- | ToJSON EditOrgOption
+instance A.ToJSON EditOrgOption where
+  toJSON EditOrgOption {..} =
+   _omitNulls
+      [ "description" .= editOrgOptionDescription
+      , "full_name" .= editOrgOptionFullName
+      , "location" .= editOrgOptionLocation
+      , "repo_admin_change_team_access" .= editOrgOptionRepoAdminChangeTeamAccess
+      , "visibility" .= editOrgOptionVisibility
+      , "website" .= editOrgOptionWebsite
+      ]
+
+
+-- | Construct a value of type 'EditOrgOption' (by applying it's required fields, if any)
+mkEditOrgOption
+  :: EditOrgOption
+mkEditOrgOption =
+  EditOrgOption
+  { editOrgOptionDescription = Nothing
+  , editOrgOptionFullName = Nothing
+  , editOrgOptionLocation = Nothing
+  , editOrgOptionRepoAdminChangeTeamAccess = Nothing
+  , editOrgOptionVisibility = Nothing
+  , editOrgOptionWebsite = Nothing
+  }
+
+-- ** EditPullRequestOption
+-- | EditPullRequestOption
+-- EditPullRequestOption options when modify pull request
+data EditPullRequestOption = EditPullRequestOption
+  { editPullRequestOptionAllowMaintainerEdit :: !(Maybe Bool) -- ^ "allow_maintainer_edit"
+  , editPullRequestOptionAssignee :: !(Maybe Text) -- ^ "assignee"
+  , editPullRequestOptionAssignees :: !(Maybe [Text]) -- ^ "assignees"
+  , editPullRequestOptionBase :: !(Maybe Text) -- ^ "base"
+  , editPullRequestOptionBody :: !(Maybe Text) -- ^ "body"
+  , editPullRequestOptionDueDate :: !(Maybe DateTime) -- ^ "due_date"
+  , editPullRequestOptionLabels :: !(Maybe [Integer]) -- ^ "labels"
+  , editPullRequestOptionMilestone :: !(Maybe Integer) -- ^ "milestone"
+  , editPullRequestOptionState :: !(Maybe Text) -- ^ "state"
+  , editPullRequestOptionTitle :: !(Maybe Text) -- ^ "title"
+  , editPullRequestOptionUnsetDueDate :: !(Maybe Bool) -- ^ "unset_due_date"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON EditPullRequestOption
+instance A.FromJSON EditPullRequestOption where
+  parseJSON = A.withObject "EditPullRequestOption" $ \o ->
+    EditPullRequestOption
+      <$> (o .:? "allow_maintainer_edit")
+      <*> (o .:? "assignee")
+      <*> (o .:? "assignees")
+      <*> (o .:? "base")
+      <*> (o .:? "body")
+      <*> (o .:? "due_date")
+      <*> (o .:? "labels")
+      <*> (o .:? "milestone")
+      <*> (o .:? "state")
+      <*> (o .:? "title")
+      <*> (o .:? "unset_due_date")
+
+-- | ToJSON EditPullRequestOption
+instance A.ToJSON EditPullRequestOption where
+  toJSON EditPullRequestOption {..} =
+   _omitNulls
+      [ "allow_maintainer_edit" .= editPullRequestOptionAllowMaintainerEdit
+      , "assignee" .= editPullRequestOptionAssignee
+      , "assignees" .= editPullRequestOptionAssignees
+      , "base" .= editPullRequestOptionBase
+      , "body" .= editPullRequestOptionBody
+      , "due_date" .= editPullRequestOptionDueDate
+      , "labels" .= editPullRequestOptionLabels
+      , "milestone" .= editPullRequestOptionMilestone
+      , "state" .= editPullRequestOptionState
+      , "title" .= editPullRequestOptionTitle
+      , "unset_due_date" .= editPullRequestOptionUnsetDueDate
+      ]
+
+
+-- | Construct a value of type 'EditPullRequestOption' (by applying it's required fields, if any)
+mkEditPullRequestOption
+  :: EditPullRequestOption
+mkEditPullRequestOption =
+  EditPullRequestOption
+  { editPullRequestOptionAllowMaintainerEdit = Nothing
+  , editPullRequestOptionAssignee = Nothing
+  , editPullRequestOptionAssignees = Nothing
+  , editPullRequestOptionBase = Nothing
+  , editPullRequestOptionBody = Nothing
+  , editPullRequestOptionDueDate = Nothing
+  , editPullRequestOptionLabels = Nothing
+  , editPullRequestOptionMilestone = Nothing
+  , editPullRequestOptionState = Nothing
+  , editPullRequestOptionTitle = Nothing
+  , editPullRequestOptionUnsetDueDate = Nothing
+  }
+
+-- ** EditReactionOption
+-- | EditReactionOption
+-- EditReactionOption contain the reaction type
+data EditReactionOption = EditReactionOption
+  { editReactionOptionContent :: !(Maybe Text) -- ^ "content"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON EditReactionOption
+instance A.FromJSON EditReactionOption where
+  parseJSON = A.withObject "EditReactionOption" $ \o ->
+    EditReactionOption
+      <$> (o .:? "content")
+
+-- | ToJSON EditReactionOption
+instance A.ToJSON EditReactionOption where
+  toJSON EditReactionOption {..} =
+   _omitNulls
+      [ "content" .= editReactionOptionContent
+      ]
+
+
+-- | Construct a value of type 'EditReactionOption' (by applying it's required fields, if any)
+mkEditReactionOption
+  :: EditReactionOption
+mkEditReactionOption =
+  EditReactionOption
+  { editReactionOptionContent = Nothing
+  }
+
+-- ** EditReleaseOption
+-- | EditReleaseOption
+-- EditReleaseOption options when editing a release
+data EditReleaseOption = EditReleaseOption
+  { editReleaseOptionBody :: !(Maybe Text) -- ^ "body"
+  , editReleaseOptionDraft :: !(Maybe Bool) -- ^ "draft"
+  , editReleaseOptionName :: !(Maybe Text) -- ^ "name"
+  , editReleaseOptionPrerelease :: !(Maybe Bool) -- ^ "prerelease"
+  , editReleaseOptionTagName :: !(Maybe Text) -- ^ "tag_name"
+  , editReleaseOptionTargetCommitish :: !(Maybe Text) -- ^ "target_commitish"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON EditReleaseOption
+instance A.FromJSON EditReleaseOption where
+  parseJSON = A.withObject "EditReleaseOption" $ \o ->
+    EditReleaseOption
+      <$> (o .:? "body")
+      <*> (o .:? "draft")
+      <*> (o .:? "name")
+      <*> (o .:? "prerelease")
+      <*> (o .:? "tag_name")
+      <*> (o .:? "target_commitish")
+
+-- | ToJSON EditReleaseOption
+instance A.ToJSON EditReleaseOption where
+  toJSON EditReleaseOption {..} =
+   _omitNulls
+      [ "body" .= editReleaseOptionBody
+      , "draft" .= editReleaseOptionDraft
+      , "name" .= editReleaseOptionName
+      , "prerelease" .= editReleaseOptionPrerelease
+      , "tag_name" .= editReleaseOptionTagName
+      , "target_commitish" .= editReleaseOptionTargetCommitish
+      ]
+
+
+-- | Construct a value of type 'EditReleaseOption' (by applying it's required fields, if any)
+mkEditReleaseOption
+  :: EditReleaseOption
+mkEditReleaseOption =
+  EditReleaseOption
+  { editReleaseOptionBody = Nothing
+  , editReleaseOptionDraft = Nothing
+  , editReleaseOptionName = Nothing
+  , editReleaseOptionPrerelease = Nothing
+  , editReleaseOptionTagName = Nothing
+  , editReleaseOptionTargetCommitish = Nothing
+  }
+
+-- ** EditRepoOption
+-- | EditRepoOption
+-- EditRepoOption options when editing a repository's properties
+data EditRepoOption = EditRepoOption
+  { editRepoOptionAllowManualMerge :: !(Maybe Bool) -- ^ "allow_manual_merge" - either &#x60;true&#x60; to allow mark pr as merged manually, or &#x60;false&#x60; to prevent it.
+  , editRepoOptionAllowMergeCommits :: !(Maybe Bool) -- ^ "allow_merge_commits" - either &#x60;true&#x60; to allow merging pull requests with a merge commit, or &#x60;false&#x60; to prevent merging pull requests with merge commits.
+  , editRepoOptionAllowRebase :: !(Maybe Bool) -- ^ "allow_rebase" - either &#x60;true&#x60; to allow rebase-merging pull requests, or &#x60;false&#x60; to prevent rebase-merging.
+  , editRepoOptionAllowRebaseExplicit :: !(Maybe Bool) -- ^ "allow_rebase_explicit" - either &#x60;true&#x60; to allow rebase with explicit merge commits (--no-ff), or &#x60;false&#x60; to prevent rebase with explicit merge commits.
+  , editRepoOptionAllowRebaseUpdate :: !(Maybe Bool) -- ^ "allow_rebase_update" - either &#x60;true&#x60; to allow updating pull request branch by rebase, or &#x60;false&#x60; to prevent it.
+  , editRepoOptionAllowSquashMerge :: !(Maybe Bool) -- ^ "allow_squash_merge" - either &#x60;true&#x60; to allow squash-merging pull requests, or &#x60;false&#x60; to prevent squash-merging.
+  , editRepoOptionArchived :: !(Maybe Bool) -- ^ "archived" - set to &#x60;true&#x60; to archive this repository.
+  , editRepoOptionAutodetectManualMerge :: !(Maybe Bool) -- ^ "autodetect_manual_merge" - either &#x60;true&#x60; to enable AutodetectManualMerge, or &#x60;false&#x60; to prevent it. Note: In some special cases, misjudgments can occur.
+  , editRepoOptionDefaultAllowMaintainerEdit :: !(Maybe Bool) -- ^ "default_allow_maintainer_edit" - set to &#x60;true&#x60; to allow edits from maintainers by default
+  , editRepoOptionDefaultBranch :: !(Maybe Text) -- ^ "default_branch" - sets the default branch for this repository.
+  , editRepoOptionDefaultDeleteBranchAfterMerge :: !(Maybe Bool) -- ^ "default_delete_branch_after_merge" - set to &#x60;true&#x60; to delete pr branch after merge by default
+  , editRepoOptionDefaultMergeStyle :: !(Maybe Text) -- ^ "default_merge_style" - set to a merge style to be used by this repository: \&quot;merge\&quot;, \&quot;rebase\&quot;, \&quot;rebase-merge\&quot;, or \&quot;squash\&quot;.
+  , editRepoOptionDescription :: !(Maybe Text) -- ^ "description" - a short description of the repository.
+  , editRepoOptionEnablePrune :: !(Maybe Bool) -- ^ "enable_prune" - enable prune - remove obsolete remote-tracking references
+  , editRepoOptionExternalTracker :: !(Maybe ExternalTracker) -- ^ "external_tracker"
+  , editRepoOptionExternalWiki :: !(Maybe ExternalWiki) -- ^ "external_wiki"
+  , editRepoOptionHasIssues :: !(Maybe Bool) -- ^ "has_issues" - either &#x60;true&#x60; to enable issues for this repository or &#x60;false&#x60; to disable them.
+  , editRepoOptionHasProjects :: !(Maybe Bool) -- ^ "has_projects" - either &#x60;true&#x60; to enable project unit, or &#x60;false&#x60; to disable them.
+  , editRepoOptionHasPullRequests :: !(Maybe Bool) -- ^ "has_pull_requests" - either &#x60;true&#x60; to allow pull requests, or &#x60;false&#x60; to prevent pull request.
+  , editRepoOptionHasWiki :: !(Maybe Bool) -- ^ "has_wiki" - either &#x60;true&#x60; to enable the wiki for this repository or &#x60;false&#x60; to disable it.
+  , editRepoOptionIgnoreWhitespaceConflicts :: !(Maybe Bool) -- ^ "ignore_whitespace_conflicts" - either &#x60;true&#x60; to ignore whitespace for conflicts, or &#x60;false&#x60; to not ignore whitespace.
+  , editRepoOptionInternalTracker :: !(Maybe InternalTracker) -- ^ "internal_tracker"
+  , editRepoOptionMirrorInterval :: !(Maybe Text) -- ^ "mirror_interval" - set to a string like &#x60;8h30m0s&#x60; to set the mirror interval time
+  , editRepoOptionName :: !(Maybe Text) -- ^ "name" - name of the repository
+  , editRepoOptionPrivate :: !(Maybe Bool) -- ^ "private" - either &#x60;true&#x60; to make the repository private or &#x60;false&#x60; to make it public. Note: you will get a 422 error if the organization restricts changing repository visibility to organization owners and a non-owner tries to change the value of private.
+  , editRepoOptionTemplate :: !(Maybe Bool) -- ^ "template" - either &#x60;true&#x60; to make this repository a template or &#x60;false&#x60; to make it a normal repository
+  , editRepoOptionWebsite :: !(Maybe Text) -- ^ "website" - a URL with more information about the repository.
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON EditRepoOption
+instance A.FromJSON EditRepoOption where
+  parseJSON = A.withObject "EditRepoOption" $ \o ->
+    EditRepoOption
+      <$> (o .:? "allow_manual_merge")
+      <*> (o .:? "allow_merge_commits")
+      <*> (o .:? "allow_rebase")
+      <*> (o .:? "allow_rebase_explicit")
+      <*> (o .:? "allow_rebase_update")
+      <*> (o .:? "allow_squash_merge")
+      <*> (o .:? "archived")
+      <*> (o .:? "autodetect_manual_merge")
+      <*> (o .:? "default_allow_maintainer_edit")
+      <*> (o .:? "default_branch")
+      <*> (o .:? "default_delete_branch_after_merge")
+      <*> (o .:? "default_merge_style")
+      <*> (o .:? "description")
+      <*> (o .:? "enable_prune")
+      <*> (o .:? "external_tracker")
+      <*> (o .:? "external_wiki")
+      <*> (o .:? "has_issues")
+      <*> (o .:? "has_projects")
+      <*> (o .:? "has_pull_requests")
+      <*> (o .:? "has_wiki")
+      <*> (o .:? "ignore_whitespace_conflicts")
+      <*> (o .:? "internal_tracker")
+      <*> (o .:? "mirror_interval")
+      <*> (o .:? "name")
+      <*> (o .:? "private")
+      <*> (o .:? "template")
+      <*> (o .:? "website")
+
+-- | ToJSON EditRepoOption
+instance A.ToJSON EditRepoOption where
+  toJSON EditRepoOption {..} =
+   _omitNulls
+      [ "allow_manual_merge" .= editRepoOptionAllowManualMerge
+      , "allow_merge_commits" .= editRepoOptionAllowMergeCommits
+      , "allow_rebase" .= editRepoOptionAllowRebase
+      , "allow_rebase_explicit" .= editRepoOptionAllowRebaseExplicit
+      , "allow_rebase_update" .= editRepoOptionAllowRebaseUpdate
+      , "allow_squash_merge" .= editRepoOptionAllowSquashMerge
+      , "archived" .= editRepoOptionArchived
+      , "autodetect_manual_merge" .= editRepoOptionAutodetectManualMerge
+      , "default_allow_maintainer_edit" .= editRepoOptionDefaultAllowMaintainerEdit
+      , "default_branch" .= editRepoOptionDefaultBranch
+      , "default_delete_branch_after_merge" .= editRepoOptionDefaultDeleteBranchAfterMerge
+      , "default_merge_style" .= editRepoOptionDefaultMergeStyle
+      , "description" .= editRepoOptionDescription
+      , "enable_prune" .= editRepoOptionEnablePrune
+      , "external_tracker" .= editRepoOptionExternalTracker
+      , "external_wiki" .= editRepoOptionExternalWiki
+      , "has_issues" .= editRepoOptionHasIssues
+      , "has_projects" .= editRepoOptionHasProjects
+      , "has_pull_requests" .= editRepoOptionHasPullRequests
+      , "has_wiki" .= editRepoOptionHasWiki
+      , "ignore_whitespace_conflicts" .= editRepoOptionIgnoreWhitespaceConflicts
+      , "internal_tracker" .= editRepoOptionInternalTracker
+      , "mirror_interval" .= editRepoOptionMirrorInterval
+      , "name" .= editRepoOptionName
+      , "private" .= editRepoOptionPrivate
+      , "template" .= editRepoOptionTemplate
+      , "website" .= editRepoOptionWebsite
+      ]
+
+
+-- | Construct a value of type 'EditRepoOption' (by applying it's required fields, if any)
+mkEditRepoOption
+  :: EditRepoOption
+mkEditRepoOption =
+  EditRepoOption
+  { editRepoOptionAllowManualMerge = Nothing
+  , editRepoOptionAllowMergeCommits = Nothing
+  , editRepoOptionAllowRebase = Nothing
+  , editRepoOptionAllowRebaseExplicit = Nothing
+  , editRepoOptionAllowRebaseUpdate = Nothing
+  , editRepoOptionAllowSquashMerge = Nothing
+  , editRepoOptionArchived = Nothing
+  , editRepoOptionAutodetectManualMerge = Nothing
+  , editRepoOptionDefaultAllowMaintainerEdit = Nothing
+  , editRepoOptionDefaultBranch = Nothing
+  , editRepoOptionDefaultDeleteBranchAfterMerge = Nothing
+  , editRepoOptionDefaultMergeStyle = Nothing
+  , editRepoOptionDescription = Nothing
+  , editRepoOptionEnablePrune = Nothing
+  , editRepoOptionExternalTracker = Nothing
+  , editRepoOptionExternalWiki = Nothing
+  , editRepoOptionHasIssues = Nothing
+  , editRepoOptionHasProjects = Nothing
+  , editRepoOptionHasPullRequests = Nothing
+  , editRepoOptionHasWiki = Nothing
+  , editRepoOptionIgnoreWhitespaceConflicts = Nothing
+  , editRepoOptionInternalTracker = Nothing
+  , editRepoOptionMirrorInterval = Nothing
+  , editRepoOptionName = Nothing
+  , editRepoOptionPrivate = Nothing
+  , editRepoOptionTemplate = Nothing
+  , editRepoOptionWebsite = Nothing
+  }
+
+-- ** EditTeamOption
+-- | EditTeamOption
+-- EditTeamOption options for editing a team
+data EditTeamOption = EditTeamOption
+  { editTeamOptionCanCreateOrgRepo :: !(Maybe Bool) -- ^ "can_create_org_repo"
+  , editTeamOptionDescription :: !(Maybe Text) -- ^ "description"
+  , editTeamOptionIncludesAllRepositories :: !(Maybe Bool) -- ^ "includes_all_repositories"
+  , editTeamOptionName :: !(Text) -- ^ /Required/ "name"
+  , editTeamOptionPermission :: !(Maybe E'Permission) -- ^ "permission"
+  , editTeamOptionUnits :: !(Maybe [Text]) -- ^ "units"
+  , editTeamOptionUnitsMap :: !(Maybe (Map.Map String Text)) -- ^ "units_map"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON EditTeamOption
+instance A.FromJSON EditTeamOption where
+  parseJSON = A.withObject "EditTeamOption" $ \o ->
+    EditTeamOption
+      <$> (o .:? "can_create_org_repo")
+      <*> (o .:? "description")
+      <*> (o .:? "includes_all_repositories")
+      <*> (o .:  "name")
+      <*> (o .:? "permission")
+      <*> (o .:? "units")
+      <*> (o .:? "units_map")
+
+-- | ToJSON EditTeamOption
+instance A.ToJSON EditTeamOption where
+  toJSON EditTeamOption {..} =
+   _omitNulls
+      [ "can_create_org_repo" .= editTeamOptionCanCreateOrgRepo
+      , "description" .= editTeamOptionDescription
+      , "includes_all_repositories" .= editTeamOptionIncludesAllRepositories
+      , "name" .= editTeamOptionName
+      , "permission" .= editTeamOptionPermission
+      , "units" .= editTeamOptionUnits
+      , "units_map" .= editTeamOptionUnitsMap
+      ]
+
+
+-- | Construct a value of type 'EditTeamOption' (by applying it's required fields, if any)
+mkEditTeamOption
+  :: Text -- ^ 'editTeamOptionName' 
+  -> EditTeamOption
+mkEditTeamOption editTeamOptionName =
+  EditTeamOption
+  { editTeamOptionCanCreateOrgRepo = Nothing
+  , editTeamOptionDescription = Nothing
+  , editTeamOptionIncludesAllRepositories = Nothing
+  , editTeamOptionName
+  , editTeamOptionPermission = Nothing
+  , editTeamOptionUnits = Nothing
+  , editTeamOptionUnitsMap = Nothing
+  }
+
+-- ** EditUserOption
+-- | EditUserOption
+-- EditUserOption edit user options
+data EditUserOption = EditUserOption
+  { editUserOptionActive :: !(Maybe Bool) -- ^ "active"
+  , editUserOptionAdmin :: !(Maybe Bool) -- ^ "admin"
+  , editUserOptionAllowCreateOrganization :: !(Maybe Bool) -- ^ "allow_create_organization"
+  , editUserOptionAllowGitHook :: !(Maybe Bool) -- ^ "allow_git_hook"
+  , editUserOptionAllowImportLocal :: !(Maybe Bool) -- ^ "allow_import_local"
+  , editUserOptionDescription :: !(Maybe Text) -- ^ "description"
+  , editUserOptionEmail :: !(Maybe Text) -- ^ "email"
+  , editUserOptionFullName :: !(Maybe Text) -- ^ "full_name"
+  , editUserOptionLocation :: !(Maybe Text) -- ^ "location"
+  , editUserOptionLoginName :: !(Text) -- ^ /Required/ "login_name"
+  , editUserOptionMaxRepoCreation :: !(Maybe Integer) -- ^ "max_repo_creation"
+  , editUserOptionMustChangePassword :: !(Maybe Bool) -- ^ "must_change_password"
+  , editUserOptionPassword :: !(Maybe Text) -- ^ "password"
+  , editUserOptionProhibitLogin :: !(Maybe Bool) -- ^ "prohibit_login"
+  , editUserOptionRestricted :: !(Maybe Bool) -- ^ "restricted"
+  , editUserOptionSourceId :: !(Integer) -- ^ /Required/ "source_id"
+  , editUserOptionVisibility :: !(Maybe Text) -- ^ "visibility"
+  , editUserOptionWebsite :: !(Maybe Text) -- ^ "website"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON EditUserOption
+instance A.FromJSON EditUserOption where
+  parseJSON = A.withObject "EditUserOption" $ \o ->
+    EditUserOption
+      <$> (o .:? "active")
+      <*> (o .:? "admin")
+      <*> (o .:? "allow_create_organization")
+      <*> (o .:? "allow_git_hook")
+      <*> (o .:? "allow_import_local")
+      <*> (o .:? "description")
+      <*> (o .:? "email")
+      <*> (o .:? "full_name")
+      <*> (o .:? "location")
+      <*> (o .:  "login_name")
+      <*> (o .:? "max_repo_creation")
+      <*> (o .:? "must_change_password")
+      <*> (o .:? "password")
+      <*> (o .:? "prohibit_login")
+      <*> (o .:? "restricted")
+      <*> (o .:  "source_id")
+      <*> (o .:? "visibility")
+      <*> (o .:? "website")
+
+-- | ToJSON EditUserOption
+instance A.ToJSON EditUserOption where
+  toJSON EditUserOption {..} =
+   _omitNulls
+      [ "active" .= editUserOptionActive
+      , "admin" .= editUserOptionAdmin
+      , "allow_create_organization" .= editUserOptionAllowCreateOrganization
+      , "allow_git_hook" .= editUserOptionAllowGitHook
+      , "allow_import_local" .= editUserOptionAllowImportLocal
+      , "description" .= editUserOptionDescription
+      , "email" .= editUserOptionEmail
+      , "full_name" .= editUserOptionFullName
+      , "location" .= editUserOptionLocation
+      , "login_name" .= editUserOptionLoginName
+      , "max_repo_creation" .= editUserOptionMaxRepoCreation
+      , "must_change_password" .= editUserOptionMustChangePassword
+      , "password" .= editUserOptionPassword
+      , "prohibit_login" .= editUserOptionProhibitLogin
+      , "restricted" .= editUserOptionRestricted
+      , "source_id" .= editUserOptionSourceId
+      , "visibility" .= editUserOptionVisibility
+      , "website" .= editUserOptionWebsite
+      ]
+
+
+-- | Construct a value of type 'EditUserOption' (by applying it's required fields, if any)
+mkEditUserOption
+  :: Text -- ^ 'editUserOptionLoginName' 
+  -> Integer -- ^ 'editUserOptionSourceId' 
+  -> EditUserOption
+mkEditUserOption editUserOptionLoginName editUserOptionSourceId =
+  EditUserOption
+  { editUserOptionActive = Nothing
+  , editUserOptionAdmin = Nothing
+  , editUserOptionAllowCreateOrganization = Nothing
+  , editUserOptionAllowGitHook = Nothing
+  , editUserOptionAllowImportLocal = Nothing
+  , editUserOptionDescription = Nothing
+  , editUserOptionEmail = Nothing
+  , editUserOptionFullName = Nothing
+  , editUserOptionLocation = Nothing
+  , editUserOptionLoginName
+  , editUserOptionMaxRepoCreation = Nothing
+  , editUserOptionMustChangePassword = Nothing
+  , editUserOptionPassword = Nothing
+  , editUserOptionProhibitLogin = Nothing
+  , editUserOptionRestricted = Nothing
+  , editUserOptionSourceId
+  , editUserOptionVisibility = Nothing
+  , editUserOptionWebsite = Nothing
+  }
+
+-- ** Email
+-- | Email
+-- Email an email address belonging to a user
+data Email = Email
+  { emailEmail :: !(Maybe Text) -- ^ "email"
+  , emailPrimary :: !(Maybe Bool) -- ^ "primary"
+  , emailVerified :: !(Maybe Bool) -- ^ "verified"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Email
+instance A.FromJSON Email where
+  parseJSON = A.withObject "Email" $ \o ->
+    Email
+      <$> (o .:? "email")
+      <*> (o .:? "primary")
+      <*> (o .:? "verified")
+
+-- | ToJSON Email
+instance A.ToJSON Email where
+  toJSON Email {..} =
+   _omitNulls
+      [ "email" .= emailEmail
+      , "primary" .= emailPrimary
+      , "verified" .= emailVerified
+      ]
+
+
+-- | Construct a value of type 'Email' (by applying it's required fields, if any)
+mkEmail
+  :: Email
+mkEmail =
+  Email
+  { emailEmail = Nothing
+  , emailPrimary = Nothing
+  , emailVerified = Nothing
+  }
+
+-- ** ExternalTracker
+-- | ExternalTracker
+-- ExternalTracker represents settings for external tracker
+data ExternalTracker = ExternalTracker
+  { externalTrackerExternalTrackerFormat :: !(Maybe Text) -- ^ "external_tracker_format" - External Issue Tracker URL Format. Use the placeholders {user}, {repo} and {index} for the username, repository name and issue index.
+  , externalTrackerExternalTrackerRegexpPattern :: !(Maybe Text) -- ^ "external_tracker_regexp_pattern" - External Issue Tracker issue regular expression
+  , externalTrackerExternalTrackerStyle :: !(Maybe Text) -- ^ "external_tracker_style" - External Issue Tracker Number Format, either &#x60;numeric&#x60;, &#x60;alphanumeric&#x60;, or &#x60;regexp&#x60;
+  , externalTrackerExternalTrackerUrl :: !(Maybe Text) -- ^ "external_tracker_url" - URL of external issue tracker.
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON ExternalTracker
+instance A.FromJSON ExternalTracker where
+  parseJSON = A.withObject "ExternalTracker" $ \o ->
+    ExternalTracker
+      <$> (o .:? "external_tracker_format")
+      <*> (o .:? "external_tracker_regexp_pattern")
+      <*> (o .:? "external_tracker_style")
+      <*> (o .:? "external_tracker_url")
+
+-- | ToJSON ExternalTracker
+instance A.ToJSON ExternalTracker where
+  toJSON ExternalTracker {..} =
+   _omitNulls
+      [ "external_tracker_format" .= externalTrackerExternalTrackerFormat
+      , "external_tracker_regexp_pattern" .= externalTrackerExternalTrackerRegexpPattern
+      , "external_tracker_style" .= externalTrackerExternalTrackerStyle
+      , "external_tracker_url" .= externalTrackerExternalTrackerUrl
+      ]
+
+
+-- | Construct a value of type 'ExternalTracker' (by applying it's required fields, if any)
+mkExternalTracker
+  :: ExternalTracker
+mkExternalTracker =
+  ExternalTracker
+  { externalTrackerExternalTrackerFormat = Nothing
+  , externalTrackerExternalTrackerRegexpPattern = Nothing
+  , externalTrackerExternalTrackerStyle = Nothing
+  , externalTrackerExternalTrackerUrl = Nothing
+  }
+
+-- ** ExternalWiki
+-- | ExternalWiki
+-- ExternalWiki represents setting for external wiki
+data ExternalWiki = ExternalWiki
+  { externalWikiExternalWikiUrl :: !(Maybe Text) -- ^ "external_wiki_url" - URL of external wiki.
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON ExternalWiki
+instance A.FromJSON ExternalWiki where
+  parseJSON = A.withObject "ExternalWiki" $ \o ->
+    ExternalWiki
+      <$> (o .:? "external_wiki_url")
+
+-- | ToJSON ExternalWiki
+instance A.ToJSON ExternalWiki where
+  toJSON ExternalWiki {..} =
+   _omitNulls
+      [ "external_wiki_url" .= externalWikiExternalWikiUrl
+      ]
+
+
+-- | Construct a value of type 'ExternalWiki' (by applying it's required fields, if any)
+mkExternalWiki
+  :: ExternalWiki
+mkExternalWiki =
+  ExternalWiki
+  { externalWikiExternalWikiUrl = Nothing
+  }
+
+-- ** FileCommitResponse
+-- | FileCommitResponse
+-- FileCommitResponse contains information generated from a Git commit for a repo's file.
+-- 
+data FileCommitResponse = FileCommitResponse
+  { fileCommitResponseAuthor :: !(Maybe CommitUser) -- ^ "author"
+  , fileCommitResponseCommitter :: !(Maybe CommitUser) -- ^ "committer"
+  , fileCommitResponseCreated :: !(Maybe DateTime) -- ^ "created"
+  , fileCommitResponseHtmlUrl :: !(Maybe Text) -- ^ "html_url"
+  , fileCommitResponseMessage :: !(Maybe Text) -- ^ "message"
+  , fileCommitResponseParents :: !(Maybe [CommitMeta]) -- ^ "parents"
+  , fileCommitResponseSha :: !(Maybe Text) -- ^ "sha"
+  , fileCommitResponseTree :: !(Maybe CommitMeta) -- ^ "tree"
+  , fileCommitResponseUrl :: !(Maybe Text) -- ^ "url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON FileCommitResponse
+instance A.FromJSON FileCommitResponse where
+  parseJSON = A.withObject "FileCommitResponse" $ \o ->
+    FileCommitResponse
+      <$> (o .:? "author")
+      <*> (o .:? "committer")
+      <*> (o .:? "created")
+      <*> (o .:? "html_url")
+      <*> (o .:? "message")
+      <*> (o .:? "parents")
+      <*> (o .:? "sha")
+      <*> (o .:? "tree")
+      <*> (o .:? "url")
+
+-- | ToJSON FileCommitResponse
+instance A.ToJSON FileCommitResponse where
+  toJSON FileCommitResponse {..} =
+   _omitNulls
+      [ "author" .= fileCommitResponseAuthor
+      , "committer" .= fileCommitResponseCommitter
+      , "created" .= fileCommitResponseCreated
+      , "html_url" .= fileCommitResponseHtmlUrl
+      , "message" .= fileCommitResponseMessage
+      , "parents" .= fileCommitResponseParents
+      , "sha" .= fileCommitResponseSha
+      , "tree" .= fileCommitResponseTree
+      , "url" .= fileCommitResponseUrl
+      ]
+
+
+-- | Construct a value of type 'FileCommitResponse' (by applying it's required fields, if any)
+mkFileCommitResponse
+  :: FileCommitResponse
+mkFileCommitResponse =
+  FileCommitResponse
+  { fileCommitResponseAuthor = Nothing
+  , fileCommitResponseCommitter = Nothing
+  , fileCommitResponseCreated = Nothing
+  , fileCommitResponseHtmlUrl = Nothing
+  , fileCommitResponseMessage = Nothing
+  , fileCommitResponseParents = Nothing
+  , fileCommitResponseSha = Nothing
+  , fileCommitResponseTree = Nothing
+  , fileCommitResponseUrl = Nothing
+  }
+
+-- ** FileDeleteResponse
+-- | FileDeleteResponse
+-- FileDeleteResponse contains information about a repo's file that was deleted
+data FileDeleteResponse = FileDeleteResponse
+  { fileDeleteResponseCommit :: !(Maybe FileCommitResponse) -- ^ "commit"
+  , fileDeleteResponseContent :: !(Maybe A.Value) -- ^ "content"
+  , fileDeleteResponseVerification :: !(Maybe PayloadCommitVerification) -- ^ "verification"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON FileDeleteResponse
+instance A.FromJSON FileDeleteResponse where
+  parseJSON = A.withObject "FileDeleteResponse" $ \o ->
+    FileDeleteResponse
+      <$> (o .:? "commit")
+      <*> (o .:? "content")
+      <*> (o .:? "verification")
+
+-- | ToJSON FileDeleteResponse
+instance A.ToJSON FileDeleteResponse where
+  toJSON FileDeleteResponse {..} =
+   _omitNulls
+      [ "commit" .= fileDeleteResponseCommit
+      , "content" .= fileDeleteResponseContent
+      , "verification" .= fileDeleteResponseVerification
+      ]
+
+
+-- | Construct a value of type 'FileDeleteResponse' (by applying it's required fields, if any)
+mkFileDeleteResponse
+  :: FileDeleteResponse
+mkFileDeleteResponse =
+  FileDeleteResponse
+  { fileDeleteResponseCommit = Nothing
+  , fileDeleteResponseContent = Nothing
+  , fileDeleteResponseVerification = Nothing
+  }
+
+-- ** FileLinksResponse
+-- | FileLinksResponse
+-- FileLinksResponse contains the links for a repo's file
+data FileLinksResponse = FileLinksResponse
+  { fileLinksResponseGit :: !(Maybe Text) -- ^ "git"
+  , fileLinksResponseHtml :: !(Maybe Text) -- ^ "html"
+  , fileLinksResponseSelf :: !(Maybe Text) -- ^ "self"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON FileLinksResponse
+instance A.FromJSON FileLinksResponse where
+  parseJSON = A.withObject "FileLinksResponse" $ \o ->
+    FileLinksResponse
+      <$> (o .:? "git")
+      <*> (o .:? "html")
+      <*> (o .:? "self")
+
+-- | ToJSON FileLinksResponse
+instance A.ToJSON FileLinksResponse where
+  toJSON FileLinksResponse {..} =
+   _omitNulls
+      [ "git" .= fileLinksResponseGit
+      , "html" .= fileLinksResponseHtml
+      , "self" .= fileLinksResponseSelf
+      ]
+
+
+-- | Construct a value of type 'FileLinksResponse' (by applying it's required fields, if any)
+mkFileLinksResponse
+  :: FileLinksResponse
+mkFileLinksResponse =
+  FileLinksResponse
+  { fileLinksResponseGit = Nothing
+  , fileLinksResponseHtml = Nothing
+  , fileLinksResponseSelf = Nothing
+  }
+
+-- ** FileResponse
+-- | FileResponse
+-- FileResponse contains information about a repo's file
+data FileResponse = FileResponse
+  { fileResponseCommit :: !(Maybe FileCommitResponse) -- ^ "commit"
+  , fileResponseContent :: !(Maybe ContentsResponse) -- ^ "content"
+  , fileResponseVerification :: !(Maybe PayloadCommitVerification) -- ^ "verification"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON FileResponse
+instance A.FromJSON FileResponse where
+  parseJSON = A.withObject "FileResponse" $ \o ->
+    FileResponse
+      <$> (o .:? "commit")
+      <*> (o .:? "content")
+      <*> (o .:? "verification")
+
+-- | ToJSON FileResponse
+instance A.ToJSON FileResponse where
+  toJSON FileResponse {..} =
+   _omitNulls
+      [ "commit" .= fileResponseCommit
+      , "content" .= fileResponseContent
+      , "verification" .= fileResponseVerification
+      ]
+
+
+-- | Construct a value of type 'FileResponse' (by applying it's required fields, if any)
+mkFileResponse
+  :: FileResponse
+mkFileResponse =
+  FileResponse
+  { fileResponseCommit = Nothing
+  , fileResponseContent = Nothing
+  , fileResponseVerification = Nothing
+  }
+
+-- ** GPGKey
+-- | GPGKey
+-- GPGKey a user GPG key to sign commit and tag in repository
+data GPGKey = GPGKey
+  { gPGKeyCanCertify :: !(Maybe Bool) -- ^ "can_certify"
+  , gPGKeyCanEncryptComms :: !(Maybe Bool) -- ^ "can_encrypt_comms"
+  , gPGKeyCanEncryptStorage :: !(Maybe Bool) -- ^ "can_encrypt_storage"
+  , gPGKeyCanSign :: !(Maybe Bool) -- ^ "can_sign"
+  , gPGKeyCreatedAt :: !(Maybe DateTime) -- ^ "created_at"
+  , gPGKeyEmails :: !(Maybe [GPGKeyEmail]) -- ^ "emails"
+  , gPGKeyExpiresAt :: !(Maybe DateTime) -- ^ "expires_at"
+  , gPGKeyId :: !(Maybe Integer) -- ^ "id"
+  , gPGKeyKeyId :: !(Maybe Text) -- ^ "key_id"
+  , gPGKeyPrimaryKeyId :: !(Maybe Text) -- ^ "primary_key_id"
+  , gPGKeyPublicKey :: !(Maybe Text) -- ^ "public_key"
+  , gPGKeySubkeys :: !(Maybe [GPGKey]) -- ^ "subkeys"
+  , gPGKeyVerified :: !(Maybe Bool) -- ^ "verified"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON GPGKey
+instance A.FromJSON GPGKey where
+  parseJSON = A.withObject "GPGKey" $ \o ->
+    GPGKey
+      <$> (o .:? "can_certify")
+      <*> (o .:? "can_encrypt_comms")
+      <*> (o .:? "can_encrypt_storage")
+      <*> (o .:? "can_sign")
+      <*> (o .:? "created_at")
+      <*> (o .:? "emails")
+      <*> (o .:? "expires_at")
+      <*> (o .:? "id")
+      <*> (o .:? "key_id")
+      <*> (o .:? "primary_key_id")
+      <*> (o .:? "public_key")
+      <*> (o .:? "subkeys")
+      <*> (o .:? "verified")
+
+-- | ToJSON GPGKey
+instance A.ToJSON GPGKey where
+  toJSON GPGKey {..} =
+   _omitNulls
+      [ "can_certify" .= gPGKeyCanCertify
+      , "can_encrypt_comms" .= gPGKeyCanEncryptComms
+      , "can_encrypt_storage" .= gPGKeyCanEncryptStorage
+      , "can_sign" .= gPGKeyCanSign
+      , "created_at" .= gPGKeyCreatedAt
+      , "emails" .= gPGKeyEmails
+      , "expires_at" .= gPGKeyExpiresAt
+      , "id" .= gPGKeyId
+      , "key_id" .= gPGKeyKeyId
+      , "primary_key_id" .= gPGKeyPrimaryKeyId
+      , "public_key" .= gPGKeyPublicKey
+      , "subkeys" .= gPGKeySubkeys
+      , "verified" .= gPGKeyVerified
+      ]
+
+
+-- | Construct a value of type 'GPGKey' (by applying it's required fields, if any)
+mkGPGKey
+  :: GPGKey
+mkGPGKey =
+  GPGKey
+  { gPGKeyCanCertify = Nothing
+  , gPGKeyCanEncryptComms = Nothing
+  , gPGKeyCanEncryptStorage = Nothing
+  , gPGKeyCanSign = Nothing
+  , gPGKeyCreatedAt = Nothing
+  , gPGKeyEmails = Nothing
+  , gPGKeyExpiresAt = Nothing
+  , gPGKeyId = Nothing
+  , gPGKeyKeyId = Nothing
+  , gPGKeyPrimaryKeyId = Nothing
+  , gPGKeyPublicKey = Nothing
+  , gPGKeySubkeys = Nothing
+  , gPGKeyVerified = Nothing
+  }
+
+-- ** GPGKeyEmail
+-- | GPGKeyEmail
+-- GPGKeyEmail an email attached to a GPGKey
+data GPGKeyEmail = GPGKeyEmail
+  { gPGKeyEmailEmail :: !(Maybe Text) -- ^ "email"
+  , gPGKeyEmailVerified :: !(Maybe Bool) -- ^ "verified"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON GPGKeyEmail
+instance A.FromJSON GPGKeyEmail where
+  parseJSON = A.withObject "GPGKeyEmail" $ \o ->
+    GPGKeyEmail
+      <$> (o .:? "email")
+      <*> (o .:? "verified")
+
+-- | ToJSON GPGKeyEmail
+instance A.ToJSON GPGKeyEmail where
+  toJSON GPGKeyEmail {..} =
+   _omitNulls
+      [ "email" .= gPGKeyEmailEmail
+      , "verified" .= gPGKeyEmailVerified
+      ]
+
+
+-- | Construct a value of type 'GPGKeyEmail' (by applying it's required fields, if any)
+mkGPGKeyEmail
+  :: GPGKeyEmail
+mkGPGKeyEmail =
+  GPGKeyEmail
+  { gPGKeyEmailEmail = Nothing
+  , gPGKeyEmailVerified = Nothing
+  }
+
+-- ** GeneralAPISettings
+-- | GeneralAPISettings
+-- GeneralAPISettings contains global api settings exposed by it
+data GeneralAPISettings = GeneralAPISettings
+  { generalAPISettingsDefaultGitTreesPerPage :: !(Maybe Integer) -- ^ "default_git_trees_per_page"
+  , generalAPISettingsDefaultMaxBlobSize :: !(Maybe Integer) -- ^ "default_max_blob_size"
+  , generalAPISettingsDefaultPagingNum :: !(Maybe Integer) -- ^ "default_paging_num"
+  , generalAPISettingsMaxResponseItems :: !(Maybe Integer) -- ^ "max_response_items"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON GeneralAPISettings
+instance A.FromJSON GeneralAPISettings where
+  parseJSON = A.withObject "GeneralAPISettings" $ \o ->
+    GeneralAPISettings
+      <$> (o .:? "default_git_trees_per_page")
+      <*> (o .:? "default_max_blob_size")
+      <*> (o .:? "default_paging_num")
+      <*> (o .:? "max_response_items")
+
+-- | ToJSON GeneralAPISettings
+instance A.ToJSON GeneralAPISettings where
+  toJSON GeneralAPISettings {..} =
+   _omitNulls
+      [ "default_git_trees_per_page" .= generalAPISettingsDefaultGitTreesPerPage
+      , "default_max_blob_size" .= generalAPISettingsDefaultMaxBlobSize
+      , "default_paging_num" .= generalAPISettingsDefaultPagingNum
+      , "max_response_items" .= generalAPISettingsMaxResponseItems
+      ]
+
+
+-- | Construct a value of type 'GeneralAPISettings' (by applying it's required fields, if any)
+mkGeneralAPISettings
+  :: GeneralAPISettings
+mkGeneralAPISettings =
+  GeneralAPISettings
+  { generalAPISettingsDefaultGitTreesPerPage = Nothing
+  , generalAPISettingsDefaultMaxBlobSize = Nothing
+  , generalAPISettingsDefaultPagingNum = Nothing
+  , generalAPISettingsMaxResponseItems = Nothing
+  }
+
+-- ** GeneralAttachmentSettings
+-- | GeneralAttachmentSettings
+-- GeneralAttachmentSettings contains global Attachment settings exposed by API
+data GeneralAttachmentSettings = GeneralAttachmentSettings
+  { generalAttachmentSettingsAllowedTypes :: !(Maybe Text) -- ^ "allowed_types"
+  , generalAttachmentSettingsEnabled :: !(Maybe Bool) -- ^ "enabled"
+  , generalAttachmentSettingsMaxFiles :: !(Maybe Integer) -- ^ "max_files"
+  , generalAttachmentSettingsMaxSize :: !(Maybe Integer) -- ^ "max_size"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON GeneralAttachmentSettings
+instance A.FromJSON GeneralAttachmentSettings where
+  parseJSON = A.withObject "GeneralAttachmentSettings" $ \o ->
+    GeneralAttachmentSettings
+      <$> (o .:? "allowed_types")
+      <*> (o .:? "enabled")
+      <*> (o .:? "max_files")
+      <*> (o .:? "max_size")
+
+-- | ToJSON GeneralAttachmentSettings
+instance A.ToJSON GeneralAttachmentSettings where
+  toJSON GeneralAttachmentSettings {..} =
+   _omitNulls
+      [ "allowed_types" .= generalAttachmentSettingsAllowedTypes
+      , "enabled" .= generalAttachmentSettingsEnabled
+      , "max_files" .= generalAttachmentSettingsMaxFiles
+      , "max_size" .= generalAttachmentSettingsMaxSize
+      ]
+
+
+-- | Construct a value of type 'GeneralAttachmentSettings' (by applying it's required fields, if any)
+mkGeneralAttachmentSettings
+  :: GeneralAttachmentSettings
+mkGeneralAttachmentSettings =
+  GeneralAttachmentSettings
+  { generalAttachmentSettingsAllowedTypes = Nothing
+  , generalAttachmentSettingsEnabled = Nothing
+  , generalAttachmentSettingsMaxFiles = Nothing
+  , generalAttachmentSettingsMaxSize = Nothing
+  }
+
+-- ** GeneralRepoSettings
+-- | GeneralRepoSettings
+-- GeneralRepoSettings contains global repository settings exposed by API
+data GeneralRepoSettings = GeneralRepoSettings
+  { generalRepoSettingsHttpGitDisabled :: !(Maybe Bool) -- ^ "http_git_disabled"
+  , generalRepoSettingsLfsDisabled :: !(Maybe Bool) -- ^ "lfs_disabled"
+  , generalRepoSettingsMigrationsDisabled :: !(Maybe Bool) -- ^ "migrations_disabled"
+  , generalRepoSettingsMirrorsDisabled :: !(Maybe Bool) -- ^ "mirrors_disabled"
+  , generalRepoSettingsStarsDisabled :: !(Maybe Bool) -- ^ "stars_disabled"
+  , generalRepoSettingsTimeTrackingDisabled :: !(Maybe Bool) -- ^ "time_tracking_disabled"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON GeneralRepoSettings
+instance A.FromJSON GeneralRepoSettings where
+  parseJSON = A.withObject "GeneralRepoSettings" $ \o ->
+    GeneralRepoSettings
+      <$> (o .:? "http_git_disabled")
+      <*> (o .:? "lfs_disabled")
+      <*> (o .:? "migrations_disabled")
+      <*> (o .:? "mirrors_disabled")
+      <*> (o .:? "stars_disabled")
+      <*> (o .:? "time_tracking_disabled")
+
+-- | ToJSON GeneralRepoSettings
+instance A.ToJSON GeneralRepoSettings where
+  toJSON GeneralRepoSettings {..} =
+   _omitNulls
+      [ "http_git_disabled" .= generalRepoSettingsHttpGitDisabled
+      , "lfs_disabled" .= generalRepoSettingsLfsDisabled
+      , "migrations_disabled" .= generalRepoSettingsMigrationsDisabled
+      , "mirrors_disabled" .= generalRepoSettingsMirrorsDisabled
+      , "stars_disabled" .= generalRepoSettingsStarsDisabled
+      , "time_tracking_disabled" .= generalRepoSettingsTimeTrackingDisabled
+      ]
+
+
+-- | Construct a value of type 'GeneralRepoSettings' (by applying it's required fields, if any)
+mkGeneralRepoSettings
+  :: GeneralRepoSettings
+mkGeneralRepoSettings =
+  GeneralRepoSettings
+  { generalRepoSettingsHttpGitDisabled = Nothing
+  , generalRepoSettingsLfsDisabled = Nothing
+  , generalRepoSettingsMigrationsDisabled = Nothing
+  , generalRepoSettingsMirrorsDisabled = Nothing
+  , generalRepoSettingsStarsDisabled = Nothing
+  , generalRepoSettingsTimeTrackingDisabled = Nothing
+  }
+
+-- ** GeneralUISettings
+-- | GeneralUISettings
+-- GeneralUISettings contains global ui settings exposed by API
+data GeneralUISettings = GeneralUISettings
+  { generalUISettingsAllowedReactions :: !(Maybe [Text]) -- ^ "allowed_reactions"
+  , generalUISettingsCustomEmojis :: !(Maybe [Text]) -- ^ "custom_emojis"
+  , generalUISettingsDefaultTheme :: !(Maybe Text) -- ^ "default_theme"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON GeneralUISettings
+instance A.FromJSON GeneralUISettings where
+  parseJSON = A.withObject "GeneralUISettings" $ \o ->
+    GeneralUISettings
+      <$> (o .:? "allowed_reactions")
+      <*> (o .:? "custom_emojis")
+      <*> (o .:? "default_theme")
+
+-- | ToJSON GeneralUISettings
+instance A.ToJSON GeneralUISettings where
+  toJSON GeneralUISettings {..} =
+   _omitNulls
+      [ "allowed_reactions" .= generalUISettingsAllowedReactions
+      , "custom_emojis" .= generalUISettingsCustomEmojis
+      , "default_theme" .= generalUISettingsDefaultTheme
+      ]
+
+
+-- | Construct a value of type 'GeneralUISettings' (by applying it's required fields, if any)
+mkGeneralUISettings
+  :: GeneralUISettings
+mkGeneralUISettings =
+  GeneralUISettings
+  { generalUISettingsAllowedReactions = Nothing
+  , generalUISettingsCustomEmojis = Nothing
+  , generalUISettingsDefaultTheme = Nothing
+  }
+
+-- ** GenerateRepoOption
+-- | GenerateRepoOption
+-- GenerateRepoOption options when creating repository using a template
+data GenerateRepoOption = GenerateRepoOption
+  { generateRepoOptionAvatar :: !(Maybe Bool) -- ^ "avatar" - include avatar of the template repo
+  , generateRepoOptionDefaultBranch :: !(Maybe Text) -- ^ "default_branch" - Default branch of the new repository
+  , generateRepoOptionDescription :: !(Maybe Text) -- ^ "description" - Description of the repository to create
+  , generateRepoOptionGitContent :: !(Maybe Bool) -- ^ "git_content" - include git content of default branch in template repo
+  , generateRepoOptionGitHooks :: !(Maybe Bool) -- ^ "git_hooks" - include git hooks in template repo
+  , generateRepoOptionLabels :: !(Maybe Bool) -- ^ "labels" - include labels in template repo
+  , generateRepoOptionName :: !(Text) -- ^ /Required/ "name" - Name of the repository to create
+  , generateRepoOptionOwner :: !(Text) -- ^ /Required/ "owner" - The organization or person who will own the new repository
+  , generateRepoOptionPrivate :: !(Maybe Bool) -- ^ "private" - Whether the repository is private
+  , generateRepoOptionTopics :: !(Maybe Bool) -- ^ "topics" - include topics in template repo
+  , generateRepoOptionWebhooks :: !(Maybe Bool) -- ^ "webhooks" - include webhooks in template repo
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON GenerateRepoOption
+instance A.FromJSON GenerateRepoOption where
+  parseJSON = A.withObject "GenerateRepoOption" $ \o ->
+    GenerateRepoOption
+      <$> (o .:? "avatar")
+      <*> (o .:? "default_branch")
+      <*> (o .:? "description")
+      <*> (o .:? "git_content")
+      <*> (o .:? "git_hooks")
+      <*> (o .:? "labels")
+      <*> (o .:  "name")
+      <*> (o .:  "owner")
+      <*> (o .:? "private")
+      <*> (o .:? "topics")
+      <*> (o .:? "webhooks")
+
+-- | ToJSON GenerateRepoOption
+instance A.ToJSON GenerateRepoOption where
+  toJSON GenerateRepoOption {..} =
+   _omitNulls
+      [ "avatar" .= generateRepoOptionAvatar
+      , "default_branch" .= generateRepoOptionDefaultBranch
+      , "description" .= generateRepoOptionDescription
+      , "git_content" .= generateRepoOptionGitContent
+      , "git_hooks" .= generateRepoOptionGitHooks
+      , "labels" .= generateRepoOptionLabels
+      , "name" .= generateRepoOptionName
+      , "owner" .= generateRepoOptionOwner
+      , "private" .= generateRepoOptionPrivate
+      , "topics" .= generateRepoOptionTopics
+      , "webhooks" .= generateRepoOptionWebhooks
+      ]
+
+
+-- | Construct a value of type 'GenerateRepoOption' (by applying it's required fields, if any)
+mkGenerateRepoOption
+  :: Text -- ^ 'generateRepoOptionName': Name of the repository to create
+  -> Text -- ^ 'generateRepoOptionOwner': The organization or person who will own the new repository
+  -> GenerateRepoOption
+mkGenerateRepoOption generateRepoOptionName generateRepoOptionOwner =
+  GenerateRepoOption
+  { generateRepoOptionAvatar = Nothing
+  , generateRepoOptionDefaultBranch = Nothing
+  , generateRepoOptionDescription = Nothing
+  , generateRepoOptionGitContent = Nothing
+  , generateRepoOptionGitHooks = Nothing
+  , generateRepoOptionLabels = Nothing
+  , generateRepoOptionName
+  , generateRepoOptionOwner
+  , generateRepoOptionPrivate = Nothing
+  , generateRepoOptionTopics = Nothing
+  , generateRepoOptionWebhooks = Nothing
+  }
+
+-- ** GitBlobResponse
+-- | GitBlobResponse
+-- GitBlobResponse represents a git blob
+data GitBlobResponse = GitBlobResponse
+  { gitBlobResponseContent :: !(Maybe Text) -- ^ "content"
+  , gitBlobResponseEncoding :: !(Maybe Text) -- ^ "encoding"
+  , gitBlobResponseSha :: !(Maybe Text) -- ^ "sha"
+  , gitBlobResponseSize :: !(Maybe Integer) -- ^ "size"
+  , gitBlobResponseUrl :: !(Maybe Text) -- ^ "url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON GitBlobResponse
+instance A.FromJSON GitBlobResponse where
+  parseJSON = A.withObject "GitBlobResponse" $ \o ->
+    GitBlobResponse
+      <$> (o .:? "content")
+      <*> (o .:? "encoding")
+      <*> (o .:? "sha")
+      <*> (o .:? "size")
+      <*> (o .:? "url")
+
+-- | ToJSON GitBlobResponse
+instance A.ToJSON GitBlobResponse where
+  toJSON GitBlobResponse {..} =
+   _omitNulls
+      [ "content" .= gitBlobResponseContent
+      , "encoding" .= gitBlobResponseEncoding
+      , "sha" .= gitBlobResponseSha
+      , "size" .= gitBlobResponseSize
+      , "url" .= gitBlobResponseUrl
+      ]
+
+
+-- | Construct a value of type 'GitBlobResponse' (by applying it's required fields, if any)
+mkGitBlobResponse
+  :: GitBlobResponse
+mkGitBlobResponse =
+  GitBlobResponse
+  { gitBlobResponseContent = Nothing
+  , gitBlobResponseEncoding = Nothing
+  , gitBlobResponseSha = Nothing
+  , gitBlobResponseSize = Nothing
+  , gitBlobResponseUrl = Nothing
+  }
+
+-- ** GitEntry
+-- | GitEntry
+-- GitEntry represents a git tree
+data GitEntry = GitEntry
+  { gitEntryMode :: !(Maybe Text) -- ^ "mode"
+  , gitEntryPath :: !(Maybe Text) -- ^ "path"
+  , gitEntrySha :: !(Maybe Text) -- ^ "sha"
+  , gitEntrySize :: !(Maybe Integer) -- ^ "size"
+  , gitEntryType :: !(Maybe Text) -- ^ "type"
+  , gitEntryUrl :: !(Maybe Text) -- ^ "url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON GitEntry
+instance A.FromJSON GitEntry where
+  parseJSON = A.withObject "GitEntry" $ \o ->
+    GitEntry
+      <$> (o .:? "mode")
+      <*> (o .:? "path")
+      <*> (o .:? "sha")
+      <*> (o .:? "size")
+      <*> (o .:? "type")
+      <*> (o .:? "url")
+
+-- | ToJSON GitEntry
+instance A.ToJSON GitEntry where
+  toJSON GitEntry {..} =
+   _omitNulls
+      [ "mode" .= gitEntryMode
+      , "path" .= gitEntryPath
+      , "sha" .= gitEntrySha
+      , "size" .= gitEntrySize
+      , "type" .= gitEntryType
+      , "url" .= gitEntryUrl
+      ]
+
+
+-- | Construct a value of type 'GitEntry' (by applying it's required fields, if any)
+mkGitEntry
+  :: GitEntry
+mkGitEntry =
+  GitEntry
+  { gitEntryMode = Nothing
+  , gitEntryPath = Nothing
+  , gitEntrySha = Nothing
+  , gitEntrySize = Nothing
+  , gitEntryType = Nothing
+  , gitEntryUrl = Nothing
+  }
+
+-- ** GitHook
+-- | GitHook
+-- GitHook represents a Git repository hook
+data GitHook = GitHook
+  { gitHookContent :: !(Maybe Text) -- ^ "content"
+  , gitHookIsActive :: !(Maybe Bool) -- ^ "is_active"
+  , gitHookName :: !(Maybe Text) -- ^ "name"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON GitHook
+instance A.FromJSON GitHook where
+  parseJSON = A.withObject "GitHook" $ \o ->
+    GitHook
+      <$> (o .:? "content")
+      <*> (o .:? "is_active")
+      <*> (o .:? "name")
+
+-- | ToJSON GitHook
+instance A.ToJSON GitHook where
+  toJSON GitHook {..} =
+   _omitNulls
+      [ "content" .= gitHookContent
+      , "is_active" .= gitHookIsActive
+      , "name" .= gitHookName
+      ]
+
+
+-- | Construct a value of type 'GitHook' (by applying it's required fields, if any)
+mkGitHook
+  :: GitHook
+mkGitHook =
+  GitHook
+  { gitHookContent = Nothing
+  , gitHookIsActive = Nothing
+  , gitHookName = Nothing
+  }
+
+-- ** GitObject
+-- | GitObject
+-- GitObject represents a Git object.
+-- 
+data GitObject = GitObject
+  { gitObjectSha :: !(Maybe Text) -- ^ "sha"
+  , gitObjectType :: !(Maybe Text) -- ^ "type"
+  , gitObjectUrl :: !(Maybe Text) -- ^ "url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON GitObject
+instance A.FromJSON GitObject where
+  parseJSON = A.withObject "GitObject" $ \o ->
+    GitObject
+      <$> (o .:? "sha")
+      <*> (o .:? "type")
+      <*> (o .:? "url")
+
+-- | ToJSON GitObject
+instance A.ToJSON GitObject where
+  toJSON GitObject {..} =
+   _omitNulls
+      [ "sha" .= gitObjectSha
+      , "type" .= gitObjectType
+      , "url" .= gitObjectUrl
+      ]
+
+
+-- | Construct a value of type 'GitObject' (by applying it's required fields, if any)
+mkGitObject
+  :: GitObject
+mkGitObject =
+  GitObject
+  { gitObjectSha = Nothing
+  , gitObjectType = Nothing
+  , gitObjectUrl = Nothing
+  }
+
+-- ** GitTreeResponse
+-- | GitTreeResponse
+-- GitTreeResponse returns a git tree
+data GitTreeResponse = GitTreeResponse
+  { gitTreeResponsePage :: !(Maybe Integer) -- ^ "page"
+  , gitTreeResponseSha :: !(Maybe Text) -- ^ "sha"
+  , gitTreeResponseTotalCount :: !(Maybe Integer) -- ^ "total_count"
+  , gitTreeResponseTree :: !(Maybe [GitEntry]) -- ^ "tree"
+  , gitTreeResponseTruncated :: !(Maybe Bool) -- ^ "truncated"
+  , gitTreeResponseUrl :: !(Maybe Text) -- ^ "url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON GitTreeResponse
+instance A.FromJSON GitTreeResponse where
+  parseJSON = A.withObject "GitTreeResponse" $ \o ->
+    GitTreeResponse
+      <$> (o .:? "page")
+      <*> (o .:? "sha")
+      <*> (o .:? "total_count")
+      <*> (o .:? "tree")
+      <*> (o .:? "truncated")
+      <*> (o .:? "url")
+
+-- | ToJSON GitTreeResponse
+instance A.ToJSON GitTreeResponse where
+  toJSON GitTreeResponse {..} =
+   _omitNulls
+      [ "page" .= gitTreeResponsePage
+      , "sha" .= gitTreeResponseSha
+      , "total_count" .= gitTreeResponseTotalCount
+      , "tree" .= gitTreeResponseTree
+      , "truncated" .= gitTreeResponseTruncated
+      , "url" .= gitTreeResponseUrl
+      ]
+
+
+-- | Construct a value of type 'GitTreeResponse' (by applying it's required fields, if any)
+mkGitTreeResponse
+  :: GitTreeResponse
+mkGitTreeResponse =
+  GitTreeResponse
+  { gitTreeResponsePage = Nothing
+  , gitTreeResponseSha = Nothing
+  , gitTreeResponseTotalCount = Nothing
+  , gitTreeResponseTree = Nothing
+  , gitTreeResponseTruncated = Nothing
+  , gitTreeResponseUrl = Nothing
+  }
+
+-- ** Hook
+-- | Hook
+-- Hook a hook is a web hook when one repository changed
+data Hook = Hook
+  { hookActive :: !(Maybe Bool) -- ^ "active"
+  , hookAuthorizationHeader :: !(Maybe Text) -- ^ "authorization_header"
+  , hookConfig :: !(Maybe (Map.Map String Text)) -- ^ "config"
+  , hookCreatedAt :: !(Maybe DateTime) -- ^ "created_at"
+  , hookEvents :: !(Maybe [Text]) -- ^ "events"
+  , hookId :: !(Maybe Integer) -- ^ "id"
+  , hookType :: !(Maybe Text) -- ^ "type"
+  , hookUpdatedAt :: !(Maybe DateTime) -- ^ "updated_at"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Hook
+instance A.FromJSON Hook where
+  parseJSON = A.withObject "Hook" $ \o ->
+    Hook
+      <$> (o .:? "active")
+      <*> (o .:? "authorization_header")
+      <*> (o .:? "config")
+      <*> (o .:? "created_at")
+      <*> (o .:? "events")
+      <*> (o .:? "id")
+      <*> (o .:? "type")
+      <*> (o .:? "updated_at")
+
+-- | ToJSON Hook
+instance A.ToJSON Hook where
+  toJSON Hook {..} =
+   _omitNulls
+      [ "active" .= hookActive
+      , "authorization_header" .= hookAuthorizationHeader
+      , "config" .= hookConfig
+      , "created_at" .= hookCreatedAt
+      , "events" .= hookEvents
+      , "id" .= hookId
+      , "type" .= hookType
+      , "updated_at" .= hookUpdatedAt
+      ]
+
+
+-- | Construct a value of type 'Hook' (by applying it's required fields, if any)
+mkHook
+  :: Hook
+mkHook =
+  Hook
+  { hookActive = Nothing
+  , hookAuthorizationHeader = Nothing
+  , hookConfig = Nothing
+  , hookCreatedAt = Nothing
+  , hookEvents = Nothing
+  , hookId = Nothing
+  , hookType = Nothing
+  , hookUpdatedAt = Nothing
+  }
+
+-- ** Identity
+-- | Identity
+-- Identity for a person's identity like an author or committer
+data Identity = Identity
+  { identityEmail :: !(Maybe Text) -- ^ "email"
+  , identityName :: !(Maybe Text) -- ^ "name"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Identity
+instance A.FromJSON Identity where
+  parseJSON = A.withObject "Identity" $ \o ->
+    Identity
+      <$> (o .:? "email")
+      <*> (o .:? "name")
+
+-- | ToJSON Identity
+instance A.ToJSON Identity where
+  toJSON Identity {..} =
+   _omitNulls
+      [ "email" .= identityEmail
+      , "name" .= identityName
+      ]
+
+
+-- | Construct a value of type 'Identity' (by applying it's required fields, if any)
+mkIdentity
+  :: Identity
+mkIdentity =
+  Identity
+  { identityEmail = Nothing
+  , identityName = Nothing
+  }
+
+-- ** InternalTracker
+-- | InternalTracker
+-- InternalTracker represents settings for internal tracker
+data InternalTracker = InternalTracker
+  { internalTrackerAllowOnlyContributorsToTrackTime :: !(Maybe Bool) -- ^ "allow_only_contributors_to_track_time" - Let only contributors track time (Built-in issue tracker)
+  , internalTrackerEnableIssueDependencies :: !(Maybe Bool) -- ^ "enable_issue_dependencies" - Enable dependencies for issues and pull requests (Built-in issue tracker)
+  , internalTrackerEnableTimeTracker :: !(Maybe Bool) -- ^ "enable_time_tracker" - Enable time tracking (Built-in issue tracker)
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON InternalTracker
+instance A.FromJSON InternalTracker where
+  parseJSON = A.withObject "InternalTracker" $ \o ->
+    InternalTracker
+      <$> (o .:? "allow_only_contributors_to_track_time")
+      <*> (o .:? "enable_issue_dependencies")
+      <*> (o .:? "enable_time_tracker")
+
+-- | ToJSON InternalTracker
+instance A.ToJSON InternalTracker where
+  toJSON InternalTracker {..} =
+   _omitNulls
+      [ "allow_only_contributors_to_track_time" .= internalTrackerAllowOnlyContributorsToTrackTime
+      , "enable_issue_dependencies" .= internalTrackerEnableIssueDependencies
+      , "enable_time_tracker" .= internalTrackerEnableTimeTracker
+      ]
+
+
+-- | Construct a value of type 'InternalTracker' (by applying it's required fields, if any)
+mkInternalTracker
+  :: InternalTracker
+mkInternalTracker =
+  InternalTracker
+  { internalTrackerAllowOnlyContributorsToTrackTime = Nothing
+  , internalTrackerEnableIssueDependencies = Nothing
+  , internalTrackerEnableTimeTracker = Nothing
+  }
+
+-- ** Issue
+-- | Issue
+-- Issue represents an issue in a repository
+data Issue = Issue
+  { issueAssets :: !(Maybe [Attachment]) -- ^ "assets"
+  , issueAssignee :: !(Maybe User) -- ^ "assignee"
+  , issueAssignees :: !(Maybe [User]) -- ^ "assignees"
+  , issueBody :: !(Maybe Text) -- ^ "body"
+  , issueClosedAt :: !(Maybe DateTime) -- ^ "closed_at"
+  , issueComments :: !(Maybe Integer) -- ^ "comments"
+  , issueCreatedAt :: !(Maybe DateTime) -- ^ "created_at"
+  , issueDueDate :: !(Maybe DateTime) -- ^ "due_date"
+  , issueHtmlUrl :: !(Maybe Text) -- ^ "html_url"
+  , issueId :: !(Maybe Integer) -- ^ "id"
+  , issueIsLocked :: !(Maybe Bool) -- ^ "is_locked"
+  , issueLabels :: !(Maybe [Label]) -- ^ "labels"
+  , issueMilestone :: !(Maybe Milestone) -- ^ "milestone"
+  , issueNumber :: !(Maybe Integer) -- ^ "number"
+  , issueOriginalAuthor :: !(Maybe Text) -- ^ "original_author"
+  , issueOriginalAuthorId :: !(Maybe Integer) -- ^ "original_author_id"
+  , issuePullRequest :: !(Maybe PullRequestMeta) -- ^ "pull_request"
+  , issueRef :: !(Maybe Text) -- ^ "ref"
+  , issueRepository :: !(Maybe RepositoryMeta) -- ^ "repository"
+  , issueState :: !(Maybe Text) -- ^ "state" - StateType issue state type
+  , issueTitle :: !(Maybe Text) -- ^ "title"
+  , issueUpdatedAt :: !(Maybe DateTime) -- ^ "updated_at"
+  , issueUrl :: !(Maybe Text) -- ^ "url"
+  , issueUser :: !(Maybe User) -- ^ "user"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Issue
+instance A.FromJSON Issue where
+  parseJSON = A.withObject "Issue" $ \o ->
+    Issue
+      <$> (o .:? "assets")
+      <*> (o .:? "assignee")
+      <*> (o .:? "assignees")
+      <*> (o .:? "body")
+      <*> (o .:? "closed_at")
+      <*> (o .:? "comments")
+      <*> (o .:? "created_at")
+      <*> (o .:? "due_date")
+      <*> (o .:? "html_url")
+      <*> (o .:? "id")
+      <*> (o .:? "is_locked")
+      <*> (o .:? "labels")
+      <*> (o .:? "milestone")
+      <*> (o .:? "number")
+      <*> (o .:? "original_author")
+      <*> (o .:? "original_author_id")
+      <*> (o .:? "pull_request")
+      <*> (o .:? "ref")
+      <*> (o .:? "repository")
+      <*> (o .:? "state")
+      <*> (o .:? "title")
+      <*> (o .:? "updated_at")
+      <*> (o .:? "url")
+      <*> (o .:? "user")
+
+-- | ToJSON Issue
+instance A.ToJSON Issue where
+  toJSON Issue {..} =
+   _omitNulls
+      [ "assets" .= issueAssets
+      , "assignee" .= issueAssignee
+      , "assignees" .= issueAssignees
+      , "body" .= issueBody
+      , "closed_at" .= issueClosedAt
+      , "comments" .= issueComments
+      , "created_at" .= issueCreatedAt
+      , "due_date" .= issueDueDate
+      , "html_url" .= issueHtmlUrl
+      , "id" .= issueId
+      , "is_locked" .= issueIsLocked
+      , "labels" .= issueLabels
+      , "milestone" .= issueMilestone
+      , "number" .= issueNumber
+      , "original_author" .= issueOriginalAuthor
+      , "original_author_id" .= issueOriginalAuthorId
+      , "pull_request" .= issuePullRequest
+      , "ref" .= issueRef
+      , "repository" .= issueRepository
+      , "state" .= issueState
+      , "title" .= issueTitle
+      , "updated_at" .= issueUpdatedAt
+      , "url" .= issueUrl
+      , "user" .= issueUser
+      ]
+
+
+-- | Construct a value of type 'Issue' (by applying it's required fields, if any)
+mkIssue
+  :: Issue
+mkIssue =
+  Issue
+  { issueAssets = Nothing
+  , issueAssignee = Nothing
+  , issueAssignees = Nothing
+  , issueBody = Nothing
+  , issueClosedAt = Nothing
+  , issueComments = Nothing
+  , issueCreatedAt = Nothing
+  , issueDueDate = Nothing
+  , issueHtmlUrl = Nothing
+  , issueId = Nothing
+  , issueIsLocked = Nothing
+  , issueLabels = Nothing
+  , issueMilestone = Nothing
+  , issueNumber = Nothing
+  , issueOriginalAuthor = Nothing
+  , issueOriginalAuthorId = Nothing
+  , issuePullRequest = Nothing
+  , issueRef = Nothing
+  , issueRepository = Nothing
+  , issueState = Nothing
+  , issueTitle = Nothing
+  , issueUpdatedAt = Nothing
+  , issueUrl = Nothing
+  , issueUser = Nothing
+  }
+
+-- ** IssueDeadline
+-- | IssueDeadline
+-- IssueDeadline represents an issue deadline
+data IssueDeadline = IssueDeadline
+  { issueDeadlineDueDate :: !(Maybe DateTime) -- ^ "due_date"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON IssueDeadline
+instance A.FromJSON IssueDeadline where
+  parseJSON = A.withObject "IssueDeadline" $ \o ->
+    IssueDeadline
+      <$> (o .:? "due_date")
+
+-- | ToJSON IssueDeadline
+instance A.ToJSON IssueDeadline where
+  toJSON IssueDeadline {..} =
+   _omitNulls
+      [ "due_date" .= issueDeadlineDueDate
+      ]
+
+
+-- | Construct a value of type 'IssueDeadline' (by applying it's required fields, if any)
+mkIssueDeadline
+  :: IssueDeadline
+mkIssueDeadline =
+  IssueDeadline
+  { issueDeadlineDueDate = Nothing
+  }
+
+-- ** IssueFormField
+-- | IssueFormField
+-- IssueFormField represents a form field
+data IssueFormField = IssueFormField
+  { issueFormFieldAttributes :: !(Maybe (Map.Map String A.Value)) -- ^ "attributes"
+  , issueFormFieldId :: !(Maybe Text) -- ^ "id"
+  , issueFormFieldType :: !(Maybe Text) -- ^ "type"
+  , issueFormFieldValidations :: !(Maybe (Map.Map String A.Value)) -- ^ "validations"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON IssueFormField
+instance A.FromJSON IssueFormField where
+  parseJSON = A.withObject "IssueFormField" $ \o ->
+    IssueFormField
+      <$> (o .:? "attributes")
+      <*> (o .:? "id")
+      <*> (o .:? "type")
+      <*> (o .:? "validations")
+
+-- | ToJSON IssueFormField
+instance A.ToJSON IssueFormField where
+  toJSON IssueFormField {..} =
+   _omitNulls
+      [ "attributes" .= issueFormFieldAttributes
+      , "id" .= issueFormFieldId
+      , "type" .= issueFormFieldType
+      , "validations" .= issueFormFieldValidations
+      ]
+
+
+-- | Construct a value of type 'IssueFormField' (by applying it's required fields, if any)
+mkIssueFormField
+  :: IssueFormField
+mkIssueFormField =
+  IssueFormField
+  { issueFormFieldAttributes = Nothing
+  , issueFormFieldId = Nothing
+  , issueFormFieldType = Nothing
+  , issueFormFieldValidations = Nothing
+  }
+
+-- ** IssueLabelsOption
+-- | IssueLabelsOption
+-- IssueLabelsOption a collection of labels
+data IssueLabelsOption = IssueLabelsOption
+  { issueLabelsOptionLabels :: !(Maybe [Integer]) -- ^ "labels" - list of label IDs
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON IssueLabelsOption
+instance A.FromJSON IssueLabelsOption where
+  parseJSON = A.withObject "IssueLabelsOption" $ \o ->
+    IssueLabelsOption
+      <$> (o .:? "labels")
+
+-- | ToJSON IssueLabelsOption
+instance A.ToJSON IssueLabelsOption where
+  toJSON IssueLabelsOption {..} =
+   _omitNulls
+      [ "labels" .= issueLabelsOptionLabels
+      ]
+
+
+-- | Construct a value of type 'IssueLabelsOption' (by applying it's required fields, if any)
+mkIssueLabelsOption
+  :: IssueLabelsOption
+mkIssueLabelsOption =
+  IssueLabelsOption
+  { issueLabelsOptionLabels = Nothing
+  }
+
+-- ** IssueTemplate
+-- | IssueTemplate
+-- IssueTemplate represents an issue template for a repository
+data IssueTemplate = IssueTemplate
+  { issueTemplateAbout :: !(Maybe Text) -- ^ "about"
+  , issueTemplateBody :: !(Maybe [IssueFormField]) -- ^ "body"
+  , issueTemplateContent :: !(Maybe Text) -- ^ "content"
+  , issueTemplateFileName :: !(Maybe Text) -- ^ "file_name"
+  , issueTemplateLabels :: !(Maybe [Text]) -- ^ "labels"
+  , issueTemplateName :: !(Maybe Text) -- ^ "name"
+  , issueTemplateRef :: !(Maybe Text) -- ^ "ref"
+  , issueTemplateTitle :: !(Maybe Text) -- ^ "title"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON IssueTemplate
+instance A.FromJSON IssueTemplate where
+  parseJSON = A.withObject "IssueTemplate" $ \o ->
+    IssueTemplate
+      <$> (o .:? "about")
+      <*> (o .:? "body")
+      <*> (o .:? "content")
+      <*> (o .:? "file_name")
+      <*> (o .:? "labels")
+      <*> (o .:? "name")
+      <*> (o .:? "ref")
+      <*> (o .:? "title")
+
+-- | ToJSON IssueTemplate
+instance A.ToJSON IssueTemplate where
+  toJSON IssueTemplate {..} =
+   _omitNulls
+      [ "about" .= issueTemplateAbout
+      , "body" .= issueTemplateBody
+      , "content" .= issueTemplateContent
+      , "file_name" .= issueTemplateFileName
+      , "labels" .= issueTemplateLabels
+      , "name" .= issueTemplateName
+      , "ref" .= issueTemplateRef
+      , "title" .= issueTemplateTitle
+      ]
+
+
+-- | Construct a value of type 'IssueTemplate' (by applying it's required fields, if any)
+mkIssueTemplate
+  :: IssueTemplate
+mkIssueTemplate =
+  IssueTemplate
+  { issueTemplateAbout = Nothing
+  , issueTemplateBody = Nothing
+  , issueTemplateContent = Nothing
+  , issueTemplateFileName = Nothing
+  , issueTemplateLabels = Nothing
+  , issueTemplateName = Nothing
+  , issueTemplateRef = Nothing
+  , issueTemplateTitle = Nothing
+  }
+
+-- ** Label
+-- | Label
+-- Label a label to an issue or a pr
+data Label = Label
+  { labelColor :: !(Maybe Text) -- ^ "color"
+  , labelDescription :: !(Maybe Text) -- ^ "description"
+  , labelExclusive :: !(Maybe Bool) -- ^ "exclusive"
+  , labelId :: !(Maybe Integer) -- ^ "id"
+  , labelName :: !(Maybe Text) -- ^ "name"
+  , labelUrl :: !(Maybe Text) -- ^ "url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Label
+instance A.FromJSON Label where
+  parseJSON = A.withObject "Label" $ \o ->
+    Label
+      <$> (o .:? "color")
+      <*> (o .:? "description")
+      <*> (o .:? "exclusive")
+      <*> (o .:? "id")
+      <*> (o .:? "name")
+      <*> (o .:? "url")
+
+-- | ToJSON Label
+instance A.ToJSON Label where
+  toJSON Label {..} =
+   _omitNulls
+      [ "color" .= labelColor
+      , "description" .= labelDescription
+      , "exclusive" .= labelExclusive
+      , "id" .= labelId
+      , "name" .= labelName
+      , "url" .= labelUrl
+      ]
+
+
+-- | Construct a value of type 'Label' (by applying it's required fields, if any)
+mkLabel
+  :: Label
+mkLabel =
+  Label
+  { labelColor = Nothing
+  , labelDescription = Nothing
+  , labelExclusive = Nothing
+  , labelId = Nothing
+  , labelName = Nothing
+  , labelUrl = Nothing
+  }
+
+-- ** MarkdownOption
+-- | MarkdownOption
+-- MarkdownOption markdown options
+data MarkdownOption = MarkdownOption
+  { markdownOptionContext :: !(Maybe Text) -- ^ "Context" - Context to render  in: body
+  , markdownOptionMode :: !(Maybe Text) -- ^ "Mode" - Mode to render  in: body
+  , markdownOptionText :: !(Maybe Text) -- ^ "Text" - Text markdown to render  in: body
+  , markdownOptionWiki :: !(Maybe Bool) -- ^ "Wiki" - Is it a wiki page ?  in: body
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON MarkdownOption
+instance A.FromJSON MarkdownOption where
+  parseJSON = A.withObject "MarkdownOption" $ \o ->
+    MarkdownOption
+      <$> (o .:? "Context")
+      <*> (o .:? "Mode")
+      <*> (o .:? "Text")
+      <*> (o .:? "Wiki")
+
+-- | ToJSON MarkdownOption
+instance A.ToJSON MarkdownOption where
+  toJSON MarkdownOption {..} =
+   _omitNulls
+      [ "Context" .= markdownOptionContext
+      , "Mode" .= markdownOptionMode
+      , "Text" .= markdownOptionText
+      , "Wiki" .= markdownOptionWiki
+      ]
+
+
+-- | Construct a value of type 'MarkdownOption' (by applying it's required fields, if any)
+mkMarkdownOption
+  :: MarkdownOption
+mkMarkdownOption =
+  MarkdownOption
+  { markdownOptionContext = Nothing
+  , markdownOptionMode = Nothing
+  , markdownOptionText = Nothing
+  , markdownOptionWiki = Nothing
+  }
+
+-- ** MergePullRequestOption
+-- | MergePullRequestOption
+-- MergePullRequestForm form for merging Pull Request
+data MergePullRequestOption = MergePullRequestOption
+  { mergePullRequestOptionDo :: !(E'Do) -- ^ /Required/ "Do"
+  , mergePullRequestOptionMergeCommitId :: !(Maybe Text) -- ^ "MergeCommitID"
+  , mergePullRequestOptionMergeMessageField :: !(Maybe Text) -- ^ "MergeMessageField"
+  , mergePullRequestOptionMergeTitleField :: !(Maybe Text) -- ^ "MergeTitleField"
+  , mergePullRequestOptionDeleteBranchAfterMerge :: !(Maybe Bool) -- ^ "delete_branch_after_merge"
+  , mergePullRequestOptionForceMerge :: !(Maybe Bool) -- ^ "force_merge"
+  , mergePullRequestOptionHeadCommitId :: !(Maybe Text) -- ^ "head_commit_id"
+  , mergePullRequestOptionMergeWhenChecksSucceed :: !(Maybe Bool) -- ^ "merge_when_checks_succeed"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON MergePullRequestOption
+instance A.FromJSON MergePullRequestOption where
+  parseJSON = A.withObject "MergePullRequestOption" $ \o ->
+    MergePullRequestOption
+      <$> (o .:  "Do")
+      <*> (o .:? "MergeCommitID")
+      <*> (o .:? "MergeMessageField")
+      <*> (o .:? "MergeTitleField")
+      <*> (o .:? "delete_branch_after_merge")
+      <*> (o .:? "force_merge")
+      <*> (o .:? "head_commit_id")
+      <*> (o .:? "merge_when_checks_succeed")
+
+-- | ToJSON MergePullRequestOption
+instance A.ToJSON MergePullRequestOption where
+  toJSON MergePullRequestOption {..} =
+   _omitNulls
+      [ "Do" .= mergePullRequestOptionDo
+      , "MergeCommitID" .= mergePullRequestOptionMergeCommitId
+      , "MergeMessageField" .= mergePullRequestOptionMergeMessageField
+      , "MergeTitleField" .= mergePullRequestOptionMergeTitleField
+      , "delete_branch_after_merge" .= mergePullRequestOptionDeleteBranchAfterMerge
+      , "force_merge" .= mergePullRequestOptionForceMerge
+      , "head_commit_id" .= mergePullRequestOptionHeadCommitId
+      , "merge_when_checks_succeed" .= mergePullRequestOptionMergeWhenChecksSucceed
+      ]
+
+
+-- | Construct a value of type 'MergePullRequestOption' (by applying it's required fields, if any)
+mkMergePullRequestOption
+  :: E'Do -- ^ 'mergePullRequestOptionDo' 
+  -> MergePullRequestOption
+mkMergePullRequestOption mergePullRequestOptionDo =
+  MergePullRequestOption
+  { mergePullRequestOptionDo
+  , mergePullRequestOptionMergeCommitId = Nothing
+  , mergePullRequestOptionMergeMessageField = Nothing
+  , mergePullRequestOptionMergeTitleField = Nothing
+  , mergePullRequestOptionDeleteBranchAfterMerge = Nothing
+  , mergePullRequestOptionForceMerge = Nothing
+  , mergePullRequestOptionHeadCommitId = Nothing
+  , mergePullRequestOptionMergeWhenChecksSucceed = Nothing
+  }
+
+-- ** MigrateRepoOptions
+-- | MigrateRepoOptions
+-- MigrateRepoOptions options for migrating repository's this is used to interact with api v1
+data MigrateRepoOptions = MigrateRepoOptions
+  { migrateRepoOptionsAuthPassword :: !(Maybe Text) -- ^ "auth_password"
+  , migrateRepoOptionsAuthToken :: !(Maybe Text) -- ^ "auth_token"
+  , migrateRepoOptionsAuthUsername :: !(Maybe Text) -- ^ "auth_username"
+  , migrateRepoOptionsCloneAddr :: !(Text) -- ^ /Required/ "clone_addr"
+  , migrateRepoOptionsDescription :: !(Maybe Text) -- ^ "description"
+  , migrateRepoOptionsIssues :: !(Maybe Bool) -- ^ "issues"
+  , migrateRepoOptionsLabels :: !(Maybe Bool) -- ^ "labels"
+  , migrateRepoOptionsLfs :: !(Maybe Bool) -- ^ "lfs"
+  , migrateRepoOptionsLfsEndpoint :: !(Maybe Text) -- ^ "lfs_endpoint"
+  , migrateRepoOptionsMilestones :: !(Maybe Bool) -- ^ "milestones"
+  , migrateRepoOptionsMirror :: !(Maybe Bool) -- ^ "mirror"
+  , migrateRepoOptionsMirrorInterval :: !(Maybe Text) -- ^ "mirror_interval"
+  , migrateRepoOptionsPrivate :: !(Maybe Bool) -- ^ "private"
+  , migrateRepoOptionsPullRequests :: !(Maybe Bool) -- ^ "pull_requests"
+  , migrateRepoOptionsReleases :: !(Maybe Bool) -- ^ "releases"
+  , migrateRepoOptionsRepoName :: !(Text) -- ^ /Required/ "repo_name"
+  , migrateRepoOptionsRepoOwner :: !(Maybe Text) -- ^ "repo_owner" - Name of User or Organisation who will own Repo after migration
+  , migrateRepoOptionsService :: !(Maybe E'Service) -- ^ "service"
+  , migrateRepoOptionsUid :: !(Maybe Integer) -- ^ "uid" - deprecated (only for backwards compatibility)
+  , migrateRepoOptionsWiki :: !(Maybe Bool) -- ^ "wiki"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON MigrateRepoOptions
+instance A.FromJSON MigrateRepoOptions where
+  parseJSON = A.withObject "MigrateRepoOptions" $ \o ->
+    MigrateRepoOptions
+      <$> (o .:? "auth_password")
+      <*> (o .:? "auth_token")
+      <*> (o .:? "auth_username")
+      <*> (o .:  "clone_addr")
+      <*> (o .:? "description")
+      <*> (o .:? "issues")
+      <*> (o .:? "labels")
+      <*> (o .:? "lfs")
+      <*> (o .:? "lfs_endpoint")
+      <*> (o .:? "milestones")
+      <*> (o .:? "mirror")
+      <*> (o .:? "mirror_interval")
+      <*> (o .:? "private")
+      <*> (o .:? "pull_requests")
+      <*> (o .:? "releases")
+      <*> (o .:  "repo_name")
+      <*> (o .:? "repo_owner")
+      <*> (o .:? "service")
+      <*> (o .:? "uid")
+      <*> (o .:? "wiki")
+
+-- | ToJSON MigrateRepoOptions
+instance A.ToJSON MigrateRepoOptions where
+  toJSON MigrateRepoOptions {..} =
+   _omitNulls
+      [ "auth_password" .= migrateRepoOptionsAuthPassword
+      , "auth_token" .= migrateRepoOptionsAuthToken
+      , "auth_username" .= migrateRepoOptionsAuthUsername
+      , "clone_addr" .= migrateRepoOptionsCloneAddr
+      , "description" .= migrateRepoOptionsDescription
+      , "issues" .= migrateRepoOptionsIssues
+      , "labels" .= migrateRepoOptionsLabels
+      , "lfs" .= migrateRepoOptionsLfs
+      , "lfs_endpoint" .= migrateRepoOptionsLfsEndpoint
+      , "milestones" .= migrateRepoOptionsMilestones
+      , "mirror" .= migrateRepoOptionsMirror
+      , "mirror_interval" .= migrateRepoOptionsMirrorInterval
+      , "private" .= migrateRepoOptionsPrivate
+      , "pull_requests" .= migrateRepoOptionsPullRequests
+      , "releases" .= migrateRepoOptionsReleases
+      , "repo_name" .= migrateRepoOptionsRepoName
+      , "repo_owner" .= migrateRepoOptionsRepoOwner
+      , "service" .= migrateRepoOptionsService
+      , "uid" .= migrateRepoOptionsUid
+      , "wiki" .= migrateRepoOptionsWiki
+      ]
+
+
+-- | Construct a value of type 'MigrateRepoOptions' (by applying it's required fields, if any)
+mkMigrateRepoOptions
+  :: Text -- ^ 'migrateRepoOptionsCloneAddr' 
+  -> Text -- ^ 'migrateRepoOptionsRepoName' 
+  -> MigrateRepoOptions
+mkMigrateRepoOptions migrateRepoOptionsCloneAddr migrateRepoOptionsRepoName =
+  MigrateRepoOptions
+  { migrateRepoOptionsAuthPassword = Nothing
+  , migrateRepoOptionsAuthToken = Nothing
+  , migrateRepoOptionsAuthUsername = Nothing
+  , migrateRepoOptionsCloneAddr
+  , migrateRepoOptionsDescription = Nothing
+  , migrateRepoOptionsIssues = Nothing
+  , migrateRepoOptionsLabels = Nothing
+  , migrateRepoOptionsLfs = Nothing
+  , migrateRepoOptionsLfsEndpoint = Nothing
+  , migrateRepoOptionsMilestones = Nothing
+  , migrateRepoOptionsMirror = Nothing
+  , migrateRepoOptionsMirrorInterval = Nothing
+  , migrateRepoOptionsPrivate = Nothing
+  , migrateRepoOptionsPullRequests = Nothing
+  , migrateRepoOptionsReleases = Nothing
+  , migrateRepoOptionsRepoName
+  , migrateRepoOptionsRepoOwner = Nothing
+  , migrateRepoOptionsService = Nothing
+  , migrateRepoOptionsUid = Nothing
+  , migrateRepoOptionsWiki = Nothing
+  }
+
+-- ** Milestone
+-- | Milestone
+-- Milestone milestone is a collection of issues on one repository
+data Milestone = Milestone
+  { milestoneClosedAt :: !(Maybe DateTime) -- ^ "closed_at"
+  , milestoneClosedIssues :: !(Maybe Integer) -- ^ "closed_issues"
+  , milestoneCreatedAt :: !(Maybe DateTime) -- ^ "created_at"
+  , milestoneDescription :: !(Maybe Text) -- ^ "description"
+  , milestoneDueOn :: !(Maybe DateTime) -- ^ "due_on"
+  , milestoneId :: !(Maybe Integer) -- ^ "id"
+  , milestoneOpenIssues :: !(Maybe Integer) -- ^ "open_issues"
+  , milestoneState :: !(Maybe Text) -- ^ "state" - StateType issue state type
+  , milestoneTitle :: !(Maybe Text) -- ^ "title"
+  , milestoneUpdatedAt :: !(Maybe DateTime) -- ^ "updated_at"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Milestone
+instance A.FromJSON Milestone where
+  parseJSON = A.withObject "Milestone" $ \o ->
+    Milestone
+      <$> (o .:? "closed_at")
+      <*> (o .:? "closed_issues")
+      <*> (o .:? "created_at")
+      <*> (o .:? "description")
+      <*> (o .:? "due_on")
+      <*> (o .:? "id")
+      <*> (o .:? "open_issues")
+      <*> (o .:? "state")
+      <*> (o .:? "title")
+      <*> (o .:? "updated_at")
+
+-- | ToJSON Milestone
+instance A.ToJSON Milestone where
+  toJSON Milestone {..} =
+   _omitNulls
+      [ "closed_at" .= milestoneClosedAt
+      , "closed_issues" .= milestoneClosedIssues
+      , "created_at" .= milestoneCreatedAt
+      , "description" .= milestoneDescription
+      , "due_on" .= milestoneDueOn
+      , "id" .= milestoneId
+      , "open_issues" .= milestoneOpenIssues
+      , "state" .= milestoneState
+      , "title" .= milestoneTitle
+      , "updated_at" .= milestoneUpdatedAt
+      ]
+
+
+-- | Construct a value of type 'Milestone' (by applying it's required fields, if any)
+mkMilestone
+  :: Milestone
+mkMilestone =
+  Milestone
+  { milestoneClosedAt = Nothing
+  , milestoneClosedIssues = Nothing
+  , milestoneCreatedAt = Nothing
+  , milestoneDescription = Nothing
+  , milestoneDueOn = Nothing
+  , milestoneId = Nothing
+  , milestoneOpenIssues = Nothing
+  , milestoneState = Nothing
+  , milestoneTitle = Nothing
+  , milestoneUpdatedAt = Nothing
+  }
+
+-- ** NodeInfo
+-- | NodeInfo
+-- NodeInfo contains standardized way of exposing metadata about a server running one of the distributed social networks
+data NodeInfo = NodeInfo
+  { nodeInfoMetadata :: !(Maybe A.Value) -- ^ "metadata"
+  , nodeInfoOpenRegistrations :: !(Maybe Bool) -- ^ "openRegistrations"
+  , nodeInfoProtocols :: !(Maybe [Text]) -- ^ "protocols"
+  , nodeInfoServices :: !(Maybe NodeInfoServices) -- ^ "services"
+  , nodeInfoSoftware :: !(Maybe NodeInfoSoftware) -- ^ "software"
+  , nodeInfoUsage :: !(Maybe NodeInfoUsage) -- ^ "usage"
+  , nodeInfoVersion :: !(Maybe Text) -- ^ "version"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON NodeInfo
+instance A.FromJSON NodeInfo where
+  parseJSON = A.withObject "NodeInfo" $ \o ->
+    NodeInfo
+      <$> (o .:? "metadata")
+      <*> (o .:? "openRegistrations")
+      <*> (o .:? "protocols")
+      <*> (o .:? "services")
+      <*> (o .:? "software")
+      <*> (o .:? "usage")
+      <*> (o .:? "version")
+
+-- | ToJSON NodeInfo
+instance A.ToJSON NodeInfo where
+  toJSON NodeInfo {..} =
+   _omitNulls
+      [ "metadata" .= nodeInfoMetadata
+      , "openRegistrations" .= nodeInfoOpenRegistrations
+      , "protocols" .= nodeInfoProtocols
+      , "services" .= nodeInfoServices
+      , "software" .= nodeInfoSoftware
+      , "usage" .= nodeInfoUsage
+      , "version" .= nodeInfoVersion
+      ]
+
+
+-- | Construct a value of type 'NodeInfo' (by applying it's required fields, if any)
+mkNodeInfo
+  :: NodeInfo
+mkNodeInfo =
+  NodeInfo
+  { nodeInfoMetadata = Nothing
+  , nodeInfoOpenRegistrations = Nothing
+  , nodeInfoProtocols = Nothing
+  , nodeInfoServices = Nothing
+  , nodeInfoSoftware = Nothing
+  , nodeInfoUsage = Nothing
+  , nodeInfoVersion = Nothing
+  }
+
+-- ** NodeInfoServices
+-- | NodeInfoServices
+-- NodeInfoServices contains the third party sites this server can connect to via their application API
+data NodeInfoServices = NodeInfoServices
+  { nodeInfoServicesInbound :: !(Maybe [Text]) -- ^ "inbound"
+  , nodeInfoServicesOutbound :: !(Maybe [Text]) -- ^ "outbound"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON NodeInfoServices
+instance A.FromJSON NodeInfoServices where
+  parseJSON = A.withObject "NodeInfoServices" $ \o ->
+    NodeInfoServices
+      <$> (o .:? "inbound")
+      <*> (o .:? "outbound")
+
+-- | ToJSON NodeInfoServices
+instance A.ToJSON NodeInfoServices where
+  toJSON NodeInfoServices {..} =
+   _omitNulls
+      [ "inbound" .= nodeInfoServicesInbound
+      , "outbound" .= nodeInfoServicesOutbound
+      ]
+
+
+-- | Construct a value of type 'NodeInfoServices' (by applying it's required fields, if any)
+mkNodeInfoServices
+  :: NodeInfoServices
+mkNodeInfoServices =
+  NodeInfoServices
+  { nodeInfoServicesInbound = Nothing
+  , nodeInfoServicesOutbound = Nothing
+  }
+
+-- ** NodeInfoSoftware
+-- | NodeInfoSoftware
+-- NodeInfoSoftware contains Metadata about server software in use
+data NodeInfoSoftware = NodeInfoSoftware
+  { nodeInfoSoftwareHomepage :: !(Maybe Text) -- ^ "homepage"
+  , nodeInfoSoftwareName :: !(Maybe Text) -- ^ "name"
+  , nodeInfoSoftwareRepository :: !(Maybe Text) -- ^ "repository"
+  , nodeInfoSoftwareVersion :: !(Maybe Text) -- ^ "version"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON NodeInfoSoftware
+instance A.FromJSON NodeInfoSoftware where
+  parseJSON = A.withObject "NodeInfoSoftware" $ \o ->
+    NodeInfoSoftware
+      <$> (o .:? "homepage")
+      <*> (o .:? "name")
+      <*> (o .:? "repository")
+      <*> (o .:? "version")
+
+-- | ToJSON NodeInfoSoftware
+instance A.ToJSON NodeInfoSoftware where
+  toJSON NodeInfoSoftware {..} =
+   _omitNulls
+      [ "homepage" .= nodeInfoSoftwareHomepage
+      , "name" .= nodeInfoSoftwareName
+      , "repository" .= nodeInfoSoftwareRepository
+      , "version" .= nodeInfoSoftwareVersion
+      ]
+
+
+-- | Construct a value of type 'NodeInfoSoftware' (by applying it's required fields, if any)
+mkNodeInfoSoftware
+  :: NodeInfoSoftware
+mkNodeInfoSoftware =
+  NodeInfoSoftware
+  { nodeInfoSoftwareHomepage = Nothing
+  , nodeInfoSoftwareName = Nothing
+  , nodeInfoSoftwareRepository = Nothing
+  , nodeInfoSoftwareVersion = Nothing
+  }
+
+-- ** NodeInfoUsage
+-- | NodeInfoUsage
+-- NodeInfoUsage contains usage statistics for this server
+data NodeInfoUsage = NodeInfoUsage
+  { nodeInfoUsageLocalComments :: !(Maybe Integer) -- ^ "localComments"
+  , nodeInfoUsageLocalPosts :: !(Maybe Integer) -- ^ "localPosts"
+  , nodeInfoUsageUsers :: !(Maybe NodeInfoUsageUsers) -- ^ "users"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON NodeInfoUsage
+instance A.FromJSON NodeInfoUsage where
+  parseJSON = A.withObject "NodeInfoUsage" $ \o ->
+    NodeInfoUsage
+      <$> (o .:? "localComments")
+      <*> (o .:? "localPosts")
+      <*> (o .:? "users")
+
+-- | ToJSON NodeInfoUsage
+instance A.ToJSON NodeInfoUsage where
+  toJSON NodeInfoUsage {..} =
+   _omitNulls
+      [ "localComments" .= nodeInfoUsageLocalComments
+      , "localPosts" .= nodeInfoUsageLocalPosts
+      , "users" .= nodeInfoUsageUsers
+      ]
+
+
+-- | Construct a value of type 'NodeInfoUsage' (by applying it's required fields, if any)
+mkNodeInfoUsage
+  :: NodeInfoUsage
+mkNodeInfoUsage =
+  NodeInfoUsage
+  { nodeInfoUsageLocalComments = Nothing
+  , nodeInfoUsageLocalPosts = Nothing
+  , nodeInfoUsageUsers = Nothing
+  }
+
+-- ** NodeInfoUsageUsers
+-- | NodeInfoUsageUsers
+-- NodeInfoUsageUsers contains statistics about the users of this server
+data NodeInfoUsageUsers = NodeInfoUsageUsers
+  { nodeInfoUsageUsersActiveHalfyear :: !(Maybe Integer) -- ^ "activeHalfyear"
+  , nodeInfoUsageUsersActiveMonth :: !(Maybe Integer) -- ^ "activeMonth"
+  , nodeInfoUsageUsersTotal :: !(Maybe Integer) -- ^ "total"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON NodeInfoUsageUsers
+instance A.FromJSON NodeInfoUsageUsers where
+  parseJSON = A.withObject "NodeInfoUsageUsers" $ \o ->
+    NodeInfoUsageUsers
+      <$> (o .:? "activeHalfyear")
+      <*> (o .:? "activeMonth")
+      <*> (o .:? "total")
+
+-- | ToJSON NodeInfoUsageUsers
+instance A.ToJSON NodeInfoUsageUsers where
+  toJSON NodeInfoUsageUsers {..} =
+   _omitNulls
+      [ "activeHalfyear" .= nodeInfoUsageUsersActiveHalfyear
+      , "activeMonth" .= nodeInfoUsageUsersActiveMonth
+      , "total" .= nodeInfoUsageUsersTotal
+      ]
+
+
+-- | Construct a value of type 'NodeInfoUsageUsers' (by applying it's required fields, if any)
+mkNodeInfoUsageUsers
+  :: NodeInfoUsageUsers
+mkNodeInfoUsageUsers =
+  NodeInfoUsageUsers
+  { nodeInfoUsageUsersActiveHalfyear = Nothing
+  , nodeInfoUsageUsersActiveMonth = Nothing
+  , nodeInfoUsageUsersTotal = Nothing
+  }
+
+-- ** Note
+-- | Note
+-- Note contains information related to a git note
+data Note = Note
+  { noteCommit :: !(Maybe Commit) -- ^ "commit"
+  , noteMessage :: !(Maybe Text) -- ^ "message"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Note
+instance A.FromJSON Note where
+  parseJSON = A.withObject "Note" $ \o ->
+    Note
+      <$> (o .:? "commit")
+      <*> (o .:? "message")
+
+-- | ToJSON Note
+instance A.ToJSON Note where
+  toJSON Note {..} =
+   _omitNulls
+      [ "commit" .= noteCommit
+      , "message" .= noteMessage
+      ]
+
+
+-- | Construct a value of type 'Note' (by applying it's required fields, if any)
+mkNote
+  :: Note
+mkNote =
+  Note
+  { noteCommit = Nothing
+  , noteMessage = Nothing
+  }
+
+-- ** NotificationCount
+-- | NotificationCount
+-- NotificationCount number of unread notifications
+data NotificationCount = NotificationCount
+  { notificationCountNew :: !(Maybe Integer) -- ^ "new"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON NotificationCount
+instance A.FromJSON NotificationCount where
+  parseJSON = A.withObject "NotificationCount" $ \o ->
+    NotificationCount
+      <$> (o .:? "new")
+
+-- | ToJSON NotificationCount
+instance A.ToJSON NotificationCount where
+  toJSON NotificationCount {..} =
+   _omitNulls
+      [ "new" .= notificationCountNew
+      ]
+
+
+-- | Construct a value of type 'NotificationCount' (by applying it's required fields, if any)
+mkNotificationCount
+  :: NotificationCount
+mkNotificationCount =
+  NotificationCount
+  { notificationCountNew = Nothing
+  }
+
+-- ** NotificationSubject
+-- | NotificationSubject
+-- NotificationSubject contains the notification subject (Issue/Pull/Commit)
+data NotificationSubject = NotificationSubject
+  { notificationSubjectHtmlUrl :: !(Maybe Text) -- ^ "html_url"
+  , notificationSubjectLatestCommentHtmlUrl :: !(Maybe Text) -- ^ "latest_comment_html_url"
+  , notificationSubjectLatestCommentUrl :: !(Maybe Text) -- ^ "latest_comment_url"
+  , notificationSubjectState :: !(Maybe Text) -- ^ "state" - StateType issue state type
+  , notificationSubjectTitle :: !(Maybe Text) -- ^ "title"
+  , notificationSubjectType :: !(Maybe Text) -- ^ "type" - NotifySubjectType represent type of notification subject
+  , notificationSubjectUrl :: !(Maybe Text) -- ^ "url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON NotificationSubject
+instance A.FromJSON NotificationSubject where
+  parseJSON = A.withObject "NotificationSubject" $ \o ->
+    NotificationSubject
+      <$> (o .:? "html_url")
+      <*> (o .:? "latest_comment_html_url")
+      <*> (o .:? "latest_comment_url")
+      <*> (o .:? "state")
+      <*> (o .:? "title")
+      <*> (o .:? "type")
+      <*> (o .:? "url")
+
+-- | ToJSON NotificationSubject
+instance A.ToJSON NotificationSubject where
+  toJSON NotificationSubject {..} =
+   _omitNulls
+      [ "html_url" .= notificationSubjectHtmlUrl
+      , "latest_comment_html_url" .= notificationSubjectLatestCommentHtmlUrl
+      , "latest_comment_url" .= notificationSubjectLatestCommentUrl
+      , "state" .= notificationSubjectState
+      , "title" .= notificationSubjectTitle
+      , "type" .= notificationSubjectType
+      , "url" .= notificationSubjectUrl
+      ]
+
+
+-- | Construct a value of type 'NotificationSubject' (by applying it's required fields, if any)
+mkNotificationSubject
+  :: NotificationSubject
+mkNotificationSubject =
+  NotificationSubject
+  { notificationSubjectHtmlUrl = Nothing
+  , notificationSubjectLatestCommentHtmlUrl = Nothing
+  , notificationSubjectLatestCommentUrl = Nothing
+  , notificationSubjectState = Nothing
+  , notificationSubjectTitle = Nothing
+  , notificationSubjectType = Nothing
+  , notificationSubjectUrl = Nothing
+  }
+
+-- ** NotificationThread
+-- | NotificationThread
+-- NotificationThread expose Notification on API
+data NotificationThread = NotificationThread
+  { notificationThreadId :: !(Maybe Integer) -- ^ "id"
+  , notificationThreadPinned :: !(Maybe Bool) -- ^ "pinned"
+  , notificationThreadRepository :: !(Maybe Repository) -- ^ "repository"
+  , notificationThreadSubject :: !(Maybe NotificationSubject) -- ^ "subject"
+  , notificationThreadUnread :: !(Maybe Bool) -- ^ "unread"
+  , notificationThreadUpdatedAt :: !(Maybe DateTime) -- ^ "updated_at"
+  , notificationThreadUrl :: !(Maybe Text) -- ^ "url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON NotificationThread
+instance A.FromJSON NotificationThread where
+  parseJSON = A.withObject "NotificationThread" $ \o ->
+    NotificationThread
+      <$> (o .:? "id")
+      <*> (o .:? "pinned")
+      <*> (o .:? "repository")
+      <*> (o .:? "subject")
+      <*> (o .:? "unread")
+      <*> (o .:? "updated_at")
+      <*> (o .:? "url")
+
+-- | ToJSON NotificationThread
+instance A.ToJSON NotificationThread where
+  toJSON NotificationThread {..} =
+   _omitNulls
+      [ "id" .= notificationThreadId
+      , "pinned" .= notificationThreadPinned
+      , "repository" .= notificationThreadRepository
+      , "subject" .= notificationThreadSubject
+      , "unread" .= notificationThreadUnread
+      , "updated_at" .= notificationThreadUpdatedAt
+      , "url" .= notificationThreadUrl
+      ]
+
+
+-- | Construct a value of type 'NotificationThread' (by applying it's required fields, if any)
+mkNotificationThread
+  :: NotificationThread
+mkNotificationThread =
+  NotificationThread
+  { notificationThreadId = Nothing
+  , notificationThreadPinned = Nothing
+  , notificationThreadRepository = Nothing
+  , notificationThreadSubject = Nothing
+  , notificationThreadUnread = Nothing
+  , notificationThreadUpdatedAt = Nothing
+  , notificationThreadUrl = Nothing
+  }
+
+-- ** OAuth2Application
+-- | OAuth2Application
+-- OAuth2Application represents an OAuth2 application.
+-- 
+data OAuth2Application = OAuth2Application
+  { oAuth2ApplicationClientId :: !(Maybe Text) -- ^ "client_id"
+  , oAuth2ApplicationClientSecret :: !(Maybe Text) -- ^ "client_secret"
+  , oAuth2ApplicationConfidentialClient :: !(Maybe Bool) -- ^ "confidential_client"
+  , oAuth2ApplicationCreated :: !(Maybe DateTime) -- ^ "created"
+  , oAuth2ApplicationId :: !(Maybe Integer) -- ^ "id"
+  , oAuth2ApplicationName :: !(Maybe Text) -- ^ "name"
+  , oAuth2ApplicationRedirectUris :: !(Maybe [Text]) -- ^ "redirect_uris"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON OAuth2Application
+instance A.FromJSON OAuth2Application where
+  parseJSON = A.withObject "OAuth2Application" $ \o ->
+    OAuth2Application
+      <$> (o .:? "client_id")
+      <*> (o .:? "client_secret")
+      <*> (o .:? "confidential_client")
+      <*> (o .:? "created")
+      <*> (o .:? "id")
+      <*> (o .:? "name")
+      <*> (o .:? "redirect_uris")
+
+-- | ToJSON OAuth2Application
+instance A.ToJSON OAuth2Application where
+  toJSON OAuth2Application {..} =
+   _omitNulls
+      [ "client_id" .= oAuth2ApplicationClientId
+      , "client_secret" .= oAuth2ApplicationClientSecret
+      , "confidential_client" .= oAuth2ApplicationConfidentialClient
+      , "created" .= oAuth2ApplicationCreated
+      , "id" .= oAuth2ApplicationId
+      , "name" .= oAuth2ApplicationName
+      , "redirect_uris" .= oAuth2ApplicationRedirectUris
+      ]
+
+
+-- | Construct a value of type 'OAuth2Application' (by applying it's required fields, if any)
+mkOAuth2Application
+  :: OAuth2Application
+mkOAuth2Application =
+  OAuth2Application
+  { oAuth2ApplicationClientId = Nothing
+  , oAuth2ApplicationClientSecret = Nothing
+  , oAuth2ApplicationConfidentialClient = Nothing
+  , oAuth2ApplicationCreated = Nothing
+  , oAuth2ApplicationId = Nothing
+  , oAuth2ApplicationName = Nothing
+  , oAuth2ApplicationRedirectUris = Nothing
+  }
+
+-- ** Organization
+-- | Organization
+-- Organization represents an organization
+data Organization = Organization
+  { organizationAvatarUrl :: !(Maybe Text) -- ^ "avatar_url"
+  , organizationDescription :: !(Maybe Text) -- ^ "description"
+  , organizationFullName :: !(Maybe Text) -- ^ "full_name"
+  , organizationId :: !(Maybe Integer) -- ^ "id"
+  , organizationLocation :: !(Maybe Text) -- ^ "location"
+  , organizationName :: !(Maybe Text) -- ^ "name"
+  , organizationRepoAdminChangeTeamAccess :: !(Maybe Bool) -- ^ "repo_admin_change_team_access"
+  , organizationUsername :: !(Maybe Text) -- ^ "username" - deprecated
+  , organizationVisibility :: !(Maybe Text) -- ^ "visibility"
+  , organizationWebsite :: !(Maybe Text) -- ^ "website"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Organization
+instance A.FromJSON Organization where
+  parseJSON = A.withObject "Organization" $ \o ->
+    Organization
+      <$> (o .:? "avatar_url")
+      <*> (o .:? "description")
+      <*> (o .:? "full_name")
+      <*> (o .:? "id")
+      <*> (o .:? "location")
+      <*> (o .:? "name")
+      <*> (o .:? "repo_admin_change_team_access")
+      <*> (o .:? "username")
+      <*> (o .:? "visibility")
+      <*> (o .:? "website")
+
+-- | ToJSON Organization
+instance A.ToJSON Organization where
+  toJSON Organization {..} =
+   _omitNulls
+      [ "avatar_url" .= organizationAvatarUrl
+      , "description" .= organizationDescription
+      , "full_name" .= organizationFullName
+      , "id" .= organizationId
+      , "location" .= organizationLocation
+      , "name" .= organizationName
+      , "repo_admin_change_team_access" .= organizationRepoAdminChangeTeamAccess
+      , "username" .= organizationUsername
+      , "visibility" .= organizationVisibility
+      , "website" .= organizationWebsite
+      ]
+
+
+-- | Construct a value of type 'Organization' (by applying it's required fields, if any)
+mkOrganization
+  :: Organization
+mkOrganization =
+  Organization
+  { organizationAvatarUrl = Nothing
+  , organizationDescription = Nothing
+  , organizationFullName = Nothing
+  , organizationId = Nothing
+  , organizationLocation = Nothing
+  , organizationName = Nothing
+  , organizationRepoAdminChangeTeamAccess = Nothing
+  , organizationUsername = Nothing
+  , organizationVisibility = Nothing
+  , organizationWebsite = Nothing
+  }
+
+-- ** OrganizationPermissions
+-- | OrganizationPermissions
+-- OrganizationPermissions list different users permissions on an organization
+data OrganizationPermissions = OrganizationPermissions
+  { organizationPermissionsCanCreateRepository :: !(Maybe Bool) -- ^ "can_create_repository"
+  , organizationPermissionsCanRead :: !(Maybe Bool) -- ^ "can_read"
+  , organizationPermissionsCanWrite :: !(Maybe Bool) -- ^ "can_write"
+  , organizationPermissionsIsAdmin :: !(Maybe Bool) -- ^ "is_admin"
+  , organizationPermissionsIsOwner :: !(Maybe Bool) -- ^ "is_owner"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON OrganizationPermissions
+instance A.FromJSON OrganizationPermissions where
+  parseJSON = A.withObject "OrganizationPermissions" $ \o ->
+    OrganizationPermissions
+      <$> (o .:? "can_create_repository")
+      <*> (o .:? "can_read")
+      <*> (o .:? "can_write")
+      <*> (o .:? "is_admin")
+      <*> (o .:? "is_owner")
+
+-- | ToJSON OrganizationPermissions
+instance A.ToJSON OrganizationPermissions where
+  toJSON OrganizationPermissions {..} =
+   _omitNulls
+      [ "can_create_repository" .= organizationPermissionsCanCreateRepository
+      , "can_read" .= organizationPermissionsCanRead
+      , "can_write" .= organizationPermissionsCanWrite
+      , "is_admin" .= organizationPermissionsIsAdmin
+      , "is_owner" .= organizationPermissionsIsOwner
+      ]
+
+
+-- | Construct a value of type 'OrganizationPermissions' (by applying it's required fields, if any)
+mkOrganizationPermissions
+  :: OrganizationPermissions
+mkOrganizationPermissions =
+  OrganizationPermissions
+  { organizationPermissionsCanCreateRepository = Nothing
+  , organizationPermissionsCanRead = Nothing
+  , organizationPermissionsCanWrite = Nothing
+  , organizationPermissionsIsAdmin = Nothing
+  , organizationPermissionsIsOwner = Nothing
+  }
+
+-- ** PRBranchInfo
+-- | PRBranchInfo
+-- PRBranchInfo information about a branch
+data PRBranchInfo = PRBranchInfo
+  { pRBranchInfoLabel :: !(Maybe Text) -- ^ "label"
+  , pRBranchInfoRef :: !(Maybe Text) -- ^ "ref"
+  , pRBranchInfoRepo :: !(Maybe Repository) -- ^ "repo"
+  , pRBranchInfoRepoId :: !(Maybe Integer) -- ^ "repo_id"
+  , pRBranchInfoSha :: !(Maybe Text) -- ^ "sha"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON PRBranchInfo
+instance A.FromJSON PRBranchInfo where
+  parseJSON = A.withObject "PRBranchInfo" $ \o ->
+    PRBranchInfo
+      <$> (o .:? "label")
+      <*> (o .:? "ref")
+      <*> (o .:? "repo")
+      <*> (o .:? "repo_id")
+      <*> (o .:? "sha")
+
+-- | ToJSON PRBranchInfo
+instance A.ToJSON PRBranchInfo where
+  toJSON PRBranchInfo {..} =
+   _omitNulls
+      [ "label" .= pRBranchInfoLabel
+      , "ref" .= pRBranchInfoRef
+      , "repo" .= pRBranchInfoRepo
+      , "repo_id" .= pRBranchInfoRepoId
+      , "sha" .= pRBranchInfoSha
+      ]
+
+
+-- | Construct a value of type 'PRBranchInfo' (by applying it's required fields, if any)
+mkPRBranchInfo
+  :: PRBranchInfo
+mkPRBranchInfo =
+  PRBranchInfo
+  { pRBranchInfoLabel = Nothing
+  , pRBranchInfoRef = Nothing
+  , pRBranchInfoRepo = Nothing
+  , pRBranchInfoRepoId = Nothing
+  , pRBranchInfoSha = Nothing
+  }
+
+-- ** Package
+-- | Package
+-- Package represents a package
+data Package = Package
+  { packageCreatedAt :: !(Maybe DateTime) -- ^ "created_at"
+  , packageCreator :: !(Maybe User) -- ^ "creator"
+  , packageId :: !(Maybe Integer) -- ^ "id"
+  , packageName :: !(Maybe Text) -- ^ "name"
+  , packageOwner :: !(Maybe User) -- ^ "owner"
+  , packageRepository :: !(Maybe Repository) -- ^ "repository"
+  , packageType :: !(Maybe Text) -- ^ "type"
+  , packageVersion :: !(Maybe Text) -- ^ "version"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Package
+instance A.FromJSON Package where
+  parseJSON = A.withObject "Package" $ \o ->
+    Package
+      <$> (o .:? "created_at")
+      <*> (o .:? "creator")
+      <*> (o .:? "id")
+      <*> (o .:? "name")
+      <*> (o .:? "owner")
+      <*> (o .:? "repository")
+      <*> (o .:? "type")
+      <*> (o .:? "version")
+
+-- | ToJSON Package
+instance A.ToJSON Package where
+  toJSON Package {..} =
+   _omitNulls
+      [ "created_at" .= packageCreatedAt
+      , "creator" .= packageCreator
+      , "id" .= packageId
+      , "name" .= packageName
+      , "owner" .= packageOwner
+      , "repository" .= packageRepository
+      , "type" .= packageType
+      , "version" .= packageVersion
+      ]
+
+
+-- | Construct a value of type 'Package' (by applying it's required fields, if any)
+mkPackage
+  :: Package
+mkPackage =
+  Package
+  { packageCreatedAt = Nothing
+  , packageCreator = Nothing
+  , packageId = Nothing
+  , packageName = Nothing
+  , packageOwner = Nothing
+  , packageRepository = Nothing
+  , packageType = Nothing
+  , packageVersion = Nothing
+  }
+
+-- ** PackageFile
+-- | PackageFile
+-- PackageFile represents a package file
+data PackageFile = PackageFile
+  { packageFileSize :: !(Maybe Integer) -- ^ "Size"
+  , packageFileId :: !(Maybe Integer) -- ^ "id"
+  , packageFileMd5 :: !(Maybe Text) -- ^ "md5"
+  , packageFileName :: !(Maybe Text) -- ^ "name"
+  , packageFileSha1 :: !(Maybe Text) -- ^ "sha1"
+  , packageFileSha256 :: !(Maybe Text) -- ^ "sha256"
+  , packageFileSha512 :: !(Maybe Text) -- ^ "sha512"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON PackageFile
+instance A.FromJSON PackageFile where
+  parseJSON = A.withObject "PackageFile" $ \o ->
+    PackageFile
+      <$> (o .:? "Size")
+      <*> (o .:? "id")
+      <*> (o .:? "md5")
+      <*> (o .:? "name")
+      <*> (o .:? "sha1")
+      <*> (o .:? "sha256")
+      <*> (o .:? "sha512")
+
+-- | ToJSON PackageFile
+instance A.ToJSON PackageFile where
+  toJSON PackageFile {..} =
+   _omitNulls
+      [ "Size" .= packageFileSize
+      , "id" .= packageFileId
+      , "md5" .= packageFileMd5
+      , "name" .= packageFileName
+      , "sha1" .= packageFileSha1
+      , "sha256" .= packageFileSha256
+      , "sha512" .= packageFileSha512
+      ]
+
+
+-- | Construct a value of type 'PackageFile' (by applying it's required fields, if any)
+mkPackageFile
+  :: PackageFile
+mkPackageFile =
+  PackageFile
+  { packageFileSize = Nothing
+  , packageFileId = Nothing
+  , packageFileMd5 = Nothing
+  , packageFileName = Nothing
+  , packageFileSha1 = Nothing
+  , packageFileSha256 = Nothing
+  , packageFileSha512 = Nothing
+  }
+
+-- ** PayloadCommit
+-- | PayloadCommit
+-- PayloadCommit represents a commit
+data PayloadCommit = PayloadCommit
+  { payloadCommitAdded :: !(Maybe [Text]) -- ^ "added"
+  , payloadCommitAuthor :: !(Maybe PayloadUser) -- ^ "author"
+  , payloadCommitCommitter :: !(Maybe PayloadUser) -- ^ "committer"
+  , payloadCommitId :: !(Maybe Text) -- ^ "id" - sha1 hash of the commit
+  , payloadCommitMessage :: !(Maybe Text) -- ^ "message"
+  , payloadCommitModified :: !(Maybe [Text]) -- ^ "modified"
+  , payloadCommitRemoved :: !(Maybe [Text]) -- ^ "removed"
+  , payloadCommitTimestamp :: !(Maybe DateTime) -- ^ "timestamp"
+  , payloadCommitUrl :: !(Maybe Text) -- ^ "url"
+  , payloadCommitVerification :: !(Maybe PayloadCommitVerification) -- ^ "verification"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON PayloadCommit
+instance A.FromJSON PayloadCommit where
+  parseJSON = A.withObject "PayloadCommit" $ \o ->
+    PayloadCommit
+      <$> (o .:? "added")
+      <*> (o .:? "author")
+      <*> (o .:? "committer")
+      <*> (o .:? "id")
+      <*> (o .:? "message")
+      <*> (o .:? "modified")
+      <*> (o .:? "removed")
+      <*> (o .:? "timestamp")
+      <*> (o .:? "url")
+      <*> (o .:? "verification")
+
+-- | ToJSON PayloadCommit
+instance A.ToJSON PayloadCommit where
+  toJSON PayloadCommit {..} =
+   _omitNulls
+      [ "added" .= payloadCommitAdded
+      , "author" .= payloadCommitAuthor
+      , "committer" .= payloadCommitCommitter
+      , "id" .= payloadCommitId
+      , "message" .= payloadCommitMessage
+      , "modified" .= payloadCommitModified
+      , "removed" .= payloadCommitRemoved
+      , "timestamp" .= payloadCommitTimestamp
+      , "url" .= payloadCommitUrl
+      , "verification" .= payloadCommitVerification
+      ]
+
+
+-- | Construct a value of type 'PayloadCommit' (by applying it's required fields, if any)
+mkPayloadCommit
+  :: PayloadCommit
+mkPayloadCommit =
+  PayloadCommit
+  { payloadCommitAdded = Nothing
+  , payloadCommitAuthor = Nothing
+  , payloadCommitCommitter = Nothing
+  , payloadCommitId = Nothing
+  , payloadCommitMessage = Nothing
+  , payloadCommitModified = Nothing
+  , payloadCommitRemoved = Nothing
+  , payloadCommitTimestamp = Nothing
+  , payloadCommitUrl = Nothing
+  , payloadCommitVerification = Nothing
+  }
+
+-- ** PayloadCommitVerification
+-- | PayloadCommitVerification
+-- PayloadCommitVerification represents the GPG verification of a commit
+data PayloadCommitVerification = PayloadCommitVerification
+  { payloadCommitVerificationPayload :: !(Maybe Text) -- ^ "payload"
+  , payloadCommitVerificationReason :: !(Maybe Text) -- ^ "reason"
+  , payloadCommitVerificationSignature :: !(Maybe Text) -- ^ "signature"
+  , payloadCommitVerificationSigner :: !(Maybe PayloadUser) -- ^ "signer"
+  , payloadCommitVerificationVerified :: !(Maybe Bool) -- ^ "verified"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON PayloadCommitVerification
+instance A.FromJSON PayloadCommitVerification where
+  parseJSON = A.withObject "PayloadCommitVerification" $ \o ->
+    PayloadCommitVerification
+      <$> (o .:? "payload")
+      <*> (o .:? "reason")
+      <*> (o .:? "signature")
+      <*> (o .:? "signer")
+      <*> (o .:? "verified")
+
+-- | ToJSON PayloadCommitVerification
+instance A.ToJSON PayloadCommitVerification where
+  toJSON PayloadCommitVerification {..} =
+   _omitNulls
+      [ "payload" .= payloadCommitVerificationPayload
+      , "reason" .= payloadCommitVerificationReason
+      , "signature" .= payloadCommitVerificationSignature
+      , "signer" .= payloadCommitVerificationSigner
+      , "verified" .= payloadCommitVerificationVerified
+      ]
+
+
+-- | Construct a value of type 'PayloadCommitVerification' (by applying it's required fields, if any)
+mkPayloadCommitVerification
+  :: PayloadCommitVerification
+mkPayloadCommitVerification =
+  PayloadCommitVerification
+  { payloadCommitVerificationPayload = Nothing
+  , payloadCommitVerificationReason = Nothing
+  , payloadCommitVerificationSignature = Nothing
+  , payloadCommitVerificationSigner = Nothing
+  , payloadCommitVerificationVerified = Nothing
+  }
+
+-- ** PayloadUser
+-- | PayloadUser
+-- PayloadUser represents the author or committer of a commit
+data PayloadUser = PayloadUser
+  { payloadUserEmail :: !(Maybe Text) -- ^ "email"
+  , payloadUserName :: !(Maybe Text) -- ^ "name" - Full name of the commit author
+  , payloadUserUsername :: !(Maybe Text) -- ^ "username"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON PayloadUser
+instance A.FromJSON PayloadUser where
+  parseJSON = A.withObject "PayloadUser" $ \o ->
+    PayloadUser
+      <$> (o .:? "email")
+      <*> (o .:? "name")
+      <*> (o .:? "username")
+
+-- | ToJSON PayloadUser
+instance A.ToJSON PayloadUser where
+  toJSON PayloadUser {..} =
+   _omitNulls
+      [ "email" .= payloadUserEmail
+      , "name" .= payloadUserName
+      , "username" .= payloadUserUsername
+      ]
+
+
+-- | Construct a value of type 'PayloadUser' (by applying it's required fields, if any)
+mkPayloadUser
+  :: PayloadUser
+mkPayloadUser =
+  PayloadUser
+  { payloadUserEmail = Nothing
+  , payloadUserName = Nothing
+  , payloadUserUsername = Nothing
+  }
+
+-- ** Permission
+-- | Permission
+-- Permission represents a set of permissions
+data Permission = Permission
+  { permissionAdmin :: !(Maybe Bool) -- ^ "admin"
+  , permissionPull :: !(Maybe Bool) -- ^ "pull"
+  , permissionPush :: !(Maybe Bool) -- ^ "push"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Permission
+instance A.FromJSON Permission where
+  parseJSON = A.withObject "Permission" $ \o ->
+    Permission
+      <$> (o .:? "admin")
+      <*> (o .:? "pull")
+      <*> (o .:? "push")
+
+-- | ToJSON Permission
+instance A.ToJSON Permission where
+  toJSON Permission {..} =
+   _omitNulls
+      [ "admin" .= permissionAdmin
+      , "pull" .= permissionPull
+      , "push" .= permissionPush
+      ]
+
+
+-- | Construct a value of type 'Permission' (by applying it's required fields, if any)
+mkPermission
+  :: Permission
+mkPermission =
+  Permission
+  { permissionAdmin = Nothing
+  , permissionPull = Nothing
+  , permissionPush = Nothing
+  }
+
+-- ** PublicKey
+-- | PublicKey
+-- PublicKey publickey is a user key to push code to repository
+data PublicKey = PublicKey
+  { publicKeyCreatedAt :: !(Maybe DateTime) -- ^ "created_at"
+  , publicKeyFingerprint :: !(Maybe Text) -- ^ "fingerprint"
+  , publicKeyId :: !(Maybe Integer) -- ^ "id"
+  , publicKeyKey :: !(Maybe Text) -- ^ "key"
+  , publicKeyKeyType :: !(Maybe Text) -- ^ "key_type"
+  , publicKeyReadOnly :: !(Maybe Bool) -- ^ "read_only"
+  , publicKeyTitle :: !(Maybe Text) -- ^ "title"
+  , publicKeyUrl :: !(Maybe Text) -- ^ "url"
+  , publicKeyUser :: !(Maybe User) -- ^ "user"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON PublicKey
+instance A.FromJSON PublicKey where
+  parseJSON = A.withObject "PublicKey" $ \o ->
+    PublicKey
+      <$> (o .:? "created_at")
+      <*> (o .:? "fingerprint")
+      <*> (o .:? "id")
+      <*> (o .:? "key")
+      <*> (o .:? "key_type")
+      <*> (o .:? "read_only")
+      <*> (o .:? "title")
+      <*> (o .:? "url")
+      <*> (o .:? "user")
+
+-- | ToJSON PublicKey
+instance A.ToJSON PublicKey where
+  toJSON PublicKey {..} =
+   _omitNulls
+      [ "created_at" .= publicKeyCreatedAt
+      , "fingerprint" .= publicKeyFingerprint
+      , "id" .= publicKeyId
+      , "key" .= publicKeyKey
+      , "key_type" .= publicKeyKeyType
+      , "read_only" .= publicKeyReadOnly
+      , "title" .= publicKeyTitle
+      , "url" .= publicKeyUrl
+      , "user" .= publicKeyUser
+      ]
+
+
+-- | Construct a value of type 'PublicKey' (by applying it's required fields, if any)
+mkPublicKey
+  :: PublicKey
+mkPublicKey =
+  PublicKey
+  { publicKeyCreatedAt = Nothing
+  , publicKeyFingerprint = Nothing
+  , publicKeyId = Nothing
+  , publicKeyKey = Nothing
+  , publicKeyKeyType = Nothing
+  , publicKeyReadOnly = Nothing
+  , publicKeyTitle = Nothing
+  , publicKeyUrl = Nothing
+  , publicKeyUser = Nothing
+  }
+
+-- ** PullRequest
+-- | PullRequest
+-- PullRequest represents a pull request
+data PullRequest = PullRequest
+  { pullRequestAllowMaintainerEdit :: !(Maybe Bool) -- ^ "allow_maintainer_edit"
+  , pullRequestAssignee :: !(Maybe User) -- ^ "assignee"
+  , pullRequestAssignees :: !(Maybe [User]) -- ^ "assignees"
+  , pullRequestBase :: !(Maybe PRBranchInfo) -- ^ "base"
+  , pullRequestBody :: !(Maybe Text) -- ^ "body"
+  , pullRequestClosedAt :: !(Maybe DateTime) -- ^ "closed_at"
+  , pullRequestComments :: !(Maybe Integer) -- ^ "comments"
+  , pullRequestCreatedAt :: !(Maybe DateTime) -- ^ "created_at"
+  , pullRequestDiffUrl :: !(Maybe Text) -- ^ "diff_url"
+  , pullRequestDueDate :: !(Maybe DateTime) -- ^ "due_date"
+  , pullRequestHead :: !(Maybe PRBranchInfo) -- ^ "head"
+  , pullRequestHtmlUrl :: !(Maybe Text) -- ^ "html_url"
+  , pullRequestId :: !(Maybe Integer) -- ^ "id"
+  , pullRequestIsLocked :: !(Maybe Bool) -- ^ "is_locked"
+  , pullRequestLabels :: !(Maybe [Label]) -- ^ "labels"
+  , pullRequestMergeBase :: !(Maybe Text) -- ^ "merge_base"
+  , pullRequestMergeCommitSha :: !(Maybe Text) -- ^ "merge_commit_sha"
+  , pullRequestMergeable :: !(Maybe Bool) -- ^ "mergeable"
+  , pullRequestMerged :: !(Maybe Bool) -- ^ "merged"
+  , pullRequestMergedAt :: !(Maybe DateTime) -- ^ "merged_at"
+  , pullRequestMergedBy :: !(Maybe User) -- ^ "merged_by"
+  , pullRequestMilestone :: !(Maybe Milestone) -- ^ "milestone"
+  , pullRequestNumber :: !(Maybe Integer) -- ^ "number"
+  , pullRequestPatchUrl :: !(Maybe Text) -- ^ "patch_url"
+  , pullRequestState :: !(Maybe Text) -- ^ "state" - StateType issue state type
+  , pullRequestTitle :: !(Maybe Text) -- ^ "title"
+  , pullRequestUpdatedAt :: !(Maybe DateTime) -- ^ "updated_at"
+  , pullRequestUrl :: !(Maybe Text) -- ^ "url"
+  , pullRequestUser :: !(Maybe User) -- ^ "user"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON PullRequest
+instance A.FromJSON PullRequest where
+  parseJSON = A.withObject "PullRequest" $ \o ->
+    PullRequest
+      <$> (o .:? "allow_maintainer_edit")
+      <*> (o .:? "assignee")
+      <*> (o .:? "assignees")
+      <*> (o .:? "base")
+      <*> (o .:? "body")
+      <*> (o .:? "closed_at")
+      <*> (o .:? "comments")
+      <*> (o .:? "created_at")
+      <*> (o .:? "diff_url")
+      <*> (o .:? "due_date")
+      <*> (o .:? "head")
+      <*> (o .:? "html_url")
+      <*> (o .:? "id")
+      <*> (o .:? "is_locked")
+      <*> (o .:? "labels")
+      <*> (o .:? "merge_base")
+      <*> (o .:? "merge_commit_sha")
+      <*> (o .:? "mergeable")
+      <*> (o .:? "merged")
+      <*> (o .:? "merged_at")
+      <*> (o .:? "merged_by")
+      <*> (o .:? "milestone")
+      <*> (o .:? "number")
+      <*> (o .:? "patch_url")
+      <*> (o .:? "state")
+      <*> (o .:? "title")
+      <*> (o .:? "updated_at")
+      <*> (o .:? "url")
+      <*> (o .:? "user")
+
+-- | ToJSON PullRequest
+instance A.ToJSON PullRequest where
+  toJSON PullRequest {..} =
+   _omitNulls
+      [ "allow_maintainer_edit" .= pullRequestAllowMaintainerEdit
+      , "assignee" .= pullRequestAssignee
+      , "assignees" .= pullRequestAssignees
+      , "base" .= pullRequestBase
+      , "body" .= pullRequestBody
+      , "closed_at" .= pullRequestClosedAt
+      , "comments" .= pullRequestComments
+      , "created_at" .= pullRequestCreatedAt
+      , "diff_url" .= pullRequestDiffUrl
+      , "due_date" .= pullRequestDueDate
+      , "head" .= pullRequestHead
+      , "html_url" .= pullRequestHtmlUrl
+      , "id" .= pullRequestId
+      , "is_locked" .= pullRequestIsLocked
+      , "labels" .= pullRequestLabels
+      , "merge_base" .= pullRequestMergeBase
+      , "merge_commit_sha" .= pullRequestMergeCommitSha
+      , "mergeable" .= pullRequestMergeable
+      , "merged" .= pullRequestMerged
+      , "merged_at" .= pullRequestMergedAt
+      , "merged_by" .= pullRequestMergedBy
+      , "milestone" .= pullRequestMilestone
+      , "number" .= pullRequestNumber
+      , "patch_url" .= pullRequestPatchUrl
+      , "state" .= pullRequestState
+      , "title" .= pullRequestTitle
+      , "updated_at" .= pullRequestUpdatedAt
+      , "url" .= pullRequestUrl
+      , "user" .= pullRequestUser
+      ]
+
+
+-- | Construct a value of type 'PullRequest' (by applying it's required fields, if any)
+mkPullRequest
+  :: PullRequest
+mkPullRequest =
+  PullRequest
+  { pullRequestAllowMaintainerEdit = Nothing
+  , pullRequestAssignee = Nothing
+  , pullRequestAssignees = Nothing
+  , pullRequestBase = Nothing
+  , pullRequestBody = Nothing
+  , pullRequestClosedAt = Nothing
+  , pullRequestComments = Nothing
+  , pullRequestCreatedAt = Nothing
+  , pullRequestDiffUrl = Nothing
+  , pullRequestDueDate = Nothing
+  , pullRequestHead = Nothing
+  , pullRequestHtmlUrl = Nothing
+  , pullRequestId = Nothing
+  , pullRequestIsLocked = Nothing
+  , pullRequestLabels = Nothing
+  , pullRequestMergeBase = Nothing
+  , pullRequestMergeCommitSha = Nothing
+  , pullRequestMergeable = Nothing
+  , pullRequestMerged = Nothing
+  , pullRequestMergedAt = Nothing
+  , pullRequestMergedBy = Nothing
+  , pullRequestMilestone = Nothing
+  , pullRequestNumber = Nothing
+  , pullRequestPatchUrl = Nothing
+  , pullRequestState = Nothing
+  , pullRequestTitle = Nothing
+  , pullRequestUpdatedAt = Nothing
+  , pullRequestUrl = Nothing
+  , pullRequestUser = Nothing
+  }
+
+-- ** PullRequestMeta
+-- | PullRequestMeta
+-- PullRequestMeta PR info if an issue is a PR
+data PullRequestMeta = PullRequestMeta
+  { pullRequestMetaMerged :: !(Maybe Bool) -- ^ "merged"
+  , pullRequestMetaMergedAt :: !(Maybe DateTime) -- ^ "merged_at"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON PullRequestMeta
+instance A.FromJSON PullRequestMeta where
+  parseJSON = A.withObject "PullRequestMeta" $ \o ->
+    PullRequestMeta
+      <$> (o .:? "merged")
+      <*> (o .:? "merged_at")
+
+-- | ToJSON PullRequestMeta
+instance A.ToJSON PullRequestMeta where
+  toJSON PullRequestMeta {..} =
+   _omitNulls
+      [ "merged" .= pullRequestMetaMerged
+      , "merged_at" .= pullRequestMetaMergedAt
+      ]
+
+
+-- | Construct a value of type 'PullRequestMeta' (by applying it's required fields, if any)
+mkPullRequestMeta
+  :: PullRequestMeta
+mkPullRequestMeta =
+  PullRequestMeta
+  { pullRequestMetaMerged = Nothing
+  , pullRequestMetaMergedAt = Nothing
+  }
+
+-- ** PullReview
+-- | PullReview
+-- PullReview represents a pull request review
+data PullReview = PullReview
+  { pullReviewBody :: !(Maybe Text) -- ^ "body"
+  , pullReviewCommentsCount :: !(Maybe Integer) -- ^ "comments_count"
+  , pullReviewCommitId :: !(Maybe Text) -- ^ "commit_id"
+  , pullReviewDismissed :: !(Maybe Bool) -- ^ "dismissed"
+  , pullReviewHtmlUrl :: !(Maybe Text) -- ^ "html_url"
+  , pullReviewId :: !(Maybe Integer) -- ^ "id"
+  , pullReviewOfficial :: !(Maybe Bool) -- ^ "official"
+  , pullReviewPullRequestUrl :: !(Maybe Text) -- ^ "pull_request_url"
+  , pullReviewStale :: !(Maybe Bool) -- ^ "stale"
+  , pullReviewState :: !(Maybe Text) -- ^ "state" - ReviewStateType review state type
+  , pullReviewSubmittedAt :: !(Maybe DateTime) -- ^ "submitted_at"
+  , pullReviewTeam :: !(Maybe Team) -- ^ "team"
+  , pullReviewUpdatedAt :: !(Maybe DateTime) -- ^ "updated_at"
+  , pullReviewUser :: !(Maybe User) -- ^ "user"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON PullReview
+instance A.FromJSON PullReview where
+  parseJSON = A.withObject "PullReview" $ \o ->
+    PullReview
+      <$> (o .:? "body")
+      <*> (o .:? "comments_count")
+      <*> (o .:? "commit_id")
+      <*> (o .:? "dismissed")
+      <*> (o .:? "html_url")
+      <*> (o .:? "id")
+      <*> (o .:? "official")
+      <*> (o .:? "pull_request_url")
+      <*> (o .:? "stale")
+      <*> (o .:? "state")
+      <*> (o .:? "submitted_at")
+      <*> (o .:? "team")
+      <*> (o .:? "updated_at")
+      <*> (o .:? "user")
+
+-- | ToJSON PullReview
+instance A.ToJSON PullReview where
+  toJSON PullReview {..} =
+   _omitNulls
+      [ "body" .= pullReviewBody
+      , "comments_count" .= pullReviewCommentsCount
+      , "commit_id" .= pullReviewCommitId
+      , "dismissed" .= pullReviewDismissed
+      , "html_url" .= pullReviewHtmlUrl
+      , "id" .= pullReviewId
+      , "official" .= pullReviewOfficial
+      , "pull_request_url" .= pullReviewPullRequestUrl
+      , "stale" .= pullReviewStale
+      , "state" .= pullReviewState
+      , "submitted_at" .= pullReviewSubmittedAt
+      , "team" .= pullReviewTeam
+      , "updated_at" .= pullReviewUpdatedAt
+      , "user" .= pullReviewUser
+      ]
+
+
+-- | Construct a value of type 'PullReview' (by applying it's required fields, if any)
+mkPullReview
+  :: PullReview
+mkPullReview =
+  PullReview
+  { pullReviewBody = Nothing
+  , pullReviewCommentsCount = Nothing
+  , pullReviewCommitId = Nothing
+  , pullReviewDismissed = Nothing
+  , pullReviewHtmlUrl = Nothing
+  , pullReviewId = Nothing
+  , pullReviewOfficial = Nothing
+  , pullReviewPullRequestUrl = Nothing
+  , pullReviewStale = Nothing
+  , pullReviewState = Nothing
+  , pullReviewSubmittedAt = Nothing
+  , pullReviewTeam = Nothing
+  , pullReviewUpdatedAt = Nothing
+  , pullReviewUser = Nothing
+  }
+
+-- ** PullReviewComment
+-- | PullReviewComment
+-- PullReviewComment represents a comment on a pull request review
+data PullReviewComment = PullReviewComment
+  { pullReviewCommentBody :: !(Maybe Text) -- ^ "body"
+  , pullReviewCommentCommitId :: !(Maybe Text) -- ^ "commit_id"
+  , pullReviewCommentCreatedAt :: !(Maybe DateTime) -- ^ "created_at"
+  , pullReviewCommentDiffHunk :: !(Maybe Text) -- ^ "diff_hunk"
+  , pullReviewCommentHtmlUrl :: !(Maybe Text) -- ^ "html_url"
+  , pullReviewCommentId :: !(Maybe Integer) -- ^ "id"
+  , pullReviewCommentOriginalCommitId :: !(Maybe Text) -- ^ "original_commit_id"
+  , pullReviewCommentOriginalPosition :: !(Maybe Int) -- ^ "original_position"
+  , pullReviewCommentPath :: !(Maybe Text) -- ^ "path"
+  , pullReviewCommentPosition :: !(Maybe Int) -- ^ "position"
+  , pullReviewCommentPullRequestReviewId :: !(Maybe Integer) -- ^ "pull_request_review_id"
+  , pullReviewCommentPullRequestUrl :: !(Maybe Text) -- ^ "pull_request_url"
+  , pullReviewCommentResolver :: !(Maybe User) -- ^ "resolver"
+  , pullReviewCommentUpdatedAt :: !(Maybe DateTime) -- ^ "updated_at"
+  , pullReviewCommentUser :: !(Maybe User) -- ^ "user"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON PullReviewComment
+instance A.FromJSON PullReviewComment where
+  parseJSON = A.withObject "PullReviewComment" $ \o ->
+    PullReviewComment
+      <$> (o .:? "body")
+      <*> (o .:? "commit_id")
+      <*> (o .:? "created_at")
+      <*> (o .:? "diff_hunk")
+      <*> (o .:? "html_url")
+      <*> (o .:? "id")
+      <*> (o .:? "original_commit_id")
+      <*> (o .:? "original_position")
+      <*> (o .:? "path")
+      <*> (o .:? "position")
+      <*> (o .:? "pull_request_review_id")
+      <*> (o .:? "pull_request_url")
+      <*> (o .:? "resolver")
+      <*> (o .:? "updated_at")
+      <*> (o .:? "user")
+
+-- | ToJSON PullReviewComment
+instance A.ToJSON PullReviewComment where
+  toJSON PullReviewComment {..} =
+   _omitNulls
+      [ "body" .= pullReviewCommentBody
+      , "commit_id" .= pullReviewCommentCommitId
+      , "created_at" .= pullReviewCommentCreatedAt
+      , "diff_hunk" .= pullReviewCommentDiffHunk
+      , "html_url" .= pullReviewCommentHtmlUrl
+      , "id" .= pullReviewCommentId
+      , "original_commit_id" .= pullReviewCommentOriginalCommitId
+      , "original_position" .= pullReviewCommentOriginalPosition
+      , "path" .= pullReviewCommentPath
+      , "position" .= pullReviewCommentPosition
+      , "pull_request_review_id" .= pullReviewCommentPullRequestReviewId
+      , "pull_request_url" .= pullReviewCommentPullRequestUrl
+      , "resolver" .= pullReviewCommentResolver
+      , "updated_at" .= pullReviewCommentUpdatedAt
+      , "user" .= pullReviewCommentUser
+      ]
+
+
+-- | Construct a value of type 'PullReviewComment' (by applying it's required fields, if any)
+mkPullReviewComment
+  :: PullReviewComment
+mkPullReviewComment =
+  PullReviewComment
+  { pullReviewCommentBody = Nothing
+  , pullReviewCommentCommitId = Nothing
+  , pullReviewCommentCreatedAt = Nothing
+  , pullReviewCommentDiffHunk = Nothing
+  , pullReviewCommentHtmlUrl = Nothing
+  , pullReviewCommentId = Nothing
+  , pullReviewCommentOriginalCommitId = Nothing
+  , pullReviewCommentOriginalPosition = Nothing
+  , pullReviewCommentPath = Nothing
+  , pullReviewCommentPosition = Nothing
+  , pullReviewCommentPullRequestReviewId = Nothing
+  , pullReviewCommentPullRequestUrl = Nothing
+  , pullReviewCommentResolver = Nothing
+  , pullReviewCommentUpdatedAt = Nothing
+  , pullReviewCommentUser = Nothing
+  }
+
+-- ** PullReviewRequestOptions
+-- | PullReviewRequestOptions
+-- PullReviewRequestOptions are options to add or remove pull review requests
+data PullReviewRequestOptions = PullReviewRequestOptions
+  { pullReviewRequestOptionsReviewers :: !(Maybe [Text]) -- ^ "reviewers"
+  , pullReviewRequestOptionsTeamReviewers :: !(Maybe [Text]) -- ^ "team_reviewers"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON PullReviewRequestOptions
+instance A.FromJSON PullReviewRequestOptions where
+  parseJSON = A.withObject "PullReviewRequestOptions" $ \o ->
+    PullReviewRequestOptions
+      <$> (o .:? "reviewers")
+      <*> (o .:? "team_reviewers")
+
+-- | ToJSON PullReviewRequestOptions
+instance A.ToJSON PullReviewRequestOptions where
+  toJSON PullReviewRequestOptions {..} =
+   _omitNulls
+      [ "reviewers" .= pullReviewRequestOptionsReviewers
+      , "team_reviewers" .= pullReviewRequestOptionsTeamReviewers
+      ]
+
+
+-- | Construct a value of type 'PullReviewRequestOptions' (by applying it's required fields, if any)
+mkPullReviewRequestOptions
+  :: PullReviewRequestOptions
+mkPullReviewRequestOptions =
+  PullReviewRequestOptions
+  { pullReviewRequestOptionsReviewers = Nothing
+  , pullReviewRequestOptionsTeamReviewers = Nothing
+  }
+
+-- ** PushMirror
+-- | PushMirror
+-- PushMirror represents information of a push mirror
+data PushMirror = PushMirror
+  { pushMirrorCreated :: !(Maybe Text) -- ^ "created"
+  , pushMirrorInterval :: !(Maybe Text) -- ^ "interval"
+  , pushMirrorLastError :: !(Maybe Text) -- ^ "last_error"
+  , pushMirrorLastUpdate :: !(Maybe Text) -- ^ "last_update"
+  , pushMirrorRemoteAddress :: !(Maybe Text) -- ^ "remote_address"
+  , pushMirrorRemoteName :: !(Maybe Text) -- ^ "remote_name"
+  , pushMirrorRepoName :: !(Maybe Text) -- ^ "repo_name"
+  , pushMirrorSyncOnCommit :: !(Maybe Bool) -- ^ "sync_on_commit"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON PushMirror
+instance A.FromJSON PushMirror where
+  parseJSON = A.withObject "PushMirror" $ \o ->
+    PushMirror
+      <$> (o .:? "created")
+      <*> (o .:? "interval")
+      <*> (o .:? "last_error")
+      <*> (o .:? "last_update")
+      <*> (o .:? "remote_address")
+      <*> (o .:? "remote_name")
+      <*> (o .:? "repo_name")
+      <*> (o .:? "sync_on_commit")
+
+-- | ToJSON PushMirror
+instance A.ToJSON PushMirror where
+  toJSON PushMirror {..} =
+   _omitNulls
+      [ "created" .= pushMirrorCreated
+      , "interval" .= pushMirrorInterval
+      , "last_error" .= pushMirrorLastError
+      , "last_update" .= pushMirrorLastUpdate
+      , "remote_address" .= pushMirrorRemoteAddress
+      , "remote_name" .= pushMirrorRemoteName
+      , "repo_name" .= pushMirrorRepoName
+      , "sync_on_commit" .= pushMirrorSyncOnCommit
+      ]
+
+
+-- | Construct a value of type 'PushMirror' (by applying it's required fields, if any)
+mkPushMirror
+  :: PushMirror
+mkPushMirror =
+  PushMirror
+  { pushMirrorCreated = Nothing
+  , pushMirrorInterval = Nothing
+  , pushMirrorLastError = Nothing
+  , pushMirrorLastUpdate = Nothing
+  , pushMirrorRemoteAddress = Nothing
+  , pushMirrorRemoteName = Nothing
+  , pushMirrorRepoName = Nothing
+  , pushMirrorSyncOnCommit = Nothing
+  }
+
+-- ** Reaction
+-- | Reaction
+-- Reaction contain one reaction
+data Reaction = Reaction
+  { reactionContent :: !(Maybe Text) -- ^ "content"
+  , reactionCreatedAt :: !(Maybe DateTime) -- ^ "created_at"
+  , reactionUser :: !(Maybe User) -- ^ "user"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Reaction
+instance A.FromJSON Reaction where
+  parseJSON = A.withObject "Reaction" $ \o ->
+    Reaction
+      <$> (o .:? "content")
+      <*> (o .:? "created_at")
+      <*> (o .:? "user")
+
+-- | ToJSON Reaction
+instance A.ToJSON Reaction where
+  toJSON Reaction {..} =
+   _omitNulls
+      [ "content" .= reactionContent
+      , "created_at" .= reactionCreatedAt
+      , "user" .= reactionUser
+      ]
+
+
+-- | Construct a value of type 'Reaction' (by applying it's required fields, if any)
+mkReaction
+  :: Reaction
+mkReaction =
+  Reaction
+  { reactionContent = Nothing
+  , reactionCreatedAt = Nothing
+  , reactionUser = Nothing
+  }
+
+-- ** Reference
+-- | Reference
+-- Reference represents a Git reference.
+-- 
+data Reference = Reference
+  { referenceObject :: !(Maybe GitObject) -- ^ "object"
+  , referenceRef :: !(Maybe Text) -- ^ "ref"
+  , referenceUrl :: !(Maybe Text) -- ^ "url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Reference
+instance A.FromJSON Reference where
+  parseJSON = A.withObject "Reference" $ \o ->
+    Reference
+      <$> (o .:? "object")
+      <*> (o .:? "ref")
+      <*> (o .:? "url")
+
+-- | ToJSON Reference
+instance A.ToJSON Reference where
+  toJSON Reference {..} =
+   _omitNulls
+      [ "object" .= referenceObject
+      , "ref" .= referenceRef
+      , "url" .= referenceUrl
+      ]
+
+
+-- | Construct a value of type 'Reference' (by applying it's required fields, if any)
+mkReference
+  :: Reference
+mkReference =
+  Reference
+  { referenceObject = Nothing
+  , referenceRef = Nothing
+  , referenceUrl = Nothing
+  }
+
+-- ** Release
+-- | Release
+-- Release represents a repository release
+data Release = Release
+  { releaseAssets :: !(Maybe [Attachment]) -- ^ "assets"
+  , releaseAuthor :: !(Maybe User) -- ^ "author"
+  , releaseBody :: !(Maybe Text) -- ^ "body"
+  , releaseCreatedAt :: !(Maybe DateTime) -- ^ "created_at"
+  , releaseDraft :: !(Maybe Bool) -- ^ "draft"
+  , releaseHtmlUrl :: !(Maybe Text) -- ^ "html_url"
+  , releaseId :: !(Maybe Integer) -- ^ "id"
+  , releaseName :: !(Maybe Text) -- ^ "name"
+  , releasePrerelease :: !(Maybe Bool) -- ^ "prerelease"
+  , releasePublishedAt :: !(Maybe DateTime) -- ^ "published_at"
+  , releaseTagName :: !(Maybe Text) -- ^ "tag_name"
+  , releaseTarballUrl :: !(Maybe Text) -- ^ "tarball_url"
+  , releaseTargetCommitish :: !(Maybe Text) -- ^ "target_commitish"
+  , releaseUrl :: !(Maybe Text) -- ^ "url"
+  , releaseZipballUrl :: !(Maybe Text) -- ^ "zipball_url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Release
+instance A.FromJSON Release where
+  parseJSON = A.withObject "Release" $ \o ->
+    Release
+      <$> (o .:? "assets")
+      <*> (o .:? "author")
+      <*> (o .:? "body")
+      <*> (o .:? "created_at")
+      <*> (o .:? "draft")
+      <*> (o .:? "html_url")
+      <*> (o .:? "id")
+      <*> (o .:? "name")
+      <*> (o .:? "prerelease")
+      <*> (o .:? "published_at")
+      <*> (o .:? "tag_name")
+      <*> (o .:? "tarball_url")
+      <*> (o .:? "target_commitish")
+      <*> (o .:? "url")
+      <*> (o .:? "zipball_url")
+
+-- | ToJSON Release
+instance A.ToJSON Release where
+  toJSON Release {..} =
+   _omitNulls
+      [ "assets" .= releaseAssets
+      , "author" .= releaseAuthor
+      , "body" .= releaseBody
+      , "created_at" .= releaseCreatedAt
+      , "draft" .= releaseDraft
+      , "html_url" .= releaseHtmlUrl
+      , "id" .= releaseId
+      , "name" .= releaseName
+      , "prerelease" .= releasePrerelease
+      , "published_at" .= releasePublishedAt
+      , "tag_name" .= releaseTagName
+      , "tarball_url" .= releaseTarballUrl
+      , "target_commitish" .= releaseTargetCommitish
+      , "url" .= releaseUrl
+      , "zipball_url" .= releaseZipballUrl
+      ]
+
+
+-- | Construct a value of type 'Release' (by applying it's required fields, if any)
+mkRelease
+  :: Release
+mkRelease =
+  Release
+  { releaseAssets = Nothing
+  , releaseAuthor = Nothing
+  , releaseBody = Nothing
+  , releaseCreatedAt = Nothing
+  , releaseDraft = Nothing
+  , releaseHtmlUrl = Nothing
+  , releaseId = Nothing
+  , releaseName = Nothing
+  , releasePrerelease = Nothing
+  , releasePublishedAt = Nothing
+  , releaseTagName = Nothing
+  , releaseTarballUrl = Nothing
+  , releaseTargetCommitish = Nothing
+  , releaseUrl = Nothing
+  , releaseZipballUrl = Nothing
+  }
+
+-- ** RepoCollaboratorPermission
+-- | RepoCollaboratorPermission
+-- RepoCollaboratorPermission to get repository permission for a collaborator
+data RepoCollaboratorPermission = RepoCollaboratorPermission
+  { repoCollaboratorPermissionPermission :: !(Maybe Text) -- ^ "permission"
+  , repoCollaboratorPermissionRoleName :: !(Maybe Text) -- ^ "role_name"
+  , repoCollaboratorPermissionUser :: !(Maybe User) -- ^ "user"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON RepoCollaboratorPermission
+instance A.FromJSON RepoCollaboratorPermission where
+  parseJSON = A.withObject "RepoCollaboratorPermission" $ \o ->
+    RepoCollaboratorPermission
+      <$> (o .:? "permission")
+      <*> (o .:? "role_name")
+      <*> (o .:? "user")
+
+-- | ToJSON RepoCollaboratorPermission
+instance A.ToJSON RepoCollaboratorPermission where
+  toJSON RepoCollaboratorPermission {..} =
+   _omitNulls
+      [ "permission" .= repoCollaboratorPermissionPermission
+      , "role_name" .= repoCollaboratorPermissionRoleName
+      , "user" .= repoCollaboratorPermissionUser
+      ]
+
+
+-- | Construct a value of type 'RepoCollaboratorPermission' (by applying it's required fields, if any)
+mkRepoCollaboratorPermission
+  :: RepoCollaboratorPermission
+mkRepoCollaboratorPermission =
+  RepoCollaboratorPermission
+  { repoCollaboratorPermissionPermission = Nothing
+  , repoCollaboratorPermissionRoleName = Nothing
+  , repoCollaboratorPermissionUser = Nothing
+  }
+
+-- ** RepoCommit
+-- | RepoCommit
+-- RepoCommit contains information of a commit in the context of a repository.
+-- 
+data RepoCommit = RepoCommit
+  { repoCommitAuthor :: !(Maybe CommitUser) -- ^ "author"
+  , repoCommitCommitter :: !(Maybe CommitUser) -- ^ "committer"
+  , repoCommitMessage :: !(Maybe Text) -- ^ "message"
+  , repoCommitTree :: !(Maybe CommitMeta) -- ^ "tree"
+  , repoCommitUrl :: !(Maybe Text) -- ^ "url"
+  , repoCommitVerification :: !(Maybe PayloadCommitVerification) -- ^ "verification"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON RepoCommit
+instance A.FromJSON RepoCommit where
+  parseJSON = A.withObject "RepoCommit" $ \o ->
+    RepoCommit
+      <$> (o .:? "author")
+      <*> (o .:? "committer")
+      <*> (o .:? "message")
+      <*> (o .:? "tree")
+      <*> (o .:? "url")
+      <*> (o .:? "verification")
+
+-- | ToJSON RepoCommit
+instance A.ToJSON RepoCommit where
+  toJSON RepoCommit {..} =
+   _omitNulls
+      [ "author" .= repoCommitAuthor
+      , "committer" .= repoCommitCommitter
+      , "message" .= repoCommitMessage
+      , "tree" .= repoCommitTree
+      , "url" .= repoCommitUrl
+      , "verification" .= repoCommitVerification
+      ]
+
+
+-- | Construct a value of type 'RepoCommit' (by applying it's required fields, if any)
+mkRepoCommit
+  :: RepoCommit
+mkRepoCommit =
+  RepoCommit
+  { repoCommitAuthor = Nothing
+  , repoCommitCommitter = Nothing
+  , repoCommitMessage = Nothing
+  , repoCommitTree = Nothing
+  , repoCommitUrl = Nothing
+  , repoCommitVerification = Nothing
+  }
+
+-- ** RepoTopicOptions
+-- | RepoTopicOptions
+-- RepoTopicOptions a collection of repo topic names
+data RepoTopicOptions = RepoTopicOptions
+  { repoTopicOptionsTopics :: !(Maybe [Text]) -- ^ "topics" - list of topic names
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON RepoTopicOptions
+instance A.FromJSON RepoTopicOptions where
+  parseJSON = A.withObject "RepoTopicOptions" $ \o ->
+    RepoTopicOptions
+      <$> (o .:? "topics")
+
+-- | ToJSON RepoTopicOptions
+instance A.ToJSON RepoTopicOptions where
+  toJSON RepoTopicOptions {..} =
+   _omitNulls
+      [ "topics" .= repoTopicOptionsTopics
+      ]
+
+
+-- | Construct a value of type 'RepoTopicOptions' (by applying it's required fields, if any)
+mkRepoTopicOptions
+  :: RepoTopicOptions
+mkRepoTopicOptions =
+  RepoTopicOptions
+  { repoTopicOptionsTopics = Nothing
+  }
+
+-- ** RepoTransfer
+-- | RepoTransfer
+-- RepoTransfer represents a pending repo transfer
+data RepoTransfer = RepoTransfer
+  { repoTransferDoer :: !(Maybe User) -- ^ "doer"
+  , repoTransferRecipient :: !(Maybe User) -- ^ "recipient"
+  , repoTransferTeams :: !(Maybe [Team]) -- ^ "teams"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON RepoTransfer
+instance A.FromJSON RepoTransfer where
+  parseJSON = A.withObject "RepoTransfer" $ \o ->
+    RepoTransfer
+      <$> (o .:? "doer")
+      <*> (o .:? "recipient")
+      <*> (o .:? "teams")
+
+-- | ToJSON RepoTransfer
+instance A.ToJSON RepoTransfer where
+  toJSON RepoTransfer {..} =
+   _omitNulls
+      [ "doer" .= repoTransferDoer
+      , "recipient" .= repoTransferRecipient
+      , "teams" .= repoTransferTeams
+      ]
+
+
+-- | Construct a value of type 'RepoTransfer' (by applying it's required fields, if any)
+mkRepoTransfer
+  :: RepoTransfer
+mkRepoTransfer =
+  RepoTransfer
+  { repoTransferDoer = Nothing
+  , repoTransferRecipient = Nothing
+  , repoTransferTeams = Nothing
+  }
+
+-- ** Repository
+-- | Repository
+-- Repository represents a repository
+data Repository = Repository
+  { repositoryAllowMergeCommits :: !(Maybe Bool) -- ^ "allow_merge_commits"
+  , repositoryAllowRebase :: !(Maybe Bool) -- ^ "allow_rebase"
+  , repositoryAllowRebaseExplicit :: !(Maybe Bool) -- ^ "allow_rebase_explicit"
+  , repositoryAllowRebaseUpdate :: !(Maybe Bool) -- ^ "allow_rebase_update"
+  , repositoryAllowSquashMerge :: !(Maybe Bool) -- ^ "allow_squash_merge"
+  , repositoryArchived :: !(Maybe Bool) -- ^ "archived"
+  , repositoryAvatarUrl :: !(Maybe Text) -- ^ "avatar_url"
+  , repositoryCloneUrl :: !(Maybe Text) -- ^ "clone_url"
+  , repositoryCreatedAt :: !(Maybe DateTime) -- ^ "created_at"
+  , repositoryDefaultAllowMaintainerEdit :: !(Maybe Bool) -- ^ "default_allow_maintainer_edit"
+  , repositoryDefaultBranch :: !(Maybe Text) -- ^ "default_branch"
+  , repositoryDefaultDeleteBranchAfterMerge :: !(Maybe Bool) -- ^ "default_delete_branch_after_merge"
+  , repositoryDefaultMergeStyle :: !(Maybe Text) -- ^ "default_merge_style"
+  , repositoryDescription :: !(Maybe Text) -- ^ "description"
+  , repositoryEmpty :: !(Maybe Bool) -- ^ "empty"
+  , repositoryExternalTracker :: !(Maybe ExternalTracker) -- ^ "external_tracker"
+  , repositoryExternalWiki :: !(Maybe ExternalWiki) -- ^ "external_wiki"
+  , repositoryFork :: !(Maybe Bool) -- ^ "fork"
+  , repositoryForksCount :: !(Maybe Integer) -- ^ "forks_count"
+  , repositoryFullName :: !(Maybe Text) -- ^ "full_name"
+  , repositoryHasIssues :: !(Maybe Bool) -- ^ "has_issues"
+  , repositoryHasProjects :: !(Maybe Bool) -- ^ "has_projects"
+  , repositoryHasPullRequests :: !(Maybe Bool) -- ^ "has_pull_requests"
+  , repositoryHasWiki :: !(Maybe Bool) -- ^ "has_wiki"
+  , repositoryHtmlUrl :: !(Maybe Text) -- ^ "html_url"
+  , repositoryId :: !(Maybe Integer) -- ^ "id"
+  , repositoryIgnoreWhitespaceConflicts :: !(Maybe Bool) -- ^ "ignore_whitespace_conflicts"
+  , repositoryInternal :: !(Maybe Bool) -- ^ "internal"
+  , repositoryInternalTracker :: !(Maybe InternalTracker) -- ^ "internal_tracker"
+  , repositoryLanguage :: !(Maybe Text) -- ^ "language"
+  , repositoryLanguagesUrl :: !(Maybe Text) -- ^ "languages_url"
+  , repositoryLink :: !(Maybe Text) -- ^ "link"
+  , repositoryMirror :: !(Maybe Bool) -- ^ "mirror"
+  , repositoryMirrorInterval :: !(Maybe Text) -- ^ "mirror_interval"
+  , repositoryMirrorUpdated :: !(Maybe DateTime) -- ^ "mirror_updated"
+  , repositoryName :: !(Maybe Text) -- ^ "name"
+  , repositoryOpenIssuesCount :: !(Maybe Integer) -- ^ "open_issues_count"
+  , repositoryOpenPrCounter :: !(Maybe Integer) -- ^ "open_pr_counter"
+  , repositoryOriginalUrl :: !(Maybe Text) -- ^ "original_url"
+  , repositoryOwner :: !(Maybe User) -- ^ "owner"
+  , repositoryParent :: !(Maybe Repository) -- ^ "parent"
+  , repositoryPermissions :: !(Maybe Permission) -- ^ "permissions"
+  , repositoryPrivate :: !(Maybe Bool) -- ^ "private"
+  , repositoryReleaseCounter :: !(Maybe Integer) -- ^ "release_counter"
+  , repositoryRepoTransfer :: !(Maybe RepoTransfer) -- ^ "repo_transfer"
+  , repositorySize :: !(Maybe Integer) -- ^ "size"
+  , repositorySshUrl :: !(Maybe Text) -- ^ "ssh_url"
+  , repositoryStarsCount :: !(Maybe Integer) -- ^ "stars_count"
+  , repositoryTemplate :: !(Maybe Bool) -- ^ "template"
+  , repositoryUpdatedAt :: !(Maybe DateTime) -- ^ "updated_at"
+  , repositoryWatchersCount :: !(Maybe Integer) -- ^ "watchers_count"
+  , repositoryWebsite :: !(Maybe Text) -- ^ "website"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Repository
+instance A.FromJSON Repository where
+  parseJSON = A.withObject "Repository" $ \o ->
+    Repository
+      <$> (o .:? "allow_merge_commits")
+      <*> (o .:? "allow_rebase")
+      <*> (o .:? "allow_rebase_explicit")
+      <*> (o .:? "allow_rebase_update")
+      <*> (o .:? "allow_squash_merge")
+      <*> (o .:? "archived")
+      <*> (o .:? "avatar_url")
+      <*> (o .:? "clone_url")
+      <*> (o .:? "created_at")
+      <*> (o .:? "default_allow_maintainer_edit")
+      <*> (o .:? "default_branch")
+      <*> (o .:? "default_delete_branch_after_merge")
+      <*> (o .:? "default_merge_style")
+      <*> (o .:? "description")
+      <*> (o .:? "empty")
+      <*> (o .:? "external_tracker")
+      <*> (o .:? "external_wiki")
+      <*> (o .:? "fork")
+      <*> (o .:? "forks_count")
+      <*> (o .:? "full_name")
+      <*> (o .:? "has_issues")
+      <*> (o .:? "has_projects")
+      <*> (o .:? "has_pull_requests")
+      <*> (o .:? "has_wiki")
+      <*> (o .:? "html_url")
+      <*> (o .:? "id")
+      <*> (o .:? "ignore_whitespace_conflicts")
+      <*> (o .:? "internal")
+      <*> (o .:? "internal_tracker")
+      <*> (o .:? "language")
+      <*> (o .:? "languages_url")
+      <*> (o .:? "link")
+      <*> (o .:? "mirror")
+      <*> (o .:? "mirror_interval")
+      <*> (o .:? "mirror_updated")
+      <*> (o .:? "name")
+      <*> (o .:? "open_issues_count")
+      <*> (o .:? "open_pr_counter")
+      <*> (o .:? "original_url")
+      <*> (o .:? "owner")
+      <*> (o .:? "parent")
+      <*> (o .:? "permissions")
+      <*> (o .:? "private")
+      <*> (o .:? "release_counter")
+      <*> (o .:? "repo_transfer")
+      <*> (o .:? "size")
+      <*> (o .:? "ssh_url")
+      <*> (o .:? "stars_count")
+      <*> (o .:? "template")
+      <*> (o .:? "updated_at")
+      <*> (o .:? "watchers_count")
+      <*> (o .:? "website")
+
+-- | ToJSON Repository
+instance A.ToJSON Repository where
+  toJSON Repository {..} =
+   _omitNulls
+      [ "allow_merge_commits" .= repositoryAllowMergeCommits
+      , "allow_rebase" .= repositoryAllowRebase
+      , "allow_rebase_explicit" .= repositoryAllowRebaseExplicit
+      , "allow_rebase_update" .= repositoryAllowRebaseUpdate
+      , "allow_squash_merge" .= repositoryAllowSquashMerge
+      , "archived" .= repositoryArchived
+      , "avatar_url" .= repositoryAvatarUrl
+      , "clone_url" .= repositoryCloneUrl
+      , "created_at" .= repositoryCreatedAt
+      , "default_allow_maintainer_edit" .= repositoryDefaultAllowMaintainerEdit
+      , "default_branch" .= repositoryDefaultBranch
+      , "default_delete_branch_after_merge" .= repositoryDefaultDeleteBranchAfterMerge
+      , "default_merge_style" .= repositoryDefaultMergeStyle
+      , "description" .= repositoryDescription
+      , "empty" .= repositoryEmpty
+      , "external_tracker" .= repositoryExternalTracker
+      , "external_wiki" .= repositoryExternalWiki
+      , "fork" .= repositoryFork
+      , "forks_count" .= repositoryForksCount
+      , "full_name" .= repositoryFullName
+      , "has_issues" .= repositoryHasIssues
+      , "has_projects" .= repositoryHasProjects
+      , "has_pull_requests" .= repositoryHasPullRequests
+      , "has_wiki" .= repositoryHasWiki
+      , "html_url" .= repositoryHtmlUrl
+      , "id" .= repositoryId
+      , "ignore_whitespace_conflicts" .= repositoryIgnoreWhitespaceConflicts
+      , "internal" .= repositoryInternal
+      , "internal_tracker" .= repositoryInternalTracker
+      , "language" .= repositoryLanguage
+      , "languages_url" .= repositoryLanguagesUrl
+      , "link" .= repositoryLink
+      , "mirror" .= repositoryMirror
+      , "mirror_interval" .= repositoryMirrorInterval
+      , "mirror_updated" .= repositoryMirrorUpdated
+      , "name" .= repositoryName
+      , "open_issues_count" .= repositoryOpenIssuesCount
+      , "open_pr_counter" .= repositoryOpenPrCounter
+      , "original_url" .= repositoryOriginalUrl
+      , "owner" .= repositoryOwner
+      , "parent" .= repositoryParent
+      , "permissions" .= repositoryPermissions
+      , "private" .= repositoryPrivate
+      , "release_counter" .= repositoryReleaseCounter
+      , "repo_transfer" .= repositoryRepoTransfer
+      , "size" .= repositorySize
+      , "ssh_url" .= repositorySshUrl
+      , "stars_count" .= repositoryStarsCount
+      , "template" .= repositoryTemplate
+      , "updated_at" .= repositoryUpdatedAt
+      , "watchers_count" .= repositoryWatchersCount
+      , "website" .= repositoryWebsite
+      ]
+
+
+-- | Construct a value of type 'Repository' (by applying it's required fields, if any)
+mkRepository
+  :: Repository
+mkRepository =
+  Repository
+  { repositoryAllowMergeCommits = Nothing
+  , repositoryAllowRebase = Nothing
+  , repositoryAllowRebaseExplicit = Nothing
+  , repositoryAllowRebaseUpdate = Nothing
+  , repositoryAllowSquashMerge = Nothing
+  , repositoryArchived = Nothing
+  , repositoryAvatarUrl = Nothing
+  , repositoryCloneUrl = Nothing
+  , repositoryCreatedAt = Nothing
+  , repositoryDefaultAllowMaintainerEdit = Nothing
+  , repositoryDefaultBranch = Nothing
+  , repositoryDefaultDeleteBranchAfterMerge = Nothing
+  , repositoryDefaultMergeStyle = Nothing
+  , repositoryDescription = Nothing
+  , repositoryEmpty = Nothing
+  , repositoryExternalTracker = Nothing
+  , repositoryExternalWiki = Nothing
+  , repositoryFork = Nothing
+  , repositoryForksCount = Nothing
+  , repositoryFullName = Nothing
+  , repositoryHasIssues = Nothing
+  , repositoryHasProjects = Nothing
+  , repositoryHasPullRequests = Nothing
+  , repositoryHasWiki = Nothing
+  , repositoryHtmlUrl = Nothing
+  , repositoryId = Nothing
+  , repositoryIgnoreWhitespaceConflicts = Nothing
+  , repositoryInternal = Nothing
+  , repositoryInternalTracker = Nothing
+  , repositoryLanguage = Nothing
+  , repositoryLanguagesUrl = Nothing
+  , repositoryLink = Nothing
+  , repositoryMirror = Nothing
+  , repositoryMirrorInterval = Nothing
+  , repositoryMirrorUpdated = Nothing
+  , repositoryName = Nothing
+  , repositoryOpenIssuesCount = Nothing
+  , repositoryOpenPrCounter = Nothing
+  , repositoryOriginalUrl = Nothing
+  , repositoryOwner = Nothing
+  , repositoryParent = Nothing
+  , repositoryPermissions = Nothing
+  , repositoryPrivate = Nothing
+  , repositoryReleaseCounter = Nothing
+  , repositoryRepoTransfer = Nothing
+  , repositorySize = Nothing
+  , repositorySshUrl = Nothing
+  , repositoryStarsCount = Nothing
+  , repositoryTemplate = Nothing
+  , repositoryUpdatedAt = Nothing
+  , repositoryWatchersCount = Nothing
+  , repositoryWebsite = Nothing
+  }
+
+-- ** RepositoryMeta
+-- | RepositoryMeta
+-- RepositoryMeta basic repository information
+data RepositoryMeta = RepositoryMeta
+  { repositoryMetaFullName :: !(Maybe Text) -- ^ "full_name"
+  , repositoryMetaId :: !(Maybe Integer) -- ^ "id"
+  , repositoryMetaName :: !(Maybe Text) -- ^ "name"
+  , repositoryMetaOwner :: !(Maybe Text) -- ^ "owner"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON RepositoryMeta
+instance A.FromJSON RepositoryMeta where
+  parseJSON = A.withObject "RepositoryMeta" $ \o ->
+    RepositoryMeta
+      <$> (o .:? "full_name")
+      <*> (o .:? "id")
+      <*> (o .:? "name")
+      <*> (o .:? "owner")
+
+-- | ToJSON RepositoryMeta
+instance A.ToJSON RepositoryMeta where
+  toJSON RepositoryMeta {..} =
+   _omitNulls
+      [ "full_name" .= repositoryMetaFullName
+      , "id" .= repositoryMetaId
+      , "name" .= repositoryMetaName
+      , "owner" .= repositoryMetaOwner
+      ]
+
+
+-- | Construct a value of type 'RepositoryMeta' (by applying it's required fields, if any)
+mkRepositoryMeta
+  :: RepositoryMeta
+mkRepositoryMeta =
+  RepositoryMeta
+  { repositoryMetaFullName = Nothing
+  , repositoryMetaId = Nothing
+  , repositoryMetaName = Nothing
+  , repositoryMetaOwner = Nothing
+  }
+
+-- ** SearchResults
+-- | SearchResults
+-- SearchResults results of a successful search
+data SearchResults = SearchResults
+  { searchResultsData :: !(Maybe [Repository]) -- ^ "data"
+  , searchResultsOk :: !(Maybe Bool) -- ^ "ok"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON SearchResults
+instance A.FromJSON SearchResults where
+  parseJSON = A.withObject "SearchResults" $ \o ->
+    SearchResults
+      <$> (o .:? "data")
+      <*> (o .:? "ok")
+
+-- | ToJSON SearchResults
+instance A.ToJSON SearchResults where
+  toJSON SearchResults {..} =
+   _omitNulls
+      [ "data" .= searchResultsData
+      , "ok" .= searchResultsOk
+      ]
+
+
+-- | Construct a value of type 'SearchResults' (by applying it's required fields, if any)
+mkSearchResults
+  :: SearchResults
+mkSearchResults =
+  SearchResults
+  { searchResultsData = Nothing
+  , searchResultsOk = Nothing
+  }
+
+-- ** ServerVersion
+-- | ServerVersion
+-- ServerVersion wraps the version of the server
+data ServerVersion = ServerVersion
+  { serverVersionVersion :: !(Maybe Text) -- ^ "version"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON ServerVersion
+instance A.FromJSON ServerVersion where
+  parseJSON = A.withObject "ServerVersion" $ \o ->
+    ServerVersion
+      <$> (o .:? "version")
+
+-- | ToJSON ServerVersion
+instance A.ToJSON ServerVersion where
+  toJSON ServerVersion {..} =
+   _omitNulls
+      [ "version" .= serverVersionVersion
+      ]
+
+
+-- | Construct a value of type 'ServerVersion' (by applying it's required fields, if any)
+mkServerVersion
+  :: ServerVersion
+mkServerVersion =
+  ServerVersion
+  { serverVersionVersion = Nothing
+  }
+
+-- ** StopWatch
+-- | StopWatch
+-- StopWatch represent a running stopwatch
+data StopWatch = StopWatch
+  { stopWatchCreated :: !(Maybe DateTime) -- ^ "created"
+  , stopWatchDuration :: !(Maybe Text) -- ^ "duration"
+  , stopWatchIssueIndex :: !(Maybe Integer) -- ^ "issue_index"
+  , stopWatchIssueTitle :: !(Maybe Text) -- ^ "issue_title"
+  , stopWatchRepoName :: !(Maybe Text) -- ^ "repo_name"
+  , stopWatchRepoOwnerName :: !(Maybe Text) -- ^ "repo_owner_name"
+  , stopWatchSeconds :: !(Maybe Integer) -- ^ "seconds"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON StopWatch
+instance A.FromJSON StopWatch where
+  parseJSON = A.withObject "StopWatch" $ \o ->
+    StopWatch
+      <$> (o .:? "created")
+      <*> (o .:? "duration")
+      <*> (o .:? "issue_index")
+      <*> (o .:? "issue_title")
+      <*> (o .:? "repo_name")
+      <*> (o .:? "repo_owner_name")
+      <*> (o .:? "seconds")
+
+-- | ToJSON StopWatch
+instance A.ToJSON StopWatch where
+  toJSON StopWatch {..} =
+   _omitNulls
+      [ "created" .= stopWatchCreated
+      , "duration" .= stopWatchDuration
+      , "issue_index" .= stopWatchIssueIndex
+      , "issue_title" .= stopWatchIssueTitle
+      , "repo_name" .= stopWatchRepoName
+      , "repo_owner_name" .= stopWatchRepoOwnerName
+      , "seconds" .= stopWatchSeconds
+      ]
+
+
+-- | Construct a value of type 'StopWatch' (by applying it's required fields, if any)
+mkStopWatch
+  :: StopWatch
+mkStopWatch =
+  StopWatch
+  { stopWatchCreated = Nothing
+  , stopWatchDuration = Nothing
+  , stopWatchIssueIndex = Nothing
+  , stopWatchIssueTitle = Nothing
+  , stopWatchRepoName = Nothing
+  , stopWatchRepoOwnerName = Nothing
+  , stopWatchSeconds = Nothing
+  }
+
+-- ** SubmitPullReviewOptions
+-- | SubmitPullReviewOptions
+-- SubmitPullReviewOptions are options to submit a pending pull review
+data SubmitPullReviewOptions = SubmitPullReviewOptions
+  { submitPullReviewOptionsBody :: !(Maybe Text) -- ^ "body"
+  , submitPullReviewOptionsEvent :: !(Maybe Text) -- ^ "event" - ReviewStateType review state type
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON SubmitPullReviewOptions
+instance A.FromJSON SubmitPullReviewOptions where
+  parseJSON = A.withObject "SubmitPullReviewOptions" $ \o ->
+    SubmitPullReviewOptions
+      <$> (o .:? "body")
+      <*> (o .:? "event")
+
+-- | ToJSON SubmitPullReviewOptions
+instance A.ToJSON SubmitPullReviewOptions where
+  toJSON SubmitPullReviewOptions {..} =
+   _omitNulls
+      [ "body" .= submitPullReviewOptionsBody
+      , "event" .= submitPullReviewOptionsEvent
+      ]
+
+
+-- | Construct a value of type 'SubmitPullReviewOptions' (by applying it's required fields, if any)
+mkSubmitPullReviewOptions
+  :: SubmitPullReviewOptions
+mkSubmitPullReviewOptions =
+  SubmitPullReviewOptions
+  { submitPullReviewOptionsBody = Nothing
+  , submitPullReviewOptionsEvent = Nothing
+  }
+
+-- ** Tag
+-- | Tag
+-- Tag represents a repository tag
+data Tag = Tag
+  { tagCommit :: !(Maybe CommitMeta) -- ^ "commit"
+  , tagId :: !(Maybe Text) -- ^ "id"
+  , tagMessage :: !(Maybe Text) -- ^ "message"
+  , tagName :: !(Maybe Text) -- ^ "name"
+  , tagTarballUrl :: !(Maybe Text) -- ^ "tarball_url"
+  , tagZipballUrl :: !(Maybe Text) -- ^ "zipball_url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Tag
+instance A.FromJSON Tag where
+  parseJSON = A.withObject "Tag" $ \o ->
+    Tag
+      <$> (o .:? "commit")
+      <*> (o .:? "id")
+      <*> (o .:? "message")
+      <*> (o .:? "name")
+      <*> (o .:? "tarball_url")
+      <*> (o .:? "zipball_url")
+
+-- | ToJSON Tag
+instance A.ToJSON Tag where
+  toJSON Tag {..} =
+   _omitNulls
+      [ "commit" .= tagCommit
+      , "id" .= tagId
+      , "message" .= tagMessage
+      , "name" .= tagName
+      , "tarball_url" .= tagTarballUrl
+      , "zipball_url" .= tagZipballUrl
+      ]
+
+
+-- | Construct a value of type 'Tag' (by applying it's required fields, if any)
+mkTag
+  :: Tag
+mkTag =
+  Tag
+  { tagCommit = Nothing
+  , tagId = Nothing
+  , tagMessage = Nothing
+  , tagName = Nothing
+  , tagTarballUrl = Nothing
+  , tagZipballUrl = Nothing
+  }
+
+-- ** Team
+-- | Team
+-- Team represents a team in an organization
+data Team = Team
+  { teamCanCreateOrgRepo :: !(Maybe Bool) -- ^ "can_create_org_repo"
+  , teamDescription :: !(Maybe Text) -- ^ "description"
+  , teamId :: !(Maybe Integer) -- ^ "id"
+  , teamIncludesAllRepositories :: !(Maybe Bool) -- ^ "includes_all_repositories"
+  , teamName :: !(Maybe Text) -- ^ "name"
+  , teamOrganization :: !(Maybe Organization) -- ^ "organization"
+  , teamPermission :: !(Maybe E'Permission2) -- ^ "permission"
+  , teamUnits :: !(Maybe [Text]) -- ^ "units"
+  , teamUnitsMap :: !(Maybe (Map.Map String Text)) -- ^ "units_map"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON Team
+instance A.FromJSON Team where
+  parseJSON = A.withObject "Team" $ \o ->
+    Team
+      <$> (o .:? "can_create_org_repo")
+      <*> (o .:? "description")
+      <*> (o .:? "id")
+      <*> (o .:? "includes_all_repositories")
+      <*> (o .:? "name")
+      <*> (o .:? "organization")
+      <*> (o .:? "permission")
+      <*> (o .:? "units")
+      <*> (o .:? "units_map")
+
+-- | ToJSON Team
+instance A.ToJSON Team where
+  toJSON Team {..} =
+   _omitNulls
+      [ "can_create_org_repo" .= teamCanCreateOrgRepo
+      , "description" .= teamDescription
+      , "id" .= teamId
+      , "includes_all_repositories" .= teamIncludesAllRepositories
+      , "name" .= teamName
+      , "organization" .= teamOrganization
+      , "permission" .= teamPermission
+      , "units" .= teamUnits
+      , "units_map" .= teamUnitsMap
+      ]
+
+
+-- | Construct a value of type 'Team' (by applying it's required fields, if any)
+mkTeam
+  :: Team
+mkTeam =
+  Team
+  { teamCanCreateOrgRepo = Nothing
+  , teamDescription = Nothing
+  , teamId = Nothing
+  , teamIncludesAllRepositories = Nothing
+  , teamName = Nothing
+  , teamOrganization = Nothing
+  , teamPermission = Nothing
+  , teamUnits = Nothing
+  , teamUnitsMap = Nothing
+  }
+
+-- ** TeamSearch200Response
+-- | TeamSearch200Response
+data TeamSearch200Response = TeamSearch200Response
+  { teamSearch200ResponseData :: !(Maybe [Team]) -- ^ "data"
+  , teamSearch200ResponseOk :: !(Maybe Bool) -- ^ "ok"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON TeamSearch200Response
+instance A.FromJSON TeamSearch200Response where
+  parseJSON = A.withObject "TeamSearch200Response" $ \o ->
+    TeamSearch200Response
+      <$> (o .:? "data")
+      <*> (o .:? "ok")
+
+-- | ToJSON TeamSearch200Response
+instance A.ToJSON TeamSearch200Response where
+  toJSON TeamSearch200Response {..} =
+   _omitNulls
+      [ "data" .= teamSearch200ResponseData
+      , "ok" .= teamSearch200ResponseOk
+      ]
+
+
+-- | Construct a value of type 'TeamSearch200Response' (by applying it's required fields, if any)
+mkTeamSearch200Response
+  :: TeamSearch200Response
+mkTeamSearch200Response =
+  TeamSearch200Response
+  { teamSearch200ResponseData = Nothing
+  , teamSearch200ResponseOk = Nothing
+  }
+
+-- ** TimelineComment
+-- | TimelineComment
+-- TimelineComment represents a timeline comment (comment of any type) on a commit or issue
+data TimelineComment = TimelineComment
+  { timelineCommentAssignee :: !(Maybe User) -- ^ "assignee"
+  , timelineCommentAssigneeTeam :: !(Maybe Team) -- ^ "assignee_team"
+  , timelineCommentBody :: !(Maybe Text) -- ^ "body"
+  , timelineCommentCreatedAt :: !(Maybe DateTime) -- ^ "created_at"
+  , timelineCommentDependentIssue :: !(Maybe Issue) -- ^ "dependent_issue"
+  , timelineCommentHtmlUrl :: !(Maybe Text) -- ^ "html_url"
+  , timelineCommentId :: !(Maybe Integer) -- ^ "id"
+  , timelineCommentIssueUrl :: !(Maybe Text) -- ^ "issue_url"
+  , timelineCommentLabel :: !(Maybe Label) -- ^ "label"
+  , timelineCommentMilestone :: !(Maybe Milestone) -- ^ "milestone"
+  , timelineCommentNewRef :: !(Maybe Text) -- ^ "new_ref"
+  , timelineCommentNewTitle :: !(Maybe Text) -- ^ "new_title"
+  , timelineCommentOldMilestone :: !(Maybe Milestone) -- ^ "old_milestone"
+  , timelineCommentOldProjectId :: !(Maybe Integer) -- ^ "old_project_id"
+  , timelineCommentOldRef :: !(Maybe Text) -- ^ "old_ref"
+  , timelineCommentOldTitle :: !(Maybe Text) -- ^ "old_title"
+  , timelineCommentProjectId :: !(Maybe Integer) -- ^ "project_id"
+  , timelineCommentPullRequestUrl :: !(Maybe Text) -- ^ "pull_request_url"
+  , timelineCommentRefAction :: !(Maybe Text) -- ^ "ref_action"
+  , timelineCommentRefComment :: !(Maybe Comment) -- ^ "ref_comment"
+  , timelineCommentRefCommitSha :: !(Maybe Text) -- ^ "ref_commit_sha" - commit SHA where issue/PR was referenced
+  , timelineCommentRefIssue :: !(Maybe Issue) -- ^ "ref_issue"
+  , timelineCommentRemovedAssignee :: !(Maybe Bool) -- ^ "removed_assignee" - whether the assignees were removed or added
+  , timelineCommentResolveDoer :: !(Maybe User) -- ^ "resolve_doer"
+  , timelineCommentReviewId :: !(Maybe Integer) -- ^ "review_id"
+  , timelineCommentTrackedTime :: !(Maybe TrackedTime) -- ^ "tracked_time"
+  , timelineCommentType :: !(Maybe Text) -- ^ "type"
+  , timelineCommentUpdatedAt :: !(Maybe DateTime) -- ^ "updated_at"
+  , timelineCommentUser :: !(Maybe User) -- ^ "user"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON TimelineComment
+instance A.FromJSON TimelineComment where
+  parseJSON = A.withObject "TimelineComment" $ \o ->
+    TimelineComment
+      <$> (o .:? "assignee")
+      <*> (o .:? "assignee_team")
+      <*> (o .:? "body")
+      <*> (o .:? "created_at")
+      <*> (o .:? "dependent_issue")
+      <*> (o .:? "html_url")
+      <*> (o .:? "id")
+      <*> (o .:? "issue_url")
+      <*> (o .:? "label")
+      <*> (o .:? "milestone")
+      <*> (o .:? "new_ref")
+      <*> (o .:? "new_title")
+      <*> (o .:? "old_milestone")
+      <*> (o .:? "old_project_id")
+      <*> (o .:? "old_ref")
+      <*> (o .:? "old_title")
+      <*> (o .:? "project_id")
+      <*> (o .:? "pull_request_url")
+      <*> (o .:? "ref_action")
+      <*> (o .:? "ref_comment")
+      <*> (o .:? "ref_commit_sha")
+      <*> (o .:? "ref_issue")
+      <*> (o .:? "removed_assignee")
+      <*> (o .:? "resolve_doer")
+      <*> (o .:? "review_id")
+      <*> (o .:? "tracked_time")
+      <*> (o .:? "type")
+      <*> (o .:? "updated_at")
+      <*> (o .:? "user")
+
+-- | ToJSON TimelineComment
+instance A.ToJSON TimelineComment where
+  toJSON TimelineComment {..} =
+   _omitNulls
+      [ "assignee" .= timelineCommentAssignee
+      , "assignee_team" .= timelineCommentAssigneeTeam
+      , "body" .= timelineCommentBody
+      , "created_at" .= timelineCommentCreatedAt
+      , "dependent_issue" .= timelineCommentDependentIssue
+      , "html_url" .= timelineCommentHtmlUrl
+      , "id" .= timelineCommentId
+      , "issue_url" .= timelineCommentIssueUrl
+      , "label" .= timelineCommentLabel
+      , "milestone" .= timelineCommentMilestone
+      , "new_ref" .= timelineCommentNewRef
+      , "new_title" .= timelineCommentNewTitle
+      , "old_milestone" .= timelineCommentOldMilestone
+      , "old_project_id" .= timelineCommentOldProjectId
+      , "old_ref" .= timelineCommentOldRef
+      , "old_title" .= timelineCommentOldTitle
+      , "project_id" .= timelineCommentProjectId
+      , "pull_request_url" .= timelineCommentPullRequestUrl
+      , "ref_action" .= timelineCommentRefAction
+      , "ref_comment" .= timelineCommentRefComment
+      , "ref_commit_sha" .= timelineCommentRefCommitSha
+      , "ref_issue" .= timelineCommentRefIssue
+      , "removed_assignee" .= timelineCommentRemovedAssignee
+      , "resolve_doer" .= timelineCommentResolveDoer
+      , "review_id" .= timelineCommentReviewId
+      , "tracked_time" .= timelineCommentTrackedTime
+      , "type" .= timelineCommentType
+      , "updated_at" .= timelineCommentUpdatedAt
+      , "user" .= timelineCommentUser
+      ]
+
+
+-- | Construct a value of type 'TimelineComment' (by applying it's required fields, if any)
+mkTimelineComment
+  :: TimelineComment
+mkTimelineComment =
+  TimelineComment
+  { timelineCommentAssignee = Nothing
+  , timelineCommentAssigneeTeam = Nothing
+  , timelineCommentBody = Nothing
+  , timelineCommentCreatedAt = Nothing
+  , timelineCommentDependentIssue = Nothing
+  , timelineCommentHtmlUrl = Nothing
+  , timelineCommentId = Nothing
+  , timelineCommentIssueUrl = Nothing
+  , timelineCommentLabel = Nothing
+  , timelineCommentMilestone = Nothing
+  , timelineCommentNewRef = Nothing
+  , timelineCommentNewTitle = Nothing
+  , timelineCommentOldMilestone = Nothing
+  , timelineCommentOldProjectId = Nothing
+  , timelineCommentOldRef = Nothing
+  , timelineCommentOldTitle = Nothing
+  , timelineCommentProjectId = Nothing
+  , timelineCommentPullRequestUrl = Nothing
+  , timelineCommentRefAction = Nothing
+  , timelineCommentRefComment = Nothing
+  , timelineCommentRefCommitSha = Nothing
+  , timelineCommentRefIssue = Nothing
+  , timelineCommentRemovedAssignee = Nothing
+  , timelineCommentResolveDoer = Nothing
+  , timelineCommentReviewId = Nothing
+  , timelineCommentTrackedTime = Nothing
+  , timelineCommentType = Nothing
+  , timelineCommentUpdatedAt = Nothing
+  , timelineCommentUser = Nothing
+  }
+
+-- ** TopicName
+-- | TopicName
+-- TopicName a list of repo topic names
+data TopicName = TopicName
+  { topicNameTopics :: !(Maybe [Text]) -- ^ "topics"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON TopicName
+instance A.FromJSON TopicName where
+  parseJSON = A.withObject "TopicName" $ \o ->
+    TopicName
+      <$> (o .:? "topics")
+
+-- | ToJSON TopicName
+instance A.ToJSON TopicName where
+  toJSON TopicName {..} =
+   _omitNulls
+      [ "topics" .= topicNameTopics
+      ]
+
+
+-- | Construct a value of type 'TopicName' (by applying it's required fields, if any)
+mkTopicName
+  :: TopicName
+mkTopicName =
+  TopicName
+  { topicNameTopics = Nothing
+  }
+
+-- ** TopicResponse
+-- | TopicResponse
+-- TopicResponse for returning topics
+data TopicResponse = TopicResponse
+  { topicResponseCreated :: !(Maybe DateTime) -- ^ "created"
+  , topicResponseId :: !(Maybe Integer) -- ^ "id"
+  , topicResponseRepoCount :: !(Maybe Integer) -- ^ "repo_count"
+  , topicResponseTopicName :: !(Maybe Text) -- ^ "topic_name"
+  , topicResponseUpdated :: !(Maybe DateTime) -- ^ "updated"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON TopicResponse
+instance A.FromJSON TopicResponse where
+  parseJSON = A.withObject "TopicResponse" $ \o ->
+    TopicResponse
+      <$> (o .:? "created")
+      <*> (o .:? "id")
+      <*> (o .:? "repo_count")
+      <*> (o .:? "topic_name")
+      <*> (o .:? "updated")
+
+-- | ToJSON TopicResponse
+instance A.ToJSON TopicResponse where
+  toJSON TopicResponse {..} =
+   _omitNulls
+      [ "created" .= topicResponseCreated
+      , "id" .= topicResponseId
+      , "repo_count" .= topicResponseRepoCount
+      , "topic_name" .= topicResponseTopicName
+      , "updated" .= topicResponseUpdated
+      ]
+
+
+-- | Construct a value of type 'TopicResponse' (by applying it's required fields, if any)
+mkTopicResponse
+  :: TopicResponse
+mkTopicResponse =
+  TopicResponse
+  { topicResponseCreated = Nothing
+  , topicResponseId = Nothing
+  , topicResponseRepoCount = Nothing
+  , topicResponseTopicName = Nothing
+  , topicResponseUpdated = Nothing
+  }
+
+-- ** TrackedTime
+-- | TrackedTime
+-- TrackedTime worked time for an issue / pr
+data TrackedTime = TrackedTime
+  { trackedTimeCreated :: !(Maybe DateTime) -- ^ "created"
+  , trackedTimeId :: !(Maybe Integer) -- ^ "id"
+  , trackedTimeIssue :: !(Maybe Issue) -- ^ "issue"
+  , trackedTimeIssueId :: !(Maybe Integer) -- ^ "issue_id" - deprecated (only for backwards compatibility)
+  , trackedTimeTime :: !(Maybe Integer) -- ^ "time" - Time in seconds
+  , trackedTimeUserId :: !(Maybe Integer) -- ^ "user_id" - deprecated (only for backwards compatibility)
+  , trackedTimeUserName :: !(Maybe Text) -- ^ "user_name"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON TrackedTime
+instance A.FromJSON TrackedTime where
+  parseJSON = A.withObject "TrackedTime" $ \o ->
+    TrackedTime
+      <$> (o .:? "created")
+      <*> (o .:? "id")
+      <*> (o .:? "issue")
+      <*> (o .:? "issue_id")
+      <*> (o .:? "time")
+      <*> (o .:? "user_id")
+      <*> (o .:? "user_name")
+
+-- | ToJSON TrackedTime
+instance A.ToJSON TrackedTime where
+  toJSON TrackedTime {..} =
+   _omitNulls
+      [ "created" .= trackedTimeCreated
+      , "id" .= trackedTimeId
+      , "issue" .= trackedTimeIssue
+      , "issue_id" .= trackedTimeIssueId
+      , "time" .= trackedTimeTime
+      , "user_id" .= trackedTimeUserId
+      , "user_name" .= trackedTimeUserName
+      ]
+
+
+-- | Construct a value of type 'TrackedTime' (by applying it's required fields, if any)
+mkTrackedTime
+  :: TrackedTime
+mkTrackedTime =
+  TrackedTime
+  { trackedTimeCreated = Nothing
+  , trackedTimeId = Nothing
+  , trackedTimeIssue = Nothing
+  , trackedTimeIssueId = Nothing
+  , trackedTimeTime = Nothing
+  , trackedTimeUserId = Nothing
+  , trackedTimeUserName = Nothing
+  }
+
+-- ** TransferRepoOption
+-- | TransferRepoOption
+-- TransferRepoOption options when transfer a repository's ownership
+data TransferRepoOption = TransferRepoOption
+  { transferRepoOptionNewOwner :: !(Text) -- ^ /Required/ "new_owner"
+  , transferRepoOptionTeamIds :: !(Maybe [Integer]) -- ^ "team_ids" - ID of the team or teams to add to the repository. Teams can only be added to organization-owned repositories.
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON TransferRepoOption
+instance A.FromJSON TransferRepoOption where
+  parseJSON = A.withObject "TransferRepoOption" $ \o ->
+    TransferRepoOption
+      <$> (o .:  "new_owner")
+      <*> (o .:? "team_ids")
+
+-- | ToJSON TransferRepoOption
+instance A.ToJSON TransferRepoOption where
+  toJSON TransferRepoOption {..} =
+   _omitNulls
+      [ "new_owner" .= transferRepoOptionNewOwner
+      , "team_ids" .= transferRepoOptionTeamIds
+      ]
+
+
+-- | Construct a value of type 'TransferRepoOption' (by applying it's required fields, if any)
+mkTransferRepoOption
+  :: Text -- ^ 'transferRepoOptionNewOwner' 
+  -> TransferRepoOption
+mkTransferRepoOption transferRepoOptionNewOwner =
+  TransferRepoOption
+  { transferRepoOptionNewOwner
+  , transferRepoOptionTeamIds = Nothing
+  }
+
+-- ** UpdateFileOptions
+-- | UpdateFileOptions
+-- UpdateFileOptions options for updating files Note: `author` and `committer` are optional (if only one is given, it will be used for the other, otherwise the authenticated user will be used)
+data UpdateFileOptions = UpdateFileOptions
+  { updateFileOptionsAuthor :: !(Maybe Identity) -- ^ "author"
+  , updateFileOptionsBranch :: !(Maybe Text) -- ^ "branch" - branch (optional) to base this file from. if not given, the default branch is used
+  , updateFileOptionsCommitter :: !(Maybe Identity) -- ^ "committer"
+  , updateFileOptionsContent :: !(Text) -- ^ /Required/ "content" - content must be base64 encoded
+  , updateFileOptionsDates :: !(Maybe CommitDateOptions) -- ^ "dates"
+  , updateFileOptionsFromPath :: !(Maybe Text) -- ^ "from_path" - from_path (optional) is the path of the original file which will be moved/renamed to the path in the URL
+  , updateFileOptionsMessage :: !(Maybe Text) -- ^ "message" - message (optional) for the commit of this file. if not supplied, a default message will be used
+  , updateFileOptionsNewBranch :: !(Maybe Text) -- ^ "new_branch" - new_branch (optional) will make a new branch from &#x60;branch&#x60; before creating the file
+  , updateFileOptionsSha :: !(Text) -- ^ /Required/ "sha" - sha is the SHA for the file that already exists
+  , updateFileOptionsSignoff :: !(Maybe Bool) -- ^ "signoff" - Add a Signed-off-by trailer by the committer at the end of the commit log message.
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON UpdateFileOptions
+instance A.FromJSON UpdateFileOptions where
+  parseJSON = A.withObject "UpdateFileOptions" $ \o ->
+    UpdateFileOptions
+      <$> (o .:? "author")
+      <*> (o .:? "branch")
+      <*> (o .:? "committer")
+      <*> (o .:  "content")
+      <*> (o .:? "dates")
+      <*> (o .:? "from_path")
+      <*> (o .:? "message")
+      <*> (o .:? "new_branch")
+      <*> (o .:  "sha")
+      <*> (o .:? "signoff")
+
+-- | ToJSON UpdateFileOptions
+instance A.ToJSON UpdateFileOptions where
+  toJSON UpdateFileOptions {..} =
+   _omitNulls
+      [ "author" .= updateFileOptionsAuthor
+      , "branch" .= updateFileOptionsBranch
+      , "committer" .= updateFileOptionsCommitter
+      , "content" .= updateFileOptionsContent
+      , "dates" .= updateFileOptionsDates
+      , "from_path" .= updateFileOptionsFromPath
+      , "message" .= updateFileOptionsMessage
+      , "new_branch" .= updateFileOptionsNewBranch
+      , "sha" .= updateFileOptionsSha
+      , "signoff" .= updateFileOptionsSignoff
+      ]
+
+
+-- | Construct a value of type 'UpdateFileOptions' (by applying it's required fields, if any)
+mkUpdateFileOptions
+  :: Text -- ^ 'updateFileOptionsContent': content must be base64 encoded
+  -> Text -- ^ 'updateFileOptionsSha': sha is the SHA for the file that already exists
+  -> UpdateFileOptions
+mkUpdateFileOptions updateFileOptionsContent updateFileOptionsSha =
+  UpdateFileOptions
+  { updateFileOptionsAuthor = Nothing
+  , updateFileOptionsBranch = Nothing
+  , updateFileOptionsCommitter = Nothing
+  , updateFileOptionsContent
+  , updateFileOptionsDates = Nothing
+  , updateFileOptionsFromPath = Nothing
+  , updateFileOptionsMessage = Nothing
+  , updateFileOptionsNewBranch = Nothing
+  , updateFileOptionsSha
+  , updateFileOptionsSignoff = Nothing
+  }
+
+-- ** User
+-- | User
+-- User represents a user
+data User = User
+  { userActive :: !(Maybe Bool) -- ^ "active" - Is user active
+  , userAvatarUrl :: !(Maybe Text) -- ^ "avatar_url" - URL to the user&#39;s avatar
+  , userCreated :: !(Maybe DateTime) -- ^ "created"
+  , userDescription :: !(Maybe Text) -- ^ "description" - the user&#39;s description
+  , userEmail :: !(Maybe Text) -- ^ "email"
+  , userFollowersCount :: !(Maybe Integer) -- ^ "followers_count" - user counts
+  , userFollowingCount :: !(Maybe Integer) -- ^ "following_count"
+  , userFullName :: !(Maybe Text) -- ^ "full_name" - the user&#39;s full name
+  , userId :: !(Maybe Integer) -- ^ "id" - the user&#39;s id
+  , userIsAdmin :: !(Maybe Bool) -- ^ "is_admin" - Is the user an administrator
+  , userLanguage :: !(Maybe Text) -- ^ "language" - User locale
+  , userLastLogin :: !(Maybe DateTime) -- ^ "last_login"
+  , userLocation :: !(Maybe Text) -- ^ "location" - the user&#39;s location
+  , userLogin :: !(Maybe Text) -- ^ "login" - the user&#39;s username
+  , userLoginName :: !(Maybe Text) -- ^ "login_name" - the user&#39;s authentication sign-in name.
+  , userProhibitLogin :: !(Maybe Bool) -- ^ "prohibit_login" - Is user login prohibited
+  , userRestricted :: !(Maybe Bool) -- ^ "restricted" - Is user restricted
+  , userStarredReposCount :: !(Maybe Integer) -- ^ "starred_repos_count"
+  , userVisibility :: !(Maybe Text) -- ^ "visibility" - User visibility level option: public, limited, private
+  , userWebsite :: !(Maybe Text) -- ^ "website" - the user&#39;s website
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON User
+instance A.FromJSON User where
+  parseJSON = A.withObject "User" $ \o ->
+    User
+      <$> (o .:? "active")
+      <*> (o .:? "avatar_url")
+      <*> (o .:? "created")
+      <*> (o .:? "description")
+      <*> (o .:? "email")
+      <*> (o .:? "followers_count")
+      <*> (o .:? "following_count")
+      <*> (o .:? "full_name")
+      <*> (o .:? "id")
+      <*> (o .:? "is_admin")
+      <*> (o .:? "language")
+      <*> (o .:? "last_login")
+      <*> (o .:? "location")
+      <*> (o .:? "login")
+      <*> (o .:? "login_name")
+      <*> (o .:? "prohibit_login")
+      <*> (o .:? "restricted")
+      <*> (o .:? "starred_repos_count")
+      <*> (o .:? "visibility")
+      <*> (o .:? "website")
+
+-- | ToJSON User
+instance A.ToJSON User where
+  toJSON User {..} =
+   _omitNulls
+      [ "active" .= userActive
+      , "avatar_url" .= userAvatarUrl
+      , "created" .= userCreated
+      , "description" .= userDescription
+      , "email" .= userEmail
+      , "followers_count" .= userFollowersCount
+      , "following_count" .= userFollowingCount
+      , "full_name" .= userFullName
+      , "id" .= userId
+      , "is_admin" .= userIsAdmin
+      , "language" .= userLanguage
+      , "last_login" .= userLastLogin
+      , "location" .= userLocation
+      , "login" .= userLogin
+      , "login_name" .= userLoginName
+      , "prohibit_login" .= userProhibitLogin
+      , "restricted" .= userRestricted
+      , "starred_repos_count" .= userStarredReposCount
+      , "visibility" .= userVisibility
+      , "website" .= userWebsite
+      ]
+
+
+-- | Construct a value of type 'User' (by applying it's required fields, if any)
+mkUser
+  :: User
+mkUser =
+  User
+  { userActive = Nothing
+  , userAvatarUrl = Nothing
+  , userCreated = Nothing
+  , userDescription = Nothing
+  , userEmail = Nothing
+  , userFollowersCount = Nothing
+  , userFollowingCount = Nothing
+  , userFullName = Nothing
+  , userId = Nothing
+  , userIsAdmin = Nothing
+  , userLanguage = Nothing
+  , userLastLogin = Nothing
+  , userLocation = Nothing
+  , userLogin = Nothing
+  , userLoginName = Nothing
+  , userProhibitLogin = Nothing
+  , userRestricted = Nothing
+  , userStarredReposCount = Nothing
+  , userVisibility = Nothing
+  , userWebsite = Nothing
+  }
+
+-- ** UserHeatmapData
+-- | UserHeatmapData
+-- UserHeatmapData represents the data needed to create a heatmap
+data UserHeatmapData = UserHeatmapData
+  { userHeatmapDataContributions :: !(Maybe Integer) -- ^ "contributions"
+  , userHeatmapDataTimestamp :: !(Maybe Integer) -- ^ "timestamp" - TimeStamp defines a timestamp
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON UserHeatmapData
+instance A.FromJSON UserHeatmapData where
+  parseJSON = A.withObject "UserHeatmapData" $ \o ->
+    UserHeatmapData
+      <$> (o .:? "contributions")
+      <*> (o .:? "timestamp")
+
+-- | ToJSON UserHeatmapData
+instance A.ToJSON UserHeatmapData where
+  toJSON UserHeatmapData {..} =
+   _omitNulls
+      [ "contributions" .= userHeatmapDataContributions
+      , "timestamp" .= userHeatmapDataTimestamp
+      ]
+
+
+-- | Construct a value of type 'UserHeatmapData' (by applying it's required fields, if any)
+mkUserHeatmapData
+  :: UserHeatmapData
+mkUserHeatmapData =
+  UserHeatmapData
+  { userHeatmapDataContributions = Nothing
+  , userHeatmapDataTimestamp = Nothing
+  }
+
+-- ** UserSearch200Response
+-- | UserSearch200Response
+data UserSearch200Response = UserSearch200Response
+  { userSearch200ResponseData :: !(Maybe [User]) -- ^ "data"
+  , userSearch200ResponseOk :: !(Maybe Bool) -- ^ "ok"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON UserSearch200Response
+instance A.FromJSON UserSearch200Response where
+  parseJSON = A.withObject "UserSearch200Response" $ \o ->
+    UserSearch200Response
+      <$> (o .:? "data")
+      <*> (o .:? "ok")
+
+-- | ToJSON UserSearch200Response
+instance A.ToJSON UserSearch200Response where
+  toJSON UserSearch200Response {..} =
+   _omitNulls
+      [ "data" .= userSearch200ResponseData
+      , "ok" .= userSearch200ResponseOk
+      ]
+
+
+-- | Construct a value of type 'UserSearch200Response' (by applying it's required fields, if any)
+mkUserSearch200Response
+  :: UserSearch200Response
+mkUserSearch200Response =
+  UserSearch200Response
+  { userSearch200ResponseData = Nothing
+  , userSearch200ResponseOk = Nothing
+  }
+
+-- ** UserSettings
+-- | UserSettings
+-- UserSettings represents user settings
+data UserSettings = UserSettings
+  { userSettingsDescription :: !(Maybe Text) -- ^ "description"
+  , userSettingsDiffViewStyle :: !(Maybe Text) -- ^ "diff_view_style"
+  , userSettingsFullName :: !(Maybe Text) -- ^ "full_name"
+  , userSettingsHideActivity :: !(Maybe Bool) -- ^ "hide_activity"
+  , userSettingsHideEmail :: !(Maybe Bool) -- ^ "hide_email" - Privacy
+  , userSettingsLanguage :: !(Maybe Text) -- ^ "language"
+  , userSettingsLocation :: !(Maybe Text) -- ^ "location"
+  , userSettingsTheme :: !(Maybe Text) -- ^ "theme"
+  , userSettingsWebsite :: !(Maybe Text) -- ^ "website"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON UserSettings
+instance A.FromJSON UserSettings where
+  parseJSON = A.withObject "UserSettings" $ \o ->
+    UserSettings
+      <$> (o .:? "description")
+      <*> (o .:? "diff_view_style")
+      <*> (o .:? "full_name")
+      <*> (o .:? "hide_activity")
+      <*> (o .:? "hide_email")
+      <*> (o .:? "language")
+      <*> (o .:? "location")
+      <*> (o .:? "theme")
+      <*> (o .:? "website")
+
+-- | ToJSON UserSettings
+instance A.ToJSON UserSettings where
+  toJSON UserSettings {..} =
+   _omitNulls
+      [ "description" .= userSettingsDescription
+      , "diff_view_style" .= userSettingsDiffViewStyle
+      , "full_name" .= userSettingsFullName
+      , "hide_activity" .= userSettingsHideActivity
+      , "hide_email" .= userSettingsHideEmail
+      , "language" .= userSettingsLanguage
+      , "location" .= userSettingsLocation
+      , "theme" .= userSettingsTheme
+      , "website" .= userSettingsWebsite
+      ]
+
+
+-- | Construct a value of type 'UserSettings' (by applying it's required fields, if any)
+mkUserSettings
+  :: UserSettings
+mkUserSettings =
+  UserSettings
+  { userSettingsDescription = Nothing
+  , userSettingsDiffViewStyle = Nothing
+  , userSettingsFullName = Nothing
+  , userSettingsHideActivity = Nothing
+  , userSettingsHideEmail = Nothing
+  , userSettingsLanguage = Nothing
+  , userSettingsLocation = Nothing
+  , userSettingsTheme = Nothing
+  , userSettingsWebsite = Nothing
+  }
+
+-- ** UserSettingsOptions
+-- | UserSettingsOptions
+-- UserSettingsOptions represents options to change user settings
+data UserSettingsOptions = UserSettingsOptions
+  { userSettingsOptionsDescription :: !(Maybe Text) -- ^ "description"
+  , userSettingsOptionsDiffViewStyle :: !(Maybe Text) -- ^ "diff_view_style"
+  , userSettingsOptionsFullName :: !(Maybe Text) -- ^ "full_name"
+  , userSettingsOptionsHideActivity :: !(Maybe Bool) -- ^ "hide_activity"
+  , userSettingsOptionsHideEmail :: !(Maybe Bool) -- ^ "hide_email" - Privacy
+  , userSettingsOptionsLanguage :: !(Maybe Text) -- ^ "language"
+  , userSettingsOptionsLocation :: !(Maybe Text) -- ^ "location"
+  , userSettingsOptionsTheme :: !(Maybe Text) -- ^ "theme"
+  , userSettingsOptionsWebsite :: !(Maybe Text) -- ^ "website"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON UserSettingsOptions
+instance A.FromJSON UserSettingsOptions where
+  parseJSON = A.withObject "UserSettingsOptions" $ \o ->
+    UserSettingsOptions
+      <$> (o .:? "description")
+      <*> (o .:? "diff_view_style")
+      <*> (o .:? "full_name")
+      <*> (o .:? "hide_activity")
+      <*> (o .:? "hide_email")
+      <*> (o .:? "language")
+      <*> (o .:? "location")
+      <*> (o .:? "theme")
+      <*> (o .:? "website")
+
+-- | ToJSON UserSettingsOptions
+instance A.ToJSON UserSettingsOptions where
+  toJSON UserSettingsOptions {..} =
+   _omitNulls
+      [ "description" .= userSettingsOptionsDescription
+      , "diff_view_style" .= userSettingsOptionsDiffViewStyle
+      , "full_name" .= userSettingsOptionsFullName
+      , "hide_activity" .= userSettingsOptionsHideActivity
+      , "hide_email" .= userSettingsOptionsHideEmail
+      , "language" .= userSettingsOptionsLanguage
+      , "location" .= userSettingsOptionsLocation
+      , "theme" .= userSettingsOptionsTheme
+      , "website" .= userSettingsOptionsWebsite
+      ]
+
+
+-- | Construct a value of type 'UserSettingsOptions' (by applying it's required fields, if any)
+mkUserSettingsOptions
+  :: UserSettingsOptions
+mkUserSettingsOptions =
+  UserSettingsOptions
+  { userSettingsOptionsDescription = Nothing
+  , userSettingsOptionsDiffViewStyle = Nothing
+  , userSettingsOptionsFullName = Nothing
+  , userSettingsOptionsHideActivity = Nothing
+  , userSettingsOptionsHideEmail = Nothing
+  , userSettingsOptionsLanguage = Nothing
+  , userSettingsOptionsLocation = Nothing
+  , userSettingsOptionsTheme = Nothing
+  , userSettingsOptionsWebsite = Nothing
+  }
+
+-- ** WatchInfo
+-- | WatchInfo
+-- WatchInfo represents an API watch status of one repository
+data WatchInfo = WatchInfo
+  { watchInfoCreatedAt :: !(Maybe DateTime) -- ^ "created_at"
+  , watchInfoIgnored :: !(Maybe Bool) -- ^ "ignored"
+  , watchInfoReason :: !(Maybe A.Value) -- ^ "reason"
+  , watchInfoRepositoryUrl :: !(Maybe Text) -- ^ "repository_url"
+  , watchInfoSubscribed :: !(Maybe Bool) -- ^ "subscribed"
+  , watchInfoUrl :: !(Maybe Text) -- ^ "url"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON WatchInfo
+instance A.FromJSON WatchInfo where
+  parseJSON = A.withObject "WatchInfo" $ \o ->
+    WatchInfo
+      <$> (o .:? "created_at")
+      <*> (o .:? "ignored")
+      <*> (o .:? "reason")
+      <*> (o .:? "repository_url")
+      <*> (o .:? "subscribed")
+      <*> (o .:? "url")
+
+-- | ToJSON WatchInfo
+instance A.ToJSON WatchInfo where
+  toJSON WatchInfo {..} =
+   _omitNulls
+      [ "created_at" .= watchInfoCreatedAt
+      , "ignored" .= watchInfoIgnored
+      , "reason" .= watchInfoReason
+      , "repository_url" .= watchInfoRepositoryUrl
+      , "subscribed" .= watchInfoSubscribed
+      , "url" .= watchInfoUrl
+      ]
+
+
+-- | Construct a value of type 'WatchInfo' (by applying it's required fields, if any)
+mkWatchInfo
+  :: WatchInfo
+mkWatchInfo =
+  WatchInfo
+  { watchInfoCreatedAt = Nothing
+  , watchInfoIgnored = Nothing
+  , watchInfoReason = Nothing
+  , watchInfoRepositoryUrl = Nothing
+  , watchInfoSubscribed = Nothing
+  , watchInfoUrl = Nothing
+  }
+
+-- ** WikiCommit
+-- | WikiCommit
+-- WikiCommit page commit/revision
+data WikiCommit = WikiCommit
+  { wikiCommitAuthor :: !(Maybe CommitUser) -- ^ "author"
+  , wikiCommitCommiter :: !(Maybe CommitUser) -- ^ "commiter"
+  , wikiCommitMessage :: !(Maybe Text) -- ^ "message"
+  , wikiCommitSha :: !(Maybe Text) -- ^ "sha"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON WikiCommit
+instance A.FromJSON WikiCommit where
+  parseJSON = A.withObject "WikiCommit" $ \o ->
+    WikiCommit
+      <$> (o .:? "author")
+      <*> (o .:? "commiter")
+      <*> (o .:? "message")
+      <*> (o .:? "sha")
+
+-- | ToJSON WikiCommit
+instance A.ToJSON WikiCommit where
+  toJSON WikiCommit {..} =
+   _omitNulls
+      [ "author" .= wikiCommitAuthor
+      , "commiter" .= wikiCommitCommiter
+      , "message" .= wikiCommitMessage
+      , "sha" .= wikiCommitSha
+      ]
+
+
+-- | Construct a value of type 'WikiCommit' (by applying it's required fields, if any)
+mkWikiCommit
+  :: WikiCommit
+mkWikiCommit =
+  WikiCommit
+  { wikiCommitAuthor = Nothing
+  , wikiCommitCommiter = Nothing
+  , wikiCommitMessage = Nothing
+  , wikiCommitSha = Nothing
+  }
+
+-- ** WikiCommitList
+-- | WikiCommitList
+-- WikiCommitList commit/revision list
+data WikiCommitList = WikiCommitList
+  { wikiCommitListCommits :: !(Maybe [WikiCommit]) -- ^ "commits"
+  , wikiCommitListCount :: !(Maybe Integer) -- ^ "count"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON WikiCommitList
+instance A.FromJSON WikiCommitList where
+  parseJSON = A.withObject "WikiCommitList" $ \o ->
+    WikiCommitList
+      <$> (o .:? "commits")
+      <*> (o .:? "count")
+
+-- | ToJSON WikiCommitList
+instance A.ToJSON WikiCommitList where
+  toJSON WikiCommitList {..} =
+   _omitNulls
+      [ "commits" .= wikiCommitListCommits
+      , "count" .= wikiCommitListCount
+      ]
+
+
+-- | Construct a value of type 'WikiCommitList' (by applying it's required fields, if any)
+mkWikiCommitList
+  :: WikiCommitList
+mkWikiCommitList =
+  WikiCommitList
+  { wikiCommitListCommits = Nothing
+  , wikiCommitListCount = Nothing
+  }
+
+-- ** WikiPage
+-- | WikiPage
+-- WikiPage a wiki page
+data WikiPage = WikiPage
+  { wikiPageCommitCount :: !(Maybe Integer) -- ^ "commit_count"
+  , wikiPageContentBase64 :: !(Maybe Text) -- ^ "content_base64" - Page content, base64 encoded
+  , wikiPageFooter :: !(Maybe Text) -- ^ "footer"
+  , wikiPageHtmlUrl :: !(Maybe Text) -- ^ "html_url"
+  , wikiPageLastCommit :: !(Maybe WikiCommit) -- ^ "last_commit"
+  , wikiPageSidebar :: !(Maybe Text) -- ^ "sidebar"
+  , wikiPageSubUrl :: !(Maybe Text) -- ^ "sub_url"
+  , wikiPageTitle :: !(Maybe Text) -- ^ "title"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON WikiPage
+instance A.FromJSON WikiPage where
+  parseJSON = A.withObject "WikiPage" $ \o ->
+    WikiPage
+      <$> (o .:? "commit_count")
+      <*> (o .:? "content_base64")
+      <*> (o .:? "footer")
+      <*> (o .:? "html_url")
+      <*> (o .:? "last_commit")
+      <*> (o .:? "sidebar")
+      <*> (o .:? "sub_url")
+      <*> (o .:? "title")
+
+-- | ToJSON WikiPage
+instance A.ToJSON WikiPage where
+  toJSON WikiPage {..} =
+   _omitNulls
+      [ "commit_count" .= wikiPageCommitCount
+      , "content_base64" .= wikiPageContentBase64
+      , "footer" .= wikiPageFooter
+      , "html_url" .= wikiPageHtmlUrl
+      , "last_commit" .= wikiPageLastCommit
+      , "sidebar" .= wikiPageSidebar
+      , "sub_url" .= wikiPageSubUrl
+      , "title" .= wikiPageTitle
+      ]
+
+
+-- | Construct a value of type 'WikiPage' (by applying it's required fields, if any)
+mkWikiPage
+  :: WikiPage
+mkWikiPage =
+  WikiPage
+  { wikiPageCommitCount = Nothing
+  , wikiPageContentBase64 = Nothing
+  , wikiPageFooter = Nothing
+  , wikiPageHtmlUrl = Nothing
+  , wikiPageLastCommit = Nothing
+  , wikiPageSidebar = Nothing
+  , wikiPageSubUrl = Nothing
+  , wikiPageTitle = Nothing
+  }
+
+-- ** WikiPageMetaData
+-- | WikiPageMetaData
+-- WikiPageMetaData wiki page meta information
+data WikiPageMetaData = WikiPageMetaData
+  { wikiPageMetaDataHtmlUrl :: !(Maybe Text) -- ^ "html_url"
+  , wikiPageMetaDataLastCommit :: !(Maybe WikiCommit) -- ^ "last_commit"
+  , wikiPageMetaDataSubUrl :: !(Maybe Text) -- ^ "sub_url"
+  , wikiPageMetaDataTitle :: !(Maybe Text) -- ^ "title"
+  } deriving (P.Show, P.Eq, P.Typeable)
+
+-- | FromJSON WikiPageMetaData
+instance A.FromJSON WikiPageMetaData where
+  parseJSON = A.withObject "WikiPageMetaData" $ \o ->
+    WikiPageMetaData
+      <$> (o .:? "html_url")
+      <*> (o .:? "last_commit")
+      <*> (o .:? "sub_url")
+      <*> (o .:? "title")
+
+-- | ToJSON WikiPageMetaData
+instance A.ToJSON WikiPageMetaData where
+  toJSON WikiPageMetaData {..} =
+   _omitNulls
+      [ "html_url" .= wikiPageMetaDataHtmlUrl
+      , "last_commit" .= wikiPageMetaDataLastCommit
+      , "sub_url" .= wikiPageMetaDataSubUrl
+      , "title" .= wikiPageMetaDataTitle
+      ]
+
+
+-- | Construct a value of type 'WikiPageMetaData' (by applying it's required fields, if any)
+mkWikiPageMetaData
+  :: WikiPageMetaData
+mkWikiPageMetaData =
+  WikiPageMetaData
+  { wikiPageMetaDataHtmlUrl = Nothing
+  , wikiPageMetaDataLastCommit = Nothing
+  , wikiPageMetaDataSubUrl = Nothing
+  , wikiPageMetaDataTitle = Nothing
+  }
+
+
+-- * Enums
+
+
+-- ** E'DiffType
+
+-- | Enum of 'Text'
+data E'DiffType
+  = E'DiffType'Diff -- ^ @"diff"@
+  | E'DiffType'Patch -- ^ @"patch"@
+  deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
+
+instance A.ToJSON E'DiffType where toJSON = A.toJSON . fromE'DiffType
+instance A.FromJSON E'DiffType where parseJSON o = P.either P.fail (pure . P.id) . toE'DiffType =<< A.parseJSON o
+instance WH.ToHttpApiData E'DiffType where toQueryParam = WH.toQueryParam . fromE'DiffType
+instance WH.FromHttpApiData E'DiffType where parseQueryParam o = WH.parseQueryParam o >>= P.left T.pack . toE'DiffType
+instance MimeRender MimeMultipartFormData E'DiffType where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | unwrap 'E'DiffType' enum
+fromE'DiffType :: E'DiffType -> Text
+fromE'DiffType = \case
+  E'DiffType'Diff -> "diff"
+  E'DiffType'Patch -> "patch"
+
+-- | parse 'E'DiffType' enum
+toE'DiffType :: Text -> P.Either String E'DiffType
+toE'DiffType = \case
+  "diff" -> P.Right E'DiffType'Diff
+  "patch" -> P.Right E'DiffType'Patch
+  s -> P.Left $ "toE'DiffType: enum parse failure: " P.++ P.show s
+
+
+-- ** E'Do
+
+-- | Enum of 'Text'
+data E'Do
+  = E'Do'Merge -- ^ @"merge"@
+  | E'Do'Rebase -- ^ @"rebase"@
+  | E'Do'Rebase_merge -- ^ @"rebase-merge"@
+  | E'Do'Squash -- ^ @"squash"@
+  | E'Do'Manually_merged -- ^ @"manually-merged"@
+  deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
+
+instance A.ToJSON E'Do where toJSON = A.toJSON . fromE'Do
+instance A.FromJSON E'Do where parseJSON o = P.either P.fail (pure . P.id) . toE'Do =<< A.parseJSON o
+instance WH.ToHttpApiData E'Do where toQueryParam = WH.toQueryParam . fromE'Do
+instance WH.FromHttpApiData E'Do where parseQueryParam o = WH.parseQueryParam o >>= P.left T.pack . toE'Do
+instance MimeRender MimeMultipartFormData E'Do where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | unwrap 'E'Do' enum
+fromE'Do :: E'Do -> Text
+fromE'Do = \case
+  E'Do'Merge -> "merge"
+  E'Do'Rebase -> "rebase"
+  E'Do'Rebase_merge -> "rebase-merge"
+  E'Do'Squash -> "squash"
+  E'Do'Manually_merged -> "manually-merged"
+
+-- | parse 'E'Do' enum
+toE'Do :: Text -> P.Either String E'Do
+toE'Do = \case
+  "merge" -> P.Right E'Do'Merge
+  "rebase" -> P.Right E'Do'Rebase
+  "rebase-merge" -> P.Right E'Do'Rebase_merge
+  "squash" -> P.Right E'Do'Squash
+  "manually-merged" -> P.Right E'Do'Manually_merged
+  s -> P.Left $ "toE'Do: enum parse failure: " P.++ P.show s
+
+
+-- ** E'Permission
+
+-- | Enum of 'Text'
+data E'Permission
+  = E'Permission'Read -- ^ @"read"@
+  | E'Permission'Write -- ^ @"write"@
+  | E'Permission'Admin -- ^ @"admin"@
+  deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
+
+instance A.ToJSON E'Permission where toJSON = A.toJSON . fromE'Permission
+instance A.FromJSON E'Permission where parseJSON o = P.either P.fail (pure . P.id) . toE'Permission =<< A.parseJSON o
+instance WH.ToHttpApiData E'Permission where toQueryParam = WH.toQueryParam . fromE'Permission
+instance WH.FromHttpApiData E'Permission where parseQueryParam o = WH.parseQueryParam o >>= P.left T.pack . toE'Permission
+instance MimeRender MimeMultipartFormData E'Permission where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | unwrap 'E'Permission' enum
+fromE'Permission :: E'Permission -> Text
+fromE'Permission = \case
+  E'Permission'Read -> "read"
+  E'Permission'Write -> "write"
+  E'Permission'Admin -> "admin"
+
+-- | parse 'E'Permission' enum
+toE'Permission :: Text -> P.Either String E'Permission
+toE'Permission = \case
+  "read" -> P.Right E'Permission'Read
+  "write" -> P.Right E'Permission'Write
+  "admin" -> P.Right E'Permission'Admin
+  s -> P.Left $ "toE'Permission: enum parse failure: " P.++ P.show s
+
+
+-- ** E'Permission2
+
+-- | Enum of 'Text'
+data E'Permission2
+  = E'Permission2'None -- ^ @"none"@
+  | E'Permission2'Read -- ^ @"read"@
+  | E'Permission2'Write -- ^ @"write"@
+  | E'Permission2'Admin -- ^ @"admin"@
+  | E'Permission2'Owner -- ^ @"owner"@
+  deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
+
+instance A.ToJSON E'Permission2 where toJSON = A.toJSON . fromE'Permission2
+instance A.FromJSON E'Permission2 where parseJSON o = P.either P.fail (pure . P.id) . toE'Permission2 =<< A.parseJSON o
+instance WH.ToHttpApiData E'Permission2 where toQueryParam = WH.toQueryParam . fromE'Permission2
+instance WH.FromHttpApiData E'Permission2 where parseQueryParam o = WH.parseQueryParam o >>= P.left T.pack . toE'Permission2
+instance MimeRender MimeMultipartFormData E'Permission2 where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | unwrap 'E'Permission2' enum
+fromE'Permission2 :: E'Permission2 -> Text
+fromE'Permission2 = \case
+  E'Permission2'None -> "none"
+  E'Permission2'Read -> "read"
+  E'Permission2'Write -> "write"
+  E'Permission2'Admin -> "admin"
+  E'Permission2'Owner -> "owner"
+
+-- | parse 'E'Permission2' enum
+toE'Permission2 :: Text -> P.Either String E'Permission2
+toE'Permission2 = \case
+  "none" -> P.Right E'Permission2'None
+  "read" -> P.Right E'Permission2'Read
+  "write" -> P.Right E'Permission2'Write
+  "admin" -> P.Right E'Permission2'Admin
+  "owner" -> P.Right E'Permission2'Owner
+  s -> P.Left $ "toE'Permission2: enum parse failure: " P.++ P.show s
+
+
+-- ** E'Service
+
+-- | Enum of 'Text'
+data E'Service
+  = E'Service'Git -- ^ @"git"@
+  | E'Service'Github -- ^ @"github"@
+  | E'Service'Gitea -- ^ @"gitea"@
+  | E'Service'Gitlab -- ^ @"gitlab"@
+  | E'Service'Gogs -- ^ @"gogs"@
+  | E'Service'Onedev -- ^ @"onedev"@
+  | E'Service'Gitbucket -- ^ @"gitbucket"@
+  | E'Service'Codebase -- ^ @"codebase"@
+  deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
+
+instance A.ToJSON E'Service where toJSON = A.toJSON . fromE'Service
+instance A.FromJSON E'Service where parseJSON o = P.either P.fail (pure . P.id) . toE'Service =<< A.parseJSON o
+instance WH.ToHttpApiData E'Service where toQueryParam = WH.toQueryParam . fromE'Service
+instance WH.FromHttpApiData E'Service where parseQueryParam o = WH.parseQueryParam o >>= P.left T.pack . toE'Service
+instance MimeRender MimeMultipartFormData E'Service where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | unwrap 'E'Service' enum
+fromE'Service :: E'Service -> Text
+fromE'Service = \case
+  E'Service'Git -> "git"
+  E'Service'Github -> "github"
+  E'Service'Gitea -> "gitea"
+  E'Service'Gitlab -> "gitlab"
+  E'Service'Gogs -> "gogs"
+  E'Service'Onedev -> "onedev"
+  E'Service'Gitbucket -> "gitbucket"
+  E'Service'Codebase -> "codebase"
+
+-- | parse 'E'Service' enum
+toE'Service :: Text -> P.Either String E'Service
+toE'Service = \case
+  "git" -> P.Right E'Service'Git
+  "github" -> P.Right E'Service'Github
+  "gitea" -> P.Right E'Service'Gitea
+  "gitlab" -> P.Right E'Service'Gitlab
+  "gogs" -> P.Right E'Service'Gogs
+  "onedev" -> P.Right E'Service'Onedev
+  "gitbucket" -> P.Right E'Service'Gitbucket
+  "codebase" -> P.Right E'Service'Codebase
+  s -> P.Left $ "toE'Service: enum parse failure: " P.++ P.show s
+
+
+-- ** E'Sort
+
+-- | Enum of 'Text'
+data E'Sort
+  = E'Sort'Oldest -- ^ @"oldest"@
+  | E'Sort'Recentupdate -- ^ @"recentupdate"@
+  | E'Sort'Leastupdate -- ^ @"leastupdate"@
+  | E'Sort'Leastindex -- ^ @"leastindex"@
+  | E'Sort'Highestindex -- ^ @"highestindex"@
+  deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
+
+instance A.ToJSON E'Sort where toJSON = A.toJSON . fromE'Sort
+instance A.FromJSON E'Sort where parseJSON o = P.either P.fail (pure . P.id) . toE'Sort =<< A.parseJSON o
+instance WH.ToHttpApiData E'Sort where toQueryParam = WH.toQueryParam . fromE'Sort
+instance WH.FromHttpApiData E'Sort where parseQueryParam o = WH.parseQueryParam o >>= P.left T.pack . toE'Sort
+instance MimeRender MimeMultipartFormData E'Sort where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | unwrap 'E'Sort' enum
+fromE'Sort :: E'Sort -> Text
+fromE'Sort = \case
+  E'Sort'Oldest -> "oldest"
+  E'Sort'Recentupdate -> "recentupdate"
+  E'Sort'Leastupdate -> "leastupdate"
+  E'Sort'Leastindex -> "leastindex"
+  E'Sort'Highestindex -> "highestindex"
+
+-- | parse 'E'Sort' enum
+toE'Sort :: Text -> P.Either String E'Sort
+toE'Sort = \case
+  "oldest" -> P.Right E'Sort'Oldest
+  "recentupdate" -> P.Right E'Sort'Recentupdate
+  "leastupdate" -> P.Right E'Sort'Leastupdate
+  "leastindex" -> P.Right E'Sort'Leastindex
+  "highestindex" -> P.Right E'Sort'Highestindex
+  s -> P.Left $ "toE'Sort: enum parse failure: " P.++ P.show s
+
+
+-- ** E'Sort2
+
+-- | Enum of 'Text'
+data E'Sort2
+  = E'Sort2'Oldest -- ^ @"oldest"@
+  | E'Sort2'Recentupdate -- ^ @"recentupdate"@
+  | E'Sort2'Leastupdate -- ^ @"leastupdate"@
+  | E'Sort2'Mostcomment -- ^ @"mostcomment"@
+  | E'Sort2'Leastcomment -- ^ @"leastcomment"@
+  | E'Sort2'Priority -- ^ @"priority"@
+  deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
+
+instance A.ToJSON E'Sort2 where toJSON = A.toJSON . fromE'Sort2
+instance A.FromJSON E'Sort2 where parseJSON o = P.either P.fail (pure . P.id) . toE'Sort2 =<< A.parseJSON o
+instance WH.ToHttpApiData E'Sort2 where toQueryParam = WH.toQueryParam . fromE'Sort2
+instance WH.FromHttpApiData E'Sort2 where parseQueryParam o = WH.parseQueryParam o >>= P.left T.pack . toE'Sort2
+instance MimeRender MimeMultipartFormData E'Sort2 where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | unwrap 'E'Sort2' enum
+fromE'Sort2 :: E'Sort2 -> Text
+fromE'Sort2 = \case
+  E'Sort2'Oldest -> "oldest"
+  E'Sort2'Recentupdate -> "recentupdate"
+  E'Sort2'Leastupdate -> "leastupdate"
+  E'Sort2'Mostcomment -> "mostcomment"
+  E'Sort2'Leastcomment -> "leastcomment"
+  E'Sort2'Priority -> "priority"
+
+-- | parse 'E'Sort2' enum
+toE'Sort2 :: Text -> P.Either String E'Sort2
+toE'Sort2 = \case
+  "oldest" -> P.Right E'Sort2'Oldest
+  "recentupdate" -> P.Right E'Sort2'Recentupdate
+  "leastupdate" -> P.Right E'Sort2'Leastupdate
+  "mostcomment" -> P.Right E'Sort2'Mostcomment
+  "leastcomment" -> P.Right E'Sort2'Leastcomment
+  "priority" -> P.Right E'Sort2'Priority
+  s -> P.Left $ "toE'Sort2: enum parse failure: " P.++ P.show s
+
+
+-- ** E'State
+
+-- | Enum of 'Text'
+data E'State
+  = E'State'Open -- ^ @"open"@
+  | E'State'Closed -- ^ @"closed"@
+  deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
+
+instance A.ToJSON E'State where toJSON = A.toJSON . fromE'State
+instance A.FromJSON E'State where parseJSON o = P.either P.fail (pure . P.id) . toE'State =<< A.parseJSON o
+instance WH.ToHttpApiData E'State where toQueryParam = WH.toQueryParam . fromE'State
+instance WH.FromHttpApiData E'State where parseQueryParam o = WH.parseQueryParam o >>= P.left T.pack . toE'State
+instance MimeRender MimeMultipartFormData E'State where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | unwrap 'E'State' enum
+fromE'State :: E'State -> Text
+fromE'State = \case
+  E'State'Open -> "open"
+  E'State'Closed -> "closed"
+
+-- | parse 'E'State' enum
+toE'State :: Text -> P.Either String E'State
+toE'State = \case
+  "open" -> P.Right E'State'Open
+  "closed" -> P.Right E'State'Closed
+  s -> P.Left $ "toE'State: enum parse failure: " P.++ P.show s
+
+
+-- ** E'State2
+
+-- | Enum of 'Text'
+data E'State2
+  = E'State2'Pending -- ^ @"pending"@
+  | E'State2'Success -- ^ @"success"@
+  | E'State2'Error -- ^ @"error"@
+  | E'State2'Failure -- ^ @"failure"@
+  | E'State2'Warning -- ^ @"warning"@
+  deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
+
+instance A.ToJSON E'State2 where toJSON = A.toJSON . fromE'State2
+instance A.FromJSON E'State2 where parseJSON o = P.either P.fail (pure . P.id) . toE'State2 =<< A.parseJSON o
+instance WH.ToHttpApiData E'State2 where toQueryParam = WH.toQueryParam . fromE'State2
+instance WH.FromHttpApiData E'State2 where parseQueryParam o = WH.parseQueryParam o >>= P.left T.pack . toE'State2
+instance MimeRender MimeMultipartFormData E'State2 where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | unwrap 'E'State2' enum
+fromE'State2 :: E'State2 -> Text
+fromE'State2 = \case
+  E'State2'Pending -> "pending"
+  E'State2'Success -> "success"
+  E'State2'Error -> "error"
+  E'State2'Failure -> "failure"
+  E'State2'Warning -> "warning"
+
+-- | parse 'E'State2' enum
+toE'State2 :: Text -> P.Either String E'State2
+toE'State2 = \case
+  "pending" -> P.Right E'State2'Pending
+  "success" -> P.Right E'State2'Success
+  "error" -> P.Right E'State2'Error
+  "failure" -> P.Right E'State2'Failure
+  "warning" -> P.Right E'State2'Warning
+  s -> P.Left $ "toE'State2: enum parse failure: " P.++ P.show s
+
+
+-- ** E'State3
+
+-- | Enum of 'Text'
+data E'State3
+  = E'State3'Closed -- ^ @"closed"@
+  | E'State3'Open -- ^ @"open"@
+  | E'State3'All -- ^ @"all"@
+  deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
+
+instance A.ToJSON E'State3 where toJSON = A.toJSON . fromE'State3
+instance A.FromJSON E'State3 where parseJSON o = P.either P.fail (pure . P.id) . toE'State3 =<< A.parseJSON o
+instance WH.ToHttpApiData E'State3 where toQueryParam = WH.toQueryParam . fromE'State3
+instance WH.FromHttpApiData E'State3 where parseQueryParam o = WH.parseQueryParam o >>= P.left T.pack . toE'State3
+instance MimeRender MimeMultipartFormData E'State3 where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | unwrap 'E'State3' enum
+fromE'State3 :: E'State3 -> Text
+fromE'State3 = \case
+  E'State3'Closed -> "closed"
+  E'State3'Open -> "open"
+  E'State3'All -> "all"
+
+-- | parse 'E'State3' enum
+toE'State3 :: Text -> P.Either String E'State3
+toE'State3 = \case
+  "closed" -> P.Right E'State3'Closed
+  "open" -> P.Right E'State3'Open
+  "all" -> P.Right E'State3'All
+  s -> P.Left $ "toE'State3: enum parse failure: " P.++ P.show s
+
+
+-- ** E'Style
+
+-- | Enum of 'Text'
+data E'Style
+  = E'Style'Merge -- ^ @"merge"@
+  | E'Style'Rebase -- ^ @"rebase"@
+  deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
+
+instance A.ToJSON E'Style where toJSON = A.toJSON . fromE'Style
+instance A.FromJSON E'Style where parseJSON o = P.either P.fail (pure . P.id) . toE'Style =<< A.parseJSON o
+instance WH.ToHttpApiData E'Style where toQueryParam = WH.toQueryParam . fromE'Style
+instance WH.FromHttpApiData E'Style where parseQueryParam o = WH.parseQueryParam o >>= P.left T.pack . toE'Style
+instance MimeRender MimeMultipartFormData E'Style where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | unwrap 'E'Style' enum
+fromE'Style :: E'Style -> Text
+fromE'Style = \case
+  E'Style'Merge -> "merge"
+  E'Style'Rebase -> "rebase"
+
+-- | parse 'E'Style' enum
+toE'Style :: Text -> P.Either String E'Style
+toE'Style = \case
+  "merge" -> P.Right E'Style'Merge
+  "rebase" -> P.Right E'Style'Rebase
+  s -> P.Left $ "toE'Style: enum parse failure: " P.++ P.show s
+
+
+-- ** E'SubjectType
+
+-- | Enum of 'Text'
+data E'SubjectType
+  = E'SubjectType'Issue -- ^ @"issue"@
+  | E'SubjectType'Pull -- ^ @"pull"@
+  | E'SubjectType'Commit -- ^ @"commit"@
+  | E'SubjectType'Repository -- ^ @"repository"@
+  deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
+
+instance A.ToJSON E'SubjectType where toJSON = A.toJSON . fromE'SubjectType
+instance A.FromJSON E'SubjectType where parseJSON o = P.either P.fail (pure . P.id) . toE'SubjectType =<< A.parseJSON o
+instance WH.ToHttpApiData E'SubjectType where toQueryParam = WH.toQueryParam . fromE'SubjectType
+instance WH.FromHttpApiData E'SubjectType where parseQueryParam o = WH.parseQueryParam o >>= P.left T.pack . toE'SubjectType
+instance MimeRender MimeMultipartFormData E'SubjectType where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | unwrap 'E'SubjectType' enum
+fromE'SubjectType :: E'SubjectType -> Text
+fromE'SubjectType = \case
+  E'SubjectType'Issue -> "issue"
+  E'SubjectType'Pull -> "pull"
+  E'SubjectType'Commit -> "commit"
+  E'SubjectType'Repository -> "repository"
+
+-- | parse 'E'SubjectType' enum
+toE'SubjectType :: Text -> P.Either String E'SubjectType
+toE'SubjectType = \case
+  "issue" -> P.Right E'SubjectType'Issue
+  "pull" -> P.Right E'SubjectType'Pull
+  "commit" -> P.Right E'SubjectType'Commit
+  "repository" -> P.Right E'SubjectType'Repository
+  s -> P.Left $ "toE'SubjectType: enum parse failure: " P.++ P.show s
+
+
+-- ** E'TrustModel
+
+-- | Enum of 'Text' .
+-- TrustModel of the repository
+data E'TrustModel
+  = E'TrustModel'Default -- ^ @"default"@
+  | E'TrustModel'Collaborator -- ^ @"collaborator"@
+  | E'TrustModel'Committer -- ^ @"committer"@
+  | E'TrustModel'Collaboratorcommitter -- ^ @"collaboratorcommitter"@
+  deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
+
+instance A.ToJSON E'TrustModel where toJSON = A.toJSON . fromE'TrustModel
+instance A.FromJSON E'TrustModel where parseJSON o = P.either P.fail (pure . P.id) . toE'TrustModel =<< A.parseJSON o
+instance WH.ToHttpApiData E'TrustModel where toQueryParam = WH.toQueryParam . fromE'TrustModel
+instance WH.FromHttpApiData E'TrustModel where parseQueryParam o = WH.parseQueryParam o >>= P.left T.pack . toE'TrustModel
+instance MimeRender MimeMultipartFormData E'TrustModel where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | unwrap 'E'TrustModel' enum
+fromE'TrustModel :: E'TrustModel -> Text
+fromE'TrustModel = \case
+  E'TrustModel'Default -> "default"
+  E'TrustModel'Collaborator -> "collaborator"
+  E'TrustModel'Committer -> "committer"
+  E'TrustModel'Collaboratorcommitter -> "collaboratorcommitter"
+
+-- | parse 'E'TrustModel' enum
+toE'TrustModel :: Text -> P.Either String E'TrustModel
+toE'TrustModel = \case
+  "default" -> P.Right E'TrustModel'Default
+  "collaborator" -> P.Right E'TrustModel'Collaborator
+  "committer" -> P.Right E'TrustModel'Committer
+  "collaboratorcommitter" -> P.Right E'TrustModel'Collaboratorcommitter
+  s -> P.Left $ "toE'TrustModel: enum parse failure: " P.++ P.show s
+
+
+-- ** E'Type
+
+-- | Enum of 'Text'
+data E'Type
+  = E'Type'Dingtalk -- ^ @"dingtalk"@
+  | E'Type'Discord -- ^ @"discord"@
+  | E'Type'Gitea -- ^ @"gitea"@
+  | E'Type'Gogs -- ^ @"gogs"@
+  | E'Type'Msteams -- ^ @"msteams"@
+  | E'Type'Slack -- ^ @"slack"@
+  | E'Type'Telegram -- ^ @"telegram"@
+  | E'Type'Feishu -- ^ @"feishu"@
+  | E'Type'Wechatwork -- ^ @"wechatwork"@
+  | E'Type'Packagist -- ^ @"packagist"@
+  deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
+
+instance A.ToJSON E'Type where toJSON = A.toJSON . fromE'Type
+instance A.FromJSON E'Type where parseJSON o = P.either P.fail (pure . P.id) . toE'Type =<< A.parseJSON o
+instance WH.ToHttpApiData E'Type where toQueryParam = WH.toQueryParam . fromE'Type
+instance WH.FromHttpApiData E'Type where parseQueryParam o = WH.parseQueryParam o >>= P.left T.pack . toE'Type
+instance MimeRender MimeMultipartFormData E'Type where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | unwrap 'E'Type' enum
+fromE'Type :: E'Type -> Text
+fromE'Type = \case
+  E'Type'Dingtalk -> "dingtalk"
+  E'Type'Discord -> "discord"
+  E'Type'Gitea -> "gitea"
+  E'Type'Gogs -> "gogs"
+  E'Type'Msteams -> "msteams"
+  E'Type'Slack -> "slack"
+  E'Type'Telegram -> "telegram"
+  E'Type'Feishu -> "feishu"
+  E'Type'Wechatwork -> "wechatwork"
+  E'Type'Packagist -> "packagist"
+
+-- | parse 'E'Type' enum
+toE'Type :: Text -> P.Either String E'Type
+toE'Type = \case
+  "dingtalk" -> P.Right E'Type'Dingtalk
+  "discord" -> P.Right E'Type'Discord
+  "gitea" -> P.Right E'Type'Gitea
+  "gogs" -> P.Right E'Type'Gogs
+  "msteams" -> P.Right E'Type'Msteams
+  "slack" -> P.Right E'Type'Slack
+  "telegram" -> P.Right E'Type'Telegram
+  "feishu" -> P.Right E'Type'Feishu
+  "wechatwork" -> P.Right E'Type'Wechatwork
+  "packagist" -> P.Right E'Type'Packagist
+  s -> P.Left $ "toE'Type: enum parse failure: " P.++ P.show s
+
+
+-- ** E'Type2
+
+-- | Enum of 'Text'
+data E'Type2
+  = E'Type2'Cargo -- ^ @"cargo"@
+  | E'Type2'Chef -- ^ @"chef"@
+  | E'Type2'Composer -- ^ @"composer"@
+  | E'Type2'Conan -- ^ @"conan"@
+  | E'Type2'Conda -- ^ @"conda"@
+  | E'Type2'Container -- ^ @"container"@
+  | E'Type2'Generic -- ^ @"generic"@
+  | E'Type2'Helm -- ^ @"helm"@
+  | E'Type2'Maven -- ^ @"maven"@
+  | E'Type2'Npm -- ^ @"npm"@
+  | E'Type2'Nuget -- ^ @"nuget"@
+  | E'Type2'Pub -- ^ @"pub"@
+  | E'Type2'Pypi -- ^ @"pypi"@
+  | E'Type2'Rubygems -- ^ @"rubygems"@
+  | E'Type2'Vagrant -- ^ @"vagrant"@
+  deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
+
+instance A.ToJSON E'Type2 where toJSON = A.toJSON . fromE'Type2
+instance A.FromJSON E'Type2 where parseJSON o = P.either P.fail (pure . P.id) . toE'Type2 =<< A.parseJSON o
+instance WH.ToHttpApiData E'Type2 where toQueryParam = WH.toQueryParam . fromE'Type2
+instance WH.FromHttpApiData E'Type2 where parseQueryParam o = WH.parseQueryParam o >>= P.left T.pack . toE'Type2
+instance MimeRender MimeMultipartFormData E'Type2 where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | unwrap 'E'Type2' enum
+fromE'Type2 :: E'Type2 -> Text
+fromE'Type2 = \case
+  E'Type2'Cargo -> "cargo"
+  E'Type2'Chef -> "chef"
+  E'Type2'Composer -> "composer"
+  E'Type2'Conan -> "conan"
+  E'Type2'Conda -> "conda"
+  E'Type2'Container -> "container"
+  E'Type2'Generic -> "generic"
+  E'Type2'Helm -> "helm"
+  E'Type2'Maven -> "maven"
+  E'Type2'Npm -> "npm"
+  E'Type2'Nuget -> "nuget"
+  E'Type2'Pub -> "pub"
+  E'Type2'Pypi -> "pypi"
+  E'Type2'Rubygems -> "rubygems"
+  E'Type2'Vagrant -> "vagrant"
+
+-- | parse 'E'Type2' enum
+toE'Type2 :: Text -> P.Either String E'Type2
+toE'Type2 = \case
+  "cargo" -> P.Right E'Type2'Cargo
+  "chef" -> P.Right E'Type2'Chef
+  "composer" -> P.Right E'Type2'Composer
+  "conan" -> P.Right E'Type2'Conan
+  "conda" -> P.Right E'Type2'Conda
+  "container" -> P.Right E'Type2'Container
+  "generic" -> P.Right E'Type2'Generic
+  "helm" -> P.Right E'Type2'Helm
+  "maven" -> P.Right E'Type2'Maven
+  "npm" -> P.Right E'Type2'Npm
+  "nuget" -> P.Right E'Type2'Nuget
+  "pub" -> P.Right E'Type2'Pub
+  "pypi" -> P.Right E'Type2'Pypi
+  "rubygems" -> P.Right E'Type2'Rubygems
+  "vagrant" -> P.Right E'Type2'Vagrant
+  s -> P.Left $ "toE'Type2: enum parse failure: " P.++ P.show s
+
+
+-- ** E'Type3
+
+-- | Enum of 'Text'
+data E'Type3
+  = E'Type3'Issues -- ^ @"issues"@
+  | E'Type3'Pulls -- ^ @"pulls"@
+  deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
+
+instance A.ToJSON E'Type3 where toJSON = A.toJSON . fromE'Type3
+instance A.FromJSON E'Type3 where parseJSON o = P.either P.fail (pure . P.id) . toE'Type3 =<< A.parseJSON o
+instance WH.ToHttpApiData E'Type3 where toQueryParam = WH.toQueryParam . fromE'Type3
+instance WH.FromHttpApiData E'Type3 where parseQueryParam o = WH.parseQueryParam o >>= P.left T.pack . toE'Type3
+instance MimeRender MimeMultipartFormData E'Type3 where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | unwrap 'E'Type3' enum
+fromE'Type3 :: E'Type3 -> Text
+fromE'Type3 = \case
+  E'Type3'Issues -> "issues"
+  E'Type3'Pulls -> "pulls"
+
+-- | parse 'E'Type3' enum
+toE'Type3 :: Text -> P.Either String E'Type3
+toE'Type3 = \case
+  "issues" -> P.Right E'Type3'Issues
+  "pulls" -> P.Right E'Type3'Pulls
+  s -> P.Left $ "toE'Type3: enum parse failure: " P.++ P.show s
+
+
+-- ** E'Visibility
+
+-- | Enum of 'Text' .
+-- possible values are `public` (default), `limited` or `private`
+data E'Visibility
+  = E'Visibility'Public -- ^ @"public"@
+  | E'Visibility'Limited -- ^ @"limited"@
+  | E'Visibility'Private -- ^ @"private"@
+  deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
+
+instance A.ToJSON E'Visibility where toJSON = A.toJSON . fromE'Visibility
+instance A.FromJSON E'Visibility where parseJSON o = P.either P.fail (pure . P.id) . toE'Visibility =<< A.parseJSON o
+instance WH.ToHttpApiData E'Visibility where toQueryParam = WH.toQueryParam . fromE'Visibility
+instance WH.FromHttpApiData E'Visibility where parseQueryParam o = WH.parseQueryParam o >>= P.left T.pack . toE'Visibility
+instance MimeRender MimeMultipartFormData E'Visibility where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | unwrap 'E'Visibility' enum
+fromE'Visibility :: E'Visibility -> Text
+fromE'Visibility = \case
+  E'Visibility'Public -> "public"
+  E'Visibility'Limited -> "limited"
+  E'Visibility'Private -> "private"
+
+-- | parse 'E'Visibility' enum
+toE'Visibility :: Text -> P.Either String E'Visibility
+toE'Visibility = \case
+  "public" -> P.Right E'Visibility'Public
+  "limited" -> P.Right E'Visibility'Limited
+  "private" -> P.Right E'Visibility'Private
+  s -> P.Left $ "toE'Visibility: enum parse failure: " P.++ P.show s
+
+
+-- ** E'Whitespace
+
+-- | Enum of 'Text'
+data E'Whitespace
+  = E'Whitespace'Ignore_all -- ^ @"ignore-all"@
+  | E'Whitespace'Ignore_change -- ^ @"ignore-change"@
+  | E'Whitespace'Ignore_eol -- ^ @"ignore-eol"@
+  | E'Whitespace'Show_all -- ^ @"show-all"@
+  deriving (P.Show, P.Eq, P.Typeable, P.Ord, P.Bounded, P.Enum)
+
+instance A.ToJSON E'Whitespace where toJSON = A.toJSON . fromE'Whitespace
+instance A.FromJSON E'Whitespace where parseJSON o = P.either P.fail (pure . P.id) . toE'Whitespace =<< A.parseJSON o
+instance WH.ToHttpApiData E'Whitespace where toQueryParam = WH.toQueryParam . fromE'Whitespace
+instance WH.FromHttpApiData E'Whitespace where parseQueryParam o = WH.parseQueryParam o >>= P.left T.pack . toE'Whitespace
+instance MimeRender MimeMultipartFormData E'Whitespace where mimeRender _ = mimeRenderDefaultMultipartFormData
+
+-- | unwrap 'E'Whitespace' enum
+fromE'Whitespace :: E'Whitespace -> Text
+fromE'Whitespace = \case
+  E'Whitespace'Ignore_all -> "ignore-all"
+  E'Whitespace'Ignore_change -> "ignore-change"
+  E'Whitespace'Ignore_eol -> "ignore-eol"
+  E'Whitespace'Show_all -> "show-all"
+
+-- | parse 'E'Whitespace' enum
+toE'Whitespace :: Text -> P.Either String E'Whitespace
+toE'Whitespace = \case
+  "ignore-all" -> P.Right E'Whitespace'Ignore_all
+  "ignore-change" -> P.Right E'Whitespace'Ignore_change
+  "ignore-eol" -> P.Right E'Whitespace'Ignore_eol
+  "show-all" -> P.Right E'Whitespace'Show_all
+  s -> P.Left $ "toE'Whitespace: enum parse failure: " P.++ P.show s
+
+
+-- * Auth Methods
+
+-- ** AuthApiKeyAccessToken
+data AuthApiKeyAccessToken =
+  AuthApiKeyAccessToken Text -- ^ secret
+  deriving (P.Eq, P.Show, P.Typeable)
+
+instance AuthMethod AuthApiKeyAccessToken where
+  applyAuthMethod _ a@(AuthApiKeyAccessToken secret) req =
+    P.pure $
+    if (P.typeOf a `P.elem` rAuthTypes req)
+      then req `setQuery` toQuery ("access_token", Just secret)
+           & L.over rAuthTypesL (P.filter (/= P.typeOf a))
+      else req
+
+-- ** AuthApiKeyAuthorizationHeaderToken
+data AuthApiKeyAuthorizationHeaderToken =
+  AuthApiKeyAuthorizationHeaderToken Text -- ^ secret
+  deriving (P.Eq, P.Show, P.Typeable)
+
+instance AuthMethod AuthApiKeyAuthorizationHeaderToken where
+  applyAuthMethod _ a@(AuthApiKeyAuthorizationHeaderToken secret) req =
+    P.pure $
+    if (P.typeOf a `P.elem` rAuthTypes req)
+      then req `setHeader` toHeader ("Authorization", secret)
+           & L.over rAuthTypesL (P.filter (/= P.typeOf a))
+      else req
+
+-- ** AuthBasicBasicAuth
+data AuthBasicBasicAuth =
+  AuthBasicBasicAuth B.ByteString B.ByteString -- ^ username password
+  deriving (P.Eq, P.Show, P.Typeable)
+
+instance AuthMethod AuthBasicBasicAuth where
+  applyAuthMethod _ a@(AuthBasicBasicAuth user pw) req =
+    P.pure $
+    if (P.typeOf a `P.elem` rAuthTypes req)
+      then req `setHeader` toHeader ("Authorization", T.decodeUtf8 cred)
+           & L.over rAuthTypesL (P.filter (/= P.typeOf a))
+      else req
+    where cred = BC.append "Basic " (B64.encode $ BC.concat [ user, ":", pw ])
+
+-- ** AuthApiKeySudoHeader
+data AuthApiKeySudoHeader =
+  AuthApiKeySudoHeader Text -- ^ secret
+  deriving (P.Eq, P.Show, P.Typeable)
+
+instance AuthMethod AuthApiKeySudoHeader where
+  applyAuthMethod _ a@(AuthApiKeySudoHeader secret) req =
+    P.pure $
+    if (P.typeOf a `P.elem` rAuthTypes req)
+      then req `setHeader` toHeader ("Sudo", secret)
+           & L.over rAuthTypesL (P.filter (/= P.typeOf a))
+      else req
+
+-- ** AuthApiKeySudoParam
+data AuthApiKeySudoParam =
+  AuthApiKeySudoParam Text -- ^ secret
+  deriving (P.Eq, P.Show, P.Typeable)
+
+instance AuthMethod AuthApiKeySudoParam where
+  applyAuthMethod _ a@(AuthApiKeySudoParam secret) req =
+    P.pure $
+    if (P.typeOf a `P.elem` rAuthTypes req)
+      then req `setQuery` toQuery ("sudo", Just secret)
+           & L.over rAuthTypesL (P.filter (/= P.typeOf a))
+      else req
+
+-- ** AuthApiKeyTOTPHeader
+data AuthApiKeyTOTPHeader =
+  AuthApiKeyTOTPHeader Text -- ^ secret
+  deriving (P.Eq, P.Show, P.Typeable)
+
+instance AuthMethod AuthApiKeyTOTPHeader where
+  applyAuthMethod _ a@(AuthApiKeyTOTPHeader secret) req =
+    P.pure $
+    if (P.typeOf a `P.elem` rAuthTypes req)
+      then req `setHeader` toHeader ("X-GITEA-OTP", secret)
+           & L.over rAuthTypesL (P.filter (/= P.typeOf a))
+      else req
+
+-- ** AuthApiKeyToken
+data AuthApiKeyToken =
+  AuthApiKeyToken Text -- ^ secret
+  deriving (P.Eq, P.Show, P.Typeable)
+
+instance AuthMethod AuthApiKeyToken where
+  applyAuthMethod _ a@(AuthApiKeyToken secret) req =
+    P.pure $
+    if (P.typeOf a `P.elem` rAuthTypes req)
+      then req `setQuery` toQuery ("token", Just secret)
+           & L.over rAuthTypesL (P.filter (/= P.typeOf a))
+      else req
+
+
diff --git a/lib/Gitea/ModelLens.hs b/lib/Gitea/ModelLens.hs
new file mode 100644
--- /dev/null
+++ b/lib/Gitea/ModelLens.hs
@@ -0,0 +1,5849 @@
+{-
+   Gitea API.
+
+   This documentation describes the Gitea API.
+
+   OpenAPI Version: 3.0.1
+   Gitea API. API version: 1.19.4
+   Generated by OpenAPI Generator (https://openapi-generator.tech)
+-}
+
+{-|
+Module : Gitea.Lens
+-}
+
+{-# LANGUAGE KindSignatures #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-matches -fno-warn-unused-binds -fno-warn-unused-imports #-}
+
+module Gitea.ModelLens where
+
+import qualified Data.Aeson as A
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.Data as P (Data, Typeable)
+import qualified Data.Map as Map
+import qualified Data.Set as Set
+import qualified Data.Time as TI
+
+import Data.Text (Text)
+
+import Prelude (($), (.),(<$>),(<*>),(=<<),Maybe(..),Bool(..),Char,Double,FilePath,Float,Int,Integer,String,fmap,undefined,mempty,maybe,pure,Monad,Applicative,Functor)
+import qualified Prelude as P
+
+import Gitea.Model
+import Gitea.Core
+
+
+-- * APIError
+
+-- | 'aPIErrorMessage' Lens
+aPIErrorMessageL :: Lens_' APIError (Maybe Text)
+aPIErrorMessageL f APIError{..} = (\aPIErrorMessage -> APIError { aPIErrorMessage, ..} ) <$> f aPIErrorMessage
+{-# INLINE aPIErrorMessageL #-}
+
+-- | 'aPIErrorUrl' Lens
+aPIErrorUrlL :: Lens_' APIError (Maybe Text)
+aPIErrorUrlL f APIError{..} = (\aPIErrorUrl -> APIError { aPIErrorUrl, ..} ) <$> f aPIErrorUrl
+{-# INLINE aPIErrorUrlL #-}
+
+
+
+-- * AccessToken
+
+-- | 'accessTokenId' Lens
+accessTokenIdL :: Lens_' AccessToken (Maybe Integer)
+accessTokenIdL f AccessToken{..} = (\accessTokenId -> AccessToken { accessTokenId, ..} ) <$> f accessTokenId
+{-# INLINE accessTokenIdL #-}
+
+-- | 'accessTokenName' Lens
+accessTokenNameL :: Lens_' AccessToken (Maybe Text)
+accessTokenNameL f AccessToken{..} = (\accessTokenName -> AccessToken { accessTokenName, ..} ) <$> f accessTokenName
+{-# INLINE accessTokenNameL #-}
+
+-- | 'accessTokenScopes' Lens
+accessTokenScopesL :: Lens_' AccessToken (Maybe [Text])
+accessTokenScopesL f AccessToken{..} = (\accessTokenScopes -> AccessToken { accessTokenScopes, ..} ) <$> f accessTokenScopes
+{-# INLINE accessTokenScopesL #-}
+
+-- | 'accessTokenSha1' Lens
+accessTokenSha1L :: Lens_' AccessToken (Maybe Text)
+accessTokenSha1L f AccessToken{..} = (\accessTokenSha1 -> AccessToken { accessTokenSha1, ..} ) <$> f accessTokenSha1
+{-# INLINE accessTokenSha1L #-}
+
+-- | 'accessTokenTokenLastEight' Lens
+accessTokenTokenLastEightL :: Lens_' AccessToken (Maybe Text)
+accessTokenTokenLastEightL f AccessToken{..} = (\accessTokenTokenLastEight -> AccessToken { accessTokenTokenLastEight, ..} ) <$> f accessTokenTokenLastEight
+{-# INLINE accessTokenTokenLastEightL #-}
+
+
+
+-- * ActivityPub
+
+-- | 'activityPubContext' Lens
+activityPubContextL :: Lens_' ActivityPub (Maybe Text)
+activityPubContextL f ActivityPub{..} = (\activityPubContext -> ActivityPub { activityPubContext, ..} ) <$> f activityPubContext
+{-# INLINE activityPubContextL #-}
+
+
+
+-- * AddCollaboratorOption
+
+-- | 'addCollaboratorOptionPermission' Lens
+addCollaboratorOptionPermissionL :: Lens_' AddCollaboratorOption (Maybe Text)
+addCollaboratorOptionPermissionL f AddCollaboratorOption{..} = (\addCollaboratorOptionPermission -> AddCollaboratorOption { addCollaboratorOptionPermission, ..} ) <$> f addCollaboratorOptionPermission
+{-# INLINE addCollaboratorOptionPermissionL #-}
+
+
+
+-- * AddTimeOption
+
+-- | 'addTimeOptionCreated' Lens
+addTimeOptionCreatedL :: Lens_' AddTimeOption (Maybe DateTime)
+addTimeOptionCreatedL f AddTimeOption{..} = (\addTimeOptionCreated -> AddTimeOption { addTimeOptionCreated, ..} ) <$> f addTimeOptionCreated
+{-# INLINE addTimeOptionCreatedL #-}
+
+-- | 'addTimeOptionTime' Lens
+addTimeOptionTimeL :: Lens_' AddTimeOption (Integer)
+addTimeOptionTimeL f AddTimeOption{..} = (\addTimeOptionTime -> AddTimeOption { addTimeOptionTime, ..} ) <$> f addTimeOptionTime
+{-# INLINE addTimeOptionTimeL #-}
+
+-- | 'addTimeOptionUserName' Lens
+addTimeOptionUserNameL :: Lens_' AddTimeOption (Maybe Text)
+addTimeOptionUserNameL f AddTimeOption{..} = (\addTimeOptionUserName -> AddTimeOption { addTimeOptionUserName, ..} ) <$> f addTimeOptionUserName
+{-# INLINE addTimeOptionUserNameL #-}
+
+
+
+-- * AnnotatedTag
+
+-- | 'annotatedTagMessage' Lens
+annotatedTagMessageL :: Lens_' AnnotatedTag (Maybe Text)
+annotatedTagMessageL f AnnotatedTag{..} = (\annotatedTagMessage -> AnnotatedTag { annotatedTagMessage, ..} ) <$> f annotatedTagMessage
+{-# INLINE annotatedTagMessageL #-}
+
+-- | 'annotatedTagObject' Lens
+annotatedTagObjectL :: Lens_' AnnotatedTag (Maybe AnnotatedTagObject)
+annotatedTagObjectL f AnnotatedTag{..} = (\annotatedTagObject -> AnnotatedTag { annotatedTagObject, ..} ) <$> f annotatedTagObject
+{-# INLINE annotatedTagObjectL #-}
+
+-- | 'annotatedTagSha' Lens
+annotatedTagShaL :: Lens_' AnnotatedTag (Maybe Text)
+annotatedTagShaL f AnnotatedTag{..} = (\annotatedTagSha -> AnnotatedTag { annotatedTagSha, ..} ) <$> f annotatedTagSha
+{-# INLINE annotatedTagShaL #-}
+
+-- | 'annotatedTagTag' Lens
+annotatedTagTagL :: Lens_' AnnotatedTag (Maybe Text)
+annotatedTagTagL f AnnotatedTag{..} = (\annotatedTagTag -> AnnotatedTag { annotatedTagTag, ..} ) <$> f annotatedTagTag
+{-# INLINE annotatedTagTagL #-}
+
+-- | 'annotatedTagTagger' Lens
+annotatedTagTaggerL :: Lens_' AnnotatedTag (Maybe CommitUser)
+annotatedTagTaggerL f AnnotatedTag{..} = (\annotatedTagTagger -> AnnotatedTag { annotatedTagTagger, ..} ) <$> f annotatedTagTagger
+{-# INLINE annotatedTagTaggerL #-}
+
+-- | 'annotatedTagUrl' Lens
+annotatedTagUrlL :: Lens_' AnnotatedTag (Maybe Text)
+annotatedTagUrlL f AnnotatedTag{..} = (\annotatedTagUrl -> AnnotatedTag { annotatedTagUrl, ..} ) <$> f annotatedTagUrl
+{-# INLINE annotatedTagUrlL #-}
+
+-- | 'annotatedTagVerification' Lens
+annotatedTagVerificationL :: Lens_' AnnotatedTag (Maybe PayloadCommitVerification)
+annotatedTagVerificationL f AnnotatedTag{..} = (\annotatedTagVerification -> AnnotatedTag { annotatedTagVerification, ..} ) <$> f annotatedTagVerification
+{-# INLINE annotatedTagVerificationL #-}
+
+
+
+-- * AnnotatedTagObject
+
+-- | 'annotatedTagObjectSha' Lens
+annotatedTagObjectShaL :: Lens_' AnnotatedTagObject (Maybe Text)
+annotatedTagObjectShaL f AnnotatedTagObject{..} = (\annotatedTagObjectSha -> AnnotatedTagObject { annotatedTagObjectSha, ..} ) <$> f annotatedTagObjectSha
+{-# INLINE annotatedTagObjectShaL #-}
+
+-- | 'annotatedTagObjectType' Lens
+annotatedTagObjectTypeL :: Lens_' AnnotatedTagObject (Maybe Text)
+annotatedTagObjectTypeL f AnnotatedTagObject{..} = (\annotatedTagObjectType -> AnnotatedTagObject { annotatedTagObjectType, ..} ) <$> f annotatedTagObjectType
+{-# INLINE annotatedTagObjectTypeL #-}
+
+-- | 'annotatedTagObjectUrl' Lens
+annotatedTagObjectUrlL :: Lens_' AnnotatedTagObject (Maybe Text)
+annotatedTagObjectUrlL f AnnotatedTagObject{..} = (\annotatedTagObjectUrl -> AnnotatedTagObject { annotatedTagObjectUrl, ..} ) <$> f annotatedTagObjectUrl
+{-# INLINE annotatedTagObjectUrlL #-}
+
+
+
+-- * Attachment
+
+-- | 'attachmentBrowserDownloadUrl' Lens
+attachmentBrowserDownloadUrlL :: Lens_' Attachment (Maybe Text)
+attachmentBrowserDownloadUrlL f Attachment{..} = (\attachmentBrowserDownloadUrl -> Attachment { attachmentBrowserDownloadUrl, ..} ) <$> f attachmentBrowserDownloadUrl
+{-# INLINE attachmentBrowserDownloadUrlL #-}
+
+-- | 'attachmentCreatedAt' Lens
+attachmentCreatedAtL :: Lens_' Attachment (Maybe DateTime)
+attachmentCreatedAtL f Attachment{..} = (\attachmentCreatedAt -> Attachment { attachmentCreatedAt, ..} ) <$> f attachmentCreatedAt
+{-# INLINE attachmentCreatedAtL #-}
+
+-- | 'attachmentDownloadCount' Lens
+attachmentDownloadCountL :: Lens_' Attachment (Maybe Integer)
+attachmentDownloadCountL f Attachment{..} = (\attachmentDownloadCount -> Attachment { attachmentDownloadCount, ..} ) <$> f attachmentDownloadCount
+{-# INLINE attachmentDownloadCountL #-}
+
+-- | 'attachmentId' Lens
+attachmentIdL :: Lens_' Attachment (Maybe Integer)
+attachmentIdL f Attachment{..} = (\attachmentId -> Attachment { attachmentId, ..} ) <$> f attachmentId
+{-# INLINE attachmentIdL #-}
+
+-- | 'attachmentName' Lens
+attachmentNameL :: Lens_' Attachment (Maybe Text)
+attachmentNameL f Attachment{..} = (\attachmentName -> Attachment { attachmentName, ..} ) <$> f attachmentName
+{-# INLINE attachmentNameL #-}
+
+-- | 'attachmentSize' Lens
+attachmentSizeL :: Lens_' Attachment (Maybe Integer)
+attachmentSizeL f Attachment{..} = (\attachmentSize -> Attachment { attachmentSize, ..} ) <$> f attachmentSize
+{-# INLINE attachmentSizeL #-}
+
+-- | 'attachmentUuid' Lens
+attachmentUuidL :: Lens_' Attachment (Maybe Text)
+attachmentUuidL f Attachment{..} = (\attachmentUuid -> Attachment { attachmentUuid, ..} ) <$> f attachmentUuid
+{-# INLINE attachmentUuidL #-}
+
+
+
+-- * Branch
+
+-- | 'branchCommit' Lens
+branchCommitL :: Lens_' Branch (Maybe PayloadCommit)
+branchCommitL f Branch{..} = (\branchCommit -> Branch { branchCommit, ..} ) <$> f branchCommit
+{-# INLINE branchCommitL #-}
+
+-- | 'branchEffectiveBranchProtectionName' Lens
+branchEffectiveBranchProtectionNameL :: Lens_' Branch (Maybe Text)
+branchEffectiveBranchProtectionNameL f Branch{..} = (\branchEffectiveBranchProtectionName -> Branch { branchEffectiveBranchProtectionName, ..} ) <$> f branchEffectiveBranchProtectionName
+{-# INLINE branchEffectiveBranchProtectionNameL #-}
+
+-- | 'branchEnableStatusCheck' Lens
+branchEnableStatusCheckL :: Lens_' Branch (Maybe Bool)
+branchEnableStatusCheckL f Branch{..} = (\branchEnableStatusCheck -> Branch { branchEnableStatusCheck, ..} ) <$> f branchEnableStatusCheck
+{-# INLINE branchEnableStatusCheckL #-}
+
+-- | 'branchName' Lens
+branchNameL :: Lens_' Branch (Maybe Text)
+branchNameL f Branch{..} = (\branchName -> Branch { branchName, ..} ) <$> f branchName
+{-# INLINE branchNameL #-}
+
+-- | 'branchProtected' Lens
+branchProtectedL :: Lens_' Branch (Maybe Bool)
+branchProtectedL f Branch{..} = (\branchProtected -> Branch { branchProtected, ..} ) <$> f branchProtected
+{-# INLINE branchProtectedL #-}
+
+-- | 'branchRequiredApprovals' Lens
+branchRequiredApprovalsL :: Lens_' Branch (Maybe Integer)
+branchRequiredApprovalsL f Branch{..} = (\branchRequiredApprovals -> Branch { branchRequiredApprovals, ..} ) <$> f branchRequiredApprovals
+{-# INLINE branchRequiredApprovalsL #-}
+
+-- | 'branchStatusCheckContexts' Lens
+branchStatusCheckContextsL :: Lens_' Branch (Maybe [Text])
+branchStatusCheckContextsL f Branch{..} = (\branchStatusCheckContexts -> Branch { branchStatusCheckContexts, ..} ) <$> f branchStatusCheckContexts
+{-# INLINE branchStatusCheckContextsL #-}
+
+-- | 'branchUserCanMerge' Lens
+branchUserCanMergeL :: Lens_' Branch (Maybe Bool)
+branchUserCanMergeL f Branch{..} = (\branchUserCanMerge -> Branch { branchUserCanMerge, ..} ) <$> f branchUserCanMerge
+{-# INLINE branchUserCanMergeL #-}
+
+-- | 'branchUserCanPush' Lens
+branchUserCanPushL :: Lens_' Branch (Maybe Bool)
+branchUserCanPushL f Branch{..} = (\branchUserCanPush -> Branch { branchUserCanPush, ..} ) <$> f branchUserCanPush
+{-# INLINE branchUserCanPushL #-}
+
+
+
+-- * BranchProtection
+
+-- | 'branchProtectionApprovalsWhitelistTeams' Lens
+branchProtectionApprovalsWhitelistTeamsL :: Lens_' BranchProtection (Maybe [Text])
+branchProtectionApprovalsWhitelistTeamsL f BranchProtection{..} = (\branchProtectionApprovalsWhitelistTeams -> BranchProtection { branchProtectionApprovalsWhitelistTeams, ..} ) <$> f branchProtectionApprovalsWhitelistTeams
+{-# INLINE branchProtectionApprovalsWhitelistTeamsL #-}
+
+-- | 'branchProtectionApprovalsWhitelistUsername' Lens
+branchProtectionApprovalsWhitelistUsernameL :: Lens_' BranchProtection (Maybe [Text])
+branchProtectionApprovalsWhitelistUsernameL f BranchProtection{..} = (\branchProtectionApprovalsWhitelistUsername -> BranchProtection { branchProtectionApprovalsWhitelistUsername, ..} ) <$> f branchProtectionApprovalsWhitelistUsername
+{-# INLINE branchProtectionApprovalsWhitelistUsernameL #-}
+
+-- | 'branchProtectionBlockOnOfficialReviewRequests' Lens
+branchProtectionBlockOnOfficialReviewRequestsL :: Lens_' BranchProtection (Maybe Bool)
+branchProtectionBlockOnOfficialReviewRequestsL f BranchProtection{..} = (\branchProtectionBlockOnOfficialReviewRequests -> BranchProtection { branchProtectionBlockOnOfficialReviewRequests, ..} ) <$> f branchProtectionBlockOnOfficialReviewRequests
+{-# INLINE branchProtectionBlockOnOfficialReviewRequestsL #-}
+
+-- | 'branchProtectionBlockOnOutdatedBranch' Lens
+branchProtectionBlockOnOutdatedBranchL :: Lens_' BranchProtection (Maybe Bool)
+branchProtectionBlockOnOutdatedBranchL f BranchProtection{..} = (\branchProtectionBlockOnOutdatedBranch -> BranchProtection { branchProtectionBlockOnOutdatedBranch, ..} ) <$> f branchProtectionBlockOnOutdatedBranch
+{-# INLINE branchProtectionBlockOnOutdatedBranchL #-}
+
+-- | 'branchProtectionBlockOnRejectedReviews' Lens
+branchProtectionBlockOnRejectedReviewsL :: Lens_' BranchProtection (Maybe Bool)
+branchProtectionBlockOnRejectedReviewsL f BranchProtection{..} = (\branchProtectionBlockOnRejectedReviews -> BranchProtection { branchProtectionBlockOnRejectedReviews, ..} ) <$> f branchProtectionBlockOnRejectedReviews
+{-# INLINE branchProtectionBlockOnRejectedReviewsL #-}
+
+-- | 'branchProtectionBranchName' Lens
+branchProtectionBranchNameL :: Lens_' BranchProtection (Maybe Text)
+branchProtectionBranchNameL f BranchProtection{..} = (\branchProtectionBranchName -> BranchProtection { branchProtectionBranchName, ..} ) <$> f branchProtectionBranchName
+{-# INLINE branchProtectionBranchNameL #-}
+
+-- | 'branchProtectionCreatedAt' Lens
+branchProtectionCreatedAtL :: Lens_' BranchProtection (Maybe DateTime)
+branchProtectionCreatedAtL f BranchProtection{..} = (\branchProtectionCreatedAt -> BranchProtection { branchProtectionCreatedAt, ..} ) <$> f branchProtectionCreatedAt
+{-# INLINE branchProtectionCreatedAtL #-}
+
+-- | 'branchProtectionDismissStaleApprovals' Lens
+branchProtectionDismissStaleApprovalsL :: Lens_' BranchProtection (Maybe Bool)
+branchProtectionDismissStaleApprovalsL f BranchProtection{..} = (\branchProtectionDismissStaleApprovals -> BranchProtection { branchProtectionDismissStaleApprovals, ..} ) <$> f branchProtectionDismissStaleApprovals
+{-# INLINE branchProtectionDismissStaleApprovalsL #-}
+
+-- | 'branchProtectionEnableApprovalsWhitelist' Lens
+branchProtectionEnableApprovalsWhitelistL :: Lens_' BranchProtection (Maybe Bool)
+branchProtectionEnableApprovalsWhitelistL f BranchProtection{..} = (\branchProtectionEnableApprovalsWhitelist -> BranchProtection { branchProtectionEnableApprovalsWhitelist, ..} ) <$> f branchProtectionEnableApprovalsWhitelist
+{-# INLINE branchProtectionEnableApprovalsWhitelistL #-}
+
+-- | 'branchProtectionEnableMergeWhitelist' Lens
+branchProtectionEnableMergeWhitelistL :: Lens_' BranchProtection (Maybe Bool)
+branchProtectionEnableMergeWhitelistL f BranchProtection{..} = (\branchProtectionEnableMergeWhitelist -> BranchProtection { branchProtectionEnableMergeWhitelist, ..} ) <$> f branchProtectionEnableMergeWhitelist
+{-# INLINE branchProtectionEnableMergeWhitelistL #-}
+
+-- | 'branchProtectionEnablePush' Lens
+branchProtectionEnablePushL :: Lens_' BranchProtection (Maybe Bool)
+branchProtectionEnablePushL f BranchProtection{..} = (\branchProtectionEnablePush -> BranchProtection { branchProtectionEnablePush, ..} ) <$> f branchProtectionEnablePush
+{-# INLINE branchProtectionEnablePushL #-}
+
+-- | 'branchProtectionEnablePushWhitelist' Lens
+branchProtectionEnablePushWhitelistL :: Lens_' BranchProtection (Maybe Bool)
+branchProtectionEnablePushWhitelistL f BranchProtection{..} = (\branchProtectionEnablePushWhitelist -> BranchProtection { branchProtectionEnablePushWhitelist, ..} ) <$> f branchProtectionEnablePushWhitelist
+{-# INLINE branchProtectionEnablePushWhitelistL #-}
+
+-- | 'branchProtectionEnableStatusCheck' Lens
+branchProtectionEnableStatusCheckL :: Lens_' BranchProtection (Maybe Bool)
+branchProtectionEnableStatusCheckL f BranchProtection{..} = (\branchProtectionEnableStatusCheck -> BranchProtection { branchProtectionEnableStatusCheck, ..} ) <$> f branchProtectionEnableStatusCheck
+{-# INLINE branchProtectionEnableStatusCheckL #-}
+
+-- | 'branchProtectionMergeWhitelistTeams' Lens
+branchProtectionMergeWhitelistTeamsL :: Lens_' BranchProtection (Maybe [Text])
+branchProtectionMergeWhitelistTeamsL f BranchProtection{..} = (\branchProtectionMergeWhitelistTeams -> BranchProtection { branchProtectionMergeWhitelistTeams, ..} ) <$> f branchProtectionMergeWhitelistTeams
+{-# INLINE branchProtectionMergeWhitelistTeamsL #-}
+
+-- | 'branchProtectionMergeWhitelistUsernames' Lens
+branchProtectionMergeWhitelistUsernamesL :: Lens_' BranchProtection (Maybe [Text])
+branchProtectionMergeWhitelistUsernamesL f BranchProtection{..} = (\branchProtectionMergeWhitelistUsernames -> BranchProtection { branchProtectionMergeWhitelistUsernames, ..} ) <$> f branchProtectionMergeWhitelistUsernames
+{-# INLINE branchProtectionMergeWhitelistUsernamesL #-}
+
+-- | 'branchProtectionProtectedFilePatterns' Lens
+branchProtectionProtectedFilePatternsL :: Lens_' BranchProtection (Maybe Text)
+branchProtectionProtectedFilePatternsL f BranchProtection{..} = (\branchProtectionProtectedFilePatterns -> BranchProtection { branchProtectionProtectedFilePatterns, ..} ) <$> f branchProtectionProtectedFilePatterns
+{-# INLINE branchProtectionProtectedFilePatternsL #-}
+
+-- | 'branchProtectionPushWhitelistDeployKeys' Lens
+branchProtectionPushWhitelistDeployKeysL :: Lens_' BranchProtection (Maybe Bool)
+branchProtectionPushWhitelistDeployKeysL f BranchProtection{..} = (\branchProtectionPushWhitelistDeployKeys -> BranchProtection { branchProtectionPushWhitelistDeployKeys, ..} ) <$> f branchProtectionPushWhitelistDeployKeys
+{-# INLINE branchProtectionPushWhitelistDeployKeysL #-}
+
+-- | 'branchProtectionPushWhitelistTeams' Lens
+branchProtectionPushWhitelistTeamsL :: Lens_' BranchProtection (Maybe [Text])
+branchProtectionPushWhitelistTeamsL f BranchProtection{..} = (\branchProtectionPushWhitelistTeams -> BranchProtection { branchProtectionPushWhitelistTeams, ..} ) <$> f branchProtectionPushWhitelistTeams
+{-# INLINE branchProtectionPushWhitelistTeamsL #-}
+
+-- | 'branchProtectionPushWhitelistUsernames' Lens
+branchProtectionPushWhitelistUsernamesL :: Lens_' BranchProtection (Maybe [Text])
+branchProtectionPushWhitelistUsernamesL f BranchProtection{..} = (\branchProtectionPushWhitelistUsernames -> BranchProtection { branchProtectionPushWhitelistUsernames, ..} ) <$> f branchProtectionPushWhitelistUsernames
+{-# INLINE branchProtectionPushWhitelistUsernamesL #-}
+
+-- | 'branchProtectionRequireSignedCommits' Lens
+branchProtectionRequireSignedCommitsL :: Lens_' BranchProtection (Maybe Bool)
+branchProtectionRequireSignedCommitsL f BranchProtection{..} = (\branchProtectionRequireSignedCommits -> BranchProtection { branchProtectionRequireSignedCommits, ..} ) <$> f branchProtectionRequireSignedCommits
+{-# INLINE branchProtectionRequireSignedCommitsL #-}
+
+-- | 'branchProtectionRequiredApprovals' Lens
+branchProtectionRequiredApprovalsL :: Lens_' BranchProtection (Maybe Integer)
+branchProtectionRequiredApprovalsL f BranchProtection{..} = (\branchProtectionRequiredApprovals -> BranchProtection { branchProtectionRequiredApprovals, ..} ) <$> f branchProtectionRequiredApprovals
+{-# INLINE branchProtectionRequiredApprovalsL #-}
+
+-- | 'branchProtectionRuleName' Lens
+branchProtectionRuleNameL :: Lens_' BranchProtection (Maybe Text)
+branchProtectionRuleNameL f BranchProtection{..} = (\branchProtectionRuleName -> BranchProtection { branchProtectionRuleName, ..} ) <$> f branchProtectionRuleName
+{-# INLINE branchProtectionRuleNameL #-}
+
+-- | 'branchProtectionStatusCheckContexts' Lens
+branchProtectionStatusCheckContextsL :: Lens_' BranchProtection (Maybe [Text])
+branchProtectionStatusCheckContextsL f BranchProtection{..} = (\branchProtectionStatusCheckContexts -> BranchProtection { branchProtectionStatusCheckContexts, ..} ) <$> f branchProtectionStatusCheckContexts
+{-# INLINE branchProtectionStatusCheckContextsL #-}
+
+-- | 'branchProtectionUnprotectedFilePatterns' Lens
+branchProtectionUnprotectedFilePatternsL :: Lens_' BranchProtection (Maybe Text)
+branchProtectionUnprotectedFilePatternsL f BranchProtection{..} = (\branchProtectionUnprotectedFilePatterns -> BranchProtection { branchProtectionUnprotectedFilePatterns, ..} ) <$> f branchProtectionUnprotectedFilePatterns
+{-# INLINE branchProtectionUnprotectedFilePatternsL #-}
+
+-- | 'branchProtectionUpdatedAt' Lens
+branchProtectionUpdatedAtL :: Lens_' BranchProtection (Maybe DateTime)
+branchProtectionUpdatedAtL f BranchProtection{..} = (\branchProtectionUpdatedAt -> BranchProtection { branchProtectionUpdatedAt, ..} ) <$> f branchProtectionUpdatedAt
+{-# INLINE branchProtectionUpdatedAtL #-}
+
+
+
+-- * ChangedFile
+
+-- | 'changedFileAdditions' Lens
+changedFileAdditionsL :: Lens_' ChangedFile (Maybe Integer)
+changedFileAdditionsL f ChangedFile{..} = (\changedFileAdditions -> ChangedFile { changedFileAdditions, ..} ) <$> f changedFileAdditions
+{-# INLINE changedFileAdditionsL #-}
+
+-- | 'changedFileChanges' Lens
+changedFileChangesL :: Lens_' ChangedFile (Maybe Integer)
+changedFileChangesL f ChangedFile{..} = (\changedFileChanges -> ChangedFile { changedFileChanges, ..} ) <$> f changedFileChanges
+{-# INLINE changedFileChangesL #-}
+
+-- | 'changedFileContentsUrl' Lens
+changedFileContentsUrlL :: Lens_' ChangedFile (Maybe Text)
+changedFileContentsUrlL f ChangedFile{..} = (\changedFileContentsUrl -> ChangedFile { changedFileContentsUrl, ..} ) <$> f changedFileContentsUrl
+{-# INLINE changedFileContentsUrlL #-}
+
+-- | 'changedFileDeletions' Lens
+changedFileDeletionsL :: Lens_' ChangedFile (Maybe Integer)
+changedFileDeletionsL f ChangedFile{..} = (\changedFileDeletions -> ChangedFile { changedFileDeletions, ..} ) <$> f changedFileDeletions
+{-# INLINE changedFileDeletionsL #-}
+
+-- | 'changedFileFilename' Lens
+changedFileFilenameL :: Lens_' ChangedFile (Maybe Text)
+changedFileFilenameL f ChangedFile{..} = (\changedFileFilename -> ChangedFile { changedFileFilename, ..} ) <$> f changedFileFilename
+{-# INLINE changedFileFilenameL #-}
+
+-- | 'changedFileHtmlUrl' Lens
+changedFileHtmlUrlL :: Lens_' ChangedFile (Maybe Text)
+changedFileHtmlUrlL f ChangedFile{..} = (\changedFileHtmlUrl -> ChangedFile { changedFileHtmlUrl, ..} ) <$> f changedFileHtmlUrl
+{-# INLINE changedFileHtmlUrlL #-}
+
+-- | 'changedFilePreviousFilename' Lens
+changedFilePreviousFilenameL :: Lens_' ChangedFile (Maybe Text)
+changedFilePreviousFilenameL f ChangedFile{..} = (\changedFilePreviousFilename -> ChangedFile { changedFilePreviousFilename, ..} ) <$> f changedFilePreviousFilename
+{-# INLINE changedFilePreviousFilenameL #-}
+
+-- | 'changedFileRawUrl' Lens
+changedFileRawUrlL :: Lens_' ChangedFile (Maybe Text)
+changedFileRawUrlL f ChangedFile{..} = (\changedFileRawUrl -> ChangedFile { changedFileRawUrl, ..} ) <$> f changedFileRawUrl
+{-# INLINE changedFileRawUrlL #-}
+
+-- | 'changedFileStatus' Lens
+changedFileStatusL :: Lens_' ChangedFile (Maybe Text)
+changedFileStatusL f ChangedFile{..} = (\changedFileStatus -> ChangedFile { changedFileStatus, ..} ) <$> f changedFileStatus
+{-# INLINE changedFileStatusL #-}
+
+
+
+-- * CombinedStatus
+
+-- | 'combinedStatusCommitUrl' Lens
+combinedStatusCommitUrlL :: Lens_' CombinedStatus (Maybe Text)
+combinedStatusCommitUrlL f CombinedStatus{..} = (\combinedStatusCommitUrl -> CombinedStatus { combinedStatusCommitUrl, ..} ) <$> f combinedStatusCommitUrl
+{-# INLINE combinedStatusCommitUrlL #-}
+
+-- | 'combinedStatusRepository' Lens
+combinedStatusRepositoryL :: Lens_' CombinedStatus (Maybe Repository)
+combinedStatusRepositoryL f CombinedStatus{..} = (\combinedStatusRepository -> CombinedStatus { combinedStatusRepository, ..} ) <$> f combinedStatusRepository
+{-# INLINE combinedStatusRepositoryL #-}
+
+-- | 'combinedStatusSha' Lens
+combinedStatusShaL :: Lens_' CombinedStatus (Maybe Text)
+combinedStatusShaL f CombinedStatus{..} = (\combinedStatusSha -> CombinedStatus { combinedStatusSha, ..} ) <$> f combinedStatusSha
+{-# INLINE combinedStatusShaL #-}
+
+-- | 'combinedStatusState' Lens
+combinedStatusStateL :: Lens_' CombinedStatus (Maybe Text)
+combinedStatusStateL f CombinedStatus{..} = (\combinedStatusState -> CombinedStatus { combinedStatusState, ..} ) <$> f combinedStatusState
+{-# INLINE combinedStatusStateL #-}
+
+-- | 'combinedStatusStatuses' Lens
+combinedStatusStatusesL :: Lens_' CombinedStatus (Maybe [CommitStatus])
+combinedStatusStatusesL f CombinedStatus{..} = (\combinedStatusStatuses -> CombinedStatus { combinedStatusStatuses, ..} ) <$> f combinedStatusStatuses
+{-# INLINE combinedStatusStatusesL #-}
+
+-- | 'combinedStatusTotalCount' Lens
+combinedStatusTotalCountL :: Lens_' CombinedStatus (Maybe Integer)
+combinedStatusTotalCountL f CombinedStatus{..} = (\combinedStatusTotalCount -> CombinedStatus { combinedStatusTotalCount, ..} ) <$> f combinedStatusTotalCount
+{-# INLINE combinedStatusTotalCountL #-}
+
+-- | 'combinedStatusUrl' Lens
+combinedStatusUrlL :: Lens_' CombinedStatus (Maybe Text)
+combinedStatusUrlL f CombinedStatus{..} = (\combinedStatusUrl -> CombinedStatus { combinedStatusUrl, ..} ) <$> f combinedStatusUrl
+{-# INLINE combinedStatusUrlL #-}
+
+
+
+-- * Comment
+
+-- | 'commentAssets' Lens
+commentAssetsL :: Lens_' Comment (Maybe [Attachment])
+commentAssetsL f Comment{..} = (\commentAssets -> Comment { commentAssets, ..} ) <$> f commentAssets
+{-# INLINE commentAssetsL #-}
+
+-- | 'commentBody' Lens
+commentBodyL :: Lens_' Comment (Maybe Text)
+commentBodyL f Comment{..} = (\commentBody -> Comment { commentBody, ..} ) <$> f commentBody
+{-# INLINE commentBodyL #-}
+
+-- | 'commentCreatedAt' Lens
+commentCreatedAtL :: Lens_' Comment (Maybe DateTime)
+commentCreatedAtL f Comment{..} = (\commentCreatedAt -> Comment { commentCreatedAt, ..} ) <$> f commentCreatedAt
+{-# INLINE commentCreatedAtL #-}
+
+-- | 'commentHtmlUrl' Lens
+commentHtmlUrlL :: Lens_' Comment (Maybe Text)
+commentHtmlUrlL f Comment{..} = (\commentHtmlUrl -> Comment { commentHtmlUrl, ..} ) <$> f commentHtmlUrl
+{-# INLINE commentHtmlUrlL #-}
+
+-- | 'commentId' Lens
+commentIdL :: Lens_' Comment (Maybe Integer)
+commentIdL f Comment{..} = (\commentId -> Comment { commentId, ..} ) <$> f commentId
+{-# INLINE commentIdL #-}
+
+-- | 'commentIssueUrl' Lens
+commentIssueUrlL :: Lens_' Comment (Maybe Text)
+commentIssueUrlL f Comment{..} = (\commentIssueUrl -> Comment { commentIssueUrl, ..} ) <$> f commentIssueUrl
+{-# INLINE commentIssueUrlL #-}
+
+-- | 'commentOriginalAuthor' Lens
+commentOriginalAuthorL :: Lens_' Comment (Maybe Text)
+commentOriginalAuthorL f Comment{..} = (\commentOriginalAuthor -> Comment { commentOriginalAuthor, ..} ) <$> f commentOriginalAuthor
+{-# INLINE commentOriginalAuthorL #-}
+
+-- | 'commentOriginalAuthorId' Lens
+commentOriginalAuthorIdL :: Lens_' Comment (Maybe Integer)
+commentOriginalAuthorIdL f Comment{..} = (\commentOriginalAuthorId -> Comment { commentOriginalAuthorId, ..} ) <$> f commentOriginalAuthorId
+{-# INLINE commentOriginalAuthorIdL #-}
+
+-- | 'commentPullRequestUrl' Lens
+commentPullRequestUrlL :: Lens_' Comment (Maybe Text)
+commentPullRequestUrlL f Comment{..} = (\commentPullRequestUrl -> Comment { commentPullRequestUrl, ..} ) <$> f commentPullRequestUrl
+{-# INLINE commentPullRequestUrlL #-}
+
+-- | 'commentUpdatedAt' Lens
+commentUpdatedAtL :: Lens_' Comment (Maybe DateTime)
+commentUpdatedAtL f Comment{..} = (\commentUpdatedAt -> Comment { commentUpdatedAt, ..} ) <$> f commentUpdatedAt
+{-# INLINE commentUpdatedAtL #-}
+
+-- | 'commentUser' Lens
+commentUserL :: Lens_' Comment (Maybe User)
+commentUserL f Comment{..} = (\commentUser -> Comment { commentUser, ..} ) <$> f commentUser
+{-# INLINE commentUserL #-}
+
+
+
+-- * Commit
+
+-- | 'commitAuthor' Lens
+commitAuthorL :: Lens_' Commit (Maybe User)
+commitAuthorL f Commit{..} = (\commitAuthor -> Commit { commitAuthor, ..} ) <$> f commitAuthor
+{-# INLINE commitAuthorL #-}
+
+-- | 'commitCommit' Lens
+commitCommitL :: Lens_' Commit (Maybe RepoCommit)
+commitCommitL f Commit{..} = (\commitCommit -> Commit { commitCommit, ..} ) <$> f commitCommit
+{-# INLINE commitCommitL #-}
+
+-- | 'commitCommitter' Lens
+commitCommitterL :: Lens_' Commit (Maybe User)
+commitCommitterL f Commit{..} = (\commitCommitter -> Commit { commitCommitter, ..} ) <$> f commitCommitter
+{-# INLINE commitCommitterL #-}
+
+-- | 'commitCreated' Lens
+commitCreatedL :: Lens_' Commit (Maybe DateTime)
+commitCreatedL f Commit{..} = (\commitCreated -> Commit { commitCreated, ..} ) <$> f commitCreated
+{-# INLINE commitCreatedL #-}
+
+-- | 'commitFiles' Lens
+commitFilesL :: Lens_' Commit (Maybe [CommitAffectedFiles])
+commitFilesL f Commit{..} = (\commitFiles -> Commit { commitFiles, ..} ) <$> f commitFiles
+{-# INLINE commitFilesL #-}
+
+-- | 'commitHtmlUrl' Lens
+commitHtmlUrlL :: Lens_' Commit (Maybe Text)
+commitHtmlUrlL f Commit{..} = (\commitHtmlUrl -> Commit { commitHtmlUrl, ..} ) <$> f commitHtmlUrl
+{-# INLINE commitHtmlUrlL #-}
+
+-- | 'commitParents' Lens
+commitParentsL :: Lens_' Commit (Maybe [CommitMeta])
+commitParentsL f Commit{..} = (\commitParents -> Commit { commitParents, ..} ) <$> f commitParents
+{-# INLINE commitParentsL #-}
+
+-- | 'commitSha' Lens
+commitShaL :: Lens_' Commit (Maybe Text)
+commitShaL f Commit{..} = (\commitSha -> Commit { commitSha, ..} ) <$> f commitSha
+{-# INLINE commitShaL #-}
+
+-- | 'commitStats' Lens
+commitStatsL :: Lens_' Commit (Maybe CommitStats)
+commitStatsL f Commit{..} = (\commitStats -> Commit { commitStats, ..} ) <$> f commitStats
+{-# INLINE commitStatsL #-}
+
+-- | 'commitUrl' Lens
+commitUrlL :: Lens_' Commit (Maybe Text)
+commitUrlL f Commit{..} = (\commitUrl -> Commit { commitUrl, ..} ) <$> f commitUrl
+{-# INLINE commitUrlL #-}
+
+
+
+-- * CommitAffectedFiles
+
+-- | 'commitAffectedFilesFilename' Lens
+commitAffectedFilesFilenameL :: Lens_' CommitAffectedFiles (Maybe Text)
+commitAffectedFilesFilenameL f CommitAffectedFiles{..} = (\commitAffectedFilesFilename -> CommitAffectedFiles { commitAffectedFilesFilename, ..} ) <$> f commitAffectedFilesFilename
+{-# INLINE commitAffectedFilesFilenameL #-}
+
+
+
+-- * CommitDateOptions
+
+-- | 'commitDateOptionsAuthor' Lens
+commitDateOptionsAuthorL :: Lens_' CommitDateOptions (Maybe DateTime)
+commitDateOptionsAuthorL f CommitDateOptions{..} = (\commitDateOptionsAuthor -> CommitDateOptions { commitDateOptionsAuthor, ..} ) <$> f commitDateOptionsAuthor
+{-# INLINE commitDateOptionsAuthorL #-}
+
+-- | 'commitDateOptionsCommitter' Lens
+commitDateOptionsCommitterL :: Lens_' CommitDateOptions (Maybe DateTime)
+commitDateOptionsCommitterL f CommitDateOptions{..} = (\commitDateOptionsCommitter -> CommitDateOptions { commitDateOptionsCommitter, ..} ) <$> f commitDateOptionsCommitter
+{-# INLINE commitDateOptionsCommitterL #-}
+
+
+
+-- * CommitMeta
+
+-- | 'commitMetaCreated' Lens
+commitMetaCreatedL :: Lens_' CommitMeta (Maybe DateTime)
+commitMetaCreatedL f CommitMeta{..} = (\commitMetaCreated -> CommitMeta { commitMetaCreated, ..} ) <$> f commitMetaCreated
+{-# INLINE commitMetaCreatedL #-}
+
+-- | 'commitMetaSha' Lens
+commitMetaShaL :: Lens_' CommitMeta (Maybe Text)
+commitMetaShaL f CommitMeta{..} = (\commitMetaSha -> CommitMeta { commitMetaSha, ..} ) <$> f commitMetaSha
+{-# INLINE commitMetaShaL #-}
+
+-- | 'commitMetaUrl' Lens
+commitMetaUrlL :: Lens_' CommitMeta (Maybe Text)
+commitMetaUrlL f CommitMeta{..} = (\commitMetaUrl -> CommitMeta { commitMetaUrl, ..} ) <$> f commitMetaUrl
+{-# INLINE commitMetaUrlL #-}
+
+
+
+-- * CommitStats
+
+-- | 'commitStatsAdditions' Lens
+commitStatsAdditionsL :: Lens_' CommitStats (Maybe Integer)
+commitStatsAdditionsL f CommitStats{..} = (\commitStatsAdditions -> CommitStats { commitStatsAdditions, ..} ) <$> f commitStatsAdditions
+{-# INLINE commitStatsAdditionsL #-}
+
+-- | 'commitStatsDeletions' Lens
+commitStatsDeletionsL :: Lens_' CommitStats (Maybe Integer)
+commitStatsDeletionsL f CommitStats{..} = (\commitStatsDeletions -> CommitStats { commitStatsDeletions, ..} ) <$> f commitStatsDeletions
+{-# INLINE commitStatsDeletionsL #-}
+
+-- | 'commitStatsTotal' Lens
+commitStatsTotalL :: Lens_' CommitStats (Maybe Integer)
+commitStatsTotalL f CommitStats{..} = (\commitStatsTotal -> CommitStats { commitStatsTotal, ..} ) <$> f commitStatsTotal
+{-# INLINE commitStatsTotalL #-}
+
+
+
+-- * CommitStatus
+
+-- | 'commitStatusContext' Lens
+commitStatusContextL :: Lens_' CommitStatus (Maybe Text)
+commitStatusContextL f CommitStatus{..} = (\commitStatusContext -> CommitStatus { commitStatusContext, ..} ) <$> f commitStatusContext
+{-# INLINE commitStatusContextL #-}
+
+-- | 'commitStatusCreatedAt' Lens
+commitStatusCreatedAtL :: Lens_' CommitStatus (Maybe DateTime)
+commitStatusCreatedAtL f CommitStatus{..} = (\commitStatusCreatedAt -> CommitStatus { commitStatusCreatedAt, ..} ) <$> f commitStatusCreatedAt
+{-# INLINE commitStatusCreatedAtL #-}
+
+-- | 'commitStatusCreator' Lens
+commitStatusCreatorL :: Lens_' CommitStatus (Maybe User)
+commitStatusCreatorL f CommitStatus{..} = (\commitStatusCreator -> CommitStatus { commitStatusCreator, ..} ) <$> f commitStatusCreator
+{-# INLINE commitStatusCreatorL #-}
+
+-- | 'commitStatusDescription' Lens
+commitStatusDescriptionL :: Lens_' CommitStatus (Maybe Text)
+commitStatusDescriptionL f CommitStatus{..} = (\commitStatusDescription -> CommitStatus { commitStatusDescription, ..} ) <$> f commitStatusDescription
+{-# INLINE commitStatusDescriptionL #-}
+
+-- | 'commitStatusId' Lens
+commitStatusIdL :: Lens_' CommitStatus (Maybe Integer)
+commitStatusIdL f CommitStatus{..} = (\commitStatusId -> CommitStatus { commitStatusId, ..} ) <$> f commitStatusId
+{-# INLINE commitStatusIdL #-}
+
+-- | 'commitStatusStatus' Lens
+commitStatusStatusL :: Lens_' CommitStatus (Maybe Text)
+commitStatusStatusL f CommitStatus{..} = (\commitStatusStatus -> CommitStatus { commitStatusStatus, ..} ) <$> f commitStatusStatus
+{-# INLINE commitStatusStatusL #-}
+
+-- | 'commitStatusTargetUrl' Lens
+commitStatusTargetUrlL :: Lens_' CommitStatus (Maybe Text)
+commitStatusTargetUrlL f CommitStatus{..} = (\commitStatusTargetUrl -> CommitStatus { commitStatusTargetUrl, ..} ) <$> f commitStatusTargetUrl
+{-# INLINE commitStatusTargetUrlL #-}
+
+-- | 'commitStatusUpdatedAt' Lens
+commitStatusUpdatedAtL :: Lens_' CommitStatus (Maybe DateTime)
+commitStatusUpdatedAtL f CommitStatus{..} = (\commitStatusUpdatedAt -> CommitStatus { commitStatusUpdatedAt, ..} ) <$> f commitStatusUpdatedAt
+{-# INLINE commitStatusUpdatedAtL #-}
+
+-- | 'commitStatusUrl' Lens
+commitStatusUrlL :: Lens_' CommitStatus (Maybe Text)
+commitStatusUrlL f CommitStatus{..} = (\commitStatusUrl -> CommitStatus { commitStatusUrl, ..} ) <$> f commitStatusUrl
+{-# INLINE commitStatusUrlL #-}
+
+
+
+-- * CommitUser
+
+-- | 'commitUserDate' Lens
+commitUserDateL :: Lens_' CommitUser (Maybe Text)
+commitUserDateL f CommitUser{..} = (\commitUserDate -> CommitUser { commitUserDate, ..} ) <$> f commitUserDate
+{-# INLINE commitUserDateL #-}
+
+-- | 'commitUserEmail' Lens
+commitUserEmailL :: Lens_' CommitUser (Maybe Text)
+commitUserEmailL f CommitUser{..} = (\commitUserEmail -> CommitUser { commitUserEmail, ..} ) <$> f commitUserEmail
+{-# INLINE commitUserEmailL #-}
+
+-- | 'commitUserName' Lens
+commitUserNameL :: Lens_' CommitUser (Maybe Text)
+commitUserNameL f CommitUser{..} = (\commitUserName -> CommitUser { commitUserName, ..} ) <$> f commitUserName
+{-# INLINE commitUserNameL #-}
+
+
+
+-- * ContentsResponse
+
+-- | 'contentsResponseLinks' Lens
+contentsResponseLinksL :: Lens_' ContentsResponse (Maybe FileLinksResponse)
+contentsResponseLinksL f ContentsResponse{..} = (\contentsResponseLinks -> ContentsResponse { contentsResponseLinks, ..} ) <$> f contentsResponseLinks
+{-# INLINE contentsResponseLinksL #-}
+
+-- | 'contentsResponseContent' Lens
+contentsResponseContentL :: Lens_' ContentsResponse (Maybe Text)
+contentsResponseContentL f ContentsResponse{..} = (\contentsResponseContent -> ContentsResponse { contentsResponseContent, ..} ) <$> f contentsResponseContent
+{-# INLINE contentsResponseContentL #-}
+
+-- | 'contentsResponseDownloadUrl' Lens
+contentsResponseDownloadUrlL :: Lens_' ContentsResponse (Maybe Text)
+contentsResponseDownloadUrlL f ContentsResponse{..} = (\contentsResponseDownloadUrl -> ContentsResponse { contentsResponseDownloadUrl, ..} ) <$> f contentsResponseDownloadUrl
+{-# INLINE contentsResponseDownloadUrlL #-}
+
+-- | 'contentsResponseEncoding' Lens
+contentsResponseEncodingL :: Lens_' ContentsResponse (Maybe Text)
+contentsResponseEncodingL f ContentsResponse{..} = (\contentsResponseEncoding -> ContentsResponse { contentsResponseEncoding, ..} ) <$> f contentsResponseEncoding
+{-# INLINE contentsResponseEncodingL #-}
+
+-- | 'contentsResponseGitUrl' Lens
+contentsResponseGitUrlL :: Lens_' ContentsResponse (Maybe Text)
+contentsResponseGitUrlL f ContentsResponse{..} = (\contentsResponseGitUrl -> ContentsResponse { contentsResponseGitUrl, ..} ) <$> f contentsResponseGitUrl
+{-# INLINE contentsResponseGitUrlL #-}
+
+-- | 'contentsResponseHtmlUrl' Lens
+contentsResponseHtmlUrlL :: Lens_' ContentsResponse (Maybe Text)
+contentsResponseHtmlUrlL f ContentsResponse{..} = (\contentsResponseHtmlUrl -> ContentsResponse { contentsResponseHtmlUrl, ..} ) <$> f contentsResponseHtmlUrl
+{-# INLINE contentsResponseHtmlUrlL #-}
+
+-- | 'contentsResponseLastCommitSha' Lens
+contentsResponseLastCommitShaL :: Lens_' ContentsResponse (Maybe Text)
+contentsResponseLastCommitShaL f ContentsResponse{..} = (\contentsResponseLastCommitSha -> ContentsResponse { contentsResponseLastCommitSha, ..} ) <$> f contentsResponseLastCommitSha
+{-# INLINE contentsResponseLastCommitShaL #-}
+
+-- | 'contentsResponseName' Lens
+contentsResponseNameL :: Lens_' ContentsResponse (Maybe Text)
+contentsResponseNameL f ContentsResponse{..} = (\contentsResponseName -> ContentsResponse { contentsResponseName, ..} ) <$> f contentsResponseName
+{-# INLINE contentsResponseNameL #-}
+
+-- | 'contentsResponsePath' Lens
+contentsResponsePathL :: Lens_' ContentsResponse (Maybe Text)
+contentsResponsePathL f ContentsResponse{..} = (\contentsResponsePath -> ContentsResponse { contentsResponsePath, ..} ) <$> f contentsResponsePath
+{-# INLINE contentsResponsePathL #-}
+
+-- | 'contentsResponseSha' Lens
+contentsResponseShaL :: Lens_' ContentsResponse (Maybe Text)
+contentsResponseShaL f ContentsResponse{..} = (\contentsResponseSha -> ContentsResponse { contentsResponseSha, ..} ) <$> f contentsResponseSha
+{-# INLINE contentsResponseShaL #-}
+
+-- | 'contentsResponseSize' Lens
+contentsResponseSizeL :: Lens_' ContentsResponse (Maybe Integer)
+contentsResponseSizeL f ContentsResponse{..} = (\contentsResponseSize -> ContentsResponse { contentsResponseSize, ..} ) <$> f contentsResponseSize
+{-# INLINE contentsResponseSizeL #-}
+
+-- | 'contentsResponseSubmoduleGitUrl' Lens
+contentsResponseSubmoduleGitUrlL :: Lens_' ContentsResponse (Maybe Text)
+contentsResponseSubmoduleGitUrlL f ContentsResponse{..} = (\contentsResponseSubmoduleGitUrl -> ContentsResponse { contentsResponseSubmoduleGitUrl, ..} ) <$> f contentsResponseSubmoduleGitUrl
+{-# INLINE contentsResponseSubmoduleGitUrlL #-}
+
+-- | 'contentsResponseTarget' Lens
+contentsResponseTargetL :: Lens_' ContentsResponse (Maybe Text)
+contentsResponseTargetL f ContentsResponse{..} = (\contentsResponseTarget -> ContentsResponse { contentsResponseTarget, ..} ) <$> f contentsResponseTarget
+{-# INLINE contentsResponseTargetL #-}
+
+-- | 'contentsResponseType' Lens
+contentsResponseTypeL :: Lens_' ContentsResponse (Maybe Text)
+contentsResponseTypeL f ContentsResponse{..} = (\contentsResponseType -> ContentsResponse { contentsResponseType, ..} ) <$> f contentsResponseType
+{-# INLINE contentsResponseTypeL #-}
+
+-- | 'contentsResponseUrl' Lens
+contentsResponseUrlL :: Lens_' ContentsResponse (Maybe Text)
+contentsResponseUrlL f ContentsResponse{..} = (\contentsResponseUrl -> ContentsResponse { contentsResponseUrl, ..} ) <$> f contentsResponseUrl
+{-# INLINE contentsResponseUrlL #-}
+
+
+
+-- * CreateAccessTokenOption
+
+-- | 'createAccessTokenOptionName' Lens
+createAccessTokenOptionNameL :: Lens_' CreateAccessTokenOption (Text)
+createAccessTokenOptionNameL f CreateAccessTokenOption{..} = (\createAccessTokenOptionName -> CreateAccessTokenOption { createAccessTokenOptionName, ..} ) <$> f createAccessTokenOptionName
+{-# INLINE createAccessTokenOptionNameL #-}
+
+-- | 'createAccessTokenOptionScopes' Lens
+createAccessTokenOptionScopesL :: Lens_' CreateAccessTokenOption (Maybe [Text])
+createAccessTokenOptionScopesL f CreateAccessTokenOption{..} = (\createAccessTokenOptionScopes -> CreateAccessTokenOption { createAccessTokenOptionScopes, ..} ) <$> f createAccessTokenOptionScopes
+{-# INLINE createAccessTokenOptionScopesL #-}
+
+
+
+-- * CreateBranchProtectionOption
+
+-- | 'createBranchProtectionOptionApprovalsWhitelistTeams' Lens
+createBranchProtectionOptionApprovalsWhitelistTeamsL :: Lens_' CreateBranchProtectionOption (Maybe [Text])
+createBranchProtectionOptionApprovalsWhitelistTeamsL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionApprovalsWhitelistTeams -> CreateBranchProtectionOption { createBranchProtectionOptionApprovalsWhitelistTeams, ..} ) <$> f createBranchProtectionOptionApprovalsWhitelistTeams
+{-# INLINE createBranchProtectionOptionApprovalsWhitelistTeamsL #-}
+
+-- | 'createBranchProtectionOptionApprovalsWhitelistUsername' Lens
+createBranchProtectionOptionApprovalsWhitelistUsernameL :: Lens_' CreateBranchProtectionOption (Maybe [Text])
+createBranchProtectionOptionApprovalsWhitelistUsernameL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionApprovalsWhitelistUsername -> CreateBranchProtectionOption { createBranchProtectionOptionApprovalsWhitelistUsername, ..} ) <$> f createBranchProtectionOptionApprovalsWhitelistUsername
+{-# INLINE createBranchProtectionOptionApprovalsWhitelistUsernameL #-}
+
+-- | 'createBranchProtectionOptionBlockOnOfficialReviewRequests' Lens
+createBranchProtectionOptionBlockOnOfficialReviewRequestsL :: Lens_' CreateBranchProtectionOption (Maybe Bool)
+createBranchProtectionOptionBlockOnOfficialReviewRequestsL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionBlockOnOfficialReviewRequests -> CreateBranchProtectionOption { createBranchProtectionOptionBlockOnOfficialReviewRequests, ..} ) <$> f createBranchProtectionOptionBlockOnOfficialReviewRequests
+{-# INLINE createBranchProtectionOptionBlockOnOfficialReviewRequestsL #-}
+
+-- | 'createBranchProtectionOptionBlockOnOutdatedBranch' Lens
+createBranchProtectionOptionBlockOnOutdatedBranchL :: Lens_' CreateBranchProtectionOption (Maybe Bool)
+createBranchProtectionOptionBlockOnOutdatedBranchL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionBlockOnOutdatedBranch -> CreateBranchProtectionOption { createBranchProtectionOptionBlockOnOutdatedBranch, ..} ) <$> f createBranchProtectionOptionBlockOnOutdatedBranch
+{-# INLINE createBranchProtectionOptionBlockOnOutdatedBranchL #-}
+
+-- | 'createBranchProtectionOptionBlockOnRejectedReviews' Lens
+createBranchProtectionOptionBlockOnRejectedReviewsL :: Lens_' CreateBranchProtectionOption (Maybe Bool)
+createBranchProtectionOptionBlockOnRejectedReviewsL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionBlockOnRejectedReviews -> CreateBranchProtectionOption { createBranchProtectionOptionBlockOnRejectedReviews, ..} ) <$> f createBranchProtectionOptionBlockOnRejectedReviews
+{-# INLINE createBranchProtectionOptionBlockOnRejectedReviewsL #-}
+
+-- | 'createBranchProtectionOptionBranchName' Lens
+createBranchProtectionOptionBranchNameL :: Lens_' CreateBranchProtectionOption (Maybe Text)
+createBranchProtectionOptionBranchNameL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionBranchName -> CreateBranchProtectionOption { createBranchProtectionOptionBranchName, ..} ) <$> f createBranchProtectionOptionBranchName
+{-# INLINE createBranchProtectionOptionBranchNameL #-}
+
+-- | 'createBranchProtectionOptionDismissStaleApprovals' Lens
+createBranchProtectionOptionDismissStaleApprovalsL :: Lens_' CreateBranchProtectionOption (Maybe Bool)
+createBranchProtectionOptionDismissStaleApprovalsL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionDismissStaleApprovals -> CreateBranchProtectionOption { createBranchProtectionOptionDismissStaleApprovals, ..} ) <$> f createBranchProtectionOptionDismissStaleApprovals
+{-# INLINE createBranchProtectionOptionDismissStaleApprovalsL #-}
+
+-- | 'createBranchProtectionOptionEnableApprovalsWhitelist' Lens
+createBranchProtectionOptionEnableApprovalsWhitelistL :: Lens_' CreateBranchProtectionOption (Maybe Bool)
+createBranchProtectionOptionEnableApprovalsWhitelistL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionEnableApprovalsWhitelist -> CreateBranchProtectionOption { createBranchProtectionOptionEnableApprovalsWhitelist, ..} ) <$> f createBranchProtectionOptionEnableApprovalsWhitelist
+{-# INLINE createBranchProtectionOptionEnableApprovalsWhitelistL #-}
+
+-- | 'createBranchProtectionOptionEnableMergeWhitelist' Lens
+createBranchProtectionOptionEnableMergeWhitelistL :: Lens_' CreateBranchProtectionOption (Maybe Bool)
+createBranchProtectionOptionEnableMergeWhitelistL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionEnableMergeWhitelist -> CreateBranchProtectionOption { createBranchProtectionOptionEnableMergeWhitelist, ..} ) <$> f createBranchProtectionOptionEnableMergeWhitelist
+{-# INLINE createBranchProtectionOptionEnableMergeWhitelistL #-}
+
+-- | 'createBranchProtectionOptionEnablePush' Lens
+createBranchProtectionOptionEnablePushL :: Lens_' CreateBranchProtectionOption (Maybe Bool)
+createBranchProtectionOptionEnablePushL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionEnablePush -> CreateBranchProtectionOption { createBranchProtectionOptionEnablePush, ..} ) <$> f createBranchProtectionOptionEnablePush
+{-# INLINE createBranchProtectionOptionEnablePushL #-}
+
+-- | 'createBranchProtectionOptionEnablePushWhitelist' Lens
+createBranchProtectionOptionEnablePushWhitelistL :: Lens_' CreateBranchProtectionOption (Maybe Bool)
+createBranchProtectionOptionEnablePushWhitelistL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionEnablePushWhitelist -> CreateBranchProtectionOption { createBranchProtectionOptionEnablePushWhitelist, ..} ) <$> f createBranchProtectionOptionEnablePushWhitelist
+{-# INLINE createBranchProtectionOptionEnablePushWhitelistL #-}
+
+-- | 'createBranchProtectionOptionEnableStatusCheck' Lens
+createBranchProtectionOptionEnableStatusCheckL :: Lens_' CreateBranchProtectionOption (Maybe Bool)
+createBranchProtectionOptionEnableStatusCheckL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionEnableStatusCheck -> CreateBranchProtectionOption { createBranchProtectionOptionEnableStatusCheck, ..} ) <$> f createBranchProtectionOptionEnableStatusCheck
+{-# INLINE createBranchProtectionOptionEnableStatusCheckL #-}
+
+-- | 'createBranchProtectionOptionMergeWhitelistTeams' Lens
+createBranchProtectionOptionMergeWhitelistTeamsL :: Lens_' CreateBranchProtectionOption (Maybe [Text])
+createBranchProtectionOptionMergeWhitelistTeamsL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionMergeWhitelistTeams -> CreateBranchProtectionOption { createBranchProtectionOptionMergeWhitelistTeams, ..} ) <$> f createBranchProtectionOptionMergeWhitelistTeams
+{-# INLINE createBranchProtectionOptionMergeWhitelistTeamsL #-}
+
+-- | 'createBranchProtectionOptionMergeWhitelistUsernames' Lens
+createBranchProtectionOptionMergeWhitelistUsernamesL :: Lens_' CreateBranchProtectionOption (Maybe [Text])
+createBranchProtectionOptionMergeWhitelistUsernamesL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionMergeWhitelistUsernames -> CreateBranchProtectionOption { createBranchProtectionOptionMergeWhitelistUsernames, ..} ) <$> f createBranchProtectionOptionMergeWhitelistUsernames
+{-# INLINE createBranchProtectionOptionMergeWhitelistUsernamesL #-}
+
+-- | 'createBranchProtectionOptionProtectedFilePatterns' Lens
+createBranchProtectionOptionProtectedFilePatternsL :: Lens_' CreateBranchProtectionOption (Maybe Text)
+createBranchProtectionOptionProtectedFilePatternsL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionProtectedFilePatterns -> CreateBranchProtectionOption { createBranchProtectionOptionProtectedFilePatterns, ..} ) <$> f createBranchProtectionOptionProtectedFilePatterns
+{-# INLINE createBranchProtectionOptionProtectedFilePatternsL #-}
+
+-- | 'createBranchProtectionOptionPushWhitelistDeployKeys' Lens
+createBranchProtectionOptionPushWhitelistDeployKeysL :: Lens_' CreateBranchProtectionOption (Maybe Bool)
+createBranchProtectionOptionPushWhitelistDeployKeysL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionPushWhitelistDeployKeys -> CreateBranchProtectionOption { createBranchProtectionOptionPushWhitelistDeployKeys, ..} ) <$> f createBranchProtectionOptionPushWhitelistDeployKeys
+{-# INLINE createBranchProtectionOptionPushWhitelistDeployKeysL #-}
+
+-- | 'createBranchProtectionOptionPushWhitelistTeams' Lens
+createBranchProtectionOptionPushWhitelistTeamsL :: Lens_' CreateBranchProtectionOption (Maybe [Text])
+createBranchProtectionOptionPushWhitelistTeamsL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionPushWhitelistTeams -> CreateBranchProtectionOption { createBranchProtectionOptionPushWhitelistTeams, ..} ) <$> f createBranchProtectionOptionPushWhitelistTeams
+{-# INLINE createBranchProtectionOptionPushWhitelistTeamsL #-}
+
+-- | 'createBranchProtectionOptionPushWhitelistUsernames' Lens
+createBranchProtectionOptionPushWhitelistUsernamesL :: Lens_' CreateBranchProtectionOption (Maybe [Text])
+createBranchProtectionOptionPushWhitelistUsernamesL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionPushWhitelistUsernames -> CreateBranchProtectionOption { createBranchProtectionOptionPushWhitelistUsernames, ..} ) <$> f createBranchProtectionOptionPushWhitelistUsernames
+{-# INLINE createBranchProtectionOptionPushWhitelistUsernamesL #-}
+
+-- | 'createBranchProtectionOptionRequireSignedCommits' Lens
+createBranchProtectionOptionRequireSignedCommitsL :: Lens_' CreateBranchProtectionOption (Maybe Bool)
+createBranchProtectionOptionRequireSignedCommitsL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionRequireSignedCommits -> CreateBranchProtectionOption { createBranchProtectionOptionRequireSignedCommits, ..} ) <$> f createBranchProtectionOptionRequireSignedCommits
+{-# INLINE createBranchProtectionOptionRequireSignedCommitsL #-}
+
+-- | 'createBranchProtectionOptionRequiredApprovals' Lens
+createBranchProtectionOptionRequiredApprovalsL :: Lens_' CreateBranchProtectionOption (Maybe Integer)
+createBranchProtectionOptionRequiredApprovalsL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionRequiredApprovals -> CreateBranchProtectionOption { createBranchProtectionOptionRequiredApprovals, ..} ) <$> f createBranchProtectionOptionRequiredApprovals
+{-# INLINE createBranchProtectionOptionRequiredApprovalsL #-}
+
+-- | 'createBranchProtectionOptionRuleName' Lens
+createBranchProtectionOptionRuleNameL :: Lens_' CreateBranchProtectionOption (Maybe Text)
+createBranchProtectionOptionRuleNameL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionRuleName -> CreateBranchProtectionOption { createBranchProtectionOptionRuleName, ..} ) <$> f createBranchProtectionOptionRuleName
+{-# INLINE createBranchProtectionOptionRuleNameL #-}
+
+-- | 'createBranchProtectionOptionStatusCheckContexts' Lens
+createBranchProtectionOptionStatusCheckContextsL :: Lens_' CreateBranchProtectionOption (Maybe [Text])
+createBranchProtectionOptionStatusCheckContextsL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionStatusCheckContexts -> CreateBranchProtectionOption { createBranchProtectionOptionStatusCheckContexts, ..} ) <$> f createBranchProtectionOptionStatusCheckContexts
+{-# INLINE createBranchProtectionOptionStatusCheckContextsL #-}
+
+-- | 'createBranchProtectionOptionUnprotectedFilePatterns' Lens
+createBranchProtectionOptionUnprotectedFilePatternsL :: Lens_' CreateBranchProtectionOption (Maybe Text)
+createBranchProtectionOptionUnprotectedFilePatternsL f CreateBranchProtectionOption{..} = (\createBranchProtectionOptionUnprotectedFilePatterns -> CreateBranchProtectionOption { createBranchProtectionOptionUnprotectedFilePatterns, ..} ) <$> f createBranchProtectionOptionUnprotectedFilePatterns
+{-# INLINE createBranchProtectionOptionUnprotectedFilePatternsL #-}
+
+
+
+-- * CreateBranchRepoOption
+
+-- | 'createBranchRepoOptionNewBranchName' Lens
+createBranchRepoOptionNewBranchNameL :: Lens_' CreateBranchRepoOption (Text)
+createBranchRepoOptionNewBranchNameL f CreateBranchRepoOption{..} = (\createBranchRepoOptionNewBranchName -> CreateBranchRepoOption { createBranchRepoOptionNewBranchName, ..} ) <$> f createBranchRepoOptionNewBranchName
+{-# INLINE createBranchRepoOptionNewBranchNameL #-}
+
+-- | 'createBranchRepoOptionOldBranchName' Lens
+createBranchRepoOptionOldBranchNameL :: Lens_' CreateBranchRepoOption (Maybe Text)
+createBranchRepoOptionOldBranchNameL f CreateBranchRepoOption{..} = (\createBranchRepoOptionOldBranchName -> CreateBranchRepoOption { createBranchRepoOptionOldBranchName, ..} ) <$> f createBranchRepoOptionOldBranchName
+{-# INLINE createBranchRepoOptionOldBranchNameL #-}
+
+
+
+-- * CreateEmailOption
+
+-- | 'createEmailOptionEmails' Lens
+createEmailOptionEmailsL :: Lens_' CreateEmailOption (Maybe [Text])
+createEmailOptionEmailsL f CreateEmailOption{..} = (\createEmailOptionEmails -> CreateEmailOption { createEmailOptionEmails, ..} ) <$> f createEmailOptionEmails
+{-# INLINE createEmailOptionEmailsL #-}
+
+
+
+-- * CreateFileOptions
+
+-- | 'createFileOptionsAuthor' Lens
+createFileOptionsAuthorL :: Lens_' CreateFileOptions (Maybe Identity)
+createFileOptionsAuthorL f CreateFileOptions{..} = (\createFileOptionsAuthor -> CreateFileOptions { createFileOptionsAuthor, ..} ) <$> f createFileOptionsAuthor
+{-# INLINE createFileOptionsAuthorL #-}
+
+-- | 'createFileOptionsBranch' Lens
+createFileOptionsBranchL :: Lens_' CreateFileOptions (Maybe Text)
+createFileOptionsBranchL f CreateFileOptions{..} = (\createFileOptionsBranch -> CreateFileOptions { createFileOptionsBranch, ..} ) <$> f createFileOptionsBranch
+{-# INLINE createFileOptionsBranchL #-}
+
+-- | 'createFileOptionsCommitter' Lens
+createFileOptionsCommitterL :: Lens_' CreateFileOptions (Maybe Identity)
+createFileOptionsCommitterL f CreateFileOptions{..} = (\createFileOptionsCommitter -> CreateFileOptions { createFileOptionsCommitter, ..} ) <$> f createFileOptionsCommitter
+{-# INLINE createFileOptionsCommitterL #-}
+
+-- | 'createFileOptionsContent' Lens
+createFileOptionsContentL :: Lens_' CreateFileOptions (Text)
+createFileOptionsContentL f CreateFileOptions{..} = (\createFileOptionsContent -> CreateFileOptions { createFileOptionsContent, ..} ) <$> f createFileOptionsContent
+{-# INLINE createFileOptionsContentL #-}
+
+-- | 'createFileOptionsDates' Lens
+createFileOptionsDatesL :: Lens_' CreateFileOptions (Maybe CommitDateOptions)
+createFileOptionsDatesL f CreateFileOptions{..} = (\createFileOptionsDates -> CreateFileOptions { createFileOptionsDates, ..} ) <$> f createFileOptionsDates
+{-# INLINE createFileOptionsDatesL #-}
+
+-- | 'createFileOptionsMessage' Lens
+createFileOptionsMessageL :: Lens_' CreateFileOptions (Maybe Text)
+createFileOptionsMessageL f CreateFileOptions{..} = (\createFileOptionsMessage -> CreateFileOptions { createFileOptionsMessage, ..} ) <$> f createFileOptionsMessage
+{-# INLINE createFileOptionsMessageL #-}
+
+-- | 'createFileOptionsNewBranch' Lens
+createFileOptionsNewBranchL :: Lens_' CreateFileOptions (Maybe Text)
+createFileOptionsNewBranchL f CreateFileOptions{..} = (\createFileOptionsNewBranch -> CreateFileOptions { createFileOptionsNewBranch, ..} ) <$> f createFileOptionsNewBranch
+{-# INLINE createFileOptionsNewBranchL #-}
+
+-- | 'createFileOptionsSignoff' Lens
+createFileOptionsSignoffL :: Lens_' CreateFileOptions (Maybe Bool)
+createFileOptionsSignoffL f CreateFileOptions{..} = (\createFileOptionsSignoff -> CreateFileOptions { createFileOptionsSignoff, ..} ) <$> f createFileOptionsSignoff
+{-# INLINE createFileOptionsSignoffL #-}
+
+
+
+-- * CreateForkOption
+
+-- | 'createForkOptionName' Lens
+createForkOptionNameL :: Lens_' CreateForkOption (Maybe Text)
+createForkOptionNameL f CreateForkOption{..} = (\createForkOptionName -> CreateForkOption { createForkOptionName, ..} ) <$> f createForkOptionName
+{-# INLINE createForkOptionNameL #-}
+
+-- | 'createForkOptionOrganization' Lens
+createForkOptionOrganizationL :: Lens_' CreateForkOption (Maybe Text)
+createForkOptionOrganizationL f CreateForkOption{..} = (\createForkOptionOrganization -> CreateForkOption { createForkOptionOrganization, ..} ) <$> f createForkOptionOrganization
+{-# INLINE createForkOptionOrganizationL #-}
+
+
+
+-- * CreateGPGKeyOption
+
+-- | 'createGPGKeyOptionArmoredPublicKey' Lens
+createGPGKeyOptionArmoredPublicKeyL :: Lens_' CreateGPGKeyOption (Text)
+createGPGKeyOptionArmoredPublicKeyL f CreateGPGKeyOption{..} = (\createGPGKeyOptionArmoredPublicKey -> CreateGPGKeyOption { createGPGKeyOptionArmoredPublicKey, ..} ) <$> f createGPGKeyOptionArmoredPublicKey
+{-# INLINE createGPGKeyOptionArmoredPublicKeyL #-}
+
+-- | 'createGPGKeyOptionArmoredSignature' Lens
+createGPGKeyOptionArmoredSignatureL :: Lens_' CreateGPGKeyOption (Maybe Text)
+createGPGKeyOptionArmoredSignatureL f CreateGPGKeyOption{..} = (\createGPGKeyOptionArmoredSignature -> CreateGPGKeyOption { createGPGKeyOptionArmoredSignature, ..} ) <$> f createGPGKeyOptionArmoredSignature
+{-# INLINE createGPGKeyOptionArmoredSignatureL #-}
+
+
+
+-- * CreateHookOption
+
+-- | 'createHookOptionActive' Lens
+createHookOptionActiveL :: Lens_' CreateHookOption (Maybe Bool)
+createHookOptionActiveL f CreateHookOption{..} = (\createHookOptionActive -> CreateHookOption { createHookOptionActive, ..} ) <$> f createHookOptionActive
+{-# INLINE createHookOptionActiveL #-}
+
+-- | 'createHookOptionAuthorizationHeader' Lens
+createHookOptionAuthorizationHeaderL :: Lens_' CreateHookOption (Maybe Text)
+createHookOptionAuthorizationHeaderL f CreateHookOption{..} = (\createHookOptionAuthorizationHeader -> CreateHookOption { createHookOptionAuthorizationHeader, ..} ) <$> f createHookOptionAuthorizationHeader
+{-# INLINE createHookOptionAuthorizationHeaderL #-}
+
+-- | 'createHookOptionBranchFilter' Lens
+createHookOptionBranchFilterL :: Lens_' CreateHookOption (Maybe Text)
+createHookOptionBranchFilterL f CreateHookOption{..} = (\createHookOptionBranchFilter -> CreateHookOption { createHookOptionBranchFilter, ..} ) <$> f createHookOptionBranchFilter
+{-# INLINE createHookOptionBranchFilterL #-}
+
+-- | 'createHookOptionConfig' Lens
+createHookOptionConfigL :: Lens_' CreateHookOption ((Map.Map String Text))
+createHookOptionConfigL f CreateHookOption{..} = (\createHookOptionConfig -> CreateHookOption { createHookOptionConfig, ..} ) <$> f createHookOptionConfig
+{-# INLINE createHookOptionConfigL #-}
+
+-- | 'createHookOptionEvents' Lens
+createHookOptionEventsL :: Lens_' CreateHookOption (Maybe [Text])
+createHookOptionEventsL f CreateHookOption{..} = (\createHookOptionEvents -> CreateHookOption { createHookOptionEvents, ..} ) <$> f createHookOptionEvents
+{-# INLINE createHookOptionEventsL #-}
+
+-- | 'createHookOptionType' Lens
+createHookOptionTypeL :: Lens_' CreateHookOption (E'Type)
+createHookOptionTypeL f CreateHookOption{..} = (\createHookOptionType -> CreateHookOption { createHookOptionType, ..} ) <$> f createHookOptionType
+{-# INLINE createHookOptionTypeL #-}
+
+
+
+-- * CreateIssueCommentOption
+
+-- | 'createIssueCommentOptionBody' Lens
+createIssueCommentOptionBodyL :: Lens_' CreateIssueCommentOption (Text)
+createIssueCommentOptionBodyL f CreateIssueCommentOption{..} = (\createIssueCommentOptionBody -> CreateIssueCommentOption { createIssueCommentOptionBody, ..} ) <$> f createIssueCommentOptionBody
+{-# INLINE createIssueCommentOptionBodyL #-}
+
+
+
+-- * CreateIssueOption
+
+-- | 'createIssueOptionAssignee' Lens
+createIssueOptionAssigneeL :: Lens_' CreateIssueOption (Maybe Text)
+createIssueOptionAssigneeL f CreateIssueOption{..} = (\createIssueOptionAssignee -> CreateIssueOption { createIssueOptionAssignee, ..} ) <$> f createIssueOptionAssignee
+{-# INLINE createIssueOptionAssigneeL #-}
+
+-- | 'createIssueOptionAssignees' Lens
+createIssueOptionAssigneesL :: Lens_' CreateIssueOption (Maybe [Text])
+createIssueOptionAssigneesL f CreateIssueOption{..} = (\createIssueOptionAssignees -> CreateIssueOption { createIssueOptionAssignees, ..} ) <$> f createIssueOptionAssignees
+{-# INLINE createIssueOptionAssigneesL #-}
+
+-- | 'createIssueOptionBody' Lens
+createIssueOptionBodyL :: Lens_' CreateIssueOption (Maybe Text)
+createIssueOptionBodyL f CreateIssueOption{..} = (\createIssueOptionBody -> CreateIssueOption { createIssueOptionBody, ..} ) <$> f createIssueOptionBody
+{-# INLINE createIssueOptionBodyL #-}
+
+-- | 'createIssueOptionClosed' Lens
+createIssueOptionClosedL :: Lens_' CreateIssueOption (Maybe Bool)
+createIssueOptionClosedL f CreateIssueOption{..} = (\createIssueOptionClosed -> CreateIssueOption { createIssueOptionClosed, ..} ) <$> f createIssueOptionClosed
+{-# INLINE createIssueOptionClosedL #-}
+
+-- | 'createIssueOptionDueDate' Lens
+createIssueOptionDueDateL :: Lens_' CreateIssueOption (Maybe DateTime)
+createIssueOptionDueDateL f CreateIssueOption{..} = (\createIssueOptionDueDate -> CreateIssueOption { createIssueOptionDueDate, ..} ) <$> f createIssueOptionDueDate
+{-# INLINE createIssueOptionDueDateL #-}
+
+-- | 'createIssueOptionLabels' Lens
+createIssueOptionLabelsL :: Lens_' CreateIssueOption (Maybe [Integer])
+createIssueOptionLabelsL f CreateIssueOption{..} = (\createIssueOptionLabels -> CreateIssueOption { createIssueOptionLabels, ..} ) <$> f createIssueOptionLabels
+{-# INLINE createIssueOptionLabelsL #-}
+
+-- | 'createIssueOptionMilestone' Lens
+createIssueOptionMilestoneL :: Lens_' CreateIssueOption (Maybe Integer)
+createIssueOptionMilestoneL f CreateIssueOption{..} = (\createIssueOptionMilestone -> CreateIssueOption { createIssueOptionMilestone, ..} ) <$> f createIssueOptionMilestone
+{-# INLINE createIssueOptionMilestoneL #-}
+
+-- | 'createIssueOptionRef' Lens
+createIssueOptionRefL :: Lens_' CreateIssueOption (Maybe Text)
+createIssueOptionRefL f CreateIssueOption{..} = (\createIssueOptionRef -> CreateIssueOption { createIssueOptionRef, ..} ) <$> f createIssueOptionRef
+{-# INLINE createIssueOptionRefL #-}
+
+-- | 'createIssueOptionTitle' Lens
+createIssueOptionTitleL :: Lens_' CreateIssueOption (Text)
+createIssueOptionTitleL f CreateIssueOption{..} = (\createIssueOptionTitle -> CreateIssueOption { createIssueOptionTitle, ..} ) <$> f createIssueOptionTitle
+{-# INLINE createIssueOptionTitleL #-}
+
+
+
+-- * CreateKeyOption
+
+-- | 'createKeyOptionKey' Lens
+createKeyOptionKeyL :: Lens_' CreateKeyOption (Text)
+createKeyOptionKeyL f CreateKeyOption{..} = (\createKeyOptionKey -> CreateKeyOption { createKeyOptionKey, ..} ) <$> f createKeyOptionKey
+{-# INLINE createKeyOptionKeyL #-}
+
+-- | 'createKeyOptionReadOnly' Lens
+createKeyOptionReadOnlyL :: Lens_' CreateKeyOption (Maybe Bool)
+createKeyOptionReadOnlyL f CreateKeyOption{..} = (\createKeyOptionReadOnly -> CreateKeyOption { createKeyOptionReadOnly, ..} ) <$> f createKeyOptionReadOnly
+{-# INLINE createKeyOptionReadOnlyL #-}
+
+-- | 'createKeyOptionTitle' Lens
+createKeyOptionTitleL :: Lens_' CreateKeyOption (Text)
+createKeyOptionTitleL f CreateKeyOption{..} = (\createKeyOptionTitle -> CreateKeyOption { createKeyOptionTitle, ..} ) <$> f createKeyOptionTitle
+{-# INLINE createKeyOptionTitleL #-}
+
+
+
+-- * CreateLabelOption
+
+-- | 'createLabelOptionColor' Lens
+createLabelOptionColorL :: Lens_' CreateLabelOption (Text)
+createLabelOptionColorL f CreateLabelOption{..} = (\createLabelOptionColor -> CreateLabelOption { createLabelOptionColor, ..} ) <$> f createLabelOptionColor
+{-# INLINE createLabelOptionColorL #-}
+
+-- | 'createLabelOptionDescription' Lens
+createLabelOptionDescriptionL :: Lens_' CreateLabelOption (Maybe Text)
+createLabelOptionDescriptionL f CreateLabelOption{..} = (\createLabelOptionDescription -> CreateLabelOption { createLabelOptionDescription, ..} ) <$> f createLabelOptionDescription
+{-# INLINE createLabelOptionDescriptionL #-}
+
+-- | 'createLabelOptionExclusive' Lens
+createLabelOptionExclusiveL :: Lens_' CreateLabelOption (Maybe Bool)
+createLabelOptionExclusiveL f CreateLabelOption{..} = (\createLabelOptionExclusive -> CreateLabelOption { createLabelOptionExclusive, ..} ) <$> f createLabelOptionExclusive
+{-# INLINE createLabelOptionExclusiveL #-}
+
+-- | 'createLabelOptionName' Lens
+createLabelOptionNameL :: Lens_' CreateLabelOption (Text)
+createLabelOptionNameL f CreateLabelOption{..} = (\createLabelOptionName -> CreateLabelOption { createLabelOptionName, ..} ) <$> f createLabelOptionName
+{-# INLINE createLabelOptionNameL #-}
+
+
+
+-- * CreateMilestoneOption
+
+-- | 'createMilestoneOptionDescription' Lens
+createMilestoneOptionDescriptionL :: Lens_' CreateMilestoneOption (Maybe Text)
+createMilestoneOptionDescriptionL f CreateMilestoneOption{..} = (\createMilestoneOptionDescription -> CreateMilestoneOption { createMilestoneOptionDescription, ..} ) <$> f createMilestoneOptionDescription
+{-# INLINE createMilestoneOptionDescriptionL #-}
+
+-- | 'createMilestoneOptionDueOn' Lens
+createMilestoneOptionDueOnL :: Lens_' CreateMilestoneOption (Maybe DateTime)
+createMilestoneOptionDueOnL f CreateMilestoneOption{..} = (\createMilestoneOptionDueOn -> CreateMilestoneOption { createMilestoneOptionDueOn, ..} ) <$> f createMilestoneOptionDueOn
+{-# INLINE createMilestoneOptionDueOnL #-}
+
+-- | 'createMilestoneOptionState' Lens
+createMilestoneOptionStateL :: Lens_' CreateMilestoneOption (Maybe E'State)
+createMilestoneOptionStateL f CreateMilestoneOption{..} = (\createMilestoneOptionState -> CreateMilestoneOption { createMilestoneOptionState, ..} ) <$> f createMilestoneOptionState
+{-# INLINE createMilestoneOptionStateL #-}
+
+-- | 'createMilestoneOptionTitle' Lens
+createMilestoneOptionTitleL :: Lens_' CreateMilestoneOption (Maybe Text)
+createMilestoneOptionTitleL f CreateMilestoneOption{..} = (\createMilestoneOptionTitle -> CreateMilestoneOption { createMilestoneOptionTitle, ..} ) <$> f createMilestoneOptionTitle
+{-# INLINE createMilestoneOptionTitleL #-}
+
+
+
+-- * CreateOAuth2ApplicationOptions
+
+-- | 'createOAuth2ApplicationOptionsConfidentialClient' Lens
+createOAuth2ApplicationOptionsConfidentialClientL :: Lens_' CreateOAuth2ApplicationOptions (Maybe Bool)
+createOAuth2ApplicationOptionsConfidentialClientL f CreateOAuth2ApplicationOptions{..} = (\createOAuth2ApplicationOptionsConfidentialClient -> CreateOAuth2ApplicationOptions { createOAuth2ApplicationOptionsConfidentialClient, ..} ) <$> f createOAuth2ApplicationOptionsConfidentialClient
+{-# INLINE createOAuth2ApplicationOptionsConfidentialClientL #-}
+
+-- | 'createOAuth2ApplicationOptionsName' Lens
+createOAuth2ApplicationOptionsNameL :: Lens_' CreateOAuth2ApplicationOptions (Maybe Text)
+createOAuth2ApplicationOptionsNameL f CreateOAuth2ApplicationOptions{..} = (\createOAuth2ApplicationOptionsName -> CreateOAuth2ApplicationOptions { createOAuth2ApplicationOptionsName, ..} ) <$> f createOAuth2ApplicationOptionsName
+{-# INLINE createOAuth2ApplicationOptionsNameL #-}
+
+-- | 'createOAuth2ApplicationOptionsRedirectUris' Lens
+createOAuth2ApplicationOptionsRedirectUrisL :: Lens_' CreateOAuth2ApplicationOptions (Maybe [Text])
+createOAuth2ApplicationOptionsRedirectUrisL f CreateOAuth2ApplicationOptions{..} = (\createOAuth2ApplicationOptionsRedirectUris -> CreateOAuth2ApplicationOptions { createOAuth2ApplicationOptionsRedirectUris, ..} ) <$> f createOAuth2ApplicationOptionsRedirectUris
+{-# INLINE createOAuth2ApplicationOptionsRedirectUrisL #-}
+
+
+
+-- * CreateOrgOption
+
+-- | 'createOrgOptionDescription' Lens
+createOrgOptionDescriptionL :: Lens_' CreateOrgOption (Maybe Text)
+createOrgOptionDescriptionL f CreateOrgOption{..} = (\createOrgOptionDescription -> CreateOrgOption { createOrgOptionDescription, ..} ) <$> f createOrgOptionDescription
+{-# INLINE createOrgOptionDescriptionL #-}
+
+-- | 'createOrgOptionFullName' Lens
+createOrgOptionFullNameL :: Lens_' CreateOrgOption (Maybe Text)
+createOrgOptionFullNameL f CreateOrgOption{..} = (\createOrgOptionFullName -> CreateOrgOption { createOrgOptionFullName, ..} ) <$> f createOrgOptionFullName
+{-# INLINE createOrgOptionFullNameL #-}
+
+-- | 'createOrgOptionLocation' Lens
+createOrgOptionLocationL :: Lens_' CreateOrgOption (Maybe Text)
+createOrgOptionLocationL f CreateOrgOption{..} = (\createOrgOptionLocation -> CreateOrgOption { createOrgOptionLocation, ..} ) <$> f createOrgOptionLocation
+{-# INLINE createOrgOptionLocationL #-}
+
+-- | 'createOrgOptionRepoAdminChangeTeamAccess' Lens
+createOrgOptionRepoAdminChangeTeamAccessL :: Lens_' CreateOrgOption (Maybe Bool)
+createOrgOptionRepoAdminChangeTeamAccessL f CreateOrgOption{..} = (\createOrgOptionRepoAdminChangeTeamAccess -> CreateOrgOption { createOrgOptionRepoAdminChangeTeamAccess, ..} ) <$> f createOrgOptionRepoAdminChangeTeamAccess
+{-# INLINE createOrgOptionRepoAdminChangeTeamAccessL #-}
+
+-- | 'createOrgOptionUsername' Lens
+createOrgOptionUsernameL :: Lens_' CreateOrgOption (Text)
+createOrgOptionUsernameL f CreateOrgOption{..} = (\createOrgOptionUsername -> CreateOrgOption { createOrgOptionUsername, ..} ) <$> f createOrgOptionUsername
+{-# INLINE createOrgOptionUsernameL #-}
+
+-- | 'createOrgOptionVisibility' Lens
+createOrgOptionVisibilityL :: Lens_' CreateOrgOption (Maybe E'Visibility)
+createOrgOptionVisibilityL f CreateOrgOption{..} = (\createOrgOptionVisibility -> CreateOrgOption { createOrgOptionVisibility, ..} ) <$> f createOrgOptionVisibility
+{-# INLINE createOrgOptionVisibilityL #-}
+
+-- | 'createOrgOptionWebsite' Lens
+createOrgOptionWebsiteL :: Lens_' CreateOrgOption (Maybe Text)
+createOrgOptionWebsiteL f CreateOrgOption{..} = (\createOrgOptionWebsite -> CreateOrgOption { createOrgOptionWebsite, ..} ) <$> f createOrgOptionWebsite
+{-# INLINE createOrgOptionWebsiteL #-}
+
+
+
+-- * CreatePullRequestOption
+
+-- | 'createPullRequestOptionAssignee' Lens
+createPullRequestOptionAssigneeL :: Lens_' CreatePullRequestOption (Maybe Text)
+createPullRequestOptionAssigneeL f CreatePullRequestOption{..} = (\createPullRequestOptionAssignee -> CreatePullRequestOption { createPullRequestOptionAssignee, ..} ) <$> f createPullRequestOptionAssignee
+{-# INLINE createPullRequestOptionAssigneeL #-}
+
+-- | 'createPullRequestOptionAssignees' Lens
+createPullRequestOptionAssigneesL :: Lens_' CreatePullRequestOption (Maybe [Text])
+createPullRequestOptionAssigneesL f CreatePullRequestOption{..} = (\createPullRequestOptionAssignees -> CreatePullRequestOption { createPullRequestOptionAssignees, ..} ) <$> f createPullRequestOptionAssignees
+{-# INLINE createPullRequestOptionAssigneesL #-}
+
+-- | 'createPullRequestOptionBase' Lens
+createPullRequestOptionBaseL :: Lens_' CreatePullRequestOption (Maybe Text)
+createPullRequestOptionBaseL f CreatePullRequestOption{..} = (\createPullRequestOptionBase -> CreatePullRequestOption { createPullRequestOptionBase, ..} ) <$> f createPullRequestOptionBase
+{-# INLINE createPullRequestOptionBaseL #-}
+
+-- | 'createPullRequestOptionBody' Lens
+createPullRequestOptionBodyL :: Lens_' CreatePullRequestOption (Maybe Text)
+createPullRequestOptionBodyL f CreatePullRequestOption{..} = (\createPullRequestOptionBody -> CreatePullRequestOption { createPullRequestOptionBody, ..} ) <$> f createPullRequestOptionBody
+{-# INLINE createPullRequestOptionBodyL #-}
+
+-- | 'createPullRequestOptionDueDate' Lens
+createPullRequestOptionDueDateL :: Lens_' CreatePullRequestOption (Maybe DateTime)
+createPullRequestOptionDueDateL f CreatePullRequestOption{..} = (\createPullRequestOptionDueDate -> CreatePullRequestOption { createPullRequestOptionDueDate, ..} ) <$> f createPullRequestOptionDueDate
+{-# INLINE createPullRequestOptionDueDateL #-}
+
+-- | 'createPullRequestOptionHead' Lens
+createPullRequestOptionHeadL :: Lens_' CreatePullRequestOption (Maybe Text)
+createPullRequestOptionHeadL f CreatePullRequestOption{..} = (\createPullRequestOptionHead -> CreatePullRequestOption { createPullRequestOptionHead, ..} ) <$> f createPullRequestOptionHead
+{-# INLINE createPullRequestOptionHeadL #-}
+
+-- | 'createPullRequestOptionLabels' Lens
+createPullRequestOptionLabelsL :: Lens_' CreatePullRequestOption (Maybe [Integer])
+createPullRequestOptionLabelsL f CreatePullRequestOption{..} = (\createPullRequestOptionLabels -> CreatePullRequestOption { createPullRequestOptionLabels, ..} ) <$> f createPullRequestOptionLabels
+{-# INLINE createPullRequestOptionLabelsL #-}
+
+-- | 'createPullRequestOptionMilestone' Lens
+createPullRequestOptionMilestoneL :: Lens_' CreatePullRequestOption (Maybe Integer)
+createPullRequestOptionMilestoneL f CreatePullRequestOption{..} = (\createPullRequestOptionMilestone -> CreatePullRequestOption { createPullRequestOptionMilestone, ..} ) <$> f createPullRequestOptionMilestone
+{-# INLINE createPullRequestOptionMilestoneL #-}
+
+-- | 'createPullRequestOptionTitle' Lens
+createPullRequestOptionTitleL :: Lens_' CreatePullRequestOption (Maybe Text)
+createPullRequestOptionTitleL f CreatePullRequestOption{..} = (\createPullRequestOptionTitle -> CreatePullRequestOption { createPullRequestOptionTitle, ..} ) <$> f createPullRequestOptionTitle
+{-# INLINE createPullRequestOptionTitleL #-}
+
+
+
+-- * CreatePullReviewComment
+
+-- | 'createPullReviewCommentBody' Lens
+createPullReviewCommentBodyL :: Lens_' CreatePullReviewComment (Maybe Text)
+createPullReviewCommentBodyL f CreatePullReviewComment{..} = (\createPullReviewCommentBody -> CreatePullReviewComment { createPullReviewCommentBody, ..} ) <$> f createPullReviewCommentBody
+{-# INLINE createPullReviewCommentBodyL #-}
+
+-- | 'createPullReviewCommentNewPosition' Lens
+createPullReviewCommentNewPositionL :: Lens_' CreatePullReviewComment (Maybe Integer)
+createPullReviewCommentNewPositionL f CreatePullReviewComment{..} = (\createPullReviewCommentNewPosition -> CreatePullReviewComment { createPullReviewCommentNewPosition, ..} ) <$> f createPullReviewCommentNewPosition
+{-# INLINE createPullReviewCommentNewPositionL #-}
+
+-- | 'createPullReviewCommentOldPosition' Lens
+createPullReviewCommentOldPositionL :: Lens_' CreatePullReviewComment (Maybe Integer)
+createPullReviewCommentOldPositionL f CreatePullReviewComment{..} = (\createPullReviewCommentOldPosition -> CreatePullReviewComment { createPullReviewCommentOldPosition, ..} ) <$> f createPullReviewCommentOldPosition
+{-# INLINE createPullReviewCommentOldPositionL #-}
+
+-- | 'createPullReviewCommentPath' Lens
+createPullReviewCommentPathL :: Lens_' CreatePullReviewComment (Maybe Text)
+createPullReviewCommentPathL f CreatePullReviewComment{..} = (\createPullReviewCommentPath -> CreatePullReviewComment { createPullReviewCommentPath, ..} ) <$> f createPullReviewCommentPath
+{-# INLINE createPullReviewCommentPathL #-}
+
+
+
+-- * CreatePullReviewOptions
+
+-- | 'createPullReviewOptionsBody' Lens
+createPullReviewOptionsBodyL :: Lens_' CreatePullReviewOptions (Maybe Text)
+createPullReviewOptionsBodyL f CreatePullReviewOptions{..} = (\createPullReviewOptionsBody -> CreatePullReviewOptions { createPullReviewOptionsBody, ..} ) <$> f createPullReviewOptionsBody
+{-# INLINE createPullReviewOptionsBodyL #-}
+
+-- | 'createPullReviewOptionsComments' Lens
+createPullReviewOptionsCommentsL :: Lens_' CreatePullReviewOptions (Maybe [CreatePullReviewComment])
+createPullReviewOptionsCommentsL f CreatePullReviewOptions{..} = (\createPullReviewOptionsComments -> CreatePullReviewOptions { createPullReviewOptionsComments, ..} ) <$> f createPullReviewOptionsComments
+{-# INLINE createPullReviewOptionsCommentsL #-}
+
+-- | 'createPullReviewOptionsCommitId' Lens
+createPullReviewOptionsCommitIdL :: Lens_' CreatePullReviewOptions (Maybe Text)
+createPullReviewOptionsCommitIdL f CreatePullReviewOptions{..} = (\createPullReviewOptionsCommitId -> CreatePullReviewOptions { createPullReviewOptionsCommitId, ..} ) <$> f createPullReviewOptionsCommitId
+{-# INLINE createPullReviewOptionsCommitIdL #-}
+
+-- | 'createPullReviewOptionsEvent' Lens
+createPullReviewOptionsEventL :: Lens_' CreatePullReviewOptions (Maybe Text)
+createPullReviewOptionsEventL f CreatePullReviewOptions{..} = (\createPullReviewOptionsEvent -> CreatePullReviewOptions { createPullReviewOptionsEvent, ..} ) <$> f createPullReviewOptionsEvent
+{-# INLINE createPullReviewOptionsEventL #-}
+
+
+
+-- * CreatePushMirrorOption
+
+-- | 'createPushMirrorOptionInterval' Lens
+createPushMirrorOptionIntervalL :: Lens_' CreatePushMirrorOption (Maybe Text)
+createPushMirrorOptionIntervalL f CreatePushMirrorOption{..} = (\createPushMirrorOptionInterval -> CreatePushMirrorOption { createPushMirrorOptionInterval, ..} ) <$> f createPushMirrorOptionInterval
+{-# INLINE createPushMirrorOptionIntervalL #-}
+
+-- | 'createPushMirrorOptionRemoteAddress' Lens
+createPushMirrorOptionRemoteAddressL :: Lens_' CreatePushMirrorOption (Maybe Text)
+createPushMirrorOptionRemoteAddressL f CreatePushMirrorOption{..} = (\createPushMirrorOptionRemoteAddress -> CreatePushMirrorOption { createPushMirrorOptionRemoteAddress, ..} ) <$> f createPushMirrorOptionRemoteAddress
+{-# INLINE createPushMirrorOptionRemoteAddressL #-}
+
+-- | 'createPushMirrorOptionRemotePassword' Lens
+createPushMirrorOptionRemotePasswordL :: Lens_' CreatePushMirrorOption (Maybe Text)
+createPushMirrorOptionRemotePasswordL f CreatePushMirrorOption{..} = (\createPushMirrorOptionRemotePassword -> CreatePushMirrorOption { createPushMirrorOptionRemotePassword, ..} ) <$> f createPushMirrorOptionRemotePassword
+{-# INLINE createPushMirrorOptionRemotePasswordL #-}
+
+-- | 'createPushMirrorOptionRemoteUsername' Lens
+createPushMirrorOptionRemoteUsernameL :: Lens_' CreatePushMirrorOption (Maybe Text)
+createPushMirrorOptionRemoteUsernameL f CreatePushMirrorOption{..} = (\createPushMirrorOptionRemoteUsername -> CreatePushMirrorOption { createPushMirrorOptionRemoteUsername, ..} ) <$> f createPushMirrorOptionRemoteUsername
+{-# INLINE createPushMirrorOptionRemoteUsernameL #-}
+
+-- | 'createPushMirrorOptionSyncOnCommit' Lens
+createPushMirrorOptionSyncOnCommitL :: Lens_' CreatePushMirrorOption (Maybe Bool)
+createPushMirrorOptionSyncOnCommitL f CreatePushMirrorOption{..} = (\createPushMirrorOptionSyncOnCommit -> CreatePushMirrorOption { createPushMirrorOptionSyncOnCommit, ..} ) <$> f createPushMirrorOptionSyncOnCommit
+{-# INLINE createPushMirrorOptionSyncOnCommitL #-}
+
+
+
+-- * CreateReleaseOption
+
+-- | 'createReleaseOptionBody' Lens
+createReleaseOptionBodyL :: Lens_' CreateReleaseOption (Maybe Text)
+createReleaseOptionBodyL f CreateReleaseOption{..} = (\createReleaseOptionBody -> CreateReleaseOption { createReleaseOptionBody, ..} ) <$> f createReleaseOptionBody
+{-# INLINE createReleaseOptionBodyL #-}
+
+-- | 'createReleaseOptionDraft' Lens
+createReleaseOptionDraftL :: Lens_' CreateReleaseOption (Maybe Bool)
+createReleaseOptionDraftL f CreateReleaseOption{..} = (\createReleaseOptionDraft -> CreateReleaseOption { createReleaseOptionDraft, ..} ) <$> f createReleaseOptionDraft
+{-# INLINE createReleaseOptionDraftL #-}
+
+-- | 'createReleaseOptionName' Lens
+createReleaseOptionNameL :: Lens_' CreateReleaseOption (Maybe Text)
+createReleaseOptionNameL f CreateReleaseOption{..} = (\createReleaseOptionName -> CreateReleaseOption { createReleaseOptionName, ..} ) <$> f createReleaseOptionName
+{-# INLINE createReleaseOptionNameL #-}
+
+-- | 'createReleaseOptionPrerelease' Lens
+createReleaseOptionPrereleaseL :: Lens_' CreateReleaseOption (Maybe Bool)
+createReleaseOptionPrereleaseL f CreateReleaseOption{..} = (\createReleaseOptionPrerelease -> CreateReleaseOption { createReleaseOptionPrerelease, ..} ) <$> f createReleaseOptionPrerelease
+{-# INLINE createReleaseOptionPrereleaseL #-}
+
+-- | 'createReleaseOptionTagName' Lens
+createReleaseOptionTagNameL :: Lens_' CreateReleaseOption (Text)
+createReleaseOptionTagNameL f CreateReleaseOption{..} = (\createReleaseOptionTagName -> CreateReleaseOption { createReleaseOptionTagName, ..} ) <$> f createReleaseOptionTagName
+{-# INLINE createReleaseOptionTagNameL #-}
+
+-- | 'createReleaseOptionTargetCommitish' Lens
+createReleaseOptionTargetCommitishL :: Lens_' CreateReleaseOption (Maybe Text)
+createReleaseOptionTargetCommitishL f CreateReleaseOption{..} = (\createReleaseOptionTargetCommitish -> CreateReleaseOption { createReleaseOptionTargetCommitish, ..} ) <$> f createReleaseOptionTargetCommitish
+{-# INLINE createReleaseOptionTargetCommitishL #-}
+
+
+
+-- * CreateRepoOption
+
+-- | 'createRepoOptionAutoInit' Lens
+createRepoOptionAutoInitL :: Lens_' CreateRepoOption (Maybe Bool)
+createRepoOptionAutoInitL f CreateRepoOption{..} = (\createRepoOptionAutoInit -> CreateRepoOption { createRepoOptionAutoInit, ..} ) <$> f createRepoOptionAutoInit
+{-# INLINE createRepoOptionAutoInitL #-}
+
+-- | 'createRepoOptionDefaultBranch' Lens
+createRepoOptionDefaultBranchL :: Lens_' CreateRepoOption (Maybe Text)
+createRepoOptionDefaultBranchL f CreateRepoOption{..} = (\createRepoOptionDefaultBranch -> CreateRepoOption { createRepoOptionDefaultBranch, ..} ) <$> f createRepoOptionDefaultBranch
+{-# INLINE createRepoOptionDefaultBranchL #-}
+
+-- | 'createRepoOptionDescription' Lens
+createRepoOptionDescriptionL :: Lens_' CreateRepoOption (Maybe Text)
+createRepoOptionDescriptionL f CreateRepoOption{..} = (\createRepoOptionDescription -> CreateRepoOption { createRepoOptionDescription, ..} ) <$> f createRepoOptionDescription
+{-# INLINE createRepoOptionDescriptionL #-}
+
+-- | 'createRepoOptionGitignores' Lens
+createRepoOptionGitignoresL :: Lens_' CreateRepoOption (Maybe Text)
+createRepoOptionGitignoresL f CreateRepoOption{..} = (\createRepoOptionGitignores -> CreateRepoOption { createRepoOptionGitignores, ..} ) <$> f createRepoOptionGitignores
+{-# INLINE createRepoOptionGitignoresL #-}
+
+-- | 'createRepoOptionIssueLabels' Lens
+createRepoOptionIssueLabelsL :: Lens_' CreateRepoOption (Maybe Text)
+createRepoOptionIssueLabelsL f CreateRepoOption{..} = (\createRepoOptionIssueLabels -> CreateRepoOption { createRepoOptionIssueLabels, ..} ) <$> f createRepoOptionIssueLabels
+{-# INLINE createRepoOptionIssueLabelsL #-}
+
+-- | 'createRepoOptionLicense' Lens
+createRepoOptionLicenseL :: Lens_' CreateRepoOption (Maybe Text)
+createRepoOptionLicenseL f CreateRepoOption{..} = (\createRepoOptionLicense -> CreateRepoOption { createRepoOptionLicense, ..} ) <$> f createRepoOptionLicense
+{-# INLINE createRepoOptionLicenseL #-}
+
+-- | 'createRepoOptionName' Lens
+createRepoOptionNameL :: Lens_' CreateRepoOption (Text)
+createRepoOptionNameL f CreateRepoOption{..} = (\createRepoOptionName -> CreateRepoOption { createRepoOptionName, ..} ) <$> f createRepoOptionName
+{-# INLINE createRepoOptionNameL #-}
+
+-- | 'createRepoOptionPrivate' Lens
+createRepoOptionPrivateL :: Lens_' CreateRepoOption (Maybe Bool)
+createRepoOptionPrivateL f CreateRepoOption{..} = (\createRepoOptionPrivate -> CreateRepoOption { createRepoOptionPrivate, ..} ) <$> f createRepoOptionPrivate
+{-# INLINE createRepoOptionPrivateL #-}
+
+-- | 'createRepoOptionReadme' Lens
+createRepoOptionReadmeL :: Lens_' CreateRepoOption (Maybe Text)
+createRepoOptionReadmeL f CreateRepoOption{..} = (\createRepoOptionReadme -> CreateRepoOption { createRepoOptionReadme, ..} ) <$> f createRepoOptionReadme
+{-# INLINE createRepoOptionReadmeL #-}
+
+-- | 'createRepoOptionTemplate' Lens
+createRepoOptionTemplateL :: Lens_' CreateRepoOption (Maybe Bool)
+createRepoOptionTemplateL f CreateRepoOption{..} = (\createRepoOptionTemplate -> CreateRepoOption { createRepoOptionTemplate, ..} ) <$> f createRepoOptionTemplate
+{-# INLINE createRepoOptionTemplateL #-}
+
+-- | 'createRepoOptionTrustModel' Lens
+createRepoOptionTrustModelL :: Lens_' CreateRepoOption (Maybe E'TrustModel)
+createRepoOptionTrustModelL f CreateRepoOption{..} = (\createRepoOptionTrustModel -> CreateRepoOption { createRepoOptionTrustModel, ..} ) <$> f createRepoOptionTrustModel
+{-# INLINE createRepoOptionTrustModelL #-}
+
+
+
+-- * CreateStatusOption
+
+-- | 'createStatusOptionContext' Lens
+createStatusOptionContextL :: Lens_' CreateStatusOption (Maybe Text)
+createStatusOptionContextL f CreateStatusOption{..} = (\createStatusOptionContext -> CreateStatusOption { createStatusOptionContext, ..} ) <$> f createStatusOptionContext
+{-# INLINE createStatusOptionContextL #-}
+
+-- | 'createStatusOptionDescription' Lens
+createStatusOptionDescriptionL :: Lens_' CreateStatusOption (Maybe Text)
+createStatusOptionDescriptionL f CreateStatusOption{..} = (\createStatusOptionDescription -> CreateStatusOption { createStatusOptionDescription, ..} ) <$> f createStatusOptionDescription
+{-# INLINE createStatusOptionDescriptionL #-}
+
+-- | 'createStatusOptionState' Lens
+createStatusOptionStateL :: Lens_' CreateStatusOption (Maybe Text)
+createStatusOptionStateL f CreateStatusOption{..} = (\createStatusOptionState -> CreateStatusOption { createStatusOptionState, ..} ) <$> f createStatusOptionState
+{-# INLINE createStatusOptionStateL #-}
+
+-- | 'createStatusOptionTargetUrl' Lens
+createStatusOptionTargetUrlL :: Lens_' CreateStatusOption (Maybe Text)
+createStatusOptionTargetUrlL f CreateStatusOption{..} = (\createStatusOptionTargetUrl -> CreateStatusOption { createStatusOptionTargetUrl, ..} ) <$> f createStatusOptionTargetUrl
+{-# INLINE createStatusOptionTargetUrlL #-}
+
+
+
+-- * CreateTagOption
+
+-- | 'createTagOptionMessage' Lens
+createTagOptionMessageL :: Lens_' CreateTagOption (Maybe Text)
+createTagOptionMessageL f CreateTagOption{..} = (\createTagOptionMessage -> CreateTagOption { createTagOptionMessage, ..} ) <$> f createTagOptionMessage
+{-# INLINE createTagOptionMessageL #-}
+
+-- | 'createTagOptionTagName' Lens
+createTagOptionTagNameL :: Lens_' CreateTagOption (Text)
+createTagOptionTagNameL f CreateTagOption{..} = (\createTagOptionTagName -> CreateTagOption { createTagOptionTagName, ..} ) <$> f createTagOptionTagName
+{-# INLINE createTagOptionTagNameL #-}
+
+-- | 'createTagOptionTarget' Lens
+createTagOptionTargetL :: Lens_' CreateTagOption (Maybe Text)
+createTagOptionTargetL f CreateTagOption{..} = (\createTagOptionTarget -> CreateTagOption { createTagOptionTarget, ..} ) <$> f createTagOptionTarget
+{-# INLINE createTagOptionTargetL #-}
+
+
+
+-- * CreateTeamOption
+
+-- | 'createTeamOptionCanCreateOrgRepo' Lens
+createTeamOptionCanCreateOrgRepoL :: Lens_' CreateTeamOption (Maybe Bool)
+createTeamOptionCanCreateOrgRepoL f CreateTeamOption{..} = (\createTeamOptionCanCreateOrgRepo -> CreateTeamOption { createTeamOptionCanCreateOrgRepo, ..} ) <$> f createTeamOptionCanCreateOrgRepo
+{-# INLINE createTeamOptionCanCreateOrgRepoL #-}
+
+-- | 'createTeamOptionDescription' Lens
+createTeamOptionDescriptionL :: Lens_' CreateTeamOption (Maybe Text)
+createTeamOptionDescriptionL f CreateTeamOption{..} = (\createTeamOptionDescription -> CreateTeamOption { createTeamOptionDescription, ..} ) <$> f createTeamOptionDescription
+{-# INLINE createTeamOptionDescriptionL #-}
+
+-- | 'createTeamOptionIncludesAllRepositories' Lens
+createTeamOptionIncludesAllRepositoriesL :: Lens_' CreateTeamOption (Maybe Bool)
+createTeamOptionIncludesAllRepositoriesL f CreateTeamOption{..} = (\createTeamOptionIncludesAllRepositories -> CreateTeamOption { createTeamOptionIncludesAllRepositories, ..} ) <$> f createTeamOptionIncludesAllRepositories
+{-# INLINE createTeamOptionIncludesAllRepositoriesL #-}
+
+-- | 'createTeamOptionName' Lens
+createTeamOptionNameL :: Lens_' CreateTeamOption (Text)
+createTeamOptionNameL f CreateTeamOption{..} = (\createTeamOptionName -> CreateTeamOption { createTeamOptionName, ..} ) <$> f createTeamOptionName
+{-# INLINE createTeamOptionNameL #-}
+
+-- | 'createTeamOptionPermission' Lens
+createTeamOptionPermissionL :: Lens_' CreateTeamOption (Maybe E'Permission)
+createTeamOptionPermissionL f CreateTeamOption{..} = (\createTeamOptionPermission -> CreateTeamOption { createTeamOptionPermission, ..} ) <$> f createTeamOptionPermission
+{-# INLINE createTeamOptionPermissionL #-}
+
+-- | 'createTeamOptionUnits' Lens
+createTeamOptionUnitsL :: Lens_' CreateTeamOption (Maybe [Text])
+createTeamOptionUnitsL f CreateTeamOption{..} = (\createTeamOptionUnits -> CreateTeamOption { createTeamOptionUnits, ..} ) <$> f createTeamOptionUnits
+{-# INLINE createTeamOptionUnitsL #-}
+
+-- | 'createTeamOptionUnitsMap' Lens
+createTeamOptionUnitsMapL :: Lens_' CreateTeamOption (Maybe (Map.Map String Text))
+createTeamOptionUnitsMapL f CreateTeamOption{..} = (\createTeamOptionUnitsMap -> CreateTeamOption { createTeamOptionUnitsMap, ..} ) <$> f createTeamOptionUnitsMap
+{-# INLINE createTeamOptionUnitsMapL #-}
+
+
+
+-- * CreateUserOption
+
+-- | 'createUserOptionCreatedAt' Lens
+createUserOptionCreatedAtL :: Lens_' CreateUserOption (Maybe DateTime)
+createUserOptionCreatedAtL f CreateUserOption{..} = (\createUserOptionCreatedAt -> CreateUserOption { createUserOptionCreatedAt, ..} ) <$> f createUserOptionCreatedAt
+{-# INLINE createUserOptionCreatedAtL #-}
+
+-- | 'createUserOptionEmail' Lens
+createUserOptionEmailL :: Lens_' CreateUserOption (Text)
+createUserOptionEmailL f CreateUserOption{..} = (\createUserOptionEmail -> CreateUserOption { createUserOptionEmail, ..} ) <$> f createUserOptionEmail
+{-# INLINE createUserOptionEmailL #-}
+
+-- | 'createUserOptionFullName' Lens
+createUserOptionFullNameL :: Lens_' CreateUserOption (Maybe Text)
+createUserOptionFullNameL f CreateUserOption{..} = (\createUserOptionFullName -> CreateUserOption { createUserOptionFullName, ..} ) <$> f createUserOptionFullName
+{-# INLINE createUserOptionFullNameL #-}
+
+-- | 'createUserOptionLoginName' Lens
+createUserOptionLoginNameL :: Lens_' CreateUserOption (Maybe Text)
+createUserOptionLoginNameL f CreateUserOption{..} = (\createUserOptionLoginName -> CreateUserOption { createUserOptionLoginName, ..} ) <$> f createUserOptionLoginName
+{-# INLINE createUserOptionLoginNameL #-}
+
+-- | 'createUserOptionMustChangePassword' Lens
+createUserOptionMustChangePasswordL :: Lens_' CreateUserOption (Maybe Bool)
+createUserOptionMustChangePasswordL f CreateUserOption{..} = (\createUserOptionMustChangePassword -> CreateUserOption { createUserOptionMustChangePassword, ..} ) <$> f createUserOptionMustChangePassword
+{-# INLINE createUserOptionMustChangePasswordL #-}
+
+-- | 'createUserOptionPassword' Lens
+createUserOptionPasswordL :: Lens_' CreateUserOption (Text)
+createUserOptionPasswordL f CreateUserOption{..} = (\createUserOptionPassword -> CreateUserOption { createUserOptionPassword, ..} ) <$> f createUserOptionPassword
+{-# INLINE createUserOptionPasswordL #-}
+
+-- | 'createUserOptionRestricted' Lens
+createUserOptionRestrictedL :: Lens_' CreateUserOption (Maybe Bool)
+createUserOptionRestrictedL f CreateUserOption{..} = (\createUserOptionRestricted -> CreateUserOption { createUserOptionRestricted, ..} ) <$> f createUserOptionRestricted
+{-# INLINE createUserOptionRestrictedL #-}
+
+-- | 'createUserOptionSendNotify' Lens
+createUserOptionSendNotifyL :: Lens_' CreateUserOption (Maybe Bool)
+createUserOptionSendNotifyL f CreateUserOption{..} = (\createUserOptionSendNotify -> CreateUserOption { createUserOptionSendNotify, ..} ) <$> f createUserOptionSendNotify
+{-# INLINE createUserOptionSendNotifyL #-}
+
+-- | 'createUserOptionSourceId' Lens
+createUserOptionSourceIdL :: Lens_' CreateUserOption (Maybe Integer)
+createUserOptionSourceIdL f CreateUserOption{..} = (\createUserOptionSourceId -> CreateUserOption { createUserOptionSourceId, ..} ) <$> f createUserOptionSourceId
+{-# INLINE createUserOptionSourceIdL #-}
+
+-- | 'createUserOptionUsername' Lens
+createUserOptionUsernameL :: Lens_' CreateUserOption (Text)
+createUserOptionUsernameL f CreateUserOption{..} = (\createUserOptionUsername -> CreateUserOption { createUserOptionUsername, ..} ) <$> f createUserOptionUsername
+{-# INLINE createUserOptionUsernameL #-}
+
+-- | 'createUserOptionVisibility' Lens
+createUserOptionVisibilityL :: Lens_' CreateUserOption (Maybe Text)
+createUserOptionVisibilityL f CreateUserOption{..} = (\createUserOptionVisibility -> CreateUserOption { createUserOptionVisibility, ..} ) <$> f createUserOptionVisibility
+{-# INLINE createUserOptionVisibilityL #-}
+
+
+
+-- * CreateWikiPageOptions
+
+-- | 'createWikiPageOptionsContentBase64' Lens
+createWikiPageOptionsContentBase64L :: Lens_' CreateWikiPageOptions (Maybe Text)
+createWikiPageOptionsContentBase64L f CreateWikiPageOptions{..} = (\createWikiPageOptionsContentBase64 -> CreateWikiPageOptions { createWikiPageOptionsContentBase64, ..} ) <$> f createWikiPageOptionsContentBase64
+{-# INLINE createWikiPageOptionsContentBase64L #-}
+
+-- | 'createWikiPageOptionsMessage' Lens
+createWikiPageOptionsMessageL :: Lens_' CreateWikiPageOptions (Maybe Text)
+createWikiPageOptionsMessageL f CreateWikiPageOptions{..} = (\createWikiPageOptionsMessage -> CreateWikiPageOptions { createWikiPageOptionsMessage, ..} ) <$> f createWikiPageOptionsMessage
+{-# INLINE createWikiPageOptionsMessageL #-}
+
+-- | 'createWikiPageOptionsTitle' Lens
+createWikiPageOptionsTitleL :: Lens_' CreateWikiPageOptions (Maybe Text)
+createWikiPageOptionsTitleL f CreateWikiPageOptions{..} = (\createWikiPageOptionsTitle -> CreateWikiPageOptions { createWikiPageOptionsTitle, ..} ) <$> f createWikiPageOptionsTitle
+{-# INLINE createWikiPageOptionsTitleL #-}
+
+
+
+-- * Cron
+
+-- | 'cronExecTimes' Lens
+cronExecTimesL :: Lens_' Cron (Maybe Integer)
+cronExecTimesL f Cron{..} = (\cronExecTimes -> Cron { cronExecTimes, ..} ) <$> f cronExecTimes
+{-# INLINE cronExecTimesL #-}
+
+-- | 'cronName' Lens
+cronNameL :: Lens_' Cron (Maybe Text)
+cronNameL f Cron{..} = (\cronName -> Cron { cronName, ..} ) <$> f cronName
+{-# INLINE cronNameL #-}
+
+-- | 'cronNext' Lens
+cronNextL :: Lens_' Cron (Maybe DateTime)
+cronNextL f Cron{..} = (\cronNext -> Cron { cronNext, ..} ) <$> f cronNext
+{-# INLINE cronNextL #-}
+
+-- | 'cronPrev' Lens
+cronPrevL :: Lens_' Cron (Maybe DateTime)
+cronPrevL f Cron{..} = (\cronPrev -> Cron { cronPrev, ..} ) <$> f cronPrev
+{-# INLINE cronPrevL #-}
+
+-- | 'cronSchedule' Lens
+cronScheduleL :: Lens_' Cron (Maybe Text)
+cronScheduleL f Cron{..} = (\cronSchedule -> Cron { cronSchedule, ..} ) <$> f cronSchedule
+{-# INLINE cronScheduleL #-}
+
+
+
+-- * DeleteEmailOption
+
+-- | 'deleteEmailOptionEmails' Lens
+deleteEmailOptionEmailsL :: Lens_' DeleteEmailOption (Maybe [Text])
+deleteEmailOptionEmailsL f DeleteEmailOption{..} = (\deleteEmailOptionEmails -> DeleteEmailOption { deleteEmailOptionEmails, ..} ) <$> f deleteEmailOptionEmails
+{-# INLINE deleteEmailOptionEmailsL #-}
+
+
+
+-- * DeleteFileOptions
+
+-- | 'deleteFileOptionsAuthor' Lens
+deleteFileOptionsAuthorL :: Lens_' DeleteFileOptions (Maybe Identity)
+deleteFileOptionsAuthorL f DeleteFileOptions{..} = (\deleteFileOptionsAuthor -> DeleteFileOptions { deleteFileOptionsAuthor, ..} ) <$> f deleteFileOptionsAuthor
+{-# INLINE deleteFileOptionsAuthorL #-}
+
+-- | 'deleteFileOptionsBranch' Lens
+deleteFileOptionsBranchL :: Lens_' DeleteFileOptions (Maybe Text)
+deleteFileOptionsBranchL f DeleteFileOptions{..} = (\deleteFileOptionsBranch -> DeleteFileOptions { deleteFileOptionsBranch, ..} ) <$> f deleteFileOptionsBranch
+{-# INLINE deleteFileOptionsBranchL #-}
+
+-- | 'deleteFileOptionsCommitter' Lens
+deleteFileOptionsCommitterL :: Lens_' DeleteFileOptions (Maybe Identity)
+deleteFileOptionsCommitterL f DeleteFileOptions{..} = (\deleteFileOptionsCommitter -> DeleteFileOptions { deleteFileOptionsCommitter, ..} ) <$> f deleteFileOptionsCommitter
+{-# INLINE deleteFileOptionsCommitterL #-}
+
+-- | 'deleteFileOptionsDates' Lens
+deleteFileOptionsDatesL :: Lens_' DeleteFileOptions (Maybe CommitDateOptions)
+deleteFileOptionsDatesL f DeleteFileOptions{..} = (\deleteFileOptionsDates -> DeleteFileOptions { deleteFileOptionsDates, ..} ) <$> f deleteFileOptionsDates
+{-# INLINE deleteFileOptionsDatesL #-}
+
+-- | 'deleteFileOptionsMessage' Lens
+deleteFileOptionsMessageL :: Lens_' DeleteFileOptions (Maybe Text)
+deleteFileOptionsMessageL f DeleteFileOptions{..} = (\deleteFileOptionsMessage -> DeleteFileOptions { deleteFileOptionsMessage, ..} ) <$> f deleteFileOptionsMessage
+{-# INLINE deleteFileOptionsMessageL #-}
+
+-- | 'deleteFileOptionsNewBranch' Lens
+deleteFileOptionsNewBranchL :: Lens_' DeleteFileOptions (Maybe Text)
+deleteFileOptionsNewBranchL f DeleteFileOptions{..} = (\deleteFileOptionsNewBranch -> DeleteFileOptions { deleteFileOptionsNewBranch, ..} ) <$> f deleteFileOptionsNewBranch
+{-# INLINE deleteFileOptionsNewBranchL #-}
+
+-- | 'deleteFileOptionsSha' Lens
+deleteFileOptionsShaL :: Lens_' DeleteFileOptions (Text)
+deleteFileOptionsShaL f DeleteFileOptions{..} = (\deleteFileOptionsSha -> DeleteFileOptions { deleteFileOptionsSha, ..} ) <$> f deleteFileOptionsSha
+{-# INLINE deleteFileOptionsShaL #-}
+
+-- | 'deleteFileOptionsSignoff' Lens
+deleteFileOptionsSignoffL :: Lens_' DeleteFileOptions (Maybe Bool)
+deleteFileOptionsSignoffL f DeleteFileOptions{..} = (\deleteFileOptionsSignoff -> DeleteFileOptions { deleteFileOptionsSignoff, ..} ) <$> f deleteFileOptionsSignoff
+{-# INLINE deleteFileOptionsSignoffL #-}
+
+
+
+-- * DeployKey
+
+-- | 'deployKeyCreatedAt' Lens
+deployKeyCreatedAtL :: Lens_' DeployKey (Maybe DateTime)
+deployKeyCreatedAtL f DeployKey{..} = (\deployKeyCreatedAt -> DeployKey { deployKeyCreatedAt, ..} ) <$> f deployKeyCreatedAt
+{-# INLINE deployKeyCreatedAtL #-}
+
+-- | 'deployKeyFingerprint' Lens
+deployKeyFingerprintL :: Lens_' DeployKey (Maybe Text)
+deployKeyFingerprintL f DeployKey{..} = (\deployKeyFingerprint -> DeployKey { deployKeyFingerprint, ..} ) <$> f deployKeyFingerprint
+{-# INLINE deployKeyFingerprintL #-}
+
+-- | 'deployKeyId' Lens
+deployKeyIdL :: Lens_' DeployKey (Maybe Integer)
+deployKeyIdL f DeployKey{..} = (\deployKeyId -> DeployKey { deployKeyId, ..} ) <$> f deployKeyId
+{-# INLINE deployKeyIdL #-}
+
+-- | 'deployKeyKey' Lens
+deployKeyKeyL :: Lens_' DeployKey (Maybe Text)
+deployKeyKeyL f DeployKey{..} = (\deployKeyKey -> DeployKey { deployKeyKey, ..} ) <$> f deployKeyKey
+{-# INLINE deployKeyKeyL #-}
+
+-- | 'deployKeyKeyId' Lens
+deployKeyKeyIdL :: Lens_' DeployKey (Maybe Integer)
+deployKeyKeyIdL f DeployKey{..} = (\deployKeyKeyId -> DeployKey { deployKeyKeyId, ..} ) <$> f deployKeyKeyId
+{-# INLINE deployKeyKeyIdL #-}
+
+-- | 'deployKeyReadOnly' Lens
+deployKeyReadOnlyL :: Lens_' DeployKey (Maybe Bool)
+deployKeyReadOnlyL f DeployKey{..} = (\deployKeyReadOnly -> DeployKey { deployKeyReadOnly, ..} ) <$> f deployKeyReadOnly
+{-# INLINE deployKeyReadOnlyL #-}
+
+-- | 'deployKeyRepository' Lens
+deployKeyRepositoryL :: Lens_' DeployKey (Maybe Repository)
+deployKeyRepositoryL f DeployKey{..} = (\deployKeyRepository -> DeployKey { deployKeyRepository, ..} ) <$> f deployKeyRepository
+{-# INLINE deployKeyRepositoryL #-}
+
+-- | 'deployKeyTitle' Lens
+deployKeyTitleL :: Lens_' DeployKey (Maybe Text)
+deployKeyTitleL f DeployKey{..} = (\deployKeyTitle -> DeployKey { deployKeyTitle, ..} ) <$> f deployKeyTitle
+{-# INLINE deployKeyTitleL #-}
+
+-- | 'deployKeyUrl' Lens
+deployKeyUrlL :: Lens_' DeployKey (Maybe Text)
+deployKeyUrlL f DeployKey{..} = (\deployKeyUrl -> DeployKey { deployKeyUrl, ..} ) <$> f deployKeyUrl
+{-# INLINE deployKeyUrlL #-}
+
+
+
+-- * DismissPullReviewOptions
+
+-- | 'dismissPullReviewOptionsMessage' Lens
+dismissPullReviewOptionsMessageL :: Lens_' DismissPullReviewOptions (Maybe Text)
+dismissPullReviewOptionsMessageL f DismissPullReviewOptions{..} = (\dismissPullReviewOptionsMessage -> DismissPullReviewOptions { dismissPullReviewOptionsMessage, ..} ) <$> f dismissPullReviewOptionsMessage
+{-# INLINE dismissPullReviewOptionsMessageL #-}
+
+-- | 'dismissPullReviewOptionsPriors' Lens
+dismissPullReviewOptionsPriorsL :: Lens_' DismissPullReviewOptions (Maybe Bool)
+dismissPullReviewOptionsPriorsL f DismissPullReviewOptions{..} = (\dismissPullReviewOptionsPriors -> DismissPullReviewOptions { dismissPullReviewOptionsPriors, ..} ) <$> f dismissPullReviewOptionsPriors
+{-# INLINE dismissPullReviewOptionsPriorsL #-}
+
+
+
+-- * EditAttachmentOptions
+
+-- | 'editAttachmentOptionsName' Lens
+editAttachmentOptionsNameL :: Lens_' EditAttachmentOptions (Maybe Text)
+editAttachmentOptionsNameL f EditAttachmentOptions{..} = (\editAttachmentOptionsName -> EditAttachmentOptions { editAttachmentOptionsName, ..} ) <$> f editAttachmentOptionsName
+{-# INLINE editAttachmentOptionsNameL #-}
+
+
+
+-- * EditBranchProtectionOption
+
+-- | 'editBranchProtectionOptionApprovalsWhitelistTeams' Lens
+editBranchProtectionOptionApprovalsWhitelistTeamsL :: Lens_' EditBranchProtectionOption (Maybe [Text])
+editBranchProtectionOptionApprovalsWhitelistTeamsL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionApprovalsWhitelistTeams -> EditBranchProtectionOption { editBranchProtectionOptionApprovalsWhitelistTeams, ..} ) <$> f editBranchProtectionOptionApprovalsWhitelistTeams
+{-# INLINE editBranchProtectionOptionApprovalsWhitelistTeamsL #-}
+
+-- | 'editBranchProtectionOptionApprovalsWhitelistUsername' Lens
+editBranchProtectionOptionApprovalsWhitelistUsernameL :: Lens_' EditBranchProtectionOption (Maybe [Text])
+editBranchProtectionOptionApprovalsWhitelistUsernameL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionApprovalsWhitelistUsername -> EditBranchProtectionOption { editBranchProtectionOptionApprovalsWhitelistUsername, ..} ) <$> f editBranchProtectionOptionApprovalsWhitelistUsername
+{-# INLINE editBranchProtectionOptionApprovalsWhitelistUsernameL #-}
+
+-- | 'editBranchProtectionOptionBlockOnOfficialReviewRequests' Lens
+editBranchProtectionOptionBlockOnOfficialReviewRequestsL :: Lens_' EditBranchProtectionOption (Maybe Bool)
+editBranchProtectionOptionBlockOnOfficialReviewRequestsL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionBlockOnOfficialReviewRequests -> EditBranchProtectionOption { editBranchProtectionOptionBlockOnOfficialReviewRequests, ..} ) <$> f editBranchProtectionOptionBlockOnOfficialReviewRequests
+{-# INLINE editBranchProtectionOptionBlockOnOfficialReviewRequestsL #-}
+
+-- | 'editBranchProtectionOptionBlockOnOutdatedBranch' Lens
+editBranchProtectionOptionBlockOnOutdatedBranchL :: Lens_' EditBranchProtectionOption (Maybe Bool)
+editBranchProtectionOptionBlockOnOutdatedBranchL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionBlockOnOutdatedBranch -> EditBranchProtectionOption { editBranchProtectionOptionBlockOnOutdatedBranch, ..} ) <$> f editBranchProtectionOptionBlockOnOutdatedBranch
+{-# INLINE editBranchProtectionOptionBlockOnOutdatedBranchL #-}
+
+-- | 'editBranchProtectionOptionBlockOnRejectedReviews' Lens
+editBranchProtectionOptionBlockOnRejectedReviewsL :: Lens_' EditBranchProtectionOption (Maybe Bool)
+editBranchProtectionOptionBlockOnRejectedReviewsL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionBlockOnRejectedReviews -> EditBranchProtectionOption { editBranchProtectionOptionBlockOnRejectedReviews, ..} ) <$> f editBranchProtectionOptionBlockOnRejectedReviews
+{-# INLINE editBranchProtectionOptionBlockOnRejectedReviewsL #-}
+
+-- | 'editBranchProtectionOptionDismissStaleApprovals' Lens
+editBranchProtectionOptionDismissStaleApprovalsL :: Lens_' EditBranchProtectionOption (Maybe Bool)
+editBranchProtectionOptionDismissStaleApprovalsL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionDismissStaleApprovals -> EditBranchProtectionOption { editBranchProtectionOptionDismissStaleApprovals, ..} ) <$> f editBranchProtectionOptionDismissStaleApprovals
+{-# INLINE editBranchProtectionOptionDismissStaleApprovalsL #-}
+
+-- | 'editBranchProtectionOptionEnableApprovalsWhitelist' Lens
+editBranchProtectionOptionEnableApprovalsWhitelistL :: Lens_' EditBranchProtectionOption (Maybe Bool)
+editBranchProtectionOptionEnableApprovalsWhitelistL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionEnableApprovalsWhitelist -> EditBranchProtectionOption { editBranchProtectionOptionEnableApprovalsWhitelist, ..} ) <$> f editBranchProtectionOptionEnableApprovalsWhitelist
+{-# INLINE editBranchProtectionOptionEnableApprovalsWhitelistL #-}
+
+-- | 'editBranchProtectionOptionEnableMergeWhitelist' Lens
+editBranchProtectionOptionEnableMergeWhitelistL :: Lens_' EditBranchProtectionOption (Maybe Bool)
+editBranchProtectionOptionEnableMergeWhitelistL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionEnableMergeWhitelist -> EditBranchProtectionOption { editBranchProtectionOptionEnableMergeWhitelist, ..} ) <$> f editBranchProtectionOptionEnableMergeWhitelist
+{-# INLINE editBranchProtectionOptionEnableMergeWhitelistL #-}
+
+-- | 'editBranchProtectionOptionEnablePush' Lens
+editBranchProtectionOptionEnablePushL :: Lens_' EditBranchProtectionOption (Maybe Bool)
+editBranchProtectionOptionEnablePushL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionEnablePush -> EditBranchProtectionOption { editBranchProtectionOptionEnablePush, ..} ) <$> f editBranchProtectionOptionEnablePush
+{-# INLINE editBranchProtectionOptionEnablePushL #-}
+
+-- | 'editBranchProtectionOptionEnablePushWhitelist' Lens
+editBranchProtectionOptionEnablePushWhitelistL :: Lens_' EditBranchProtectionOption (Maybe Bool)
+editBranchProtectionOptionEnablePushWhitelistL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionEnablePushWhitelist -> EditBranchProtectionOption { editBranchProtectionOptionEnablePushWhitelist, ..} ) <$> f editBranchProtectionOptionEnablePushWhitelist
+{-# INLINE editBranchProtectionOptionEnablePushWhitelistL #-}
+
+-- | 'editBranchProtectionOptionEnableStatusCheck' Lens
+editBranchProtectionOptionEnableStatusCheckL :: Lens_' EditBranchProtectionOption (Maybe Bool)
+editBranchProtectionOptionEnableStatusCheckL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionEnableStatusCheck -> EditBranchProtectionOption { editBranchProtectionOptionEnableStatusCheck, ..} ) <$> f editBranchProtectionOptionEnableStatusCheck
+{-# INLINE editBranchProtectionOptionEnableStatusCheckL #-}
+
+-- | 'editBranchProtectionOptionMergeWhitelistTeams' Lens
+editBranchProtectionOptionMergeWhitelistTeamsL :: Lens_' EditBranchProtectionOption (Maybe [Text])
+editBranchProtectionOptionMergeWhitelistTeamsL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionMergeWhitelistTeams -> EditBranchProtectionOption { editBranchProtectionOptionMergeWhitelistTeams, ..} ) <$> f editBranchProtectionOptionMergeWhitelistTeams
+{-# INLINE editBranchProtectionOptionMergeWhitelistTeamsL #-}
+
+-- | 'editBranchProtectionOptionMergeWhitelistUsernames' Lens
+editBranchProtectionOptionMergeWhitelistUsernamesL :: Lens_' EditBranchProtectionOption (Maybe [Text])
+editBranchProtectionOptionMergeWhitelistUsernamesL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionMergeWhitelistUsernames -> EditBranchProtectionOption { editBranchProtectionOptionMergeWhitelistUsernames, ..} ) <$> f editBranchProtectionOptionMergeWhitelistUsernames
+{-# INLINE editBranchProtectionOptionMergeWhitelistUsernamesL #-}
+
+-- | 'editBranchProtectionOptionProtectedFilePatterns' Lens
+editBranchProtectionOptionProtectedFilePatternsL :: Lens_' EditBranchProtectionOption (Maybe Text)
+editBranchProtectionOptionProtectedFilePatternsL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionProtectedFilePatterns -> EditBranchProtectionOption { editBranchProtectionOptionProtectedFilePatterns, ..} ) <$> f editBranchProtectionOptionProtectedFilePatterns
+{-# INLINE editBranchProtectionOptionProtectedFilePatternsL #-}
+
+-- | 'editBranchProtectionOptionPushWhitelistDeployKeys' Lens
+editBranchProtectionOptionPushWhitelistDeployKeysL :: Lens_' EditBranchProtectionOption (Maybe Bool)
+editBranchProtectionOptionPushWhitelistDeployKeysL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionPushWhitelistDeployKeys -> EditBranchProtectionOption { editBranchProtectionOptionPushWhitelistDeployKeys, ..} ) <$> f editBranchProtectionOptionPushWhitelistDeployKeys
+{-# INLINE editBranchProtectionOptionPushWhitelistDeployKeysL #-}
+
+-- | 'editBranchProtectionOptionPushWhitelistTeams' Lens
+editBranchProtectionOptionPushWhitelistTeamsL :: Lens_' EditBranchProtectionOption (Maybe [Text])
+editBranchProtectionOptionPushWhitelistTeamsL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionPushWhitelistTeams -> EditBranchProtectionOption { editBranchProtectionOptionPushWhitelistTeams, ..} ) <$> f editBranchProtectionOptionPushWhitelistTeams
+{-# INLINE editBranchProtectionOptionPushWhitelistTeamsL #-}
+
+-- | 'editBranchProtectionOptionPushWhitelistUsernames' Lens
+editBranchProtectionOptionPushWhitelistUsernamesL :: Lens_' EditBranchProtectionOption (Maybe [Text])
+editBranchProtectionOptionPushWhitelistUsernamesL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionPushWhitelistUsernames -> EditBranchProtectionOption { editBranchProtectionOptionPushWhitelistUsernames, ..} ) <$> f editBranchProtectionOptionPushWhitelistUsernames
+{-# INLINE editBranchProtectionOptionPushWhitelistUsernamesL #-}
+
+-- | 'editBranchProtectionOptionRequireSignedCommits' Lens
+editBranchProtectionOptionRequireSignedCommitsL :: Lens_' EditBranchProtectionOption (Maybe Bool)
+editBranchProtectionOptionRequireSignedCommitsL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionRequireSignedCommits -> EditBranchProtectionOption { editBranchProtectionOptionRequireSignedCommits, ..} ) <$> f editBranchProtectionOptionRequireSignedCommits
+{-# INLINE editBranchProtectionOptionRequireSignedCommitsL #-}
+
+-- | 'editBranchProtectionOptionRequiredApprovals' Lens
+editBranchProtectionOptionRequiredApprovalsL :: Lens_' EditBranchProtectionOption (Maybe Integer)
+editBranchProtectionOptionRequiredApprovalsL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionRequiredApprovals -> EditBranchProtectionOption { editBranchProtectionOptionRequiredApprovals, ..} ) <$> f editBranchProtectionOptionRequiredApprovals
+{-# INLINE editBranchProtectionOptionRequiredApprovalsL #-}
+
+-- | 'editBranchProtectionOptionStatusCheckContexts' Lens
+editBranchProtectionOptionStatusCheckContextsL :: Lens_' EditBranchProtectionOption (Maybe [Text])
+editBranchProtectionOptionStatusCheckContextsL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionStatusCheckContexts -> EditBranchProtectionOption { editBranchProtectionOptionStatusCheckContexts, ..} ) <$> f editBranchProtectionOptionStatusCheckContexts
+{-# INLINE editBranchProtectionOptionStatusCheckContextsL #-}
+
+-- | 'editBranchProtectionOptionUnprotectedFilePatterns' Lens
+editBranchProtectionOptionUnprotectedFilePatternsL :: Lens_' EditBranchProtectionOption (Maybe Text)
+editBranchProtectionOptionUnprotectedFilePatternsL f EditBranchProtectionOption{..} = (\editBranchProtectionOptionUnprotectedFilePatterns -> EditBranchProtectionOption { editBranchProtectionOptionUnprotectedFilePatterns, ..} ) <$> f editBranchProtectionOptionUnprotectedFilePatterns
+{-# INLINE editBranchProtectionOptionUnprotectedFilePatternsL #-}
+
+
+
+-- * EditDeadlineOption
+
+-- | 'editDeadlineOptionDueDate' Lens
+editDeadlineOptionDueDateL :: Lens_' EditDeadlineOption (DateTime)
+editDeadlineOptionDueDateL f EditDeadlineOption{..} = (\editDeadlineOptionDueDate -> EditDeadlineOption { editDeadlineOptionDueDate, ..} ) <$> f editDeadlineOptionDueDate
+{-# INLINE editDeadlineOptionDueDateL #-}
+
+
+
+-- * EditGitHookOption
+
+-- | 'editGitHookOptionContent' Lens
+editGitHookOptionContentL :: Lens_' EditGitHookOption (Maybe Text)
+editGitHookOptionContentL f EditGitHookOption{..} = (\editGitHookOptionContent -> EditGitHookOption { editGitHookOptionContent, ..} ) <$> f editGitHookOptionContent
+{-# INLINE editGitHookOptionContentL #-}
+
+
+
+-- * EditHookOption
+
+-- | 'editHookOptionActive' Lens
+editHookOptionActiveL :: Lens_' EditHookOption (Maybe Bool)
+editHookOptionActiveL f EditHookOption{..} = (\editHookOptionActive -> EditHookOption { editHookOptionActive, ..} ) <$> f editHookOptionActive
+{-# INLINE editHookOptionActiveL #-}
+
+-- | 'editHookOptionAuthorizationHeader' Lens
+editHookOptionAuthorizationHeaderL :: Lens_' EditHookOption (Maybe Text)
+editHookOptionAuthorizationHeaderL f EditHookOption{..} = (\editHookOptionAuthorizationHeader -> EditHookOption { editHookOptionAuthorizationHeader, ..} ) <$> f editHookOptionAuthorizationHeader
+{-# INLINE editHookOptionAuthorizationHeaderL #-}
+
+-- | 'editHookOptionBranchFilter' Lens
+editHookOptionBranchFilterL :: Lens_' EditHookOption (Maybe Text)
+editHookOptionBranchFilterL f EditHookOption{..} = (\editHookOptionBranchFilter -> EditHookOption { editHookOptionBranchFilter, ..} ) <$> f editHookOptionBranchFilter
+{-# INLINE editHookOptionBranchFilterL #-}
+
+-- | 'editHookOptionConfig' Lens
+editHookOptionConfigL :: Lens_' EditHookOption (Maybe (Map.Map String Text))
+editHookOptionConfigL f EditHookOption{..} = (\editHookOptionConfig -> EditHookOption { editHookOptionConfig, ..} ) <$> f editHookOptionConfig
+{-# INLINE editHookOptionConfigL #-}
+
+-- | 'editHookOptionEvents' Lens
+editHookOptionEventsL :: Lens_' EditHookOption (Maybe [Text])
+editHookOptionEventsL f EditHookOption{..} = (\editHookOptionEvents -> EditHookOption { editHookOptionEvents, ..} ) <$> f editHookOptionEvents
+{-# INLINE editHookOptionEventsL #-}
+
+
+
+-- * EditIssueCommentOption
+
+-- | 'editIssueCommentOptionBody' Lens
+editIssueCommentOptionBodyL :: Lens_' EditIssueCommentOption (Text)
+editIssueCommentOptionBodyL f EditIssueCommentOption{..} = (\editIssueCommentOptionBody -> EditIssueCommentOption { editIssueCommentOptionBody, ..} ) <$> f editIssueCommentOptionBody
+{-# INLINE editIssueCommentOptionBodyL #-}
+
+
+
+-- * EditIssueOption
+
+-- | 'editIssueOptionAssignee' Lens
+editIssueOptionAssigneeL :: Lens_' EditIssueOption (Maybe Text)
+editIssueOptionAssigneeL f EditIssueOption{..} = (\editIssueOptionAssignee -> EditIssueOption { editIssueOptionAssignee, ..} ) <$> f editIssueOptionAssignee
+{-# INLINE editIssueOptionAssigneeL #-}
+
+-- | 'editIssueOptionAssignees' Lens
+editIssueOptionAssigneesL :: Lens_' EditIssueOption (Maybe [Text])
+editIssueOptionAssigneesL f EditIssueOption{..} = (\editIssueOptionAssignees -> EditIssueOption { editIssueOptionAssignees, ..} ) <$> f editIssueOptionAssignees
+{-# INLINE editIssueOptionAssigneesL #-}
+
+-- | 'editIssueOptionBody' Lens
+editIssueOptionBodyL :: Lens_' EditIssueOption (Maybe Text)
+editIssueOptionBodyL f EditIssueOption{..} = (\editIssueOptionBody -> EditIssueOption { editIssueOptionBody, ..} ) <$> f editIssueOptionBody
+{-# INLINE editIssueOptionBodyL #-}
+
+-- | 'editIssueOptionDueDate' Lens
+editIssueOptionDueDateL :: Lens_' EditIssueOption (Maybe DateTime)
+editIssueOptionDueDateL f EditIssueOption{..} = (\editIssueOptionDueDate -> EditIssueOption { editIssueOptionDueDate, ..} ) <$> f editIssueOptionDueDate
+{-# INLINE editIssueOptionDueDateL #-}
+
+-- | 'editIssueOptionMilestone' Lens
+editIssueOptionMilestoneL :: Lens_' EditIssueOption (Maybe Integer)
+editIssueOptionMilestoneL f EditIssueOption{..} = (\editIssueOptionMilestone -> EditIssueOption { editIssueOptionMilestone, ..} ) <$> f editIssueOptionMilestone
+{-# INLINE editIssueOptionMilestoneL #-}
+
+-- | 'editIssueOptionRef' Lens
+editIssueOptionRefL :: Lens_' EditIssueOption (Maybe Text)
+editIssueOptionRefL f EditIssueOption{..} = (\editIssueOptionRef -> EditIssueOption { editIssueOptionRef, ..} ) <$> f editIssueOptionRef
+{-# INLINE editIssueOptionRefL #-}
+
+-- | 'editIssueOptionState' Lens
+editIssueOptionStateL :: Lens_' EditIssueOption (Maybe Text)
+editIssueOptionStateL f EditIssueOption{..} = (\editIssueOptionState -> EditIssueOption { editIssueOptionState, ..} ) <$> f editIssueOptionState
+{-# INLINE editIssueOptionStateL #-}
+
+-- | 'editIssueOptionTitle' Lens
+editIssueOptionTitleL :: Lens_' EditIssueOption (Maybe Text)
+editIssueOptionTitleL f EditIssueOption{..} = (\editIssueOptionTitle -> EditIssueOption { editIssueOptionTitle, ..} ) <$> f editIssueOptionTitle
+{-# INLINE editIssueOptionTitleL #-}
+
+-- | 'editIssueOptionUnsetDueDate' Lens
+editIssueOptionUnsetDueDateL :: Lens_' EditIssueOption (Maybe Bool)
+editIssueOptionUnsetDueDateL f EditIssueOption{..} = (\editIssueOptionUnsetDueDate -> EditIssueOption { editIssueOptionUnsetDueDate, ..} ) <$> f editIssueOptionUnsetDueDate
+{-# INLINE editIssueOptionUnsetDueDateL #-}
+
+
+
+-- * EditLabelOption
+
+-- | 'editLabelOptionColor' Lens
+editLabelOptionColorL :: Lens_' EditLabelOption (Maybe Text)
+editLabelOptionColorL f EditLabelOption{..} = (\editLabelOptionColor -> EditLabelOption { editLabelOptionColor, ..} ) <$> f editLabelOptionColor
+{-# INLINE editLabelOptionColorL #-}
+
+-- | 'editLabelOptionDescription' Lens
+editLabelOptionDescriptionL :: Lens_' EditLabelOption (Maybe Text)
+editLabelOptionDescriptionL f EditLabelOption{..} = (\editLabelOptionDescription -> EditLabelOption { editLabelOptionDescription, ..} ) <$> f editLabelOptionDescription
+{-# INLINE editLabelOptionDescriptionL #-}
+
+-- | 'editLabelOptionExclusive' Lens
+editLabelOptionExclusiveL :: Lens_' EditLabelOption (Maybe Bool)
+editLabelOptionExclusiveL f EditLabelOption{..} = (\editLabelOptionExclusive -> EditLabelOption { editLabelOptionExclusive, ..} ) <$> f editLabelOptionExclusive
+{-# INLINE editLabelOptionExclusiveL #-}
+
+-- | 'editLabelOptionName' Lens
+editLabelOptionNameL :: Lens_' EditLabelOption (Maybe Text)
+editLabelOptionNameL f EditLabelOption{..} = (\editLabelOptionName -> EditLabelOption { editLabelOptionName, ..} ) <$> f editLabelOptionName
+{-# INLINE editLabelOptionNameL #-}
+
+
+
+-- * EditMilestoneOption
+
+-- | 'editMilestoneOptionDescription' Lens
+editMilestoneOptionDescriptionL :: Lens_' EditMilestoneOption (Maybe Text)
+editMilestoneOptionDescriptionL f EditMilestoneOption{..} = (\editMilestoneOptionDescription -> EditMilestoneOption { editMilestoneOptionDescription, ..} ) <$> f editMilestoneOptionDescription
+{-# INLINE editMilestoneOptionDescriptionL #-}
+
+-- | 'editMilestoneOptionDueOn' Lens
+editMilestoneOptionDueOnL :: Lens_' EditMilestoneOption (Maybe DateTime)
+editMilestoneOptionDueOnL f EditMilestoneOption{..} = (\editMilestoneOptionDueOn -> EditMilestoneOption { editMilestoneOptionDueOn, ..} ) <$> f editMilestoneOptionDueOn
+{-# INLINE editMilestoneOptionDueOnL #-}
+
+-- | 'editMilestoneOptionState' Lens
+editMilestoneOptionStateL :: Lens_' EditMilestoneOption (Maybe Text)
+editMilestoneOptionStateL f EditMilestoneOption{..} = (\editMilestoneOptionState -> EditMilestoneOption { editMilestoneOptionState, ..} ) <$> f editMilestoneOptionState
+{-# INLINE editMilestoneOptionStateL #-}
+
+-- | 'editMilestoneOptionTitle' Lens
+editMilestoneOptionTitleL :: Lens_' EditMilestoneOption (Maybe Text)
+editMilestoneOptionTitleL f EditMilestoneOption{..} = (\editMilestoneOptionTitle -> EditMilestoneOption { editMilestoneOptionTitle, ..} ) <$> f editMilestoneOptionTitle
+{-# INLINE editMilestoneOptionTitleL #-}
+
+
+
+-- * EditOrgOption
+
+-- | 'editOrgOptionDescription' Lens
+editOrgOptionDescriptionL :: Lens_' EditOrgOption (Maybe Text)
+editOrgOptionDescriptionL f EditOrgOption{..} = (\editOrgOptionDescription -> EditOrgOption { editOrgOptionDescription, ..} ) <$> f editOrgOptionDescription
+{-# INLINE editOrgOptionDescriptionL #-}
+
+-- | 'editOrgOptionFullName' Lens
+editOrgOptionFullNameL :: Lens_' EditOrgOption (Maybe Text)
+editOrgOptionFullNameL f EditOrgOption{..} = (\editOrgOptionFullName -> EditOrgOption { editOrgOptionFullName, ..} ) <$> f editOrgOptionFullName
+{-# INLINE editOrgOptionFullNameL #-}
+
+-- | 'editOrgOptionLocation' Lens
+editOrgOptionLocationL :: Lens_' EditOrgOption (Maybe Text)
+editOrgOptionLocationL f EditOrgOption{..} = (\editOrgOptionLocation -> EditOrgOption { editOrgOptionLocation, ..} ) <$> f editOrgOptionLocation
+{-# INLINE editOrgOptionLocationL #-}
+
+-- | 'editOrgOptionRepoAdminChangeTeamAccess' Lens
+editOrgOptionRepoAdminChangeTeamAccessL :: Lens_' EditOrgOption (Maybe Bool)
+editOrgOptionRepoAdminChangeTeamAccessL f EditOrgOption{..} = (\editOrgOptionRepoAdminChangeTeamAccess -> EditOrgOption { editOrgOptionRepoAdminChangeTeamAccess, ..} ) <$> f editOrgOptionRepoAdminChangeTeamAccess
+{-# INLINE editOrgOptionRepoAdminChangeTeamAccessL #-}
+
+-- | 'editOrgOptionVisibility' Lens
+editOrgOptionVisibilityL :: Lens_' EditOrgOption (Maybe E'Visibility)
+editOrgOptionVisibilityL f EditOrgOption{..} = (\editOrgOptionVisibility -> EditOrgOption { editOrgOptionVisibility, ..} ) <$> f editOrgOptionVisibility
+{-# INLINE editOrgOptionVisibilityL #-}
+
+-- | 'editOrgOptionWebsite' Lens
+editOrgOptionWebsiteL :: Lens_' EditOrgOption (Maybe Text)
+editOrgOptionWebsiteL f EditOrgOption{..} = (\editOrgOptionWebsite -> EditOrgOption { editOrgOptionWebsite, ..} ) <$> f editOrgOptionWebsite
+{-# INLINE editOrgOptionWebsiteL #-}
+
+
+
+-- * EditPullRequestOption
+
+-- | 'editPullRequestOptionAllowMaintainerEdit' Lens
+editPullRequestOptionAllowMaintainerEditL :: Lens_' EditPullRequestOption (Maybe Bool)
+editPullRequestOptionAllowMaintainerEditL f EditPullRequestOption{..} = (\editPullRequestOptionAllowMaintainerEdit -> EditPullRequestOption { editPullRequestOptionAllowMaintainerEdit, ..} ) <$> f editPullRequestOptionAllowMaintainerEdit
+{-# INLINE editPullRequestOptionAllowMaintainerEditL #-}
+
+-- | 'editPullRequestOptionAssignee' Lens
+editPullRequestOptionAssigneeL :: Lens_' EditPullRequestOption (Maybe Text)
+editPullRequestOptionAssigneeL f EditPullRequestOption{..} = (\editPullRequestOptionAssignee -> EditPullRequestOption { editPullRequestOptionAssignee, ..} ) <$> f editPullRequestOptionAssignee
+{-# INLINE editPullRequestOptionAssigneeL #-}
+
+-- | 'editPullRequestOptionAssignees' Lens
+editPullRequestOptionAssigneesL :: Lens_' EditPullRequestOption (Maybe [Text])
+editPullRequestOptionAssigneesL f EditPullRequestOption{..} = (\editPullRequestOptionAssignees -> EditPullRequestOption { editPullRequestOptionAssignees, ..} ) <$> f editPullRequestOptionAssignees
+{-# INLINE editPullRequestOptionAssigneesL #-}
+
+-- | 'editPullRequestOptionBase' Lens
+editPullRequestOptionBaseL :: Lens_' EditPullRequestOption (Maybe Text)
+editPullRequestOptionBaseL f EditPullRequestOption{..} = (\editPullRequestOptionBase -> EditPullRequestOption { editPullRequestOptionBase, ..} ) <$> f editPullRequestOptionBase
+{-# INLINE editPullRequestOptionBaseL #-}
+
+-- | 'editPullRequestOptionBody' Lens
+editPullRequestOptionBodyL :: Lens_' EditPullRequestOption (Maybe Text)
+editPullRequestOptionBodyL f EditPullRequestOption{..} = (\editPullRequestOptionBody -> EditPullRequestOption { editPullRequestOptionBody, ..} ) <$> f editPullRequestOptionBody
+{-# INLINE editPullRequestOptionBodyL #-}
+
+-- | 'editPullRequestOptionDueDate' Lens
+editPullRequestOptionDueDateL :: Lens_' EditPullRequestOption (Maybe DateTime)
+editPullRequestOptionDueDateL f EditPullRequestOption{..} = (\editPullRequestOptionDueDate -> EditPullRequestOption { editPullRequestOptionDueDate, ..} ) <$> f editPullRequestOptionDueDate
+{-# INLINE editPullRequestOptionDueDateL #-}
+
+-- | 'editPullRequestOptionLabels' Lens
+editPullRequestOptionLabelsL :: Lens_' EditPullRequestOption (Maybe [Integer])
+editPullRequestOptionLabelsL f EditPullRequestOption{..} = (\editPullRequestOptionLabels -> EditPullRequestOption { editPullRequestOptionLabels, ..} ) <$> f editPullRequestOptionLabels
+{-# INLINE editPullRequestOptionLabelsL #-}
+
+-- | 'editPullRequestOptionMilestone' Lens
+editPullRequestOptionMilestoneL :: Lens_' EditPullRequestOption (Maybe Integer)
+editPullRequestOptionMilestoneL f EditPullRequestOption{..} = (\editPullRequestOptionMilestone -> EditPullRequestOption { editPullRequestOptionMilestone, ..} ) <$> f editPullRequestOptionMilestone
+{-# INLINE editPullRequestOptionMilestoneL #-}
+
+-- | 'editPullRequestOptionState' Lens
+editPullRequestOptionStateL :: Lens_' EditPullRequestOption (Maybe Text)
+editPullRequestOptionStateL f EditPullRequestOption{..} = (\editPullRequestOptionState -> EditPullRequestOption { editPullRequestOptionState, ..} ) <$> f editPullRequestOptionState
+{-# INLINE editPullRequestOptionStateL #-}
+
+-- | 'editPullRequestOptionTitle' Lens
+editPullRequestOptionTitleL :: Lens_' EditPullRequestOption (Maybe Text)
+editPullRequestOptionTitleL f EditPullRequestOption{..} = (\editPullRequestOptionTitle -> EditPullRequestOption { editPullRequestOptionTitle, ..} ) <$> f editPullRequestOptionTitle
+{-# INLINE editPullRequestOptionTitleL #-}
+
+-- | 'editPullRequestOptionUnsetDueDate' Lens
+editPullRequestOptionUnsetDueDateL :: Lens_' EditPullRequestOption (Maybe Bool)
+editPullRequestOptionUnsetDueDateL f EditPullRequestOption{..} = (\editPullRequestOptionUnsetDueDate -> EditPullRequestOption { editPullRequestOptionUnsetDueDate, ..} ) <$> f editPullRequestOptionUnsetDueDate
+{-# INLINE editPullRequestOptionUnsetDueDateL #-}
+
+
+
+-- * EditReactionOption
+
+-- | 'editReactionOptionContent' Lens
+editReactionOptionContentL :: Lens_' EditReactionOption (Maybe Text)
+editReactionOptionContentL f EditReactionOption{..} = (\editReactionOptionContent -> EditReactionOption { editReactionOptionContent, ..} ) <$> f editReactionOptionContent
+{-# INLINE editReactionOptionContentL #-}
+
+
+
+-- * EditReleaseOption
+
+-- | 'editReleaseOptionBody' Lens
+editReleaseOptionBodyL :: Lens_' EditReleaseOption (Maybe Text)
+editReleaseOptionBodyL f EditReleaseOption{..} = (\editReleaseOptionBody -> EditReleaseOption { editReleaseOptionBody, ..} ) <$> f editReleaseOptionBody
+{-# INLINE editReleaseOptionBodyL #-}
+
+-- | 'editReleaseOptionDraft' Lens
+editReleaseOptionDraftL :: Lens_' EditReleaseOption (Maybe Bool)
+editReleaseOptionDraftL f EditReleaseOption{..} = (\editReleaseOptionDraft -> EditReleaseOption { editReleaseOptionDraft, ..} ) <$> f editReleaseOptionDraft
+{-# INLINE editReleaseOptionDraftL #-}
+
+-- | 'editReleaseOptionName' Lens
+editReleaseOptionNameL :: Lens_' EditReleaseOption (Maybe Text)
+editReleaseOptionNameL f EditReleaseOption{..} = (\editReleaseOptionName -> EditReleaseOption { editReleaseOptionName, ..} ) <$> f editReleaseOptionName
+{-# INLINE editReleaseOptionNameL #-}
+
+-- | 'editReleaseOptionPrerelease' Lens
+editReleaseOptionPrereleaseL :: Lens_' EditReleaseOption (Maybe Bool)
+editReleaseOptionPrereleaseL f EditReleaseOption{..} = (\editReleaseOptionPrerelease -> EditReleaseOption { editReleaseOptionPrerelease, ..} ) <$> f editReleaseOptionPrerelease
+{-# INLINE editReleaseOptionPrereleaseL #-}
+
+-- | 'editReleaseOptionTagName' Lens
+editReleaseOptionTagNameL :: Lens_' EditReleaseOption (Maybe Text)
+editReleaseOptionTagNameL f EditReleaseOption{..} = (\editReleaseOptionTagName -> EditReleaseOption { editReleaseOptionTagName, ..} ) <$> f editReleaseOptionTagName
+{-# INLINE editReleaseOptionTagNameL #-}
+
+-- | 'editReleaseOptionTargetCommitish' Lens
+editReleaseOptionTargetCommitishL :: Lens_' EditReleaseOption (Maybe Text)
+editReleaseOptionTargetCommitishL f EditReleaseOption{..} = (\editReleaseOptionTargetCommitish -> EditReleaseOption { editReleaseOptionTargetCommitish, ..} ) <$> f editReleaseOptionTargetCommitish
+{-# INLINE editReleaseOptionTargetCommitishL #-}
+
+
+
+-- * EditRepoOption
+
+-- | 'editRepoOptionAllowManualMerge' Lens
+editRepoOptionAllowManualMergeL :: Lens_' EditRepoOption (Maybe Bool)
+editRepoOptionAllowManualMergeL f EditRepoOption{..} = (\editRepoOptionAllowManualMerge -> EditRepoOption { editRepoOptionAllowManualMerge, ..} ) <$> f editRepoOptionAllowManualMerge
+{-# INLINE editRepoOptionAllowManualMergeL #-}
+
+-- | 'editRepoOptionAllowMergeCommits' Lens
+editRepoOptionAllowMergeCommitsL :: Lens_' EditRepoOption (Maybe Bool)
+editRepoOptionAllowMergeCommitsL f EditRepoOption{..} = (\editRepoOptionAllowMergeCommits -> EditRepoOption { editRepoOptionAllowMergeCommits, ..} ) <$> f editRepoOptionAllowMergeCommits
+{-# INLINE editRepoOptionAllowMergeCommitsL #-}
+
+-- | 'editRepoOptionAllowRebase' Lens
+editRepoOptionAllowRebaseL :: Lens_' EditRepoOption (Maybe Bool)
+editRepoOptionAllowRebaseL f EditRepoOption{..} = (\editRepoOptionAllowRebase -> EditRepoOption { editRepoOptionAllowRebase, ..} ) <$> f editRepoOptionAllowRebase
+{-# INLINE editRepoOptionAllowRebaseL #-}
+
+-- | 'editRepoOptionAllowRebaseExplicit' Lens
+editRepoOptionAllowRebaseExplicitL :: Lens_' EditRepoOption (Maybe Bool)
+editRepoOptionAllowRebaseExplicitL f EditRepoOption{..} = (\editRepoOptionAllowRebaseExplicit -> EditRepoOption { editRepoOptionAllowRebaseExplicit, ..} ) <$> f editRepoOptionAllowRebaseExplicit
+{-# INLINE editRepoOptionAllowRebaseExplicitL #-}
+
+-- | 'editRepoOptionAllowRebaseUpdate' Lens
+editRepoOptionAllowRebaseUpdateL :: Lens_' EditRepoOption (Maybe Bool)
+editRepoOptionAllowRebaseUpdateL f EditRepoOption{..} = (\editRepoOptionAllowRebaseUpdate -> EditRepoOption { editRepoOptionAllowRebaseUpdate, ..} ) <$> f editRepoOptionAllowRebaseUpdate
+{-# INLINE editRepoOptionAllowRebaseUpdateL #-}
+
+-- | 'editRepoOptionAllowSquashMerge' Lens
+editRepoOptionAllowSquashMergeL :: Lens_' EditRepoOption (Maybe Bool)
+editRepoOptionAllowSquashMergeL f EditRepoOption{..} = (\editRepoOptionAllowSquashMerge -> EditRepoOption { editRepoOptionAllowSquashMerge, ..} ) <$> f editRepoOptionAllowSquashMerge
+{-# INLINE editRepoOptionAllowSquashMergeL #-}
+
+-- | 'editRepoOptionArchived' Lens
+editRepoOptionArchivedL :: Lens_' EditRepoOption (Maybe Bool)
+editRepoOptionArchivedL f EditRepoOption{..} = (\editRepoOptionArchived -> EditRepoOption { editRepoOptionArchived, ..} ) <$> f editRepoOptionArchived
+{-# INLINE editRepoOptionArchivedL #-}
+
+-- | 'editRepoOptionAutodetectManualMerge' Lens
+editRepoOptionAutodetectManualMergeL :: Lens_' EditRepoOption (Maybe Bool)
+editRepoOptionAutodetectManualMergeL f EditRepoOption{..} = (\editRepoOptionAutodetectManualMerge -> EditRepoOption { editRepoOptionAutodetectManualMerge, ..} ) <$> f editRepoOptionAutodetectManualMerge
+{-# INLINE editRepoOptionAutodetectManualMergeL #-}
+
+-- | 'editRepoOptionDefaultAllowMaintainerEdit' Lens
+editRepoOptionDefaultAllowMaintainerEditL :: Lens_' EditRepoOption (Maybe Bool)
+editRepoOptionDefaultAllowMaintainerEditL f EditRepoOption{..} = (\editRepoOptionDefaultAllowMaintainerEdit -> EditRepoOption { editRepoOptionDefaultAllowMaintainerEdit, ..} ) <$> f editRepoOptionDefaultAllowMaintainerEdit
+{-# INLINE editRepoOptionDefaultAllowMaintainerEditL #-}
+
+-- | 'editRepoOptionDefaultBranch' Lens
+editRepoOptionDefaultBranchL :: Lens_' EditRepoOption (Maybe Text)
+editRepoOptionDefaultBranchL f EditRepoOption{..} = (\editRepoOptionDefaultBranch -> EditRepoOption { editRepoOptionDefaultBranch, ..} ) <$> f editRepoOptionDefaultBranch
+{-# INLINE editRepoOptionDefaultBranchL #-}
+
+-- | 'editRepoOptionDefaultDeleteBranchAfterMerge' Lens
+editRepoOptionDefaultDeleteBranchAfterMergeL :: Lens_' EditRepoOption (Maybe Bool)
+editRepoOptionDefaultDeleteBranchAfterMergeL f EditRepoOption{..} = (\editRepoOptionDefaultDeleteBranchAfterMerge -> EditRepoOption { editRepoOptionDefaultDeleteBranchAfterMerge, ..} ) <$> f editRepoOptionDefaultDeleteBranchAfterMerge
+{-# INLINE editRepoOptionDefaultDeleteBranchAfterMergeL #-}
+
+-- | 'editRepoOptionDefaultMergeStyle' Lens
+editRepoOptionDefaultMergeStyleL :: Lens_' EditRepoOption (Maybe Text)
+editRepoOptionDefaultMergeStyleL f EditRepoOption{..} = (\editRepoOptionDefaultMergeStyle -> EditRepoOption { editRepoOptionDefaultMergeStyle, ..} ) <$> f editRepoOptionDefaultMergeStyle
+{-# INLINE editRepoOptionDefaultMergeStyleL #-}
+
+-- | 'editRepoOptionDescription' Lens
+editRepoOptionDescriptionL :: Lens_' EditRepoOption (Maybe Text)
+editRepoOptionDescriptionL f EditRepoOption{..} = (\editRepoOptionDescription -> EditRepoOption { editRepoOptionDescription, ..} ) <$> f editRepoOptionDescription
+{-# INLINE editRepoOptionDescriptionL #-}
+
+-- | 'editRepoOptionEnablePrune' Lens
+editRepoOptionEnablePruneL :: Lens_' EditRepoOption (Maybe Bool)
+editRepoOptionEnablePruneL f EditRepoOption{..} = (\editRepoOptionEnablePrune -> EditRepoOption { editRepoOptionEnablePrune, ..} ) <$> f editRepoOptionEnablePrune
+{-# INLINE editRepoOptionEnablePruneL #-}
+
+-- | 'editRepoOptionExternalTracker' Lens
+editRepoOptionExternalTrackerL :: Lens_' EditRepoOption (Maybe ExternalTracker)
+editRepoOptionExternalTrackerL f EditRepoOption{..} = (\editRepoOptionExternalTracker -> EditRepoOption { editRepoOptionExternalTracker, ..} ) <$> f editRepoOptionExternalTracker
+{-# INLINE editRepoOptionExternalTrackerL #-}
+
+-- | 'editRepoOptionExternalWiki' Lens
+editRepoOptionExternalWikiL :: Lens_' EditRepoOption (Maybe ExternalWiki)
+editRepoOptionExternalWikiL f EditRepoOption{..} = (\editRepoOptionExternalWiki -> EditRepoOption { editRepoOptionExternalWiki, ..} ) <$> f editRepoOptionExternalWiki
+{-# INLINE editRepoOptionExternalWikiL #-}
+
+-- | 'editRepoOptionHasIssues' Lens
+editRepoOptionHasIssuesL :: Lens_' EditRepoOption (Maybe Bool)
+editRepoOptionHasIssuesL f EditRepoOption{..} = (\editRepoOptionHasIssues -> EditRepoOption { editRepoOptionHasIssues, ..} ) <$> f editRepoOptionHasIssues
+{-# INLINE editRepoOptionHasIssuesL #-}
+
+-- | 'editRepoOptionHasProjects' Lens
+editRepoOptionHasProjectsL :: Lens_' EditRepoOption (Maybe Bool)
+editRepoOptionHasProjectsL f EditRepoOption{..} = (\editRepoOptionHasProjects -> EditRepoOption { editRepoOptionHasProjects, ..} ) <$> f editRepoOptionHasProjects
+{-# INLINE editRepoOptionHasProjectsL #-}
+
+-- | 'editRepoOptionHasPullRequests' Lens
+editRepoOptionHasPullRequestsL :: Lens_' EditRepoOption (Maybe Bool)
+editRepoOptionHasPullRequestsL f EditRepoOption{..} = (\editRepoOptionHasPullRequests -> EditRepoOption { editRepoOptionHasPullRequests, ..} ) <$> f editRepoOptionHasPullRequests
+{-# INLINE editRepoOptionHasPullRequestsL #-}
+
+-- | 'editRepoOptionHasWiki' Lens
+editRepoOptionHasWikiL :: Lens_' EditRepoOption (Maybe Bool)
+editRepoOptionHasWikiL f EditRepoOption{..} = (\editRepoOptionHasWiki -> EditRepoOption { editRepoOptionHasWiki, ..} ) <$> f editRepoOptionHasWiki
+{-# INLINE editRepoOptionHasWikiL #-}
+
+-- | 'editRepoOptionIgnoreWhitespaceConflicts' Lens
+editRepoOptionIgnoreWhitespaceConflictsL :: Lens_' EditRepoOption (Maybe Bool)
+editRepoOptionIgnoreWhitespaceConflictsL f EditRepoOption{..} = (\editRepoOptionIgnoreWhitespaceConflicts -> EditRepoOption { editRepoOptionIgnoreWhitespaceConflicts, ..} ) <$> f editRepoOptionIgnoreWhitespaceConflicts
+{-# INLINE editRepoOptionIgnoreWhitespaceConflictsL #-}
+
+-- | 'editRepoOptionInternalTracker' Lens
+editRepoOptionInternalTrackerL :: Lens_' EditRepoOption (Maybe InternalTracker)
+editRepoOptionInternalTrackerL f EditRepoOption{..} = (\editRepoOptionInternalTracker -> EditRepoOption { editRepoOptionInternalTracker, ..} ) <$> f editRepoOptionInternalTracker
+{-# INLINE editRepoOptionInternalTrackerL #-}
+
+-- | 'editRepoOptionMirrorInterval' Lens
+editRepoOptionMirrorIntervalL :: Lens_' EditRepoOption (Maybe Text)
+editRepoOptionMirrorIntervalL f EditRepoOption{..} = (\editRepoOptionMirrorInterval -> EditRepoOption { editRepoOptionMirrorInterval, ..} ) <$> f editRepoOptionMirrorInterval
+{-# INLINE editRepoOptionMirrorIntervalL #-}
+
+-- | 'editRepoOptionName' Lens
+editRepoOptionNameL :: Lens_' EditRepoOption (Maybe Text)
+editRepoOptionNameL f EditRepoOption{..} = (\editRepoOptionName -> EditRepoOption { editRepoOptionName, ..} ) <$> f editRepoOptionName
+{-# INLINE editRepoOptionNameL #-}
+
+-- | 'editRepoOptionPrivate' Lens
+editRepoOptionPrivateL :: Lens_' EditRepoOption (Maybe Bool)
+editRepoOptionPrivateL f EditRepoOption{..} = (\editRepoOptionPrivate -> EditRepoOption { editRepoOptionPrivate, ..} ) <$> f editRepoOptionPrivate
+{-# INLINE editRepoOptionPrivateL #-}
+
+-- | 'editRepoOptionTemplate' Lens
+editRepoOptionTemplateL :: Lens_' EditRepoOption (Maybe Bool)
+editRepoOptionTemplateL f EditRepoOption{..} = (\editRepoOptionTemplate -> EditRepoOption { editRepoOptionTemplate, ..} ) <$> f editRepoOptionTemplate
+{-# INLINE editRepoOptionTemplateL #-}
+
+-- | 'editRepoOptionWebsite' Lens
+editRepoOptionWebsiteL :: Lens_' EditRepoOption (Maybe Text)
+editRepoOptionWebsiteL f EditRepoOption{..} = (\editRepoOptionWebsite -> EditRepoOption { editRepoOptionWebsite, ..} ) <$> f editRepoOptionWebsite
+{-# INLINE editRepoOptionWebsiteL #-}
+
+
+
+-- * EditTeamOption
+
+-- | 'editTeamOptionCanCreateOrgRepo' Lens
+editTeamOptionCanCreateOrgRepoL :: Lens_' EditTeamOption (Maybe Bool)
+editTeamOptionCanCreateOrgRepoL f EditTeamOption{..} = (\editTeamOptionCanCreateOrgRepo -> EditTeamOption { editTeamOptionCanCreateOrgRepo, ..} ) <$> f editTeamOptionCanCreateOrgRepo
+{-# INLINE editTeamOptionCanCreateOrgRepoL #-}
+
+-- | 'editTeamOptionDescription' Lens
+editTeamOptionDescriptionL :: Lens_' EditTeamOption (Maybe Text)
+editTeamOptionDescriptionL f EditTeamOption{..} = (\editTeamOptionDescription -> EditTeamOption { editTeamOptionDescription, ..} ) <$> f editTeamOptionDescription
+{-# INLINE editTeamOptionDescriptionL #-}
+
+-- | 'editTeamOptionIncludesAllRepositories' Lens
+editTeamOptionIncludesAllRepositoriesL :: Lens_' EditTeamOption (Maybe Bool)
+editTeamOptionIncludesAllRepositoriesL f EditTeamOption{..} = (\editTeamOptionIncludesAllRepositories -> EditTeamOption { editTeamOptionIncludesAllRepositories, ..} ) <$> f editTeamOptionIncludesAllRepositories
+{-# INLINE editTeamOptionIncludesAllRepositoriesL #-}
+
+-- | 'editTeamOptionName' Lens
+editTeamOptionNameL :: Lens_' EditTeamOption (Text)
+editTeamOptionNameL f EditTeamOption{..} = (\editTeamOptionName -> EditTeamOption { editTeamOptionName, ..} ) <$> f editTeamOptionName
+{-# INLINE editTeamOptionNameL #-}
+
+-- | 'editTeamOptionPermission' Lens
+editTeamOptionPermissionL :: Lens_' EditTeamOption (Maybe E'Permission)
+editTeamOptionPermissionL f EditTeamOption{..} = (\editTeamOptionPermission -> EditTeamOption { editTeamOptionPermission, ..} ) <$> f editTeamOptionPermission
+{-# INLINE editTeamOptionPermissionL #-}
+
+-- | 'editTeamOptionUnits' Lens
+editTeamOptionUnitsL :: Lens_' EditTeamOption (Maybe [Text])
+editTeamOptionUnitsL f EditTeamOption{..} = (\editTeamOptionUnits -> EditTeamOption { editTeamOptionUnits, ..} ) <$> f editTeamOptionUnits
+{-# INLINE editTeamOptionUnitsL #-}
+
+-- | 'editTeamOptionUnitsMap' Lens
+editTeamOptionUnitsMapL :: Lens_' EditTeamOption (Maybe (Map.Map String Text))
+editTeamOptionUnitsMapL f EditTeamOption{..} = (\editTeamOptionUnitsMap -> EditTeamOption { editTeamOptionUnitsMap, ..} ) <$> f editTeamOptionUnitsMap
+{-# INLINE editTeamOptionUnitsMapL #-}
+
+
+
+-- * EditUserOption
+
+-- | 'editUserOptionActive' Lens
+editUserOptionActiveL :: Lens_' EditUserOption (Maybe Bool)
+editUserOptionActiveL f EditUserOption{..} = (\editUserOptionActive -> EditUserOption { editUserOptionActive, ..} ) <$> f editUserOptionActive
+{-# INLINE editUserOptionActiveL #-}
+
+-- | 'editUserOptionAdmin' Lens
+editUserOptionAdminL :: Lens_' EditUserOption (Maybe Bool)
+editUserOptionAdminL f EditUserOption{..} = (\editUserOptionAdmin -> EditUserOption { editUserOptionAdmin, ..} ) <$> f editUserOptionAdmin
+{-# INLINE editUserOptionAdminL #-}
+
+-- | 'editUserOptionAllowCreateOrganization' Lens
+editUserOptionAllowCreateOrganizationL :: Lens_' EditUserOption (Maybe Bool)
+editUserOptionAllowCreateOrganizationL f EditUserOption{..} = (\editUserOptionAllowCreateOrganization -> EditUserOption { editUserOptionAllowCreateOrganization, ..} ) <$> f editUserOptionAllowCreateOrganization
+{-# INLINE editUserOptionAllowCreateOrganizationL #-}
+
+-- | 'editUserOptionAllowGitHook' Lens
+editUserOptionAllowGitHookL :: Lens_' EditUserOption (Maybe Bool)
+editUserOptionAllowGitHookL f EditUserOption{..} = (\editUserOptionAllowGitHook -> EditUserOption { editUserOptionAllowGitHook, ..} ) <$> f editUserOptionAllowGitHook
+{-# INLINE editUserOptionAllowGitHookL #-}
+
+-- | 'editUserOptionAllowImportLocal' Lens
+editUserOptionAllowImportLocalL :: Lens_' EditUserOption (Maybe Bool)
+editUserOptionAllowImportLocalL f EditUserOption{..} = (\editUserOptionAllowImportLocal -> EditUserOption { editUserOptionAllowImportLocal, ..} ) <$> f editUserOptionAllowImportLocal
+{-# INLINE editUserOptionAllowImportLocalL #-}
+
+-- | 'editUserOptionDescription' Lens
+editUserOptionDescriptionL :: Lens_' EditUserOption (Maybe Text)
+editUserOptionDescriptionL f EditUserOption{..} = (\editUserOptionDescription -> EditUserOption { editUserOptionDescription, ..} ) <$> f editUserOptionDescription
+{-# INLINE editUserOptionDescriptionL #-}
+
+-- | 'editUserOptionEmail' Lens
+editUserOptionEmailL :: Lens_' EditUserOption (Maybe Text)
+editUserOptionEmailL f EditUserOption{..} = (\editUserOptionEmail -> EditUserOption { editUserOptionEmail, ..} ) <$> f editUserOptionEmail
+{-# INLINE editUserOptionEmailL #-}
+
+-- | 'editUserOptionFullName' Lens
+editUserOptionFullNameL :: Lens_' EditUserOption (Maybe Text)
+editUserOptionFullNameL f EditUserOption{..} = (\editUserOptionFullName -> EditUserOption { editUserOptionFullName, ..} ) <$> f editUserOptionFullName
+{-# INLINE editUserOptionFullNameL #-}
+
+-- | 'editUserOptionLocation' Lens
+editUserOptionLocationL :: Lens_' EditUserOption (Maybe Text)
+editUserOptionLocationL f EditUserOption{..} = (\editUserOptionLocation -> EditUserOption { editUserOptionLocation, ..} ) <$> f editUserOptionLocation
+{-# INLINE editUserOptionLocationL #-}
+
+-- | 'editUserOptionLoginName' Lens
+editUserOptionLoginNameL :: Lens_' EditUserOption (Text)
+editUserOptionLoginNameL f EditUserOption{..} = (\editUserOptionLoginName -> EditUserOption { editUserOptionLoginName, ..} ) <$> f editUserOptionLoginName
+{-# INLINE editUserOptionLoginNameL #-}
+
+-- | 'editUserOptionMaxRepoCreation' Lens
+editUserOptionMaxRepoCreationL :: Lens_' EditUserOption (Maybe Integer)
+editUserOptionMaxRepoCreationL f EditUserOption{..} = (\editUserOptionMaxRepoCreation -> EditUserOption { editUserOptionMaxRepoCreation, ..} ) <$> f editUserOptionMaxRepoCreation
+{-# INLINE editUserOptionMaxRepoCreationL #-}
+
+-- | 'editUserOptionMustChangePassword' Lens
+editUserOptionMustChangePasswordL :: Lens_' EditUserOption (Maybe Bool)
+editUserOptionMustChangePasswordL f EditUserOption{..} = (\editUserOptionMustChangePassword -> EditUserOption { editUserOptionMustChangePassword, ..} ) <$> f editUserOptionMustChangePassword
+{-# INLINE editUserOptionMustChangePasswordL #-}
+
+-- | 'editUserOptionPassword' Lens
+editUserOptionPasswordL :: Lens_' EditUserOption (Maybe Text)
+editUserOptionPasswordL f EditUserOption{..} = (\editUserOptionPassword -> EditUserOption { editUserOptionPassword, ..} ) <$> f editUserOptionPassword
+{-# INLINE editUserOptionPasswordL #-}
+
+-- | 'editUserOptionProhibitLogin' Lens
+editUserOptionProhibitLoginL :: Lens_' EditUserOption (Maybe Bool)
+editUserOptionProhibitLoginL f EditUserOption{..} = (\editUserOptionProhibitLogin -> EditUserOption { editUserOptionProhibitLogin, ..} ) <$> f editUserOptionProhibitLogin
+{-# INLINE editUserOptionProhibitLoginL #-}
+
+-- | 'editUserOptionRestricted' Lens
+editUserOptionRestrictedL :: Lens_' EditUserOption (Maybe Bool)
+editUserOptionRestrictedL f EditUserOption{..} = (\editUserOptionRestricted -> EditUserOption { editUserOptionRestricted, ..} ) <$> f editUserOptionRestricted
+{-# INLINE editUserOptionRestrictedL #-}
+
+-- | 'editUserOptionSourceId' Lens
+editUserOptionSourceIdL :: Lens_' EditUserOption (Integer)
+editUserOptionSourceIdL f EditUserOption{..} = (\editUserOptionSourceId -> EditUserOption { editUserOptionSourceId, ..} ) <$> f editUserOptionSourceId
+{-# INLINE editUserOptionSourceIdL #-}
+
+-- | 'editUserOptionVisibility' Lens
+editUserOptionVisibilityL :: Lens_' EditUserOption (Maybe Text)
+editUserOptionVisibilityL f EditUserOption{..} = (\editUserOptionVisibility -> EditUserOption { editUserOptionVisibility, ..} ) <$> f editUserOptionVisibility
+{-# INLINE editUserOptionVisibilityL #-}
+
+-- | 'editUserOptionWebsite' Lens
+editUserOptionWebsiteL :: Lens_' EditUserOption (Maybe Text)
+editUserOptionWebsiteL f EditUserOption{..} = (\editUserOptionWebsite -> EditUserOption { editUserOptionWebsite, ..} ) <$> f editUserOptionWebsite
+{-# INLINE editUserOptionWebsiteL #-}
+
+
+
+-- * Email
+
+-- | 'emailEmail' Lens
+emailEmailL :: Lens_' Email (Maybe Text)
+emailEmailL f Email{..} = (\emailEmail -> Email { emailEmail, ..} ) <$> f emailEmail
+{-# INLINE emailEmailL #-}
+
+-- | 'emailPrimary' Lens
+emailPrimaryL :: Lens_' Email (Maybe Bool)
+emailPrimaryL f Email{..} = (\emailPrimary -> Email { emailPrimary, ..} ) <$> f emailPrimary
+{-# INLINE emailPrimaryL #-}
+
+-- | 'emailVerified' Lens
+emailVerifiedL :: Lens_' Email (Maybe Bool)
+emailVerifiedL f Email{..} = (\emailVerified -> Email { emailVerified, ..} ) <$> f emailVerified
+{-# INLINE emailVerifiedL #-}
+
+
+
+-- * ExternalTracker
+
+-- | 'externalTrackerExternalTrackerFormat' Lens
+externalTrackerExternalTrackerFormatL :: Lens_' ExternalTracker (Maybe Text)
+externalTrackerExternalTrackerFormatL f ExternalTracker{..} = (\externalTrackerExternalTrackerFormat -> ExternalTracker { externalTrackerExternalTrackerFormat, ..} ) <$> f externalTrackerExternalTrackerFormat
+{-# INLINE externalTrackerExternalTrackerFormatL #-}
+
+-- | 'externalTrackerExternalTrackerRegexpPattern' Lens
+externalTrackerExternalTrackerRegexpPatternL :: Lens_' ExternalTracker (Maybe Text)
+externalTrackerExternalTrackerRegexpPatternL f ExternalTracker{..} = (\externalTrackerExternalTrackerRegexpPattern -> ExternalTracker { externalTrackerExternalTrackerRegexpPattern, ..} ) <$> f externalTrackerExternalTrackerRegexpPattern
+{-# INLINE externalTrackerExternalTrackerRegexpPatternL #-}
+
+-- | 'externalTrackerExternalTrackerStyle' Lens
+externalTrackerExternalTrackerStyleL :: Lens_' ExternalTracker (Maybe Text)
+externalTrackerExternalTrackerStyleL f ExternalTracker{..} = (\externalTrackerExternalTrackerStyle -> ExternalTracker { externalTrackerExternalTrackerStyle, ..} ) <$> f externalTrackerExternalTrackerStyle
+{-# INLINE externalTrackerExternalTrackerStyleL #-}
+
+-- | 'externalTrackerExternalTrackerUrl' Lens
+externalTrackerExternalTrackerUrlL :: Lens_' ExternalTracker (Maybe Text)
+externalTrackerExternalTrackerUrlL f ExternalTracker{..} = (\externalTrackerExternalTrackerUrl -> ExternalTracker { externalTrackerExternalTrackerUrl, ..} ) <$> f externalTrackerExternalTrackerUrl
+{-# INLINE externalTrackerExternalTrackerUrlL #-}
+
+
+
+-- * ExternalWiki
+
+-- | 'externalWikiExternalWikiUrl' Lens
+externalWikiExternalWikiUrlL :: Lens_' ExternalWiki (Maybe Text)
+externalWikiExternalWikiUrlL f ExternalWiki{..} = (\externalWikiExternalWikiUrl -> ExternalWiki { externalWikiExternalWikiUrl, ..} ) <$> f externalWikiExternalWikiUrl
+{-# INLINE externalWikiExternalWikiUrlL #-}
+
+
+
+-- * FileCommitResponse
+
+-- | 'fileCommitResponseAuthor' Lens
+fileCommitResponseAuthorL :: Lens_' FileCommitResponse (Maybe CommitUser)
+fileCommitResponseAuthorL f FileCommitResponse{..} = (\fileCommitResponseAuthor -> FileCommitResponse { fileCommitResponseAuthor, ..} ) <$> f fileCommitResponseAuthor
+{-# INLINE fileCommitResponseAuthorL #-}
+
+-- | 'fileCommitResponseCommitter' Lens
+fileCommitResponseCommitterL :: Lens_' FileCommitResponse (Maybe CommitUser)
+fileCommitResponseCommitterL f FileCommitResponse{..} = (\fileCommitResponseCommitter -> FileCommitResponse { fileCommitResponseCommitter, ..} ) <$> f fileCommitResponseCommitter
+{-# INLINE fileCommitResponseCommitterL #-}
+
+-- | 'fileCommitResponseCreated' Lens
+fileCommitResponseCreatedL :: Lens_' FileCommitResponse (Maybe DateTime)
+fileCommitResponseCreatedL f FileCommitResponse{..} = (\fileCommitResponseCreated -> FileCommitResponse { fileCommitResponseCreated, ..} ) <$> f fileCommitResponseCreated
+{-# INLINE fileCommitResponseCreatedL #-}
+
+-- | 'fileCommitResponseHtmlUrl' Lens
+fileCommitResponseHtmlUrlL :: Lens_' FileCommitResponse (Maybe Text)
+fileCommitResponseHtmlUrlL f FileCommitResponse{..} = (\fileCommitResponseHtmlUrl -> FileCommitResponse { fileCommitResponseHtmlUrl, ..} ) <$> f fileCommitResponseHtmlUrl
+{-# INLINE fileCommitResponseHtmlUrlL #-}
+
+-- | 'fileCommitResponseMessage' Lens
+fileCommitResponseMessageL :: Lens_' FileCommitResponse (Maybe Text)
+fileCommitResponseMessageL f FileCommitResponse{..} = (\fileCommitResponseMessage -> FileCommitResponse { fileCommitResponseMessage, ..} ) <$> f fileCommitResponseMessage
+{-# INLINE fileCommitResponseMessageL #-}
+
+-- | 'fileCommitResponseParents' Lens
+fileCommitResponseParentsL :: Lens_' FileCommitResponse (Maybe [CommitMeta])
+fileCommitResponseParentsL f FileCommitResponse{..} = (\fileCommitResponseParents -> FileCommitResponse { fileCommitResponseParents, ..} ) <$> f fileCommitResponseParents
+{-# INLINE fileCommitResponseParentsL #-}
+
+-- | 'fileCommitResponseSha' Lens
+fileCommitResponseShaL :: Lens_' FileCommitResponse (Maybe Text)
+fileCommitResponseShaL f FileCommitResponse{..} = (\fileCommitResponseSha -> FileCommitResponse { fileCommitResponseSha, ..} ) <$> f fileCommitResponseSha
+{-# INLINE fileCommitResponseShaL #-}
+
+-- | 'fileCommitResponseTree' Lens
+fileCommitResponseTreeL :: Lens_' FileCommitResponse (Maybe CommitMeta)
+fileCommitResponseTreeL f FileCommitResponse{..} = (\fileCommitResponseTree -> FileCommitResponse { fileCommitResponseTree, ..} ) <$> f fileCommitResponseTree
+{-# INLINE fileCommitResponseTreeL #-}
+
+-- | 'fileCommitResponseUrl' Lens
+fileCommitResponseUrlL :: Lens_' FileCommitResponse (Maybe Text)
+fileCommitResponseUrlL f FileCommitResponse{..} = (\fileCommitResponseUrl -> FileCommitResponse { fileCommitResponseUrl, ..} ) <$> f fileCommitResponseUrl
+{-# INLINE fileCommitResponseUrlL #-}
+
+
+
+-- * FileDeleteResponse
+
+-- | 'fileDeleteResponseCommit' Lens
+fileDeleteResponseCommitL :: Lens_' FileDeleteResponse (Maybe FileCommitResponse)
+fileDeleteResponseCommitL f FileDeleteResponse{..} = (\fileDeleteResponseCommit -> FileDeleteResponse { fileDeleteResponseCommit, ..} ) <$> f fileDeleteResponseCommit
+{-# INLINE fileDeleteResponseCommitL #-}
+
+-- | 'fileDeleteResponseContent' Lens
+fileDeleteResponseContentL :: Lens_' FileDeleteResponse (Maybe A.Value)
+fileDeleteResponseContentL f FileDeleteResponse{..} = (\fileDeleteResponseContent -> FileDeleteResponse { fileDeleteResponseContent, ..} ) <$> f fileDeleteResponseContent
+{-# INLINE fileDeleteResponseContentL #-}
+
+-- | 'fileDeleteResponseVerification' Lens
+fileDeleteResponseVerificationL :: Lens_' FileDeleteResponse (Maybe PayloadCommitVerification)
+fileDeleteResponseVerificationL f FileDeleteResponse{..} = (\fileDeleteResponseVerification -> FileDeleteResponse { fileDeleteResponseVerification, ..} ) <$> f fileDeleteResponseVerification
+{-# INLINE fileDeleteResponseVerificationL #-}
+
+
+
+-- * FileLinksResponse
+
+-- | 'fileLinksResponseGit' Lens
+fileLinksResponseGitL :: Lens_' FileLinksResponse (Maybe Text)
+fileLinksResponseGitL f FileLinksResponse{..} = (\fileLinksResponseGit -> FileLinksResponse { fileLinksResponseGit, ..} ) <$> f fileLinksResponseGit
+{-# INLINE fileLinksResponseGitL #-}
+
+-- | 'fileLinksResponseHtml' Lens
+fileLinksResponseHtmlL :: Lens_' FileLinksResponse (Maybe Text)
+fileLinksResponseHtmlL f FileLinksResponse{..} = (\fileLinksResponseHtml -> FileLinksResponse { fileLinksResponseHtml, ..} ) <$> f fileLinksResponseHtml
+{-# INLINE fileLinksResponseHtmlL #-}
+
+-- | 'fileLinksResponseSelf' Lens
+fileLinksResponseSelfL :: Lens_' FileLinksResponse (Maybe Text)
+fileLinksResponseSelfL f FileLinksResponse{..} = (\fileLinksResponseSelf -> FileLinksResponse { fileLinksResponseSelf, ..} ) <$> f fileLinksResponseSelf
+{-# INLINE fileLinksResponseSelfL #-}
+
+
+
+-- * FileResponse
+
+-- | 'fileResponseCommit' Lens
+fileResponseCommitL :: Lens_' FileResponse (Maybe FileCommitResponse)
+fileResponseCommitL f FileResponse{..} = (\fileResponseCommit -> FileResponse { fileResponseCommit, ..} ) <$> f fileResponseCommit
+{-# INLINE fileResponseCommitL #-}
+
+-- | 'fileResponseContent' Lens
+fileResponseContentL :: Lens_' FileResponse (Maybe ContentsResponse)
+fileResponseContentL f FileResponse{..} = (\fileResponseContent -> FileResponse { fileResponseContent, ..} ) <$> f fileResponseContent
+{-# INLINE fileResponseContentL #-}
+
+-- | 'fileResponseVerification' Lens
+fileResponseVerificationL :: Lens_' FileResponse (Maybe PayloadCommitVerification)
+fileResponseVerificationL f FileResponse{..} = (\fileResponseVerification -> FileResponse { fileResponseVerification, ..} ) <$> f fileResponseVerification
+{-# INLINE fileResponseVerificationL #-}
+
+
+
+-- * GPGKey
+
+-- | 'gPGKeyCanCertify' Lens
+gPGKeyCanCertifyL :: Lens_' GPGKey (Maybe Bool)
+gPGKeyCanCertifyL f GPGKey{..} = (\gPGKeyCanCertify -> GPGKey { gPGKeyCanCertify, ..} ) <$> f gPGKeyCanCertify
+{-# INLINE gPGKeyCanCertifyL #-}
+
+-- | 'gPGKeyCanEncryptComms' Lens
+gPGKeyCanEncryptCommsL :: Lens_' GPGKey (Maybe Bool)
+gPGKeyCanEncryptCommsL f GPGKey{..} = (\gPGKeyCanEncryptComms -> GPGKey { gPGKeyCanEncryptComms, ..} ) <$> f gPGKeyCanEncryptComms
+{-# INLINE gPGKeyCanEncryptCommsL #-}
+
+-- | 'gPGKeyCanEncryptStorage' Lens
+gPGKeyCanEncryptStorageL :: Lens_' GPGKey (Maybe Bool)
+gPGKeyCanEncryptStorageL f GPGKey{..} = (\gPGKeyCanEncryptStorage -> GPGKey { gPGKeyCanEncryptStorage, ..} ) <$> f gPGKeyCanEncryptStorage
+{-# INLINE gPGKeyCanEncryptStorageL #-}
+
+-- | 'gPGKeyCanSign' Lens
+gPGKeyCanSignL :: Lens_' GPGKey (Maybe Bool)
+gPGKeyCanSignL f GPGKey{..} = (\gPGKeyCanSign -> GPGKey { gPGKeyCanSign, ..} ) <$> f gPGKeyCanSign
+{-# INLINE gPGKeyCanSignL #-}
+
+-- | 'gPGKeyCreatedAt' Lens
+gPGKeyCreatedAtL :: Lens_' GPGKey (Maybe DateTime)
+gPGKeyCreatedAtL f GPGKey{..} = (\gPGKeyCreatedAt -> GPGKey { gPGKeyCreatedAt, ..} ) <$> f gPGKeyCreatedAt
+{-# INLINE gPGKeyCreatedAtL #-}
+
+-- | 'gPGKeyEmails' Lens
+gPGKeyEmailsL :: Lens_' GPGKey (Maybe [GPGKeyEmail])
+gPGKeyEmailsL f GPGKey{..} = (\gPGKeyEmails -> GPGKey { gPGKeyEmails, ..} ) <$> f gPGKeyEmails
+{-# INLINE gPGKeyEmailsL #-}
+
+-- | 'gPGKeyExpiresAt' Lens
+gPGKeyExpiresAtL :: Lens_' GPGKey (Maybe DateTime)
+gPGKeyExpiresAtL f GPGKey{..} = (\gPGKeyExpiresAt -> GPGKey { gPGKeyExpiresAt, ..} ) <$> f gPGKeyExpiresAt
+{-# INLINE gPGKeyExpiresAtL #-}
+
+-- | 'gPGKeyId' Lens
+gPGKeyIdL :: Lens_' GPGKey (Maybe Integer)
+gPGKeyIdL f GPGKey{..} = (\gPGKeyId -> GPGKey { gPGKeyId, ..} ) <$> f gPGKeyId
+{-# INLINE gPGKeyIdL #-}
+
+-- | 'gPGKeyKeyId' Lens
+gPGKeyKeyIdL :: Lens_' GPGKey (Maybe Text)
+gPGKeyKeyIdL f GPGKey{..} = (\gPGKeyKeyId -> GPGKey { gPGKeyKeyId, ..} ) <$> f gPGKeyKeyId
+{-# INLINE gPGKeyKeyIdL #-}
+
+-- | 'gPGKeyPrimaryKeyId' Lens
+gPGKeyPrimaryKeyIdL :: Lens_' GPGKey (Maybe Text)
+gPGKeyPrimaryKeyIdL f GPGKey{..} = (\gPGKeyPrimaryKeyId -> GPGKey { gPGKeyPrimaryKeyId, ..} ) <$> f gPGKeyPrimaryKeyId
+{-# INLINE gPGKeyPrimaryKeyIdL #-}
+
+-- | 'gPGKeyPublicKey' Lens
+gPGKeyPublicKeyL :: Lens_' GPGKey (Maybe Text)
+gPGKeyPublicKeyL f GPGKey{..} = (\gPGKeyPublicKey -> GPGKey { gPGKeyPublicKey, ..} ) <$> f gPGKeyPublicKey
+{-# INLINE gPGKeyPublicKeyL #-}
+
+-- | 'gPGKeySubkeys' Lens
+gPGKeySubkeysL :: Lens_' GPGKey (Maybe [GPGKey])
+gPGKeySubkeysL f GPGKey{..} = (\gPGKeySubkeys -> GPGKey { gPGKeySubkeys, ..} ) <$> f gPGKeySubkeys
+{-# INLINE gPGKeySubkeysL #-}
+
+-- | 'gPGKeyVerified' Lens
+gPGKeyVerifiedL :: Lens_' GPGKey (Maybe Bool)
+gPGKeyVerifiedL f GPGKey{..} = (\gPGKeyVerified -> GPGKey { gPGKeyVerified, ..} ) <$> f gPGKeyVerified
+{-# INLINE gPGKeyVerifiedL #-}
+
+
+
+-- * GPGKeyEmail
+
+-- | 'gPGKeyEmailEmail' Lens
+gPGKeyEmailEmailL :: Lens_' GPGKeyEmail (Maybe Text)
+gPGKeyEmailEmailL f GPGKeyEmail{..} = (\gPGKeyEmailEmail -> GPGKeyEmail { gPGKeyEmailEmail, ..} ) <$> f gPGKeyEmailEmail
+{-# INLINE gPGKeyEmailEmailL #-}
+
+-- | 'gPGKeyEmailVerified' Lens
+gPGKeyEmailVerifiedL :: Lens_' GPGKeyEmail (Maybe Bool)
+gPGKeyEmailVerifiedL f GPGKeyEmail{..} = (\gPGKeyEmailVerified -> GPGKeyEmail { gPGKeyEmailVerified, ..} ) <$> f gPGKeyEmailVerified
+{-# INLINE gPGKeyEmailVerifiedL #-}
+
+
+
+-- * GeneralAPISettings
+
+-- | 'generalAPISettingsDefaultGitTreesPerPage' Lens
+generalAPISettingsDefaultGitTreesPerPageL :: Lens_' GeneralAPISettings (Maybe Integer)
+generalAPISettingsDefaultGitTreesPerPageL f GeneralAPISettings{..} = (\generalAPISettingsDefaultGitTreesPerPage -> GeneralAPISettings { generalAPISettingsDefaultGitTreesPerPage, ..} ) <$> f generalAPISettingsDefaultGitTreesPerPage
+{-# INLINE generalAPISettingsDefaultGitTreesPerPageL #-}
+
+-- | 'generalAPISettingsDefaultMaxBlobSize' Lens
+generalAPISettingsDefaultMaxBlobSizeL :: Lens_' GeneralAPISettings (Maybe Integer)
+generalAPISettingsDefaultMaxBlobSizeL f GeneralAPISettings{..} = (\generalAPISettingsDefaultMaxBlobSize -> GeneralAPISettings { generalAPISettingsDefaultMaxBlobSize, ..} ) <$> f generalAPISettingsDefaultMaxBlobSize
+{-# INLINE generalAPISettingsDefaultMaxBlobSizeL #-}
+
+-- | 'generalAPISettingsDefaultPagingNum' Lens
+generalAPISettingsDefaultPagingNumL :: Lens_' GeneralAPISettings (Maybe Integer)
+generalAPISettingsDefaultPagingNumL f GeneralAPISettings{..} = (\generalAPISettingsDefaultPagingNum -> GeneralAPISettings { generalAPISettingsDefaultPagingNum, ..} ) <$> f generalAPISettingsDefaultPagingNum
+{-# INLINE generalAPISettingsDefaultPagingNumL #-}
+
+-- | 'generalAPISettingsMaxResponseItems' Lens
+generalAPISettingsMaxResponseItemsL :: Lens_' GeneralAPISettings (Maybe Integer)
+generalAPISettingsMaxResponseItemsL f GeneralAPISettings{..} = (\generalAPISettingsMaxResponseItems -> GeneralAPISettings { generalAPISettingsMaxResponseItems, ..} ) <$> f generalAPISettingsMaxResponseItems
+{-# INLINE generalAPISettingsMaxResponseItemsL #-}
+
+
+
+-- * GeneralAttachmentSettings
+
+-- | 'generalAttachmentSettingsAllowedTypes' Lens
+generalAttachmentSettingsAllowedTypesL :: Lens_' GeneralAttachmentSettings (Maybe Text)
+generalAttachmentSettingsAllowedTypesL f GeneralAttachmentSettings{..} = (\generalAttachmentSettingsAllowedTypes -> GeneralAttachmentSettings { generalAttachmentSettingsAllowedTypes, ..} ) <$> f generalAttachmentSettingsAllowedTypes
+{-# INLINE generalAttachmentSettingsAllowedTypesL #-}
+
+-- | 'generalAttachmentSettingsEnabled' Lens
+generalAttachmentSettingsEnabledL :: Lens_' GeneralAttachmentSettings (Maybe Bool)
+generalAttachmentSettingsEnabledL f GeneralAttachmentSettings{..} = (\generalAttachmentSettingsEnabled -> GeneralAttachmentSettings { generalAttachmentSettingsEnabled, ..} ) <$> f generalAttachmentSettingsEnabled
+{-# INLINE generalAttachmentSettingsEnabledL #-}
+
+-- | 'generalAttachmentSettingsMaxFiles' Lens
+generalAttachmentSettingsMaxFilesL :: Lens_' GeneralAttachmentSettings (Maybe Integer)
+generalAttachmentSettingsMaxFilesL f GeneralAttachmentSettings{..} = (\generalAttachmentSettingsMaxFiles -> GeneralAttachmentSettings { generalAttachmentSettingsMaxFiles, ..} ) <$> f generalAttachmentSettingsMaxFiles
+{-# INLINE generalAttachmentSettingsMaxFilesL #-}
+
+-- | 'generalAttachmentSettingsMaxSize' Lens
+generalAttachmentSettingsMaxSizeL :: Lens_' GeneralAttachmentSettings (Maybe Integer)
+generalAttachmentSettingsMaxSizeL f GeneralAttachmentSettings{..} = (\generalAttachmentSettingsMaxSize -> GeneralAttachmentSettings { generalAttachmentSettingsMaxSize, ..} ) <$> f generalAttachmentSettingsMaxSize
+{-# INLINE generalAttachmentSettingsMaxSizeL #-}
+
+
+
+-- * GeneralRepoSettings
+
+-- | 'generalRepoSettingsHttpGitDisabled' Lens
+generalRepoSettingsHttpGitDisabledL :: Lens_' GeneralRepoSettings (Maybe Bool)
+generalRepoSettingsHttpGitDisabledL f GeneralRepoSettings{..} = (\generalRepoSettingsHttpGitDisabled -> GeneralRepoSettings { generalRepoSettingsHttpGitDisabled, ..} ) <$> f generalRepoSettingsHttpGitDisabled
+{-# INLINE generalRepoSettingsHttpGitDisabledL #-}
+
+-- | 'generalRepoSettingsLfsDisabled' Lens
+generalRepoSettingsLfsDisabledL :: Lens_' GeneralRepoSettings (Maybe Bool)
+generalRepoSettingsLfsDisabledL f GeneralRepoSettings{..} = (\generalRepoSettingsLfsDisabled -> GeneralRepoSettings { generalRepoSettingsLfsDisabled, ..} ) <$> f generalRepoSettingsLfsDisabled
+{-# INLINE generalRepoSettingsLfsDisabledL #-}
+
+-- | 'generalRepoSettingsMigrationsDisabled' Lens
+generalRepoSettingsMigrationsDisabledL :: Lens_' GeneralRepoSettings (Maybe Bool)
+generalRepoSettingsMigrationsDisabledL f GeneralRepoSettings{..} = (\generalRepoSettingsMigrationsDisabled -> GeneralRepoSettings { generalRepoSettingsMigrationsDisabled, ..} ) <$> f generalRepoSettingsMigrationsDisabled
+{-# INLINE generalRepoSettingsMigrationsDisabledL #-}
+
+-- | 'generalRepoSettingsMirrorsDisabled' Lens
+generalRepoSettingsMirrorsDisabledL :: Lens_' GeneralRepoSettings (Maybe Bool)
+generalRepoSettingsMirrorsDisabledL f GeneralRepoSettings{..} = (\generalRepoSettingsMirrorsDisabled -> GeneralRepoSettings { generalRepoSettingsMirrorsDisabled, ..} ) <$> f generalRepoSettingsMirrorsDisabled
+{-# INLINE generalRepoSettingsMirrorsDisabledL #-}
+
+-- | 'generalRepoSettingsStarsDisabled' Lens
+generalRepoSettingsStarsDisabledL :: Lens_' GeneralRepoSettings (Maybe Bool)
+generalRepoSettingsStarsDisabledL f GeneralRepoSettings{..} = (\generalRepoSettingsStarsDisabled -> GeneralRepoSettings { generalRepoSettingsStarsDisabled, ..} ) <$> f generalRepoSettingsStarsDisabled
+{-# INLINE generalRepoSettingsStarsDisabledL #-}
+
+-- | 'generalRepoSettingsTimeTrackingDisabled' Lens
+generalRepoSettingsTimeTrackingDisabledL :: Lens_' GeneralRepoSettings (Maybe Bool)
+generalRepoSettingsTimeTrackingDisabledL f GeneralRepoSettings{..} = (\generalRepoSettingsTimeTrackingDisabled -> GeneralRepoSettings { generalRepoSettingsTimeTrackingDisabled, ..} ) <$> f generalRepoSettingsTimeTrackingDisabled
+{-# INLINE generalRepoSettingsTimeTrackingDisabledL #-}
+
+
+
+-- * GeneralUISettings
+
+-- | 'generalUISettingsAllowedReactions' Lens
+generalUISettingsAllowedReactionsL :: Lens_' GeneralUISettings (Maybe [Text])
+generalUISettingsAllowedReactionsL f GeneralUISettings{..} = (\generalUISettingsAllowedReactions -> GeneralUISettings { generalUISettingsAllowedReactions, ..} ) <$> f generalUISettingsAllowedReactions
+{-# INLINE generalUISettingsAllowedReactionsL #-}
+
+-- | 'generalUISettingsCustomEmojis' Lens
+generalUISettingsCustomEmojisL :: Lens_' GeneralUISettings (Maybe [Text])
+generalUISettingsCustomEmojisL f GeneralUISettings{..} = (\generalUISettingsCustomEmojis -> GeneralUISettings { generalUISettingsCustomEmojis, ..} ) <$> f generalUISettingsCustomEmojis
+{-# INLINE generalUISettingsCustomEmojisL #-}
+
+-- | 'generalUISettingsDefaultTheme' Lens
+generalUISettingsDefaultThemeL :: Lens_' GeneralUISettings (Maybe Text)
+generalUISettingsDefaultThemeL f GeneralUISettings{..} = (\generalUISettingsDefaultTheme -> GeneralUISettings { generalUISettingsDefaultTheme, ..} ) <$> f generalUISettingsDefaultTheme
+{-# INLINE generalUISettingsDefaultThemeL #-}
+
+
+
+-- * GenerateRepoOption
+
+-- | 'generateRepoOptionAvatar' Lens
+generateRepoOptionAvatarL :: Lens_' GenerateRepoOption (Maybe Bool)
+generateRepoOptionAvatarL f GenerateRepoOption{..} = (\generateRepoOptionAvatar -> GenerateRepoOption { generateRepoOptionAvatar, ..} ) <$> f generateRepoOptionAvatar
+{-# INLINE generateRepoOptionAvatarL #-}
+
+-- | 'generateRepoOptionDefaultBranch' Lens
+generateRepoOptionDefaultBranchL :: Lens_' GenerateRepoOption (Maybe Text)
+generateRepoOptionDefaultBranchL f GenerateRepoOption{..} = (\generateRepoOptionDefaultBranch -> GenerateRepoOption { generateRepoOptionDefaultBranch, ..} ) <$> f generateRepoOptionDefaultBranch
+{-# INLINE generateRepoOptionDefaultBranchL #-}
+
+-- | 'generateRepoOptionDescription' Lens
+generateRepoOptionDescriptionL :: Lens_' GenerateRepoOption (Maybe Text)
+generateRepoOptionDescriptionL f GenerateRepoOption{..} = (\generateRepoOptionDescription -> GenerateRepoOption { generateRepoOptionDescription, ..} ) <$> f generateRepoOptionDescription
+{-# INLINE generateRepoOptionDescriptionL #-}
+
+-- | 'generateRepoOptionGitContent' Lens
+generateRepoOptionGitContentL :: Lens_' GenerateRepoOption (Maybe Bool)
+generateRepoOptionGitContentL f GenerateRepoOption{..} = (\generateRepoOptionGitContent -> GenerateRepoOption { generateRepoOptionGitContent, ..} ) <$> f generateRepoOptionGitContent
+{-# INLINE generateRepoOptionGitContentL #-}
+
+-- | 'generateRepoOptionGitHooks' Lens
+generateRepoOptionGitHooksL :: Lens_' GenerateRepoOption (Maybe Bool)
+generateRepoOptionGitHooksL f GenerateRepoOption{..} = (\generateRepoOptionGitHooks -> GenerateRepoOption { generateRepoOptionGitHooks, ..} ) <$> f generateRepoOptionGitHooks
+{-# INLINE generateRepoOptionGitHooksL #-}
+
+-- | 'generateRepoOptionLabels' Lens
+generateRepoOptionLabelsL :: Lens_' GenerateRepoOption (Maybe Bool)
+generateRepoOptionLabelsL f GenerateRepoOption{..} = (\generateRepoOptionLabels -> GenerateRepoOption { generateRepoOptionLabels, ..} ) <$> f generateRepoOptionLabels
+{-# INLINE generateRepoOptionLabelsL #-}
+
+-- | 'generateRepoOptionName' Lens
+generateRepoOptionNameL :: Lens_' GenerateRepoOption (Text)
+generateRepoOptionNameL f GenerateRepoOption{..} = (\generateRepoOptionName -> GenerateRepoOption { generateRepoOptionName, ..} ) <$> f generateRepoOptionName
+{-# INLINE generateRepoOptionNameL #-}
+
+-- | 'generateRepoOptionOwner' Lens
+generateRepoOptionOwnerL :: Lens_' GenerateRepoOption (Text)
+generateRepoOptionOwnerL f GenerateRepoOption{..} = (\generateRepoOptionOwner -> GenerateRepoOption { generateRepoOptionOwner, ..} ) <$> f generateRepoOptionOwner
+{-# INLINE generateRepoOptionOwnerL #-}
+
+-- | 'generateRepoOptionPrivate' Lens
+generateRepoOptionPrivateL :: Lens_' GenerateRepoOption (Maybe Bool)
+generateRepoOptionPrivateL f GenerateRepoOption{..} = (\generateRepoOptionPrivate -> GenerateRepoOption { generateRepoOptionPrivate, ..} ) <$> f generateRepoOptionPrivate
+{-# INLINE generateRepoOptionPrivateL #-}
+
+-- | 'generateRepoOptionTopics' Lens
+generateRepoOptionTopicsL :: Lens_' GenerateRepoOption (Maybe Bool)
+generateRepoOptionTopicsL f GenerateRepoOption{..} = (\generateRepoOptionTopics -> GenerateRepoOption { generateRepoOptionTopics, ..} ) <$> f generateRepoOptionTopics
+{-# INLINE generateRepoOptionTopicsL #-}
+
+-- | 'generateRepoOptionWebhooks' Lens
+generateRepoOptionWebhooksL :: Lens_' GenerateRepoOption (Maybe Bool)
+generateRepoOptionWebhooksL f GenerateRepoOption{..} = (\generateRepoOptionWebhooks -> GenerateRepoOption { generateRepoOptionWebhooks, ..} ) <$> f generateRepoOptionWebhooks
+{-# INLINE generateRepoOptionWebhooksL #-}
+
+
+
+-- * GitBlobResponse
+
+-- | 'gitBlobResponseContent' Lens
+gitBlobResponseContentL :: Lens_' GitBlobResponse (Maybe Text)
+gitBlobResponseContentL f GitBlobResponse{..} = (\gitBlobResponseContent -> GitBlobResponse { gitBlobResponseContent, ..} ) <$> f gitBlobResponseContent
+{-# INLINE gitBlobResponseContentL #-}
+
+-- | 'gitBlobResponseEncoding' Lens
+gitBlobResponseEncodingL :: Lens_' GitBlobResponse (Maybe Text)
+gitBlobResponseEncodingL f GitBlobResponse{..} = (\gitBlobResponseEncoding -> GitBlobResponse { gitBlobResponseEncoding, ..} ) <$> f gitBlobResponseEncoding
+{-# INLINE gitBlobResponseEncodingL #-}
+
+-- | 'gitBlobResponseSha' Lens
+gitBlobResponseShaL :: Lens_' GitBlobResponse (Maybe Text)
+gitBlobResponseShaL f GitBlobResponse{..} = (\gitBlobResponseSha -> GitBlobResponse { gitBlobResponseSha, ..} ) <$> f gitBlobResponseSha
+{-# INLINE gitBlobResponseShaL #-}
+
+-- | 'gitBlobResponseSize' Lens
+gitBlobResponseSizeL :: Lens_' GitBlobResponse (Maybe Integer)
+gitBlobResponseSizeL f GitBlobResponse{..} = (\gitBlobResponseSize -> GitBlobResponse { gitBlobResponseSize, ..} ) <$> f gitBlobResponseSize
+{-# INLINE gitBlobResponseSizeL #-}
+
+-- | 'gitBlobResponseUrl' Lens
+gitBlobResponseUrlL :: Lens_' GitBlobResponse (Maybe Text)
+gitBlobResponseUrlL f GitBlobResponse{..} = (\gitBlobResponseUrl -> GitBlobResponse { gitBlobResponseUrl, ..} ) <$> f gitBlobResponseUrl
+{-# INLINE gitBlobResponseUrlL #-}
+
+
+
+-- * GitEntry
+
+-- | 'gitEntryMode' Lens
+gitEntryModeL :: Lens_' GitEntry (Maybe Text)
+gitEntryModeL f GitEntry{..} = (\gitEntryMode -> GitEntry { gitEntryMode, ..} ) <$> f gitEntryMode
+{-# INLINE gitEntryModeL #-}
+
+-- | 'gitEntryPath' Lens
+gitEntryPathL :: Lens_' GitEntry (Maybe Text)
+gitEntryPathL f GitEntry{..} = (\gitEntryPath -> GitEntry { gitEntryPath, ..} ) <$> f gitEntryPath
+{-# INLINE gitEntryPathL #-}
+
+-- | 'gitEntrySha' Lens
+gitEntryShaL :: Lens_' GitEntry (Maybe Text)
+gitEntryShaL f GitEntry{..} = (\gitEntrySha -> GitEntry { gitEntrySha, ..} ) <$> f gitEntrySha
+{-# INLINE gitEntryShaL #-}
+
+-- | 'gitEntrySize' Lens
+gitEntrySizeL :: Lens_' GitEntry (Maybe Integer)
+gitEntrySizeL f GitEntry{..} = (\gitEntrySize -> GitEntry { gitEntrySize, ..} ) <$> f gitEntrySize
+{-# INLINE gitEntrySizeL #-}
+
+-- | 'gitEntryType' Lens
+gitEntryTypeL :: Lens_' GitEntry (Maybe Text)
+gitEntryTypeL f GitEntry{..} = (\gitEntryType -> GitEntry { gitEntryType, ..} ) <$> f gitEntryType
+{-# INLINE gitEntryTypeL #-}
+
+-- | 'gitEntryUrl' Lens
+gitEntryUrlL :: Lens_' GitEntry (Maybe Text)
+gitEntryUrlL f GitEntry{..} = (\gitEntryUrl -> GitEntry { gitEntryUrl, ..} ) <$> f gitEntryUrl
+{-# INLINE gitEntryUrlL #-}
+
+
+
+-- * GitHook
+
+-- | 'gitHookContent' Lens
+gitHookContentL :: Lens_' GitHook (Maybe Text)
+gitHookContentL f GitHook{..} = (\gitHookContent -> GitHook { gitHookContent, ..} ) <$> f gitHookContent
+{-# INLINE gitHookContentL #-}
+
+-- | 'gitHookIsActive' Lens
+gitHookIsActiveL :: Lens_' GitHook (Maybe Bool)
+gitHookIsActiveL f GitHook{..} = (\gitHookIsActive -> GitHook { gitHookIsActive, ..} ) <$> f gitHookIsActive
+{-# INLINE gitHookIsActiveL #-}
+
+-- | 'gitHookName' Lens
+gitHookNameL :: Lens_' GitHook (Maybe Text)
+gitHookNameL f GitHook{..} = (\gitHookName -> GitHook { gitHookName, ..} ) <$> f gitHookName
+{-# INLINE gitHookNameL #-}
+
+
+
+-- * GitObject
+
+-- | 'gitObjectSha' Lens
+gitObjectShaL :: Lens_' GitObject (Maybe Text)
+gitObjectShaL f GitObject{..} = (\gitObjectSha -> GitObject { gitObjectSha, ..} ) <$> f gitObjectSha
+{-# INLINE gitObjectShaL #-}
+
+-- | 'gitObjectType' Lens
+gitObjectTypeL :: Lens_' GitObject (Maybe Text)
+gitObjectTypeL f GitObject{..} = (\gitObjectType -> GitObject { gitObjectType, ..} ) <$> f gitObjectType
+{-# INLINE gitObjectTypeL #-}
+
+-- | 'gitObjectUrl' Lens
+gitObjectUrlL :: Lens_' GitObject (Maybe Text)
+gitObjectUrlL f GitObject{..} = (\gitObjectUrl -> GitObject { gitObjectUrl, ..} ) <$> f gitObjectUrl
+{-# INLINE gitObjectUrlL #-}
+
+
+
+-- * GitTreeResponse
+
+-- | 'gitTreeResponsePage' Lens
+gitTreeResponsePageL :: Lens_' GitTreeResponse (Maybe Integer)
+gitTreeResponsePageL f GitTreeResponse{..} = (\gitTreeResponsePage -> GitTreeResponse { gitTreeResponsePage, ..} ) <$> f gitTreeResponsePage
+{-# INLINE gitTreeResponsePageL #-}
+
+-- | 'gitTreeResponseSha' Lens
+gitTreeResponseShaL :: Lens_' GitTreeResponse (Maybe Text)
+gitTreeResponseShaL f GitTreeResponse{..} = (\gitTreeResponseSha -> GitTreeResponse { gitTreeResponseSha, ..} ) <$> f gitTreeResponseSha
+{-# INLINE gitTreeResponseShaL #-}
+
+-- | 'gitTreeResponseTotalCount' Lens
+gitTreeResponseTotalCountL :: Lens_' GitTreeResponse (Maybe Integer)
+gitTreeResponseTotalCountL f GitTreeResponse{..} = (\gitTreeResponseTotalCount -> GitTreeResponse { gitTreeResponseTotalCount, ..} ) <$> f gitTreeResponseTotalCount
+{-# INLINE gitTreeResponseTotalCountL #-}
+
+-- | 'gitTreeResponseTree' Lens
+gitTreeResponseTreeL :: Lens_' GitTreeResponse (Maybe [GitEntry])
+gitTreeResponseTreeL f GitTreeResponse{..} = (\gitTreeResponseTree -> GitTreeResponse { gitTreeResponseTree, ..} ) <$> f gitTreeResponseTree
+{-# INLINE gitTreeResponseTreeL #-}
+
+-- | 'gitTreeResponseTruncated' Lens
+gitTreeResponseTruncatedL :: Lens_' GitTreeResponse (Maybe Bool)
+gitTreeResponseTruncatedL f GitTreeResponse{..} = (\gitTreeResponseTruncated -> GitTreeResponse { gitTreeResponseTruncated, ..} ) <$> f gitTreeResponseTruncated
+{-# INLINE gitTreeResponseTruncatedL #-}
+
+-- | 'gitTreeResponseUrl' Lens
+gitTreeResponseUrlL :: Lens_' GitTreeResponse (Maybe Text)
+gitTreeResponseUrlL f GitTreeResponse{..} = (\gitTreeResponseUrl -> GitTreeResponse { gitTreeResponseUrl, ..} ) <$> f gitTreeResponseUrl
+{-# INLINE gitTreeResponseUrlL #-}
+
+
+
+-- * Hook
+
+-- | 'hookActive' Lens
+hookActiveL :: Lens_' Hook (Maybe Bool)
+hookActiveL f Hook{..} = (\hookActive -> Hook { hookActive, ..} ) <$> f hookActive
+{-# INLINE hookActiveL #-}
+
+-- | 'hookAuthorizationHeader' Lens
+hookAuthorizationHeaderL :: Lens_' Hook (Maybe Text)
+hookAuthorizationHeaderL f Hook{..} = (\hookAuthorizationHeader -> Hook { hookAuthorizationHeader, ..} ) <$> f hookAuthorizationHeader
+{-# INLINE hookAuthorizationHeaderL #-}
+
+-- | 'hookConfig' Lens
+hookConfigL :: Lens_' Hook (Maybe (Map.Map String Text))
+hookConfigL f Hook{..} = (\hookConfig -> Hook { hookConfig, ..} ) <$> f hookConfig
+{-# INLINE hookConfigL #-}
+
+-- | 'hookCreatedAt' Lens
+hookCreatedAtL :: Lens_' Hook (Maybe DateTime)
+hookCreatedAtL f Hook{..} = (\hookCreatedAt -> Hook { hookCreatedAt, ..} ) <$> f hookCreatedAt
+{-# INLINE hookCreatedAtL #-}
+
+-- | 'hookEvents' Lens
+hookEventsL :: Lens_' Hook (Maybe [Text])
+hookEventsL f Hook{..} = (\hookEvents -> Hook { hookEvents, ..} ) <$> f hookEvents
+{-# INLINE hookEventsL #-}
+
+-- | 'hookId' Lens
+hookIdL :: Lens_' Hook (Maybe Integer)
+hookIdL f Hook{..} = (\hookId -> Hook { hookId, ..} ) <$> f hookId
+{-# INLINE hookIdL #-}
+
+-- | 'hookType' Lens
+hookTypeL :: Lens_' Hook (Maybe Text)
+hookTypeL f Hook{..} = (\hookType -> Hook { hookType, ..} ) <$> f hookType
+{-# INLINE hookTypeL #-}
+
+-- | 'hookUpdatedAt' Lens
+hookUpdatedAtL :: Lens_' Hook (Maybe DateTime)
+hookUpdatedAtL f Hook{..} = (\hookUpdatedAt -> Hook { hookUpdatedAt, ..} ) <$> f hookUpdatedAt
+{-# INLINE hookUpdatedAtL #-}
+
+
+
+-- * Identity
+
+-- | 'identityEmail' Lens
+identityEmailL :: Lens_' Identity (Maybe Text)
+identityEmailL f Identity{..} = (\identityEmail -> Identity { identityEmail, ..} ) <$> f identityEmail
+{-# INLINE identityEmailL #-}
+
+-- | 'identityName' Lens
+identityNameL :: Lens_' Identity (Maybe Text)
+identityNameL f Identity{..} = (\identityName -> Identity { identityName, ..} ) <$> f identityName
+{-# INLINE identityNameL #-}
+
+
+
+-- * InternalTracker
+
+-- | 'internalTrackerAllowOnlyContributorsToTrackTime' Lens
+internalTrackerAllowOnlyContributorsToTrackTimeL :: Lens_' InternalTracker (Maybe Bool)
+internalTrackerAllowOnlyContributorsToTrackTimeL f InternalTracker{..} = (\internalTrackerAllowOnlyContributorsToTrackTime -> InternalTracker { internalTrackerAllowOnlyContributorsToTrackTime, ..} ) <$> f internalTrackerAllowOnlyContributorsToTrackTime
+{-# INLINE internalTrackerAllowOnlyContributorsToTrackTimeL #-}
+
+-- | 'internalTrackerEnableIssueDependencies' Lens
+internalTrackerEnableIssueDependenciesL :: Lens_' InternalTracker (Maybe Bool)
+internalTrackerEnableIssueDependenciesL f InternalTracker{..} = (\internalTrackerEnableIssueDependencies -> InternalTracker { internalTrackerEnableIssueDependencies, ..} ) <$> f internalTrackerEnableIssueDependencies
+{-# INLINE internalTrackerEnableIssueDependenciesL #-}
+
+-- | 'internalTrackerEnableTimeTracker' Lens
+internalTrackerEnableTimeTrackerL :: Lens_' InternalTracker (Maybe Bool)
+internalTrackerEnableTimeTrackerL f InternalTracker{..} = (\internalTrackerEnableTimeTracker -> InternalTracker { internalTrackerEnableTimeTracker, ..} ) <$> f internalTrackerEnableTimeTracker
+{-# INLINE internalTrackerEnableTimeTrackerL #-}
+
+
+
+-- * Issue
+
+-- | 'issueAssets' Lens
+issueAssetsL :: Lens_' Issue (Maybe [Attachment])
+issueAssetsL f Issue{..} = (\issueAssets -> Issue { issueAssets, ..} ) <$> f issueAssets
+{-# INLINE issueAssetsL #-}
+
+-- | 'issueAssignee' Lens
+issueAssigneeL :: Lens_' Issue (Maybe User)
+issueAssigneeL f Issue{..} = (\issueAssignee -> Issue { issueAssignee, ..} ) <$> f issueAssignee
+{-# INLINE issueAssigneeL #-}
+
+-- | 'issueAssignees' Lens
+issueAssigneesL :: Lens_' Issue (Maybe [User])
+issueAssigneesL f Issue{..} = (\issueAssignees -> Issue { issueAssignees, ..} ) <$> f issueAssignees
+{-# INLINE issueAssigneesL #-}
+
+-- | 'issueBody' Lens
+issueBodyL :: Lens_' Issue (Maybe Text)
+issueBodyL f Issue{..} = (\issueBody -> Issue { issueBody, ..} ) <$> f issueBody
+{-# INLINE issueBodyL #-}
+
+-- | 'issueClosedAt' Lens
+issueClosedAtL :: Lens_' Issue (Maybe DateTime)
+issueClosedAtL f Issue{..} = (\issueClosedAt -> Issue { issueClosedAt, ..} ) <$> f issueClosedAt
+{-# INLINE issueClosedAtL #-}
+
+-- | 'issueComments' Lens
+issueCommentsL :: Lens_' Issue (Maybe Integer)
+issueCommentsL f Issue{..} = (\issueComments -> Issue { issueComments, ..} ) <$> f issueComments
+{-# INLINE issueCommentsL #-}
+
+-- | 'issueCreatedAt' Lens
+issueCreatedAtL :: Lens_' Issue (Maybe DateTime)
+issueCreatedAtL f Issue{..} = (\issueCreatedAt -> Issue { issueCreatedAt, ..} ) <$> f issueCreatedAt
+{-# INLINE issueCreatedAtL #-}
+
+-- | 'issueDueDate' Lens
+issueDueDateL :: Lens_' Issue (Maybe DateTime)
+issueDueDateL f Issue{..} = (\issueDueDate -> Issue { issueDueDate, ..} ) <$> f issueDueDate
+{-# INLINE issueDueDateL #-}
+
+-- | 'issueHtmlUrl' Lens
+issueHtmlUrlL :: Lens_' Issue (Maybe Text)
+issueHtmlUrlL f Issue{..} = (\issueHtmlUrl -> Issue { issueHtmlUrl, ..} ) <$> f issueHtmlUrl
+{-# INLINE issueHtmlUrlL #-}
+
+-- | 'issueId' Lens
+issueIdL :: Lens_' Issue (Maybe Integer)
+issueIdL f Issue{..} = (\issueId -> Issue { issueId, ..} ) <$> f issueId
+{-# INLINE issueIdL #-}
+
+-- | 'issueIsLocked' Lens
+issueIsLockedL :: Lens_' Issue (Maybe Bool)
+issueIsLockedL f Issue{..} = (\issueIsLocked -> Issue { issueIsLocked, ..} ) <$> f issueIsLocked
+{-# INLINE issueIsLockedL #-}
+
+-- | 'issueLabels' Lens
+issueLabelsL :: Lens_' Issue (Maybe [Label])
+issueLabelsL f Issue{..} = (\issueLabels -> Issue { issueLabels, ..} ) <$> f issueLabels
+{-# INLINE issueLabelsL #-}
+
+-- | 'issueMilestone' Lens
+issueMilestoneL :: Lens_' Issue (Maybe Milestone)
+issueMilestoneL f Issue{..} = (\issueMilestone -> Issue { issueMilestone, ..} ) <$> f issueMilestone
+{-# INLINE issueMilestoneL #-}
+
+-- | 'issueNumber' Lens
+issueNumberL :: Lens_' Issue (Maybe Integer)
+issueNumberL f Issue{..} = (\issueNumber -> Issue { issueNumber, ..} ) <$> f issueNumber
+{-# INLINE issueNumberL #-}
+
+-- | 'issueOriginalAuthor' Lens
+issueOriginalAuthorL :: Lens_' Issue (Maybe Text)
+issueOriginalAuthorL f Issue{..} = (\issueOriginalAuthor -> Issue { issueOriginalAuthor, ..} ) <$> f issueOriginalAuthor
+{-# INLINE issueOriginalAuthorL #-}
+
+-- | 'issueOriginalAuthorId' Lens
+issueOriginalAuthorIdL :: Lens_' Issue (Maybe Integer)
+issueOriginalAuthorIdL f Issue{..} = (\issueOriginalAuthorId -> Issue { issueOriginalAuthorId, ..} ) <$> f issueOriginalAuthorId
+{-# INLINE issueOriginalAuthorIdL #-}
+
+-- | 'issuePullRequest' Lens
+issuePullRequestL :: Lens_' Issue (Maybe PullRequestMeta)
+issuePullRequestL f Issue{..} = (\issuePullRequest -> Issue { issuePullRequest, ..} ) <$> f issuePullRequest
+{-# INLINE issuePullRequestL #-}
+
+-- | 'issueRef' Lens
+issueRefL :: Lens_' Issue (Maybe Text)
+issueRefL f Issue{..} = (\issueRef -> Issue { issueRef, ..} ) <$> f issueRef
+{-# INLINE issueRefL #-}
+
+-- | 'issueRepository' Lens
+issueRepositoryL :: Lens_' Issue (Maybe RepositoryMeta)
+issueRepositoryL f Issue{..} = (\issueRepository -> Issue { issueRepository, ..} ) <$> f issueRepository
+{-# INLINE issueRepositoryL #-}
+
+-- | 'issueState' Lens
+issueStateL :: Lens_' Issue (Maybe Text)
+issueStateL f Issue{..} = (\issueState -> Issue { issueState, ..} ) <$> f issueState
+{-# INLINE issueStateL #-}
+
+-- | 'issueTitle' Lens
+issueTitleL :: Lens_' Issue (Maybe Text)
+issueTitleL f Issue{..} = (\issueTitle -> Issue { issueTitle, ..} ) <$> f issueTitle
+{-# INLINE issueTitleL #-}
+
+-- | 'issueUpdatedAt' Lens
+issueUpdatedAtL :: Lens_' Issue (Maybe DateTime)
+issueUpdatedAtL f Issue{..} = (\issueUpdatedAt -> Issue { issueUpdatedAt, ..} ) <$> f issueUpdatedAt
+{-# INLINE issueUpdatedAtL #-}
+
+-- | 'issueUrl' Lens
+issueUrlL :: Lens_' Issue (Maybe Text)
+issueUrlL f Issue{..} = (\issueUrl -> Issue { issueUrl, ..} ) <$> f issueUrl
+{-# INLINE issueUrlL #-}
+
+-- | 'issueUser' Lens
+issueUserL :: Lens_' Issue (Maybe User)
+issueUserL f Issue{..} = (\issueUser -> Issue { issueUser, ..} ) <$> f issueUser
+{-# INLINE issueUserL #-}
+
+
+
+-- * IssueDeadline
+
+-- | 'issueDeadlineDueDate' Lens
+issueDeadlineDueDateL :: Lens_' IssueDeadline (Maybe DateTime)
+issueDeadlineDueDateL f IssueDeadline{..} = (\issueDeadlineDueDate -> IssueDeadline { issueDeadlineDueDate, ..} ) <$> f issueDeadlineDueDate
+{-# INLINE issueDeadlineDueDateL #-}
+
+
+
+-- * IssueFormField
+
+-- | 'issueFormFieldAttributes' Lens
+issueFormFieldAttributesL :: Lens_' IssueFormField (Maybe (Map.Map String A.Value))
+issueFormFieldAttributesL f IssueFormField{..} = (\issueFormFieldAttributes -> IssueFormField { issueFormFieldAttributes, ..} ) <$> f issueFormFieldAttributes
+{-# INLINE issueFormFieldAttributesL #-}
+
+-- | 'issueFormFieldId' Lens
+issueFormFieldIdL :: Lens_' IssueFormField (Maybe Text)
+issueFormFieldIdL f IssueFormField{..} = (\issueFormFieldId -> IssueFormField { issueFormFieldId, ..} ) <$> f issueFormFieldId
+{-# INLINE issueFormFieldIdL #-}
+
+-- | 'issueFormFieldType' Lens
+issueFormFieldTypeL :: Lens_' IssueFormField (Maybe Text)
+issueFormFieldTypeL f IssueFormField{..} = (\issueFormFieldType -> IssueFormField { issueFormFieldType, ..} ) <$> f issueFormFieldType
+{-# INLINE issueFormFieldTypeL #-}
+
+-- | 'issueFormFieldValidations' Lens
+issueFormFieldValidationsL :: Lens_' IssueFormField (Maybe (Map.Map String A.Value))
+issueFormFieldValidationsL f IssueFormField{..} = (\issueFormFieldValidations -> IssueFormField { issueFormFieldValidations, ..} ) <$> f issueFormFieldValidations
+{-# INLINE issueFormFieldValidationsL #-}
+
+
+
+-- * IssueLabelsOption
+
+-- | 'issueLabelsOptionLabels' Lens
+issueLabelsOptionLabelsL :: Lens_' IssueLabelsOption (Maybe [Integer])
+issueLabelsOptionLabelsL f IssueLabelsOption{..} = (\issueLabelsOptionLabels -> IssueLabelsOption { issueLabelsOptionLabels, ..} ) <$> f issueLabelsOptionLabels
+{-# INLINE issueLabelsOptionLabelsL #-}
+
+
+
+-- * IssueTemplate
+
+-- | 'issueTemplateAbout' Lens
+issueTemplateAboutL :: Lens_' IssueTemplate (Maybe Text)
+issueTemplateAboutL f IssueTemplate{..} = (\issueTemplateAbout -> IssueTemplate { issueTemplateAbout, ..} ) <$> f issueTemplateAbout
+{-# INLINE issueTemplateAboutL #-}
+
+-- | 'issueTemplateBody' Lens
+issueTemplateBodyL :: Lens_' IssueTemplate (Maybe [IssueFormField])
+issueTemplateBodyL f IssueTemplate{..} = (\issueTemplateBody -> IssueTemplate { issueTemplateBody, ..} ) <$> f issueTemplateBody
+{-# INLINE issueTemplateBodyL #-}
+
+-- | 'issueTemplateContent' Lens
+issueTemplateContentL :: Lens_' IssueTemplate (Maybe Text)
+issueTemplateContentL f IssueTemplate{..} = (\issueTemplateContent -> IssueTemplate { issueTemplateContent, ..} ) <$> f issueTemplateContent
+{-# INLINE issueTemplateContentL #-}
+
+-- | 'issueTemplateFileName' Lens
+issueTemplateFileNameL :: Lens_' IssueTemplate (Maybe Text)
+issueTemplateFileNameL f IssueTemplate{..} = (\issueTemplateFileName -> IssueTemplate { issueTemplateFileName, ..} ) <$> f issueTemplateFileName
+{-# INLINE issueTemplateFileNameL #-}
+
+-- | 'issueTemplateLabels' Lens
+issueTemplateLabelsL :: Lens_' IssueTemplate (Maybe [Text])
+issueTemplateLabelsL f IssueTemplate{..} = (\issueTemplateLabels -> IssueTemplate { issueTemplateLabels, ..} ) <$> f issueTemplateLabels
+{-# INLINE issueTemplateLabelsL #-}
+
+-- | 'issueTemplateName' Lens
+issueTemplateNameL :: Lens_' IssueTemplate (Maybe Text)
+issueTemplateNameL f IssueTemplate{..} = (\issueTemplateName -> IssueTemplate { issueTemplateName, ..} ) <$> f issueTemplateName
+{-# INLINE issueTemplateNameL #-}
+
+-- | 'issueTemplateRef' Lens
+issueTemplateRefL :: Lens_' IssueTemplate (Maybe Text)
+issueTemplateRefL f IssueTemplate{..} = (\issueTemplateRef -> IssueTemplate { issueTemplateRef, ..} ) <$> f issueTemplateRef
+{-# INLINE issueTemplateRefL #-}
+
+-- | 'issueTemplateTitle' Lens
+issueTemplateTitleL :: Lens_' IssueTemplate (Maybe Text)
+issueTemplateTitleL f IssueTemplate{..} = (\issueTemplateTitle -> IssueTemplate { issueTemplateTitle, ..} ) <$> f issueTemplateTitle
+{-# INLINE issueTemplateTitleL #-}
+
+
+
+-- * Label
+
+-- | 'labelColor' Lens
+labelColorL :: Lens_' Label (Maybe Text)
+labelColorL f Label{..} = (\labelColor -> Label { labelColor, ..} ) <$> f labelColor
+{-# INLINE labelColorL #-}
+
+-- | 'labelDescription' Lens
+labelDescriptionL :: Lens_' Label (Maybe Text)
+labelDescriptionL f Label{..} = (\labelDescription -> Label { labelDescription, ..} ) <$> f labelDescription
+{-# INLINE labelDescriptionL #-}
+
+-- | 'labelExclusive' Lens
+labelExclusiveL :: Lens_' Label (Maybe Bool)
+labelExclusiveL f Label{..} = (\labelExclusive -> Label { labelExclusive, ..} ) <$> f labelExclusive
+{-# INLINE labelExclusiveL #-}
+
+-- | 'labelId' Lens
+labelIdL :: Lens_' Label (Maybe Integer)
+labelIdL f Label{..} = (\labelId -> Label { labelId, ..} ) <$> f labelId
+{-# INLINE labelIdL #-}
+
+-- | 'labelName' Lens
+labelNameL :: Lens_' Label (Maybe Text)
+labelNameL f Label{..} = (\labelName -> Label { labelName, ..} ) <$> f labelName
+{-# INLINE labelNameL #-}
+
+-- | 'labelUrl' Lens
+labelUrlL :: Lens_' Label (Maybe Text)
+labelUrlL f Label{..} = (\labelUrl -> Label { labelUrl, ..} ) <$> f labelUrl
+{-# INLINE labelUrlL #-}
+
+
+
+-- * MarkdownOption
+
+-- | 'markdownOptionContext' Lens
+markdownOptionContextL :: Lens_' MarkdownOption (Maybe Text)
+markdownOptionContextL f MarkdownOption{..} = (\markdownOptionContext -> MarkdownOption { markdownOptionContext, ..} ) <$> f markdownOptionContext
+{-# INLINE markdownOptionContextL #-}
+
+-- | 'markdownOptionMode' Lens
+markdownOptionModeL :: Lens_' MarkdownOption (Maybe Text)
+markdownOptionModeL f MarkdownOption{..} = (\markdownOptionMode -> MarkdownOption { markdownOptionMode, ..} ) <$> f markdownOptionMode
+{-# INLINE markdownOptionModeL #-}
+
+-- | 'markdownOptionText' Lens
+markdownOptionTextL :: Lens_' MarkdownOption (Maybe Text)
+markdownOptionTextL f MarkdownOption{..} = (\markdownOptionText -> MarkdownOption { markdownOptionText, ..} ) <$> f markdownOptionText
+{-# INLINE markdownOptionTextL #-}
+
+-- | 'markdownOptionWiki' Lens
+markdownOptionWikiL :: Lens_' MarkdownOption (Maybe Bool)
+markdownOptionWikiL f MarkdownOption{..} = (\markdownOptionWiki -> MarkdownOption { markdownOptionWiki, ..} ) <$> f markdownOptionWiki
+{-# INLINE markdownOptionWikiL #-}
+
+
+
+-- * MergePullRequestOption
+
+-- | 'mergePullRequestOptionDo' Lens
+mergePullRequestOptionDoL :: Lens_' MergePullRequestOption (E'Do)
+mergePullRequestOptionDoL f MergePullRequestOption{..} = (\mergePullRequestOptionDo -> MergePullRequestOption { mergePullRequestOptionDo, ..} ) <$> f mergePullRequestOptionDo
+{-# INLINE mergePullRequestOptionDoL #-}
+
+-- | 'mergePullRequestOptionMergeCommitId' Lens
+mergePullRequestOptionMergeCommitIdL :: Lens_' MergePullRequestOption (Maybe Text)
+mergePullRequestOptionMergeCommitIdL f MergePullRequestOption{..} = (\mergePullRequestOptionMergeCommitId -> MergePullRequestOption { mergePullRequestOptionMergeCommitId, ..} ) <$> f mergePullRequestOptionMergeCommitId
+{-# INLINE mergePullRequestOptionMergeCommitIdL #-}
+
+-- | 'mergePullRequestOptionMergeMessageField' Lens
+mergePullRequestOptionMergeMessageFieldL :: Lens_' MergePullRequestOption (Maybe Text)
+mergePullRequestOptionMergeMessageFieldL f MergePullRequestOption{..} = (\mergePullRequestOptionMergeMessageField -> MergePullRequestOption { mergePullRequestOptionMergeMessageField, ..} ) <$> f mergePullRequestOptionMergeMessageField
+{-# INLINE mergePullRequestOptionMergeMessageFieldL #-}
+
+-- | 'mergePullRequestOptionMergeTitleField' Lens
+mergePullRequestOptionMergeTitleFieldL :: Lens_' MergePullRequestOption (Maybe Text)
+mergePullRequestOptionMergeTitleFieldL f MergePullRequestOption{..} = (\mergePullRequestOptionMergeTitleField -> MergePullRequestOption { mergePullRequestOptionMergeTitleField, ..} ) <$> f mergePullRequestOptionMergeTitleField
+{-# INLINE mergePullRequestOptionMergeTitleFieldL #-}
+
+-- | 'mergePullRequestOptionDeleteBranchAfterMerge' Lens
+mergePullRequestOptionDeleteBranchAfterMergeL :: Lens_' MergePullRequestOption (Maybe Bool)
+mergePullRequestOptionDeleteBranchAfterMergeL f MergePullRequestOption{..} = (\mergePullRequestOptionDeleteBranchAfterMerge -> MergePullRequestOption { mergePullRequestOptionDeleteBranchAfterMerge, ..} ) <$> f mergePullRequestOptionDeleteBranchAfterMerge
+{-# INLINE mergePullRequestOptionDeleteBranchAfterMergeL #-}
+
+-- | 'mergePullRequestOptionForceMerge' Lens
+mergePullRequestOptionForceMergeL :: Lens_' MergePullRequestOption (Maybe Bool)
+mergePullRequestOptionForceMergeL f MergePullRequestOption{..} = (\mergePullRequestOptionForceMerge -> MergePullRequestOption { mergePullRequestOptionForceMerge, ..} ) <$> f mergePullRequestOptionForceMerge
+{-# INLINE mergePullRequestOptionForceMergeL #-}
+
+-- | 'mergePullRequestOptionHeadCommitId' Lens
+mergePullRequestOptionHeadCommitIdL :: Lens_' MergePullRequestOption (Maybe Text)
+mergePullRequestOptionHeadCommitIdL f MergePullRequestOption{..} = (\mergePullRequestOptionHeadCommitId -> MergePullRequestOption { mergePullRequestOptionHeadCommitId, ..} ) <$> f mergePullRequestOptionHeadCommitId
+{-# INLINE mergePullRequestOptionHeadCommitIdL #-}
+
+-- | 'mergePullRequestOptionMergeWhenChecksSucceed' Lens
+mergePullRequestOptionMergeWhenChecksSucceedL :: Lens_' MergePullRequestOption (Maybe Bool)
+mergePullRequestOptionMergeWhenChecksSucceedL f MergePullRequestOption{..} = (\mergePullRequestOptionMergeWhenChecksSucceed -> MergePullRequestOption { mergePullRequestOptionMergeWhenChecksSucceed, ..} ) <$> f mergePullRequestOptionMergeWhenChecksSucceed
+{-# INLINE mergePullRequestOptionMergeWhenChecksSucceedL #-}
+
+
+
+-- * MigrateRepoOptions
+
+-- | 'migrateRepoOptionsAuthPassword' Lens
+migrateRepoOptionsAuthPasswordL :: Lens_' MigrateRepoOptions (Maybe Text)
+migrateRepoOptionsAuthPasswordL f MigrateRepoOptions{..} = (\migrateRepoOptionsAuthPassword -> MigrateRepoOptions { migrateRepoOptionsAuthPassword, ..} ) <$> f migrateRepoOptionsAuthPassword
+{-# INLINE migrateRepoOptionsAuthPasswordL #-}
+
+-- | 'migrateRepoOptionsAuthToken' Lens
+migrateRepoOptionsAuthTokenL :: Lens_' MigrateRepoOptions (Maybe Text)
+migrateRepoOptionsAuthTokenL f MigrateRepoOptions{..} = (\migrateRepoOptionsAuthToken -> MigrateRepoOptions { migrateRepoOptionsAuthToken, ..} ) <$> f migrateRepoOptionsAuthToken
+{-# INLINE migrateRepoOptionsAuthTokenL #-}
+
+-- | 'migrateRepoOptionsAuthUsername' Lens
+migrateRepoOptionsAuthUsernameL :: Lens_' MigrateRepoOptions (Maybe Text)
+migrateRepoOptionsAuthUsernameL f MigrateRepoOptions{..} = (\migrateRepoOptionsAuthUsername -> MigrateRepoOptions { migrateRepoOptionsAuthUsername, ..} ) <$> f migrateRepoOptionsAuthUsername
+{-# INLINE migrateRepoOptionsAuthUsernameL #-}
+
+-- | 'migrateRepoOptionsCloneAddr' Lens
+migrateRepoOptionsCloneAddrL :: Lens_' MigrateRepoOptions (Text)
+migrateRepoOptionsCloneAddrL f MigrateRepoOptions{..} = (\migrateRepoOptionsCloneAddr -> MigrateRepoOptions { migrateRepoOptionsCloneAddr, ..} ) <$> f migrateRepoOptionsCloneAddr
+{-# INLINE migrateRepoOptionsCloneAddrL #-}
+
+-- | 'migrateRepoOptionsDescription' Lens
+migrateRepoOptionsDescriptionL :: Lens_' MigrateRepoOptions (Maybe Text)
+migrateRepoOptionsDescriptionL f MigrateRepoOptions{..} = (\migrateRepoOptionsDescription -> MigrateRepoOptions { migrateRepoOptionsDescription, ..} ) <$> f migrateRepoOptionsDescription
+{-# INLINE migrateRepoOptionsDescriptionL #-}
+
+-- | 'migrateRepoOptionsIssues' Lens
+migrateRepoOptionsIssuesL :: Lens_' MigrateRepoOptions (Maybe Bool)
+migrateRepoOptionsIssuesL f MigrateRepoOptions{..} = (\migrateRepoOptionsIssues -> MigrateRepoOptions { migrateRepoOptionsIssues, ..} ) <$> f migrateRepoOptionsIssues
+{-# INLINE migrateRepoOptionsIssuesL #-}
+
+-- | 'migrateRepoOptionsLabels' Lens
+migrateRepoOptionsLabelsL :: Lens_' MigrateRepoOptions (Maybe Bool)
+migrateRepoOptionsLabelsL f MigrateRepoOptions{..} = (\migrateRepoOptionsLabels -> MigrateRepoOptions { migrateRepoOptionsLabels, ..} ) <$> f migrateRepoOptionsLabels
+{-# INLINE migrateRepoOptionsLabelsL #-}
+
+-- | 'migrateRepoOptionsLfs' Lens
+migrateRepoOptionsLfsL :: Lens_' MigrateRepoOptions (Maybe Bool)
+migrateRepoOptionsLfsL f MigrateRepoOptions{..} = (\migrateRepoOptionsLfs -> MigrateRepoOptions { migrateRepoOptionsLfs, ..} ) <$> f migrateRepoOptionsLfs
+{-# INLINE migrateRepoOptionsLfsL #-}
+
+-- | 'migrateRepoOptionsLfsEndpoint' Lens
+migrateRepoOptionsLfsEndpointL :: Lens_' MigrateRepoOptions (Maybe Text)
+migrateRepoOptionsLfsEndpointL f MigrateRepoOptions{..} = (\migrateRepoOptionsLfsEndpoint -> MigrateRepoOptions { migrateRepoOptionsLfsEndpoint, ..} ) <$> f migrateRepoOptionsLfsEndpoint
+{-# INLINE migrateRepoOptionsLfsEndpointL #-}
+
+-- | 'migrateRepoOptionsMilestones' Lens
+migrateRepoOptionsMilestonesL :: Lens_' MigrateRepoOptions (Maybe Bool)
+migrateRepoOptionsMilestonesL f MigrateRepoOptions{..} = (\migrateRepoOptionsMilestones -> MigrateRepoOptions { migrateRepoOptionsMilestones, ..} ) <$> f migrateRepoOptionsMilestones
+{-# INLINE migrateRepoOptionsMilestonesL #-}
+
+-- | 'migrateRepoOptionsMirror' Lens
+migrateRepoOptionsMirrorL :: Lens_' MigrateRepoOptions (Maybe Bool)
+migrateRepoOptionsMirrorL f MigrateRepoOptions{..} = (\migrateRepoOptionsMirror -> MigrateRepoOptions { migrateRepoOptionsMirror, ..} ) <$> f migrateRepoOptionsMirror
+{-# INLINE migrateRepoOptionsMirrorL #-}
+
+-- | 'migrateRepoOptionsMirrorInterval' Lens
+migrateRepoOptionsMirrorIntervalL :: Lens_' MigrateRepoOptions (Maybe Text)
+migrateRepoOptionsMirrorIntervalL f MigrateRepoOptions{..} = (\migrateRepoOptionsMirrorInterval -> MigrateRepoOptions { migrateRepoOptionsMirrorInterval, ..} ) <$> f migrateRepoOptionsMirrorInterval
+{-# INLINE migrateRepoOptionsMirrorIntervalL #-}
+
+-- | 'migrateRepoOptionsPrivate' Lens
+migrateRepoOptionsPrivateL :: Lens_' MigrateRepoOptions (Maybe Bool)
+migrateRepoOptionsPrivateL f MigrateRepoOptions{..} = (\migrateRepoOptionsPrivate -> MigrateRepoOptions { migrateRepoOptionsPrivate, ..} ) <$> f migrateRepoOptionsPrivate
+{-# INLINE migrateRepoOptionsPrivateL #-}
+
+-- | 'migrateRepoOptionsPullRequests' Lens
+migrateRepoOptionsPullRequestsL :: Lens_' MigrateRepoOptions (Maybe Bool)
+migrateRepoOptionsPullRequestsL f MigrateRepoOptions{..} = (\migrateRepoOptionsPullRequests -> MigrateRepoOptions { migrateRepoOptionsPullRequests, ..} ) <$> f migrateRepoOptionsPullRequests
+{-# INLINE migrateRepoOptionsPullRequestsL #-}
+
+-- | 'migrateRepoOptionsReleases' Lens
+migrateRepoOptionsReleasesL :: Lens_' MigrateRepoOptions (Maybe Bool)
+migrateRepoOptionsReleasesL f MigrateRepoOptions{..} = (\migrateRepoOptionsReleases -> MigrateRepoOptions { migrateRepoOptionsReleases, ..} ) <$> f migrateRepoOptionsReleases
+{-# INLINE migrateRepoOptionsReleasesL #-}
+
+-- | 'migrateRepoOptionsRepoName' Lens
+migrateRepoOptionsRepoNameL :: Lens_' MigrateRepoOptions (Text)
+migrateRepoOptionsRepoNameL f MigrateRepoOptions{..} = (\migrateRepoOptionsRepoName -> MigrateRepoOptions { migrateRepoOptionsRepoName, ..} ) <$> f migrateRepoOptionsRepoName
+{-# INLINE migrateRepoOptionsRepoNameL #-}
+
+-- | 'migrateRepoOptionsRepoOwner' Lens
+migrateRepoOptionsRepoOwnerL :: Lens_' MigrateRepoOptions (Maybe Text)
+migrateRepoOptionsRepoOwnerL f MigrateRepoOptions{..} = (\migrateRepoOptionsRepoOwner -> MigrateRepoOptions { migrateRepoOptionsRepoOwner, ..} ) <$> f migrateRepoOptionsRepoOwner
+{-# INLINE migrateRepoOptionsRepoOwnerL #-}
+
+-- | 'migrateRepoOptionsService' Lens
+migrateRepoOptionsServiceL :: Lens_' MigrateRepoOptions (Maybe E'Service)
+migrateRepoOptionsServiceL f MigrateRepoOptions{..} = (\migrateRepoOptionsService -> MigrateRepoOptions { migrateRepoOptionsService, ..} ) <$> f migrateRepoOptionsService
+{-# INLINE migrateRepoOptionsServiceL #-}
+
+-- | 'migrateRepoOptionsUid' Lens
+migrateRepoOptionsUidL :: Lens_' MigrateRepoOptions (Maybe Integer)
+migrateRepoOptionsUidL f MigrateRepoOptions{..} = (\migrateRepoOptionsUid -> MigrateRepoOptions { migrateRepoOptionsUid, ..} ) <$> f migrateRepoOptionsUid
+{-# INLINE migrateRepoOptionsUidL #-}
+
+-- | 'migrateRepoOptionsWiki' Lens
+migrateRepoOptionsWikiL :: Lens_' MigrateRepoOptions (Maybe Bool)
+migrateRepoOptionsWikiL f MigrateRepoOptions{..} = (\migrateRepoOptionsWiki -> MigrateRepoOptions { migrateRepoOptionsWiki, ..} ) <$> f migrateRepoOptionsWiki
+{-# INLINE migrateRepoOptionsWikiL #-}
+
+
+
+-- * Milestone
+
+-- | 'milestoneClosedAt' Lens
+milestoneClosedAtL :: Lens_' Milestone (Maybe DateTime)
+milestoneClosedAtL f Milestone{..} = (\milestoneClosedAt -> Milestone { milestoneClosedAt, ..} ) <$> f milestoneClosedAt
+{-# INLINE milestoneClosedAtL #-}
+
+-- | 'milestoneClosedIssues' Lens
+milestoneClosedIssuesL :: Lens_' Milestone (Maybe Integer)
+milestoneClosedIssuesL f Milestone{..} = (\milestoneClosedIssues -> Milestone { milestoneClosedIssues, ..} ) <$> f milestoneClosedIssues
+{-# INLINE milestoneClosedIssuesL #-}
+
+-- | 'milestoneCreatedAt' Lens
+milestoneCreatedAtL :: Lens_' Milestone (Maybe DateTime)
+milestoneCreatedAtL f Milestone{..} = (\milestoneCreatedAt -> Milestone { milestoneCreatedAt, ..} ) <$> f milestoneCreatedAt
+{-# INLINE milestoneCreatedAtL #-}
+
+-- | 'milestoneDescription' Lens
+milestoneDescriptionL :: Lens_' Milestone (Maybe Text)
+milestoneDescriptionL f Milestone{..} = (\milestoneDescription -> Milestone { milestoneDescription, ..} ) <$> f milestoneDescription
+{-# INLINE milestoneDescriptionL #-}
+
+-- | 'milestoneDueOn' Lens
+milestoneDueOnL :: Lens_' Milestone (Maybe DateTime)
+milestoneDueOnL f Milestone{..} = (\milestoneDueOn -> Milestone { milestoneDueOn, ..} ) <$> f milestoneDueOn
+{-# INLINE milestoneDueOnL #-}
+
+-- | 'milestoneId' Lens
+milestoneIdL :: Lens_' Milestone (Maybe Integer)
+milestoneIdL f Milestone{..} = (\milestoneId -> Milestone { milestoneId, ..} ) <$> f milestoneId
+{-# INLINE milestoneIdL #-}
+
+-- | 'milestoneOpenIssues' Lens
+milestoneOpenIssuesL :: Lens_' Milestone (Maybe Integer)
+milestoneOpenIssuesL f Milestone{..} = (\milestoneOpenIssues -> Milestone { milestoneOpenIssues, ..} ) <$> f milestoneOpenIssues
+{-# INLINE milestoneOpenIssuesL #-}
+
+-- | 'milestoneState' Lens
+milestoneStateL :: Lens_' Milestone (Maybe Text)
+milestoneStateL f Milestone{..} = (\milestoneState -> Milestone { milestoneState, ..} ) <$> f milestoneState
+{-# INLINE milestoneStateL #-}
+
+-- | 'milestoneTitle' Lens
+milestoneTitleL :: Lens_' Milestone (Maybe Text)
+milestoneTitleL f Milestone{..} = (\milestoneTitle -> Milestone { milestoneTitle, ..} ) <$> f milestoneTitle
+{-# INLINE milestoneTitleL #-}
+
+-- | 'milestoneUpdatedAt' Lens
+milestoneUpdatedAtL :: Lens_' Milestone (Maybe DateTime)
+milestoneUpdatedAtL f Milestone{..} = (\milestoneUpdatedAt -> Milestone { milestoneUpdatedAt, ..} ) <$> f milestoneUpdatedAt
+{-# INLINE milestoneUpdatedAtL #-}
+
+
+
+-- * NodeInfo
+
+-- | 'nodeInfoMetadata' Lens
+nodeInfoMetadataL :: Lens_' NodeInfo (Maybe A.Value)
+nodeInfoMetadataL f NodeInfo{..} = (\nodeInfoMetadata -> NodeInfo { nodeInfoMetadata, ..} ) <$> f nodeInfoMetadata
+{-# INLINE nodeInfoMetadataL #-}
+
+-- | 'nodeInfoOpenRegistrations' Lens
+nodeInfoOpenRegistrationsL :: Lens_' NodeInfo (Maybe Bool)
+nodeInfoOpenRegistrationsL f NodeInfo{..} = (\nodeInfoOpenRegistrations -> NodeInfo { nodeInfoOpenRegistrations, ..} ) <$> f nodeInfoOpenRegistrations
+{-# INLINE nodeInfoOpenRegistrationsL #-}
+
+-- | 'nodeInfoProtocols' Lens
+nodeInfoProtocolsL :: Lens_' NodeInfo (Maybe [Text])
+nodeInfoProtocolsL f NodeInfo{..} = (\nodeInfoProtocols -> NodeInfo { nodeInfoProtocols, ..} ) <$> f nodeInfoProtocols
+{-# INLINE nodeInfoProtocolsL #-}
+
+-- | 'nodeInfoServices' Lens
+nodeInfoServicesL :: Lens_' NodeInfo (Maybe NodeInfoServices)
+nodeInfoServicesL f NodeInfo{..} = (\nodeInfoServices -> NodeInfo { nodeInfoServices, ..} ) <$> f nodeInfoServices
+{-# INLINE nodeInfoServicesL #-}
+
+-- | 'nodeInfoSoftware' Lens
+nodeInfoSoftwareL :: Lens_' NodeInfo (Maybe NodeInfoSoftware)
+nodeInfoSoftwareL f NodeInfo{..} = (\nodeInfoSoftware -> NodeInfo { nodeInfoSoftware, ..} ) <$> f nodeInfoSoftware
+{-# INLINE nodeInfoSoftwareL #-}
+
+-- | 'nodeInfoUsage' Lens
+nodeInfoUsageL :: Lens_' NodeInfo (Maybe NodeInfoUsage)
+nodeInfoUsageL f NodeInfo{..} = (\nodeInfoUsage -> NodeInfo { nodeInfoUsage, ..} ) <$> f nodeInfoUsage
+{-# INLINE nodeInfoUsageL #-}
+
+-- | 'nodeInfoVersion' Lens
+nodeInfoVersionL :: Lens_' NodeInfo (Maybe Text)
+nodeInfoVersionL f NodeInfo{..} = (\nodeInfoVersion -> NodeInfo { nodeInfoVersion, ..} ) <$> f nodeInfoVersion
+{-# INLINE nodeInfoVersionL #-}
+
+
+
+-- * NodeInfoServices
+
+-- | 'nodeInfoServicesInbound' Lens
+nodeInfoServicesInboundL :: Lens_' NodeInfoServices (Maybe [Text])
+nodeInfoServicesInboundL f NodeInfoServices{..} = (\nodeInfoServicesInbound -> NodeInfoServices { nodeInfoServicesInbound, ..} ) <$> f nodeInfoServicesInbound
+{-# INLINE nodeInfoServicesInboundL #-}
+
+-- | 'nodeInfoServicesOutbound' Lens
+nodeInfoServicesOutboundL :: Lens_' NodeInfoServices (Maybe [Text])
+nodeInfoServicesOutboundL f NodeInfoServices{..} = (\nodeInfoServicesOutbound -> NodeInfoServices { nodeInfoServicesOutbound, ..} ) <$> f nodeInfoServicesOutbound
+{-# INLINE nodeInfoServicesOutboundL #-}
+
+
+
+-- * NodeInfoSoftware
+
+-- | 'nodeInfoSoftwareHomepage' Lens
+nodeInfoSoftwareHomepageL :: Lens_' NodeInfoSoftware (Maybe Text)
+nodeInfoSoftwareHomepageL f NodeInfoSoftware{..} = (\nodeInfoSoftwareHomepage -> NodeInfoSoftware { nodeInfoSoftwareHomepage, ..} ) <$> f nodeInfoSoftwareHomepage
+{-# INLINE nodeInfoSoftwareHomepageL #-}
+
+-- | 'nodeInfoSoftwareName' Lens
+nodeInfoSoftwareNameL :: Lens_' NodeInfoSoftware (Maybe Text)
+nodeInfoSoftwareNameL f NodeInfoSoftware{..} = (\nodeInfoSoftwareName -> NodeInfoSoftware { nodeInfoSoftwareName, ..} ) <$> f nodeInfoSoftwareName
+{-# INLINE nodeInfoSoftwareNameL #-}
+
+-- | 'nodeInfoSoftwareRepository' Lens
+nodeInfoSoftwareRepositoryL :: Lens_' NodeInfoSoftware (Maybe Text)
+nodeInfoSoftwareRepositoryL f NodeInfoSoftware{..} = (\nodeInfoSoftwareRepository -> NodeInfoSoftware { nodeInfoSoftwareRepository, ..} ) <$> f nodeInfoSoftwareRepository
+{-# INLINE nodeInfoSoftwareRepositoryL #-}
+
+-- | 'nodeInfoSoftwareVersion' Lens
+nodeInfoSoftwareVersionL :: Lens_' NodeInfoSoftware (Maybe Text)
+nodeInfoSoftwareVersionL f NodeInfoSoftware{..} = (\nodeInfoSoftwareVersion -> NodeInfoSoftware { nodeInfoSoftwareVersion, ..} ) <$> f nodeInfoSoftwareVersion
+{-# INLINE nodeInfoSoftwareVersionL #-}
+
+
+
+-- * NodeInfoUsage
+
+-- | 'nodeInfoUsageLocalComments' Lens
+nodeInfoUsageLocalCommentsL :: Lens_' NodeInfoUsage (Maybe Integer)
+nodeInfoUsageLocalCommentsL f NodeInfoUsage{..} = (\nodeInfoUsageLocalComments -> NodeInfoUsage { nodeInfoUsageLocalComments, ..} ) <$> f nodeInfoUsageLocalComments
+{-# INLINE nodeInfoUsageLocalCommentsL #-}
+
+-- | 'nodeInfoUsageLocalPosts' Lens
+nodeInfoUsageLocalPostsL :: Lens_' NodeInfoUsage (Maybe Integer)
+nodeInfoUsageLocalPostsL f NodeInfoUsage{..} = (\nodeInfoUsageLocalPosts -> NodeInfoUsage { nodeInfoUsageLocalPosts, ..} ) <$> f nodeInfoUsageLocalPosts
+{-# INLINE nodeInfoUsageLocalPostsL #-}
+
+-- | 'nodeInfoUsageUsers' Lens
+nodeInfoUsageUsersL :: Lens_' NodeInfoUsage (Maybe NodeInfoUsageUsers)
+nodeInfoUsageUsersL f NodeInfoUsage{..} = (\nodeInfoUsageUsers -> NodeInfoUsage { nodeInfoUsageUsers, ..} ) <$> f nodeInfoUsageUsers
+{-# INLINE nodeInfoUsageUsersL #-}
+
+
+
+-- * NodeInfoUsageUsers
+
+-- | 'nodeInfoUsageUsersActiveHalfyear' Lens
+nodeInfoUsageUsersActiveHalfyearL :: Lens_' NodeInfoUsageUsers (Maybe Integer)
+nodeInfoUsageUsersActiveHalfyearL f NodeInfoUsageUsers{..} = (\nodeInfoUsageUsersActiveHalfyear -> NodeInfoUsageUsers { nodeInfoUsageUsersActiveHalfyear, ..} ) <$> f nodeInfoUsageUsersActiveHalfyear
+{-# INLINE nodeInfoUsageUsersActiveHalfyearL #-}
+
+-- | 'nodeInfoUsageUsersActiveMonth' Lens
+nodeInfoUsageUsersActiveMonthL :: Lens_' NodeInfoUsageUsers (Maybe Integer)
+nodeInfoUsageUsersActiveMonthL f NodeInfoUsageUsers{..} = (\nodeInfoUsageUsersActiveMonth -> NodeInfoUsageUsers { nodeInfoUsageUsersActiveMonth, ..} ) <$> f nodeInfoUsageUsersActiveMonth
+{-# INLINE nodeInfoUsageUsersActiveMonthL #-}
+
+-- | 'nodeInfoUsageUsersTotal' Lens
+nodeInfoUsageUsersTotalL :: Lens_' NodeInfoUsageUsers (Maybe Integer)
+nodeInfoUsageUsersTotalL f NodeInfoUsageUsers{..} = (\nodeInfoUsageUsersTotal -> NodeInfoUsageUsers { nodeInfoUsageUsersTotal, ..} ) <$> f nodeInfoUsageUsersTotal
+{-# INLINE nodeInfoUsageUsersTotalL #-}
+
+
+
+-- * Note
+
+-- | 'noteCommit' Lens
+noteCommitL :: Lens_' Note (Maybe Commit)
+noteCommitL f Note{..} = (\noteCommit -> Note { noteCommit, ..} ) <$> f noteCommit
+{-# INLINE noteCommitL #-}
+
+-- | 'noteMessage' Lens
+noteMessageL :: Lens_' Note (Maybe Text)
+noteMessageL f Note{..} = (\noteMessage -> Note { noteMessage, ..} ) <$> f noteMessage
+{-# INLINE noteMessageL #-}
+
+
+
+-- * NotificationCount
+
+-- | 'notificationCountNew' Lens
+notificationCountNewL :: Lens_' NotificationCount (Maybe Integer)
+notificationCountNewL f NotificationCount{..} = (\notificationCountNew -> NotificationCount { notificationCountNew, ..} ) <$> f notificationCountNew
+{-# INLINE notificationCountNewL #-}
+
+
+
+-- * NotificationSubject
+
+-- | 'notificationSubjectHtmlUrl' Lens
+notificationSubjectHtmlUrlL :: Lens_' NotificationSubject (Maybe Text)
+notificationSubjectHtmlUrlL f NotificationSubject{..} = (\notificationSubjectHtmlUrl -> NotificationSubject { notificationSubjectHtmlUrl, ..} ) <$> f notificationSubjectHtmlUrl
+{-# INLINE notificationSubjectHtmlUrlL #-}
+
+-- | 'notificationSubjectLatestCommentHtmlUrl' Lens
+notificationSubjectLatestCommentHtmlUrlL :: Lens_' NotificationSubject (Maybe Text)
+notificationSubjectLatestCommentHtmlUrlL f NotificationSubject{..} = (\notificationSubjectLatestCommentHtmlUrl -> NotificationSubject { notificationSubjectLatestCommentHtmlUrl, ..} ) <$> f notificationSubjectLatestCommentHtmlUrl
+{-# INLINE notificationSubjectLatestCommentHtmlUrlL #-}
+
+-- | 'notificationSubjectLatestCommentUrl' Lens
+notificationSubjectLatestCommentUrlL :: Lens_' NotificationSubject (Maybe Text)
+notificationSubjectLatestCommentUrlL f NotificationSubject{..} = (\notificationSubjectLatestCommentUrl -> NotificationSubject { notificationSubjectLatestCommentUrl, ..} ) <$> f notificationSubjectLatestCommentUrl
+{-# INLINE notificationSubjectLatestCommentUrlL #-}
+
+-- | 'notificationSubjectState' Lens
+notificationSubjectStateL :: Lens_' NotificationSubject (Maybe Text)
+notificationSubjectStateL f NotificationSubject{..} = (\notificationSubjectState -> NotificationSubject { notificationSubjectState, ..} ) <$> f notificationSubjectState
+{-# INLINE notificationSubjectStateL #-}
+
+-- | 'notificationSubjectTitle' Lens
+notificationSubjectTitleL :: Lens_' NotificationSubject (Maybe Text)
+notificationSubjectTitleL f NotificationSubject{..} = (\notificationSubjectTitle -> NotificationSubject { notificationSubjectTitle, ..} ) <$> f notificationSubjectTitle
+{-# INLINE notificationSubjectTitleL #-}
+
+-- | 'notificationSubjectType' Lens
+notificationSubjectTypeL :: Lens_' NotificationSubject (Maybe Text)
+notificationSubjectTypeL f NotificationSubject{..} = (\notificationSubjectType -> NotificationSubject { notificationSubjectType, ..} ) <$> f notificationSubjectType
+{-# INLINE notificationSubjectTypeL #-}
+
+-- | 'notificationSubjectUrl' Lens
+notificationSubjectUrlL :: Lens_' NotificationSubject (Maybe Text)
+notificationSubjectUrlL f NotificationSubject{..} = (\notificationSubjectUrl -> NotificationSubject { notificationSubjectUrl, ..} ) <$> f notificationSubjectUrl
+{-# INLINE notificationSubjectUrlL #-}
+
+
+
+-- * NotificationThread
+
+-- | 'notificationThreadId' Lens
+notificationThreadIdL :: Lens_' NotificationThread (Maybe Integer)
+notificationThreadIdL f NotificationThread{..} = (\notificationThreadId -> NotificationThread { notificationThreadId, ..} ) <$> f notificationThreadId
+{-# INLINE notificationThreadIdL #-}
+
+-- | 'notificationThreadPinned' Lens
+notificationThreadPinnedL :: Lens_' NotificationThread (Maybe Bool)
+notificationThreadPinnedL f NotificationThread{..} = (\notificationThreadPinned -> NotificationThread { notificationThreadPinned, ..} ) <$> f notificationThreadPinned
+{-# INLINE notificationThreadPinnedL #-}
+
+-- | 'notificationThreadRepository' Lens
+notificationThreadRepositoryL :: Lens_' NotificationThread (Maybe Repository)
+notificationThreadRepositoryL f NotificationThread{..} = (\notificationThreadRepository -> NotificationThread { notificationThreadRepository, ..} ) <$> f notificationThreadRepository
+{-# INLINE notificationThreadRepositoryL #-}
+
+-- | 'notificationThreadSubject' Lens
+notificationThreadSubjectL :: Lens_' NotificationThread (Maybe NotificationSubject)
+notificationThreadSubjectL f NotificationThread{..} = (\notificationThreadSubject -> NotificationThread { notificationThreadSubject, ..} ) <$> f notificationThreadSubject
+{-# INLINE notificationThreadSubjectL #-}
+
+-- | 'notificationThreadUnread' Lens
+notificationThreadUnreadL :: Lens_' NotificationThread (Maybe Bool)
+notificationThreadUnreadL f NotificationThread{..} = (\notificationThreadUnread -> NotificationThread { notificationThreadUnread, ..} ) <$> f notificationThreadUnread
+{-# INLINE notificationThreadUnreadL #-}
+
+-- | 'notificationThreadUpdatedAt' Lens
+notificationThreadUpdatedAtL :: Lens_' NotificationThread (Maybe DateTime)
+notificationThreadUpdatedAtL f NotificationThread{..} = (\notificationThreadUpdatedAt -> NotificationThread { notificationThreadUpdatedAt, ..} ) <$> f notificationThreadUpdatedAt
+{-# INLINE notificationThreadUpdatedAtL #-}
+
+-- | 'notificationThreadUrl' Lens
+notificationThreadUrlL :: Lens_' NotificationThread (Maybe Text)
+notificationThreadUrlL f NotificationThread{..} = (\notificationThreadUrl -> NotificationThread { notificationThreadUrl, ..} ) <$> f notificationThreadUrl
+{-# INLINE notificationThreadUrlL #-}
+
+
+
+-- * OAuth2Application
+
+-- | 'oAuth2ApplicationClientId' Lens
+oAuth2ApplicationClientIdL :: Lens_' OAuth2Application (Maybe Text)
+oAuth2ApplicationClientIdL f OAuth2Application{..} = (\oAuth2ApplicationClientId -> OAuth2Application { oAuth2ApplicationClientId, ..} ) <$> f oAuth2ApplicationClientId
+{-# INLINE oAuth2ApplicationClientIdL #-}
+
+-- | 'oAuth2ApplicationClientSecret' Lens
+oAuth2ApplicationClientSecretL :: Lens_' OAuth2Application (Maybe Text)
+oAuth2ApplicationClientSecretL f OAuth2Application{..} = (\oAuth2ApplicationClientSecret -> OAuth2Application { oAuth2ApplicationClientSecret, ..} ) <$> f oAuth2ApplicationClientSecret
+{-# INLINE oAuth2ApplicationClientSecretL #-}
+
+-- | 'oAuth2ApplicationConfidentialClient' Lens
+oAuth2ApplicationConfidentialClientL :: Lens_' OAuth2Application (Maybe Bool)
+oAuth2ApplicationConfidentialClientL f OAuth2Application{..} = (\oAuth2ApplicationConfidentialClient -> OAuth2Application { oAuth2ApplicationConfidentialClient, ..} ) <$> f oAuth2ApplicationConfidentialClient
+{-# INLINE oAuth2ApplicationConfidentialClientL #-}
+
+-- | 'oAuth2ApplicationCreated' Lens
+oAuth2ApplicationCreatedL :: Lens_' OAuth2Application (Maybe DateTime)
+oAuth2ApplicationCreatedL f OAuth2Application{..} = (\oAuth2ApplicationCreated -> OAuth2Application { oAuth2ApplicationCreated, ..} ) <$> f oAuth2ApplicationCreated
+{-# INLINE oAuth2ApplicationCreatedL #-}
+
+-- | 'oAuth2ApplicationId' Lens
+oAuth2ApplicationIdL :: Lens_' OAuth2Application (Maybe Integer)
+oAuth2ApplicationIdL f OAuth2Application{..} = (\oAuth2ApplicationId -> OAuth2Application { oAuth2ApplicationId, ..} ) <$> f oAuth2ApplicationId
+{-# INLINE oAuth2ApplicationIdL #-}
+
+-- | 'oAuth2ApplicationName' Lens
+oAuth2ApplicationNameL :: Lens_' OAuth2Application (Maybe Text)
+oAuth2ApplicationNameL f OAuth2Application{..} = (\oAuth2ApplicationName -> OAuth2Application { oAuth2ApplicationName, ..} ) <$> f oAuth2ApplicationName
+{-# INLINE oAuth2ApplicationNameL #-}
+
+-- | 'oAuth2ApplicationRedirectUris' Lens
+oAuth2ApplicationRedirectUrisL :: Lens_' OAuth2Application (Maybe [Text])
+oAuth2ApplicationRedirectUrisL f OAuth2Application{..} = (\oAuth2ApplicationRedirectUris -> OAuth2Application { oAuth2ApplicationRedirectUris, ..} ) <$> f oAuth2ApplicationRedirectUris
+{-# INLINE oAuth2ApplicationRedirectUrisL #-}
+
+
+
+-- * Organization
+
+-- | 'organizationAvatarUrl' Lens
+organizationAvatarUrlL :: Lens_' Organization (Maybe Text)
+organizationAvatarUrlL f Organization{..} = (\organizationAvatarUrl -> Organization { organizationAvatarUrl, ..} ) <$> f organizationAvatarUrl
+{-# INLINE organizationAvatarUrlL #-}
+
+-- | 'organizationDescription' Lens
+organizationDescriptionL :: Lens_' Organization (Maybe Text)
+organizationDescriptionL f Organization{..} = (\organizationDescription -> Organization { organizationDescription, ..} ) <$> f organizationDescription
+{-# INLINE organizationDescriptionL #-}
+
+-- | 'organizationFullName' Lens
+organizationFullNameL :: Lens_' Organization (Maybe Text)
+organizationFullNameL f Organization{..} = (\organizationFullName -> Organization { organizationFullName, ..} ) <$> f organizationFullName
+{-# INLINE organizationFullNameL #-}
+
+-- | 'organizationId' Lens
+organizationIdL :: Lens_' Organization (Maybe Integer)
+organizationIdL f Organization{..} = (\organizationId -> Organization { organizationId, ..} ) <$> f organizationId
+{-# INLINE organizationIdL #-}
+
+-- | 'organizationLocation' Lens
+organizationLocationL :: Lens_' Organization (Maybe Text)
+organizationLocationL f Organization{..} = (\organizationLocation -> Organization { organizationLocation, ..} ) <$> f organizationLocation
+{-# INLINE organizationLocationL #-}
+
+-- | 'organizationName' Lens
+organizationNameL :: Lens_' Organization (Maybe Text)
+organizationNameL f Organization{..} = (\organizationName -> Organization { organizationName, ..} ) <$> f organizationName
+{-# INLINE organizationNameL #-}
+
+-- | 'organizationRepoAdminChangeTeamAccess' Lens
+organizationRepoAdminChangeTeamAccessL :: Lens_' Organization (Maybe Bool)
+organizationRepoAdminChangeTeamAccessL f Organization{..} = (\organizationRepoAdminChangeTeamAccess -> Organization { organizationRepoAdminChangeTeamAccess, ..} ) <$> f organizationRepoAdminChangeTeamAccess
+{-# INLINE organizationRepoAdminChangeTeamAccessL #-}
+
+-- | 'organizationUsername' Lens
+organizationUsernameL :: Lens_' Organization (Maybe Text)
+organizationUsernameL f Organization{..} = (\organizationUsername -> Organization { organizationUsername, ..} ) <$> f organizationUsername
+{-# INLINE organizationUsernameL #-}
+
+-- | 'organizationVisibility' Lens
+organizationVisibilityL :: Lens_' Organization (Maybe Text)
+organizationVisibilityL f Organization{..} = (\organizationVisibility -> Organization { organizationVisibility, ..} ) <$> f organizationVisibility
+{-# INLINE organizationVisibilityL #-}
+
+-- | 'organizationWebsite' Lens
+organizationWebsiteL :: Lens_' Organization (Maybe Text)
+organizationWebsiteL f Organization{..} = (\organizationWebsite -> Organization { organizationWebsite, ..} ) <$> f organizationWebsite
+{-# INLINE organizationWebsiteL #-}
+
+
+
+-- * OrganizationPermissions
+
+-- | 'organizationPermissionsCanCreateRepository' Lens
+organizationPermissionsCanCreateRepositoryL :: Lens_' OrganizationPermissions (Maybe Bool)
+organizationPermissionsCanCreateRepositoryL f OrganizationPermissions{..} = (\organizationPermissionsCanCreateRepository -> OrganizationPermissions { organizationPermissionsCanCreateRepository, ..} ) <$> f organizationPermissionsCanCreateRepository
+{-# INLINE organizationPermissionsCanCreateRepositoryL #-}
+
+-- | 'organizationPermissionsCanRead' Lens
+organizationPermissionsCanReadL :: Lens_' OrganizationPermissions (Maybe Bool)
+organizationPermissionsCanReadL f OrganizationPermissions{..} = (\organizationPermissionsCanRead -> OrganizationPermissions { organizationPermissionsCanRead, ..} ) <$> f organizationPermissionsCanRead
+{-# INLINE organizationPermissionsCanReadL #-}
+
+-- | 'organizationPermissionsCanWrite' Lens
+organizationPermissionsCanWriteL :: Lens_' OrganizationPermissions (Maybe Bool)
+organizationPermissionsCanWriteL f OrganizationPermissions{..} = (\organizationPermissionsCanWrite -> OrganizationPermissions { organizationPermissionsCanWrite, ..} ) <$> f organizationPermissionsCanWrite
+{-# INLINE organizationPermissionsCanWriteL #-}
+
+-- | 'organizationPermissionsIsAdmin' Lens
+organizationPermissionsIsAdminL :: Lens_' OrganizationPermissions (Maybe Bool)
+organizationPermissionsIsAdminL f OrganizationPermissions{..} = (\organizationPermissionsIsAdmin -> OrganizationPermissions { organizationPermissionsIsAdmin, ..} ) <$> f organizationPermissionsIsAdmin
+{-# INLINE organizationPermissionsIsAdminL #-}
+
+-- | 'organizationPermissionsIsOwner' Lens
+organizationPermissionsIsOwnerL :: Lens_' OrganizationPermissions (Maybe Bool)
+organizationPermissionsIsOwnerL f OrganizationPermissions{..} = (\organizationPermissionsIsOwner -> OrganizationPermissions { organizationPermissionsIsOwner, ..} ) <$> f organizationPermissionsIsOwner
+{-# INLINE organizationPermissionsIsOwnerL #-}
+
+
+
+-- * PRBranchInfo
+
+-- | 'pRBranchInfoLabel' Lens
+pRBranchInfoLabelL :: Lens_' PRBranchInfo (Maybe Text)
+pRBranchInfoLabelL f PRBranchInfo{..} = (\pRBranchInfoLabel -> PRBranchInfo { pRBranchInfoLabel, ..} ) <$> f pRBranchInfoLabel
+{-# INLINE pRBranchInfoLabelL #-}
+
+-- | 'pRBranchInfoRef' Lens
+pRBranchInfoRefL :: Lens_' PRBranchInfo (Maybe Text)
+pRBranchInfoRefL f PRBranchInfo{..} = (\pRBranchInfoRef -> PRBranchInfo { pRBranchInfoRef, ..} ) <$> f pRBranchInfoRef
+{-# INLINE pRBranchInfoRefL #-}
+
+-- | 'pRBranchInfoRepo' Lens
+pRBranchInfoRepoL :: Lens_' PRBranchInfo (Maybe Repository)
+pRBranchInfoRepoL f PRBranchInfo{..} = (\pRBranchInfoRepo -> PRBranchInfo { pRBranchInfoRepo, ..} ) <$> f pRBranchInfoRepo
+{-# INLINE pRBranchInfoRepoL #-}
+
+-- | 'pRBranchInfoRepoId' Lens
+pRBranchInfoRepoIdL :: Lens_' PRBranchInfo (Maybe Integer)
+pRBranchInfoRepoIdL f PRBranchInfo{..} = (\pRBranchInfoRepoId -> PRBranchInfo { pRBranchInfoRepoId, ..} ) <$> f pRBranchInfoRepoId
+{-# INLINE pRBranchInfoRepoIdL #-}
+
+-- | 'pRBranchInfoSha' Lens
+pRBranchInfoShaL :: Lens_' PRBranchInfo (Maybe Text)
+pRBranchInfoShaL f PRBranchInfo{..} = (\pRBranchInfoSha -> PRBranchInfo { pRBranchInfoSha, ..} ) <$> f pRBranchInfoSha
+{-# INLINE pRBranchInfoShaL #-}
+
+
+
+-- * Package
+
+-- | 'packageCreatedAt' Lens
+packageCreatedAtL :: Lens_' Package (Maybe DateTime)
+packageCreatedAtL f Package{..} = (\packageCreatedAt -> Package { packageCreatedAt, ..} ) <$> f packageCreatedAt
+{-# INLINE packageCreatedAtL #-}
+
+-- | 'packageCreator' Lens
+packageCreatorL :: Lens_' Package (Maybe User)
+packageCreatorL f Package{..} = (\packageCreator -> Package { packageCreator, ..} ) <$> f packageCreator
+{-# INLINE packageCreatorL #-}
+
+-- | 'packageId' Lens
+packageIdL :: Lens_' Package (Maybe Integer)
+packageIdL f Package{..} = (\packageId -> Package { packageId, ..} ) <$> f packageId
+{-# INLINE packageIdL #-}
+
+-- | 'packageName' Lens
+packageNameL :: Lens_' Package (Maybe Text)
+packageNameL f Package{..} = (\packageName -> Package { packageName, ..} ) <$> f packageName
+{-# INLINE packageNameL #-}
+
+-- | 'packageOwner' Lens
+packageOwnerL :: Lens_' Package (Maybe User)
+packageOwnerL f Package{..} = (\packageOwner -> Package { packageOwner, ..} ) <$> f packageOwner
+{-# INLINE packageOwnerL #-}
+
+-- | 'packageRepository' Lens
+packageRepositoryL :: Lens_' Package (Maybe Repository)
+packageRepositoryL f Package{..} = (\packageRepository -> Package { packageRepository, ..} ) <$> f packageRepository
+{-# INLINE packageRepositoryL #-}
+
+-- | 'packageType' Lens
+packageTypeL :: Lens_' Package (Maybe Text)
+packageTypeL f Package{..} = (\packageType -> Package { packageType, ..} ) <$> f packageType
+{-# INLINE packageTypeL #-}
+
+-- | 'packageVersion' Lens
+packageVersionL :: Lens_' Package (Maybe Text)
+packageVersionL f Package{..} = (\packageVersion -> Package { packageVersion, ..} ) <$> f packageVersion
+{-# INLINE packageVersionL #-}
+
+
+
+-- * PackageFile
+
+-- | 'packageFileSize' Lens
+packageFileSizeL :: Lens_' PackageFile (Maybe Integer)
+packageFileSizeL f PackageFile{..} = (\packageFileSize -> PackageFile { packageFileSize, ..} ) <$> f packageFileSize
+{-# INLINE packageFileSizeL #-}
+
+-- | 'packageFileId' Lens
+packageFileIdL :: Lens_' PackageFile (Maybe Integer)
+packageFileIdL f PackageFile{..} = (\packageFileId -> PackageFile { packageFileId, ..} ) <$> f packageFileId
+{-# INLINE packageFileIdL #-}
+
+-- | 'packageFileMd5' Lens
+packageFileMd5L :: Lens_' PackageFile (Maybe Text)
+packageFileMd5L f PackageFile{..} = (\packageFileMd5 -> PackageFile { packageFileMd5, ..} ) <$> f packageFileMd5
+{-# INLINE packageFileMd5L #-}
+
+-- | 'packageFileName' Lens
+packageFileNameL :: Lens_' PackageFile (Maybe Text)
+packageFileNameL f PackageFile{..} = (\packageFileName -> PackageFile { packageFileName, ..} ) <$> f packageFileName
+{-# INLINE packageFileNameL #-}
+
+-- | 'packageFileSha1' Lens
+packageFileSha1L :: Lens_' PackageFile (Maybe Text)
+packageFileSha1L f PackageFile{..} = (\packageFileSha1 -> PackageFile { packageFileSha1, ..} ) <$> f packageFileSha1
+{-# INLINE packageFileSha1L #-}
+
+-- | 'packageFileSha256' Lens
+packageFileSha256L :: Lens_' PackageFile (Maybe Text)
+packageFileSha256L f PackageFile{..} = (\packageFileSha256 -> PackageFile { packageFileSha256, ..} ) <$> f packageFileSha256
+{-# INLINE packageFileSha256L #-}
+
+-- | 'packageFileSha512' Lens
+packageFileSha512L :: Lens_' PackageFile (Maybe Text)
+packageFileSha512L f PackageFile{..} = (\packageFileSha512 -> PackageFile { packageFileSha512, ..} ) <$> f packageFileSha512
+{-# INLINE packageFileSha512L #-}
+
+
+
+-- * PayloadCommit
+
+-- | 'payloadCommitAdded' Lens
+payloadCommitAddedL :: Lens_' PayloadCommit (Maybe [Text])
+payloadCommitAddedL f PayloadCommit{..} = (\payloadCommitAdded -> PayloadCommit { payloadCommitAdded, ..} ) <$> f payloadCommitAdded
+{-# INLINE payloadCommitAddedL #-}
+
+-- | 'payloadCommitAuthor' Lens
+payloadCommitAuthorL :: Lens_' PayloadCommit (Maybe PayloadUser)
+payloadCommitAuthorL f PayloadCommit{..} = (\payloadCommitAuthor -> PayloadCommit { payloadCommitAuthor, ..} ) <$> f payloadCommitAuthor
+{-# INLINE payloadCommitAuthorL #-}
+
+-- | 'payloadCommitCommitter' Lens
+payloadCommitCommitterL :: Lens_' PayloadCommit (Maybe PayloadUser)
+payloadCommitCommitterL f PayloadCommit{..} = (\payloadCommitCommitter -> PayloadCommit { payloadCommitCommitter, ..} ) <$> f payloadCommitCommitter
+{-# INLINE payloadCommitCommitterL #-}
+
+-- | 'payloadCommitId' Lens
+payloadCommitIdL :: Lens_' PayloadCommit (Maybe Text)
+payloadCommitIdL f PayloadCommit{..} = (\payloadCommitId -> PayloadCommit { payloadCommitId, ..} ) <$> f payloadCommitId
+{-# INLINE payloadCommitIdL #-}
+
+-- | 'payloadCommitMessage' Lens
+payloadCommitMessageL :: Lens_' PayloadCommit (Maybe Text)
+payloadCommitMessageL f PayloadCommit{..} = (\payloadCommitMessage -> PayloadCommit { payloadCommitMessage, ..} ) <$> f payloadCommitMessage
+{-# INLINE payloadCommitMessageL #-}
+
+-- | 'payloadCommitModified' Lens
+payloadCommitModifiedL :: Lens_' PayloadCommit (Maybe [Text])
+payloadCommitModifiedL f PayloadCommit{..} = (\payloadCommitModified -> PayloadCommit { payloadCommitModified, ..} ) <$> f payloadCommitModified
+{-# INLINE payloadCommitModifiedL #-}
+
+-- | 'payloadCommitRemoved' Lens
+payloadCommitRemovedL :: Lens_' PayloadCommit (Maybe [Text])
+payloadCommitRemovedL f PayloadCommit{..} = (\payloadCommitRemoved -> PayloadCommit { payloadCommitRemoved, ..} ) <$> f payloadCommitRemoved
+{-# INLINE payloadCommitRemovedL #-}
+
+-- | 'payloadCommitTimestamp' Lens
+payloadCommitTimestampL :: Lens_' PayloadCommit (Maybe DateTime)
+payloadCommitTimestampL f PayloadCommit{..} = (\payloadCommitTimestamp -> PayloadCommit { payloadCommitTimestamp, ..} ) <$> f payloadCommitTimestamp
+{-# INLINE payloadCommitTimestampL #-}
+
+-- | 'payloadCommitUrl' Lens
+payloadCommitUrlL :: Lens_' PayloadCommit (Maybe Text)
+payloadCommitUrlL f PayloadCommit{..} = (\payloadCommitUrl -> PayloadCommit { payloadCommitUrl, ..} ) <$> f payloadCommitUrl
+{-# INLINE payloadCommitUrlL #-}
+
+-- | 'payloadCommitVerification' Lens
+payloadCommitVerificationL :: Lens_' PayloadCommit (Maybe PayloadCommitVerification)
+payloadCommitVerificationL f PayloadCommit{..} = (\payloadCommitVerification -> PayloadCommit { payloadCommitVerification, ..} ) <$> f payloadCommitVerification
+{-# INLINE payloadCommitVerificationL #-}
+
+
+
+-- * PayloadCommitVerification
+
+-- | 'payloadCommitVerificationPayload' Lens
+payloadCommitVerificationPayloadL :: Lens_' PayloadCommitVerification (Maybe Text)
+payloadCommitVerificationPayloadL f PayloadCommitVerification{..} = (\payloadCommitVerificationPayload -> PayloadCommitVerification { payloadCommitVerificationPayload, ..} ) <$> f payloadCommitVerificationPayload
+{-# INLINE payloadCommitVerificationPayloadL #-}
+
+-- | 'payloadCommitVerificationReason' Lens
+payloadCommitVerificationReasonL :: Lens_' PayloadCommitVerification (Maybe Text)
+payloadCommitVerificationReasonL f PayloadCommitVerification{..} = (\payloadCommitVerificationReason -> PayloadCommitVerification { payloadCommitVerificationReason, ..} ) <$> f payloadCommitVerificationReason
+{-# INLINE payloadCommitVerificationReasonL #-}
+
+-- | 'payloadCommitVerificationSignature' Lens
+payloadCommitVerificationSignatureL :: Lens_' PayloadCommitVerification (Maybe Text)
+payloadCommitVerificationSignatureL f PayloadCommitVerification{..} = (\payloadCommitVerificationSignature -> PayloadCommitVerification { payloadCommitVerificationSignature, ..} ) <$> f payloadCommitVerificationSignature
+{-# INLINE payloadCommitVerificationSignatureL #-}
+
+-- | 'payloadCommitVerificationSigner' Lens
+payloadCommitVerificationSignerL :: Lens_' PayloadCommitVerification (Maybe PayloadUser)
+payloadCommitVerificationSignerL f PayloadCommitVerification{..} = (\payloadCommitVerificationSigner -> PayloadCommitVerification { payloadCommitVerificationSigner, ..} ) <$> f payloadCommitVerificationSigner
+{-# INLINE payloadCommitVerificationSignerL #-}
+
+-- | 'payloadCommitVerificationVerified' Lens
+payloadCommitVerificationVerifiedL :: Lens_' PayloadCommitVerification (Maybe Bool)
+payloadCommitVerificationVerifiedL f PayloadCommitVerification{..} = (\payloadCommitVerificationVerified -> PayloadCommitVerification { payloadCommitVerificationVerified, ..} ) <$> f payloadCommitVerificationVerified
+{-# INLINE payloadCommitVerificationVerifiedL #-}
+
+
+
+-- * PayloadUser
+
+-- | 'payloadUserEmail' Lens
+payloadUserEmailL :: Lens_' PayloadUser (Maybe Text)
+payloadUserEmailL f PayloadUser{..} = (\payloadUserEmail -> PayloadUser { payloadUserEmail, ..} ) <$> f payloadUserEmail
+{-# INLINE payloadUserEmailL #-}
+
+-- | 'payloadUserName' Lens
+payloadUserNameL :: Lens_' PayloadUser (Maybe Text)
+payloadUserNameL f PayloadUser{..} = (\payloadUserName -> PayloadUser { payloadUserName, ..} ) <$> f payloadUserName
+{-# INLINE payloadUserNameL #-}
+
+-- | 'payloadUserUsername' Lens
+payloadUserUsernameL :: Lens_' PayloadUser (Maybe Text)
+payloadUserUsernameL f PayloadUser{..} = (\payloadUserUsername -> PayloadUser { payloadUserUsername, ..} ) <$> f payloadUserUsername
+{-# INLINE payloadUserUsernameL #-}
+
+
+
+-- * Permission
+
+-- | 'permissionAdmin' Lens
+permissionAdminL :: Lens_' Permission (Maybe Bool)
+permissionAdminL f Permission{..} = (\permissionAdmin -> Permission { permissionAdmin, ..} ) <$> f permissionAdmin
+{-# INLINE permissionAdminL #-}
+
+-- | 'permissionPull' Lens
+permissionPullL :: Lens_' Permission (Maybe Bool)
+permissionPullL f Permission{..} = (\permissionPull -> Permission { permissionPull, ..} ) <$> f permissionPull
+{-# INLINE permissionPullL #-}
+
+-- | 'permissionPush' Lens
+permissionPushL :: Lens_' Permission (Maybe Bool)
+permissionPushL f Permission{..} = (\permissionPush -> Permission { permissionPush, ..} ) <$> f permissionPush
+{-# INLINE permissionPushL #-}
+
+
+
+-- * PublicKey
+
+-- | 'publicKeyCreatedAt' Lens
+publicKeyCreatedAtL :: Lens_' PublicKey (Maybe DateTime)
+publicKeyCreatedAtL f PublicKey{..} = (\publicKeyCreatedAt -> PublicKey { publicKeyCreatedAt, ..} ) <$> f publicKeyCreatedAt
+{-# INLINE publicKeyCreatedAtL #-}
+
+-- | 'publicKeyFingerprint' Lens
+publicKeyFingerprintL :: Lens_' PublicKey (Maybe Text)
+publicKeyFingerprintL f PublicKey{..} = (\publicKeyFingerprint -> PublicKey { publicKeyFingerprint, ..} ) <$> f publicKeyFingerprint
+{-# INLINE publicKeyFingerprintL #-}
+
+-- | 'publicKeyId' Lens
+publicKeyIdL :: Lens_' PublicKey (Maybe Integer)
+publicKeyIdL f PublicKey{..} = (\publicKeyId -> PublicKey { publicKeyId, ..} ) <$> f publicKeyId
+{-# INLINE publicKeyIdL #-}
+
+-- | 'publicKeyKey' Lens
+publicKeyKeyL :: Lens_' PublicKey (Maybe Text)
+publicKeyKeyL f PublicKey{..} = (\publicKeyKey -> PublicKey { publicKeyKey, ..} ) <$> f publicKeyKey
+{-# INLINE publicKeyKeyL #-}
+
+-- | 'publicKeyKeyType' Lens
+publicKeyKeyTypeL :: Lens_' PublicKey (Maybe Text)
+publicKeyKeyTypeL f PublicKey{..} = (\publicKeyKeyType -> PublicKey { publicKeyKeyType, ..} ) <$> f publicKeyKeyType
+{-# INLINE publicKeyKeyTypeL #-}
+
+-- | 'publicKeyReadOnly' Lens
+publicKeyReadOnlyL :: Lens_' PublicKey (Maybe Bool)
+publicKeyReadOnlyL f PublicKey{..} = (\publicKeyReadOnly -> PublicKey { publicKeyReadOnly, ..} ) <$> f publicKeyReadOnly
+{-# INLINE publicKeyReadOnlyL #-}
+
+-- | 'publicKeyTitle' Lens
+publicKeyTitleL :: Lens_' PublicKey (Maybe Text)
+publicKeyTitleL f PublicKey{..} = (\publicKeyTitle -> PublicKey { publicKeyTitle, ..} ) <$> f publicKeyTitle
+{-# INLINE publicKeyTitleL #-}
+
+-- | 'publicKeyUrl' Lens
+publicKeyUrlL :: Lens_' PublicKey (Maybe Text)
+publicKeyUrlL f PublicKey{..} = (\publicKeyUrl -> PublicKey { publicKeyUrl, ..} ) <$> f publicKeyUrl
+{-# INLINE publicKeyUrlL #-}
+
+-- | 'publicKeyUser' Lens
+publicKeyUserL :: Lens_' PublicKey (Maybe User)
+publicKeyUserL f PublicKey{..} = (\publicKeyUser -> PublicKey { publicKeyUser, ..} ) <$> f publicKeyUser
+{-# INLINE publicKeyUserL #-}
+
+
+
+-- * PullRequest
+
+-- | 'pullRequestAllowMaintainerEdit' Lens
+pullRequestAllowMaintainerEditL :: Lens_' PullRequest (Maybe Bool)
+pullRequestAllowMaintainerEditL f PullRequest{..} = (\pullRequestAllowMaintainerEdit -> PullRequest { pullRequestAllowMaintainerEdit, ..} ) <$> f pullRequestAllowMaintainerEdit
+{-# INLINE pullRequestAllowMaintainerEditL #-}
+
+-- | 'pullRequestAssignee' Lens
+pullRequestAssigneeL :: Lens_' PullRequest (Maybe User)
+pullRequestAssigneeL f PullRequest{..} = (\pullRequestAssignee -> PullRequest { pullRequestAssignee, ..} ) <$> f pullRequestAssignee
+{-# INLINE pullRequestAssigneeL #-}
+
+-- | 'pullRequestAssignees' Lens
+pullRequestAssigneesL :: Lens_' PullRequest (Maybe [User])
+pullRequestAssigneesL f PullRequest{..} = (\pullRequestAssignees -> PullRequest { pullRequestAssignees, ..} ) <$> f pullRequestAssignees
+{-# INLINE pullRequestAssigneesL #-}
+
+-- | 'pullRequestBase' Lens
+pullRequestBaseL :: Lens_' PullRequest (Maybe PRBranchInfo)
+pullRequestBaseL f PullRequest{..} = (\pullRequestBase -> PullRequest { pullRequestBase, ..} ) <$> f pullRequestBase
+{-# INLINE pullRequestBaseL #-}
+
+-- | 'pullRequestBody' Lens
+pullRequestBodyL :: Lens_' PullRequest (Maybe Text)
+pullRequestBodyL f PullRequest{..} = (\pullRequestBody -> PullRequest { pullRequestBody, ..} ) <$> f pullRequestBody
+{-# INLINE pullRequestBodyL #-}
+
+-- | 'pullRequestClosedAt' Lens
+pullRequestClosedAtL :: Lens_' PullRequest (Maybe DateTime)
+pullRequestClosedAtL f PullRequest{..} = (\pullRequestClosedAt -> PullRequest { pullRequestClosedAt, ..} ) <$> f pullRequestClosedAt
+{-# INLINE pullRequestClosedAtL #-}
+
+-- | 'pullRequestComments' Lens
+pullRequestCommentsL :: Lens_' PullRequest (Maybe Integer)
+pullRequestCommentsL f PullRequest{..} = (\pullRequestComments -> PullRequest { pullRequestComments, ..} ) <$> f pullRequestComments
+{-# INLINE pullRequestCommentsL #-}
+
+-- | 'pullRequestCreatedAt' Lens
+pullRequestCreatedAtL :: Lens_' PullRequest (Maybe DateTime)
+pullRequestCreatedAtL f PullRequest{..} = (\pullRequestCreatedAt -> PullRequest { pullRequestCreatedAt, ..} ) <$> f pullRequestCreatedAt
+{-# INLINE pullRequestCreatedAtL #-}
+
+-- | 'pullRequestDiffUrl' Lens
+pullRequestDiffUrlL :: Lens_' PullRequest (Maybe Text)
+pullRequestDiffUrlL f PullRequest{..} = (\pullRequestDiffUrl -> PullRequest { pullRequestDiffUrl, ..} ) <$> f pullRequestDiffUrl
+{-# INLINE pullRequestDiffUrlL #-}
+
+-- | 'pullRequestDueDate' Lens
+pullRequestDueDateL :: Lens_' PullRequest (Maybe DateTime)
+pullRequestDueDateL f PullRequest{..} = (\pullRequestDueDate -> PullRequest { pullRequestDueDate, ..} ) <$> f pullRequestDueDate
+{-# INLINE pullRequestDueDateL #-}
+
+-- | 'pullRequestHead' Lens
+pullRequestHeadL :: Lens_' PullRequest (Maybe PRBranchInfo)
+pullRequestHeadL f PullRequest{..} = (\pullRequestHead -> PullRequest { pullRequestHead, ..} ) <$> f pullRequestHead
+{-# INLINE pullRequestHeadL #-}
+
+-- | 'pullRequestHtmlUrl' Lens
+pullRequestHtmlUrlL :: Lens_' PullRequest (Maybe Text)
+pullRequestHtmlUrlL f PullRequest{..} = (\pullRequestHtmlUrl -> PullRequest { pullRequestHtmlUrl, ..} ) <$> f pullRequestHtmlUrl
+{-# INLINE pullRequestHtmlUrlL #-}
+
+-- | 'pullRequestId' Lens
+pullRequestIdL :: Lens_' PullRequest (Maybe Integer)
+pullRequestIdL f PullRequest{..} = (\pullRequestId -> PullRequest { pullRequestId, ..} ) <$> f pullRequestId
+{-# INLINE pullRequestIdL #-}
+
+-- | 'pullRequestIsLocked' Lens
+pullRequestIsLockedL :: Lens_' PullRequest (Maybe Bool)
+pullRequestIsLockedL f PullRequest{..} = (\pullRequestIsLocked -> PullRequest { pullRequestIsLocked, ..} ) <$> f pullRequestIsLocked
+{-# INLINE pullRequestIsLockedL #-}
+
+-- | 'pullRequestLabels' Lens
+pullRequestLabelsL :: Lens_' PullRequest (Maybe [Label])
+pullRequestLabelsL f PullRequest{..} = (\pullRequestLabels -> PullRequest { pullRequestLabels, ..} ) <$> f pullRequestLabels
+{-# INLINE pullRequestLabelsL #-}
+
+-- | 'pullRequestMergeBase' Lens
+pullRequestMergeBaseL :: Lens_' PullRequest (Maybe Text)
+pullRequestMergeBaseL f PullRequest{..} = (\pullRequestMergeBase -> PullRequest { pullRequestMergeBase, ..} ) <$> f pullRequestMergeBase
+{-# INLINE pullRequestMergeBaseL #-}
+
+-- | 'pullRequestMergeCommitSha' Lens
+pullRequestMergeCommitShaL :: Lens_' PullRequest (Maybe Text)
+pullRequestMergeCommitShaL f PullRequest{..} = (\pullRequestMergeCommitSha -> PullRequest { pullRequestMergeCommitSha, ..} ) <$> f pullRequestMergeCommitSha
+{-# INLINE pullRequestMergeCommitShaL #-}
+
+-- | 'pullRequestMergeable' Lens
+pullRequestMergeableL :: Lens_' PullRequest (Maybe Bool)
+pullRequestMergeableL f PullRequest{..} = (\pullRequestMergeable -> PullRequest { pullRequestMergeable, ..} ) <$> f pullRequestMergeable
+{-# INLINE pullRequestMergeableL #-}
+
+-- | 'pullRequestMerged' Lens
+pullRequestMergedL :: Lens_' PullRequest (Maybe Bool)
+pullRequestMergedL f PullRequest{..} = (\pullRequestMerged -> PullRequest { pullRequestMerged, ..} ) <$> f pullRequestMerged
+{-# INLINE pullRequestMergedL #-}
+
+-- | 'pullRequestMergedAt' Lens
+pullRequestMergedAtL :: Lens_' PullRequest (Maybe DateTime)
+pullRequestMergedAtL f PullRequest{..} = (\pullRequestMergedAt -> PullRequest { pullRequestMergedAt, ..} ) <$> f pullRequestMergedAt
+{-# INLINE pullRequestMergedAtL #-}
+
+-- | 'pullRequestMergedBy' Lens
+pullRequestMergedByL :: Lens_' PullRequest (Maybe User)
+pullRequestMergedByL f PullRequest{..} = (\pullRequestMergedBy -> PullRequest { pullRequestMergedBy, ..} ) <$> f pullRequestMergedBy
+{-# INLINE pullRequestMergedByL #-}
+
+-- | 'pullRequestMilestone' Lens
+pullRequestMilestoneL :: Lens_' PullRequest (Maybe Milestone)
+pullRequestMilestoneL f PullRequest{..} = (\pullRequestMilestone -> PullRequest { pullRequestMilestone, ..} ) <$> f pullRequestMilestone
+{-# INLINE pullRequestMilestoneL #-}
+
+-- | 'pullRequestNumber' Lens
+pullRequestNumberL :: Lens_' PullRequest (Maybe Integer)
+pullRequestNumberL f PullRequest{..} = (\pullRequestNumber -> PullRequest { pullRequestNumber, ..} ) <$> f pullRequestNumber
+{-# INLINE pullRequestNumberL #-}
+
+-- | 'pullRequestPatchUrl' Lens
+pullRequestPatchUrlL :: Lens_' PullRequest (Maybe Text)
+pullRequestPatchUrlL f PullRequest{..} = (\pullRequestPatchUrl -> PullRequest { pullRequestPatchUrl, ..} ) <$> f pullRequestPatchUrl
+{-# INLINE pullRequestPatchUrlL #-}
+
+-- | 'pullRequestState' Lens
+pullRequestStateL :: Lens_' PullRequest (Maybe Text)
+pullRequestStateL f PullRequest{..} = (\pullRequestState -> PullRequest { pullRequestState, ..} ) <$> f pullRequestState
+{-# INLINE pullRequestStateL #-}
+
+-- | 'pullRequestTitle' Lens
+pullRequestTitleL :: Lens_' PullRequest (Maybe Text)
+pullRequestTitleL f PullRequest{..} = (\pullRequestTitle -> PullRequest { pullRequestTitle, ..} ) <$> f pullRequestTitle
+{-# INLINE pullRequestTitleL #-}
+
+-- | 'pullRequestUpdatedAt' Lens
+pullRequestUpdatedAtL :: Lens_' PullRequest (Maybe DateTime)
+pullRequestUpdatedAtL f PullRequest{..} = (\pullRequestUpdatedAt -> PullRequest { pullRequestUpdatedAt, ..} ) <$> f pullRequestUpdatedAt
+{-# INLINE pullRequestUpdatedAtL #-}
+
+-- | 'pullRequestUrl' Lens
+pullRequestUrlL :: Lens_' PullRequest (Maybe Text)
+pullRequestUrlL f PullRequest{..} = (\pullRequestUrl -> PullRequest { pullRequestUrl, ..} ) <$> f pullRequestUrl
+{-# INLINE pullRequestUrlL #-}
+
+-- | 'pullRequestUser' Lens
+pullRequestUserL :: Lens_' PullRequest (Maybe User)
+pullRequestUserL f PullRequest{..} = (\pullRequestUser -> PullRequest { pullRequestUser, ..} ) <$> f pullRequestUser
+{-# INLINE pullRequestUserL #-}
+
+
+
+-- * PullRequestMeta
+
+-- | 'pullRequestMetaMerged' Lens
+pullRequestMetaMergedL :: Lens_' PullRequestMeta (Maybe Bool)
+pullRequestMetaMergedL f PullRequestMeta{..} = (\pullRequestMetaMerged -> PullRequestMeta { pullRequestMetaMerged, ..} ) <$> f pullRequestMetaMerged
+{-# INLINE pullRequestMetaMergedL #-}
+
+-- | 'pullRequestMetaMergedAt' Lens
+pullRequestMetaMergedAtL :: Lens_' PullRequestMeta (Maybe DateTime)
+pullRequestMetaMergedAtL f PullRequestMeta{..} = (\pullRequestMetaMergedAt -> PullRequestMeta { pullRequestMetaMergedAt, ..} ) <$> f pullRequestMetaMergedAt
+{-# INLINE pullRequestMetaMergedAtL #-}
+
+
+
+-- * PullReview
+
+-- | 'pullReviewBody' Lens
+pullReviewBodyL :: Lens_' PullReview (Maybe Text)
+pullReviewBodyL f PullReview{..} = (\pullReviewBody -> PullReview { pullReviewBody, ..} ) <$> f pullReviewBody
+{-# INLINE pullReviewBodyL #-}
+
+-- | 'pullReviewCommentsCount' Lens
+pullReviewCommentsCountL :: Lens_' PullReview (Maybe Integer)
+pullReviewCommentsCountL f PullReview{..} = (\pullReviewCommentsCount -> PullReview { pullReviewCommentsCount, ..} ) <$> f pullReviewCommentsCount
+{-# INLINE pullReviewCommentsCountL #-}
+
+-- | 'pullReviewCommitId' Lens
+pullReviewCommitIdL :: Lens_' PullReview (Maybe Text)
+pullReviewCommitIdL f PullReview{..} = (\pullReviewCommitId -> PullReview { pullReviewCommitId, ..} ) <$> f pullReviewCommitId
+{-# INLINE pullReviewCommitIdL #-}
+
+-- | 'pullReviewDismissed' Lens
+pullReviewDismissedL :: Lens_' PullReview (Maybe Bool)
+pullReviewDismissedL f PullReview{..} = (\pullReviewDismissed -> PullReview { pullReviewDismissed, ..} ) <$> f pullReviewDismissed
+{-# INLINE pullReviewDismissedL #-}
+
+-- | 'pullReviewHtmlUrl' Lens
+pullReviewHtmlUrlL :: Lens_' PullReview (Maybe Text)
+pullReviewHtmlUrlL f PullReview{..} = (\pullReviewHtmlUrl -> PullReview { pullReviewHtmlUrl, ..} ) <$> f pullReviewHtmlUrl
+{-# INLINE pullReviewHtmlUrlL #-}
+
+-- | 'pullReviewId' Lens
+pullReviewIdL :: Lens_' PullReview (Maybe Integer)
+pullReviewIdL f PullReview{..} = (\pullReviewId -> PullReview { pullReviewId, ..} ) <$> f pullReviewId
+{-# INLINE pullReviewIdL #-}
+
+-- | 'pullReviewOfficial' Lens
+pullReviewOfficialL :: Lens_' PullReview (Maybe Bool)
+pullReviewOfficialL f PullReview{..} = (\pullReviewOfficial -> PullReview { pullReviewOfficial, ..} ) <$> f pullReviewOfficial
+{-# INLINE pullReviewOfficialL #-}
+
+-- | 'pullReviewPullRequestUrl' Lens
+pullReviewPullRequestUrlL :: Lens_' PullReview (Maybe Text)
+pullReviewPullRequestUrlL f PullReview{..} = (\pullReviewPullRequestUrl -> PullReview { pullReviewPullRequestUrl, ..} ) <$> f pullReviewPullRequestUrl
+{-# INLINE pullReviewPullRequestUrlL #-}
+
+-- | 'pullReviewStale' Lens
+pullReviewStaleL :: Lens_' PullReview (Maybe Bool)
+pullReviewStaleL f PullReview{..} = (\pullReviewStale -> PullReview { pullReviewStale, ..} ) <$> f pullReviewStale
+{-# INLINE pullReviewStaleL #-}
+
+-- | 'pullReviewState' Lens
+pullReviewStateL :: Lens_' PullReview (Maybe Text)
+pullReviewStateL f PullReview{..} = (\pullReviewState -> PullReview { pullReviewState, ..} ) <$> f pullReviewState
+{-# INLINE pullReviewStateL #-}
+
+-- | 'pullReviewSubmittedAt' Lens
+pullReviewSubmittedAtL :: Lens_' PullReview (Maybe DateTime)
+pullReviewSubmittedAtL f PullReview{..} = (\pullReviewSubmittedAt -> PullReview { pullReviewSubmittedAt, ..} ) <$> f pullReviewSubmittedAt
+{-# INLINE pullReviewSubmittedAtL #-}
+
+-- | 'pullReviewTeam' Lens
+pullReviewTeamL :: Lens_' PullReview (Maybe Team)
+pullReviewTeamL f PullReview{..} = (\pullReviewTeam -> PullReview { pullReviewTeam, ..} ) <$> f pullReviewTeam
+{-# INLINE pullReviewTeamL #-}
+
+-- | 'pullReviewUpdatedAt' Lens
+pullReviewUpdatedAtL :: Lens_' PullReview (Maybe DateTime)
+pullReviewUpdatedAtL f PullReview{..} = (\pullReviewUpdatedAt -> PullReview { pullReviewUpdatedAt, ..} ) <$> f pullReviewUpdatedAt
+{-# INLINE pullReviewUpdatedAtL #-}
+
+-- | 'pullReviewUser' Lens
+pullReviewUserL :: Lens_' PullReview (Maybe User)
+pullReviewUserL f PullReview{..} = (\pullReviewUser -> PullReview { pullReviewUser, ..} ) <$> f pullReviewUser
+{-# INLINE pullReviewUserL #-}
+
+
+
+-- * PullReviewComment
+
+-- | 'pullReviewCommentBody' Lens
+pullReviewCommentBodyL :: Lens_' PullReviewComment (Maybe Text)
+pullReviewCommentBodyL f PullReviewComment{..} = (\pullReviewCommentBody -> PullReviewComment { pullReviewCommentBody, ..} ) <$> f pullReviewCommentBody
+{-# INLINE pullReviewCommentBodyL #-}
+
+-- | 'pullReviewCommentCommitId' Lens
+pullReviewCommentCommitIdL :: Lens_' PullReviewComment (Maybe Text)
+pullReviewCommentCommitIdL f PullReviewComment{..} = (\pullReviewCommentCommitId -> PullReviewComment { pullReviewCommentCommitId, ..} ) <$> f pullReviewCommentCommitId
+{-# INLINE pullReviewCommentCommitIdL #-}
+
+-- | 'pullReviewCommentCreatedAt' Lens
+pullReviewCommentCreatedAtL :: Lens_' PullReviewComment (Maybe DateTime)
+pullReviewCommentCreatedAtL f PullReviewComment{..} = (\pullReviewCommentCreatedAt -> PullReviewComment { pullReviewCommentCreatedAt, ..} ) <$> f pullReviewCommentCreatedAt
+{-# INLINE pullReviewCommentCreatedAtL #-}
+
+-- | 'pullReviewCommentDiffHunk' Lens
+pullReviewCommentDiffHunkL :: Lens_' PullReviewComment (Maybe Text)
+pullReviewCommentDiffHunkL f PullReviewComment{..} = (\pullReviewCommentDiffHunk -> PullReviewComment { pullReviewCommentDiffHunk, ..} ) <$> f pullReviewCommentDiffHunk
+{-# INLINE pullReviewCommentDiffHunkL #-}
+
+-- | 'pullReviewCommentHtmlUrl' Lens
+pullReviewCommentHtmlUrlL :: Lens_' PullReviewComment (Maybe Text)
+pullReviewCommentHtmlUrlL f PullReviewComment{..} = (\pullReviewCommentHtmlUrl -> PullReviewComment { pullReviewCommentHtmlUrl, ..} ) <$> f pullReviewCommentHtmlUrl
+{-# INLINE pullReviewCommentHtmlUrlL #-}
+
+-- | 'pullReviewCommentId' Lens
+pullReviewCommentIdL :: Lens_' PullReviewComment (Maybe Integer)
+pullReviewCommentIdL f PullReviewComment{..} = (\pullReviewCommentId -> PullReviewComment { pullReviewCommentId, ..} ) <$> f pullReviewCommentId
+{-# INLINE pullReviewCommentIdL #-}
+
+-- | 'pullReviewCommentOriginalCommitId' Lens
+pullReviewCommentOriginalCommitIdL :: Lens_' PullReviewComment (Maybe Text)
+pullReviewCommentOriginalCommitIdL f PullReviewComment{..} = (\pullReviewCommentOriginalCommitId -> PullReviewComment { pullReviewCommentOriginalCommitId, ..} ) <$> f pullReviewCommentOriginalCommitId
+{-# INLINE pullReviewCommentOriginalCommitIdL #-}
+
+-- | 'pullReviewCommentOriginalPosition' Lens
+pullReviewCommentOriginalPositionL :: Lens_' PullReviewComment (Maybe Int)
+pullReviewCommentOriginalPositionL f PullReviewComment{..} = (\pullReviewCommentOriginalPosition -> PullReviewComment { pullReviewCommentOriginalPosition, ..} ) <$> f pullReviewCommentOriginalPosition
+{-# INLINE pullReviewCommentOriginalPositionL #-}
+
+-- | 'pullReviewCommentPath' Lens
+pullReviewCommentPathL :: Lens_' PullReviewComment (Maybe Text)
+pullReviewCommentPathL f PullReviewComment{..} = (\pullReviewCommentPath -> PullReviewComment { pullReviewCommentPath, ..} ) <$> f pullReviewCommentPath
+{-# INLINE pullReviewCommentPathL #-}
+
+-- | 'pullReviewCommentPosition' Lens
+pullReviewCommentPositionL :: Lens_' PullReviewComment (Maybe Int)
+pullReviewCommentPositionL f PullReviewComment{..} = (\pullReviewCommentPosition -> PullReviewComment { pullReviewCommentPosition, ..} ) <$> f pullReviewCommentPosition
+{-# INLINE pullReviewCommentPositionL #-}
+
+-- | 'pullReviewCommentPullRequestReviewId' Lens
+pullReviewCommentPullRequestReviewIdL :: Lens_' PullReviewComment (Maybe Integer)
+pullReviewCommentPullRequestReviewIdL f PullReviewComment{..} = (\pullReviewCommentPullRequestReviewId -> PullReviewComment { pullReviewCommentPullRequestReviewId, ..} ) <$> f pullReviewCommentPullRequestReviewId
+{-# INLINE pullReviewCommentPullRequestReviewIdL #-}
+
+-- | 'pullReviewCommentPullRequestUrl' Lens
+pullReviewCommentPullRequestUrlL :: Lens_' PullReviewComment (Maybe Text)
+pullReviewCommentPullRequestUrlL f PullReviewComment{..} = (\pullReviewCommentPullRequestUrl -> PullReviewComment { pullReviewCommentPullRequestUrl, ..} ) <$> f pullReviewCommentPullRequestUrl
+{-# INLINE pullReviewCommentPullRequestUrlL #-}
+
+-- | 'pullReviewCommentResolver' Lens
+pullReviewCommentResolverL :: Lens_' PullReviewComment (Maybe User)
+pullReviewCommentResolverL f PullReviewComment{..} = (\pullReviewCommentResolver -> PullReviewComment { pullReviewCommentResolver, ..} ) <$> f pullReviewCommentResolver
+{-# INLINE pullReviewCommentResolverL #-}
+
+-- | 'pullReviewCommentUpdatedAt' Lens
+pullReviewCommentUpdatedAtL :: Lens_' PullReviewComment (Maybe DateTime)
+pullReviewCommentUpdatedAtL f PullReviewComment{..} = (\pullReviewCommentUpdatedAt -> PullReviewComment { pullReviewCommentUpdatedAt, ..} ) <$> f pullReviewCommentUpdatedAt
+{-# INLINE pullReviewCommentUpdatedAtL #-}
+
+-- | 'pullReviewCommentUser' Lens
+pullReviewCommentUserL :: Lens_' PullReviewComment (Maybe User)
+pullReviewCommentUserL f PullReviewComment{..} = (\pullReviewCommentUser -> PullReviewComment { pullReviewCommentUser, ..} ) <$> f pullReviewCommentUser
+{-# INLINE pullReviewCommentUserL #-}
+
+
+
+-- * PullReviewRequestOptions
+
+-- | 'pullReviewRequestOptionsReviewers' Lens
+pullReviewRequestOptionsReviewersL :: Lens_' PullReviewRequestOptions (Maybe [Text])
+pullReviewRequestOptionsReviewersL f PullReviewRequestOptions{..} = (\pullReviewRequestOptionsReviewers -> PullReviewRequestOptions { pullReviewRequestOptionsReviewers, ..} ) <$> f pullReviewRequestOptionsReviewers
+{-# INLINE pullReviewRequestOptionsReviewersL #-}
+
+-- | 'pullReviewRequestOptionsTeamReviewers' Lens
+pullReviewRequestOptionsTeamReviewersL :: Lens_' PullReviewRequestOptions (Maybe [Text])
+pullReviewRequestOptionsTeamReviewersL f PullReviewRequestOptions{..} = (\pullReviewRequestOptionsTeamReviewers -> PullReviewRequestOptions { pullReviewRequestOptionsTeamReviewers, ..} ) <$> f pullReviewRequestOptionsTeamReviewers
+{-# INLINE pullReviewRequestOptionsTeamReviewersL #-}
+
+
+
+-- * PushMirror
+
+-- | 'pushMirrorCreated' Lens
+pushMirrorCreatedL :: Lens_' PushMirror (Maybe Text)
+pushMirrorCreatedL f PushMirror{..} = (\pushMirrorCreated -> PushMirror { pushMirrorCreated, ..} ) <$> f pushMirrorCreated
+{-# INLINE pushMirrorCreatedL #-}
+
+-- | 'pushMirrorInterval' Lens
+pushMirrorIntervalL :: Lens_' PushMirror (Maybe Text)
+pushMirrorIntervalL f PushMirror{..} = (\pushMirrorInterval -> PushMirror { pushMirrorInterval, ..} ) <$> f pushMirrorInterval
+{-# INLINE pushMirrorIntervalL #-}
+
+-- | 'pushMirrorLastError' Lens
+pushMirrorLastErrorL :: Lens_' PushMirror (Maybe Text)
+pushMirrorLastErrorL f PushMirror{..} = (\pushMirrorLastError -> PushMirror { pushMirrorLastError, ..} ) <$> f pushMirrorLastError
+{-# INLINE pushMirrorLastErrorL #-}
+
+-- | 'pushMirrorLastUpdate' Lens
+pushMirrorLastUpdateL :: Lens_' PushMirror (Maybe Text)
+pushMirrorLastUpdateL f PushMirror{..} = (\pushMirrorLastUpdate -> PushMirror { pushMirrorLastUpdate, ..} ) <$> f pushMirrorLastUpdate
+{-# INLINE pushMirrorLastUpdateL #-}
+
+-- | 'pushMirrorRemoteAddress' Lens
+pushMirrorRemoteAddressL :: Lens_' PushMirror (Maybe Text)
+pushMirrorRemoteAddressL f PushMirror{..} = (\pushMirrorRemoteAddress -> PushMirror { pushMirrorRemoteAddress, ..} ) <$> f pushMirrorRemoteAddress
+{-# INLINE pushMirrorRemoteAddressL #-}
+
+-- | 'pushMirrorRemoteName' Lens
+pushMirrorRemoteNameL :: Lens_' PushMirror (Maybe Text)
+pushMirrorRemoteNameL f PushMirror{..} = (\pushMirrorRemoteName -> PushMirror { pushMirrorRemoteName, ..} ) <$> f pushMirrorRemoteName
+{-# INLINE pushMirrorRemoteNameL #-}
+
+-- | 'pushMirrorRepoName' Lens
+pushMirrorRepoNameL :: Lens_' PushMirror (Maybe Text)
+pushMirrorRepoNameL f PushMirror{..} = (\pushMirrorRepoName -> PushMirror { pushMirrorRepoName, ..} ) <$> f pushMirrorRepoName
+{-# INLINE pushMirrorRepoNameL #-}
+
+-- | 'pushMirrorSyncOnCommit' Lens
+pushMirrorSyncOnCommitL :: Lens_' PushMirror (Maybe Bool)
+pushMirrorSyncOnCommitL f PushMirror{..} = (\pushMirrorSyncOnCommit -> PushMirror { pushMirrorSyncOnCommit, ..} ) <$> f pushMirrorSyncOnCommit
+{-# INLINE pushMirrorSyncOnCommitL #-}
+
+
+
+-- * Reaction
+
+-- | 'reactionContent' Lens
+reactionContentL :: Lens_' Reaction (Maybe Text)
+reactionContentL f Reaction{..} = (\reactionContent -> Reaction { reactionContent, ..} ) <$> f reactionContent
+{-# INLINE reactionContentL #-}
+
+-- | 'reactionCreatedAt' Lens
+reactionCreatedAtL :: Lens_' Reaction (Maybe DateTime)
+reactionCreatedAtL f Reaction{..} = (\reactionCreatedAt -> Reaction { reactionCreatedAt, ..} ) <$> f reactionCreatedAt
+{-# INLINE reactionCreatedAtL #-}
+
+-- | 'reactionUser' Lens
+reactionUserL :: Lens_' Reaction (Maybe User)
+reactionUserL f Reaction{..} = (\reactionUser -> Reaction { reactionUser, ..} ) <$> f reactionUser
+{-# INLINE reactionUserL #-}
+
+
+
+-- * Reference
+
+-- | 'referenceObject' Lens
+referenceObjectL :: Lens_' Reference (Maybe GitObject)
+referenceObjectL f Reference{..} = (\referenceObject -> Reference { referenceObject, ..} ) <$> f referenceObject
+{-# INLINE referenceObjectL #-}
+
+-- | 'referenceRef' Lens
+referenceRefL :: Lens_' Reference (Maybe Text)
+referenceRefL f Reference{..} = (\referenceRef -> Reference { referenceRef, ..} ) <$> f referenceRef
+{-# INLINE referenceRefL #-}
+
+-- | 'referenceUrl' Lens
+referenceUrlL :: Lens_' Reference (Maybe Text)
+referenceUrlL f Reference{..} = (\referenceUrl -> Reference { referenceUrl, ..} ) <$> f referenceUrl
+{-# INLINE referenceUrlL #-}
+
+
+
+-- * Release
+
+-- | 'releaseAssets' Lens
+releaseAssetsL :: Lens_' Release (Maybe [Attachment])
+releaseAssetsL f Release{..} = (\releaseAssets -> Release { releaseAssets, ..} ) <$> f releaseAssets
+{-# INLINE releaseAssetsL #-}
+
+-- | 'releaseAuthor' Lens
+releaseAuthorL :: Lens_' Release (Maybe User)
+releaseAuthorL f Release{..} = (\releaseAuthor -> Release { releaseAuthor, ..} ) <$> f releaseAuthor
+{-# INLINE releaseAuthorL #-}
+
+-- | 'releaseBody' Lens
+releaseBodyL :: Lens_' Release (Maybe Text)
+releaseBodyL f Release{..} = (\releaseBody -> Release { releaseBody, ..} ) <$> f releaseBody
+{-# INLINE releaseBodyL #-}
+
+-- | 'releaseCreatedAt' Lens
+releaseCreatedAtL :: Lens_' Release (Maybe DateTime)
+releaseCreatedAtL f Release{..} = (\releaseCreatedAt -> Release { releaseCreatedAt, ..} ) <$> f releaseCreatedAt
+{-# INLINE releaseCreatedAtL #-}
+
+-- | 'releaseDraft' Lens
+releaseDraftL :: Lens_' Release (Maybe Bool)
+releaseDraftL f Release{..} = (\releaseDraft -> Release { releaseDraft, ..} ) <$> f releaseDraft
+{-# INLINE releaseDraftL #-}
+
+-- | 'releaseHtmlUrl' Lens
+releaseHtmlUrlL :: Lens_' Release (Maybe Text)
+releaseHtmlUrlL f Release{..} = (\releaseHtmlUrl -> Release { releaseHtmlUrl, ..} ) <$> f releaseHtmlUrl
+{-# INLINE releaseHtmlUrlL #-}
+
+-- | 'releaseId' Lens
+releaseIdL :: Lens_' Release (Maybe Integer)
+releaseIdL f Release{..} = (\releaseId -> Release { releaseId, ..} ) <$> f releaseId
+{-# INLINE releaseIdL #-}
+
+-- | 'releaseName' Lens
+releaseNameL :: Lens_' Release (Maybe Text)
+releaseNameL f Release{..} = (\releaseName -> Release { releaseName, ..} ) <$> f releaseName
+{-# INLINE releaseNameL #-}
+
+-- | 'releasePrerelease' Lens
+releasePrereleaseL :: Lens_' Release (Maybe Bool)
+releasePrereleaseL f Release{..} = (\releasePrerelease -> Release { releasePrerelease, ..} ) <$> f releasePrerelease
+{-# INLINE releasePrereleaseL #-}
+
+-- | 'releasePublishedAt' Lens
+releasePublishedAtL :: Lens_' Release (Maybe DateTime)
+releasePublishedAtL f Release{..} = (\releasePublishedAt -> Release { releasePublishedAt, ..} ) <$> f releasePublishedAt
+{-# INLINE releasePublishedAtL #-}
+
+-- | 'releaseTagName' Lens
+releaseTagNameL :: Lens_' Release (Maybe Text)
+releaseTagNameL f Release{..} = (\releaseTagName -> Release { releaseTagName, ..} ) <$> f releaseTagName
+{-# INLINE releaseTagNameL #-}
+
+-- | 'releaseTarballUrl' Lens
+releaseTarballUrlL :: Lens_' Release (Maybe Text)
+releaseTarballUrlL f Release{..} = (\releaseTarballUrl -> Release { releaseTarballUrl, ..} ) <$> f releaseTarballUrl
+{-# INLINE releaseTarballUrlL #-}
+
+-- | 'releaseTargetCommitish' Lens
+releaseTargetCommitishL :: Lens_' Release (Maybe Text)
+releaseTargetCommitishL f Release{..} = (\releaseTargetCommitish -> Release { releaseTargetCommitish, ..} ) <$> f releaseTargetCommitish
+{-# INLINE releaseTargetCommitishL #-}
+
+-- | 'releaseUrl' Lens
+releaseUrlL :: Lens_' Release (Maybe Text)
+releaseUrlL f Release{..} = (\releaseUrl -> Release { releaseUrl, ..} ) <$> f releaseUrl
+{-# INLINE releaseUrlL #-}
+
+-- | 'releaseZipballUrl' Lens
+releaseZipballUrlL :: Lens_' Release (Maybe Text)
+releaseZipballUrlL f Release{..} = (\releaseZipballUrl -> Release { releaseZipballUrl, ..} ) <$> f releaseZipballUrl
+{-# INLINE releaseZipballUrlL #-}
+
+
+
+-- * RepoCollaboratorPermission
+
+-- | 'repoCollaboratorPermissionPermission' Lens
+repoCollaboratorPermissionPermissionL :: Lens_' RepoCollaboratorPermission (Maybe Text)
+repoCollaboratorPermissionPermissionL f RepoCollaboratorPermission{..} = (\repoCollaboratorPermissionPermission -> RepoCollaboratorPermission { repoCollaboratorPermissionPermission, ..} ) <$> f repoCollaboratorPermissionPermission
+{-# INLINE repoCollaboratorPermissionPermissionL #-}
+
+-- | 'repoCollaboratorPermissionRoleName' Lens
+repoCollaboratorPermissionRoleNameL :: Lens_' RepoCollaboratorPermission (Maybe Text)
+repoCollaboratorPermissionRoleNameL f RepoCollaboratorPermission{..} = (\repoCollaboratorPermissionRoleName -> RepoCollaboratorPermission { repoCollaboratorPermissionRoleName, ..} ) <$> f repoCollaboratorPermissionRoleName
+{-# INLINE repoCollaboratorPermissionRoleNameL #-}
+
+-- | 'repoCollaboratorPermissionUser' Lens
+repoCollaboratorPermissionUserL :: Lens_' RepoCollaboratorPermission (Maybe User)
+repoCollaboratorPermissionUserL f RepoCollaboratorPermission{..} = (\repoCollaboratorPermissionUser -> RepoCollaboratorPermission { repoCollaboratorPermissionUser, ..} ) <$> f repoCollaboratorPermissionUser
+{-# INLINE repoCollaboratorPermissionUserL #-}
+
+
+
+-- * RepoCommit
+
+-- | 'repoCommitAuthor' Lens
+repoCommitAuthorL :: Lens_' RepoCommit (Maybe CommitUser)
+repoCommitAuthorL f RepoCommit{..} = (\repoCommitAuthor -> RepoCommit { repoCommitAuthor, ..} ) <$> f repoCommitAuthor
+{-# INLINE repoCommitAuthorL #-}
+
+-- | 'repoCommitCommitter' Lens
+repoCommitCommitterL :: Lens_' RepoCommit (Maybe CommitUser)
+repoCommitCommitterL f RepoCommit{..} = (\repoCommitCommitter -> RepoCommit { repoCommitCommitter, ..} ) <$> f repoCommitCommitter
+{-# INLINE repoCommitCommitterL #-}
+
+-- | 'repoCommitMessage' Lens
+repoCommitMessageL :: Lens_' RepoCommit (Maybe Text)
+repoCommitMessageL f RepoCommit{..} = (\repoCommitMessage -> RepoCommit { repoCommitMessage, ..} ) <$> f repoCommitMessage
+{-# INLINE repoCommitMessageL #-}
+
+-- | 'repoCommitTree' Lens
+repoCommitTreeL :: Lens_' RepoCommit (Maybe CommitMeta)
+repoCommitTreeL f RepoCommit{..} = (\repoCommitTree -> RepoCommit { repoCommitTree, ..} ) <$> f repoCommitTree
+{-# INLINE repoCommitTreeL #-}
+
+-- | 'repoCommitUrl' Lens
+repoCommitUrlL :: Lens_' RepoCommit (Maybe Text)
+repoCommitUrlL f RepoCommit{..} = (\repoCommitUrl -> RepoCommit { repoCommitUrl, ..} ) <$> f repoCommitUrl
+{-# INLINE repoCommitUrlL #-}
+
+-- | 'repoCommitVerification' Lens
+repoCommitVerificationL :: Lens_' RepoCommit (Maybe PayloadCommitVerification)
+repoCommitVerificationL f RepoCommit{..} = (\repoCommitVerification -> RepoCommit { repoCommitVerification, ..} ) <$> f repoCommitVerification
+{-# INLINE repoCommitVerificationL #-}
+
+
+
+-- * RepoTopicOptions
+
+-- | 'repoTopicOptionsTopics' Lens
+repoTopicOptionsTopicsL :: Lens_' RepoTopicOptions (Maybe [Text])
+repoTopicOptionsTopicsL f RepoTopicOptions{..} = (\repoTopicOptionsTopics -> RepoTopicOptions { repoTopicOptionsTopics, ..} ) <$> f repoTopicOptionsTopics
+{-# INLINE repoTopicOptionsTopicsL #-}
+
+
+
+-- * RepoTransfer
+
+-- | 'repoTransferDoer' Lens
+repoTransferDoerL :: Lens_' RepoTransfer (Maybe User)
+repoTransferDoerL f RepoTransfer{..} = (\repoTransferDoer -> RepoTransfer { repoTransferDoer, ..} ) <$> f repoTransferDoer
+{-# INLINE repoTransferDoerL #-}
+
+-- | 'repoTransferRecipient' Lens
+repoTransferRecipientL :: Lens_' RepoTransfer (Maybe User)
+repoTransferRecipientL f RepoTransfer{..} = (\repoTransferRecipient -> RepoTransfer { repoTransferRecipient, ..} ) <$> f repoTransferRecipient
+{-# INLINE repoTransferRecipientL #-}
+
+-- | 'repoTransferTeams' Lens
+repoTransferTeamsL :: Lens_' RepoTransfer (Maybe [Team])
+repoTransferTeamsL f RepoTransfer{..} = (\repoTransferTeams -> RepoTransfer { repoTransferTeams, ..} ) <$> f repoTransferTeams
+{-# INLINE repoTransferTeamsL #-}
+
+
+
+-- * Repository
+
+-- | 'repositoryAllowMergeCommits' Lens
+repositoryAllowMergeCommitsL :: Lens_' Repository (Maybe Bool)
+repositoryAllowMergeCommitsL f Repository{..} = (\repositoryAllowMergeCommits -> Repository { repositoryAllowMergeCommits, ..} ) <$> f repositoryAllowMergeCommits
+{-# INLINE repositoryAllowMergeCommitsL #-}
+
+-- | 'repositoryAllowRebase' Lens
+repositoryAllowRebaseL :: Lens_' Repository (Maybe Bool)
+repositoryAllowRebaseL f Repository{..} = (\repositoryAllowRebase -> Repository { repositoryAllowRebase, ..} ) <$> f repositoryAllowRebase
+{-# INLINE repositoryAllowRebaseL #-}
+
+-- | 'repositoryAllowRebaseExplicit' Lens
+repositoryAllowRebaseExplicitL :: Lens_' Repository (Maybe Bool)
+repositoryAllowRebaseExplicitL f Repository{..} = (\repositoryAllowRebaseExplicit -> Repository { repositoryAllowRebaseExplicit, ..} ) <$> f repositoryAllowRebaseExplicit
+{-# INLINE repositoryAllowRebaseExplicitL #-}
+
+-- | 'repositoryAllowRebaseUpdate' Lens
+repositoryAllowRebaseUpdateL :: Lens_' Repository (Maybe Bool)
+repositoryAllowRebaseUpdateL f Repository{..} = (\repositoryAllowRebaseUpdate -> Repository { repositoryAllowRebaseUpdate, ..} ) <$> f repositoryAllowRebaseUpdate
+{-# INLINE repositoryAllowRebaseUpdateL #-}
+
+-- | 'repositoryAllowSquashMerge' Lens
+repositoryAllowSquashMergeL :: Lens_' Repository (Maybe Bool)
+repositoryAllowSquashMergeL f Repository{..} = (\repositoryAllowSquashMerge -> Repository { repositoryAllowSquashMerge, ..} ) <$> f repositoryAllowSquashMerge
+{-# INLINE repositoryAllowSquashMergeL #-}
+
+-- | 'repositoryArchived' Lens
+repositoryArchivedL :: Lens_' Repository (Maybe Bool)
+repositoryArchivedL f Repository{..} = (\repositoryArchived -> Repository { repositoryArchived, ..} ) <$> f repositoryArchived
+{-# INLINE repositoryArchivedL #-}
+
+-- | 'repositoryAvatarUrl' Lens
+repositoryAvatarUrlL :: Lens_' Repository (Maybe Text)
+repositoryAvatarUrlL f Repository{..} = (\repositoryAvatarUrl -> Repository { repositoryAvatarUrl, ..} ) <$> f repositoryAvatarUrl
+{-# INLINE repositoryAvatarUrlL #-}
+
+-- | 'repositoryCloneUrl' Lens
+repositoryCloneUrlL :: Lens_' Repository (Maybe Text)
+repositoryCloneUrlL f Repository{..} = (\repositoryCloneUrl -> Repository { repositoryCloneUrl, ..} ) <$> f repositoryCloneUrl
+{-# INLINE repositoryCloneUrlL #-}
+
+-- | 'repositoryCreatedAt' Lens
+repositoryCreatedAtL :: Lens_' Repository (Maybe DateTime)
+repositoryCreatedAtL f Repository{..} = (\repositoryCreatedAt -> Repository { repositoryCreatedAt, ..} ) <$> f repositoryCreatedAt
+{-# INLINE repositoryCreatedAtL #-}
+
+-- | 'repositoryDefaultAllowMaintainerEdit' Lens
+repositoryDefaultAllowMaintainerEditL :: Lens_' Repository (Maybe Bool)
+repositoryDefaultAllowMaintainerEditL f Repository{..} = (\repositoryDefaultAllowMaintainerEdit -> Repository { repositoryDefaultAllowMaintainerEdit, ..} ) <$> f repositoryDefaultAllowMaintainerEdit
+{-# INLINE repositoryDefaultAllowMaintainerEditL #-}
+
+-- | 'repositoryDefaultBranch' Lens
+repositoryDefaultBranchL :: Lens_' Repository (Maybe Text)
+repositoryDefaultBranchL f Repository{..} = (\repositoryDefaultBranch -> Repository { repositoryDefaultBranch, ..} ) <$> f repositoryDefaultBranch
+{-# INLINE repositoryDefaultBranchL #-}
+
+-- | 'repositoryDefaultDeleteBranchAfterMerge' Lens
+repositoryDefaultDeleteBranchAfterMergeL :: Lens_' Repository (Maybe Bool)
+repositoryDefaultDeleteBranchAfterMergeL f Repository{..} = (\repositoryDefaultDeleteBranchAfterMerge -> Repository { repositoryDefaultDeleteBranchAfterMerge, ..} ) <$> f repositoryDefaultDeleteBranchAfterMerge
+{-# INLINE repositoryDefaultDeleteBranchAfterMergeL #-}
+
+-- | 'repositoryDefaultMergeStyle' Lens
+repositoryDefaultMergeStyleL :: Lens_' Repository (Maybe Text)
+repositoryDefaultMergeStyleL f Repository{..} = (\repositoryDefaultMergeStyle -> Repository { repositoryDefaultMergeStyle, ..} ) <$> f repositoryDefaultMergeStyle
+{-# INLINE repositoryDefaultMergeStyleL #-}
+
+-- | 'repositoryDescription' Lens
+repositoryDescriptionL :: Lens_' Repository (Maybe Text)
+repositoryDescriptionL f Repository{..} = (\repositoryDescription -> Repository { repositoryDescription, ..} ) <$> f repositoryDescription
+{-# INLINE repositoryDescriptionL #-}
+
+-- | 'repositoryEmpty' Lens
+repositoryEmptyL :: Lens_' Repository (Maybe Bool)
+repositoryEmptyL f Repository{..} = (\repositoryEmpty -> Repository { repositoryEmpty, ..} ) <$> f repositoryEmpty
+{-# INLINE repositoryEmptyL #-}
+
+-- | 'repositoryExternalTracker' Lens
+repositoryExternalTrackerL :: Lens_' Repository (Maybe ExternalTracker)
+repositoryExternalTrackerL f Repository{..} = (\repositoryExternalTracker -> Repository { repositoryExternalTracker, ..} ) <$> f repositoryExternalTracker
+{-# INLINE repositoryExternalTrackerL #-}
+
+-- | 'repositoryExternalWiki' Lens
+repositoryExternalWikiL :: Lens_' Repository (Maybe ExternalWiki)
+repositoryExternalWikiL f Repository{..} = (\repositoryExternalWiki -> Repository { repositoryExternalWiki, ..} ) <$> f repositoryExternalWiki
+{-# INLINE repositoryExternalWikiL #-}
+
+-- | 'repositoryFork' Lens
+repositoryForkL :: Lens_' Repository (Maybe Bool)
+repositoryForkL f Repository{..} = (\repositoryFork -> Repository { repositoryFork, ..} ) <$> f repositoryFork
+{-# INLINE repositoryForkL #-}
+
+-- | 'repositoryForksCount' Lens
+repositoryForksCountL :: Lens_' Repository (Maybe Integer)
+repositoryForksCountL f Repository{..} = (\repositoryForksCount -> Repository { repositoryForksCount, ..} ) <$> f repositoryForksCount
+{-# INLINE repositoryForksCountL #-}
+
+-- | 'repositoryFullName' Lens
+repositoryFullNameL :: Lens_' Repository (Maybe Text)
+repositoryFullNameL f Repository{..} = (\repositoryFullName -> Repository { repositoryFullName, ..} ) <$> f repositoryFullName
+{-# INLINE repositoryFullNameL #-}
+
+-- | 'repositoryHasIssues' Lens
+repositoryHasIssuesL :: Lens_' Repository (Maybe Bool)
+repositoryHasIssuesL f Repository{..} = (\repositoryHasIssues -> Repository { repositoryHasIssues, ..} ) <$> f repositoryHasIssues
+{-# INLINE repositoryHasIssuesL #-}
+
+-- | 'repositoryHasProjects' Lens
+repositoryHasProjectsL :: Lens_' Repository (Maybe Bool)
+repositoryHasProjectsL f Repository{..} = (\repositoryHasProjects -> Repository { repositoryHasProjects, ..} ) <$> f repositoryHasProjects
+{-# INLINE repositoryHasProjectsL #-}
+
+-- | 'repositoryHasPullRequests' Lens
+repositoryHasPullRequestsL :: Lens_' Repository (Maybe Bool)
+repositoryHasPullRequestsL f Repository{..} = (\repositoryHasPullRequests -> Repository { repositoryHasPullRequests, ..} ) <$> f repositoryHasPullRequests
+{-# INLINE repositoryHasPullRequestsL #-}
+
+-- | 'repositoryHasWiki' Lens
+repositoryHasWikiL :: Lens_' Repository (Maybe Bool)
+repositoryHasWikiL f Repository{..} = (\repositoryHasWiki -> Repository { repositoryHasWiki, ..} ) <$> f repositoryHasWiki
+{-# INLINE repositoryHasWikiL #-}
+
+-- | 'repositoryHtmlUrl' Lens
+repositoryHtmlUrlL :: Lens_' Repository (Maybe Text)
+repositoryHtmlUrlL f Repository{..} = (\repositoryHtmlUrl -> Repository { repositoryHtmlUrl, ..} ) <$> f repositoryHtmlUrl
+{-# INLINE repositoryHtmlUrlL #-}
+
+-- | 'repositoryId' Lens
+repositoryIdL :: Lens_' Repository (Maybe Integer)
+repositoryIdL f Repository{..} = (\repositoryId -> Repository { repositoryId, ..} ) <$> f repositoryId
+{-# INLINE repositoryIdL #-}
+
+-- | 'repositoryIgnoreWhitespaceConflicts' Lens
+repositoryIgnoreWhitespaceConflictsL :: Lens_' Repository (Maybe Bool)
+repositoryIgnoreWhitespaceConflictsL f Repository{..} = (\repositoryIgnoreWhitespaceConflicts -> Repository { repositoryIgnoreWhitespaceConflicts, ..} ) <$> f repositoryIgnoreWhitespaceConflicts
+{-# INLINE repositoryIgnoreWhitespaceConflictsL #-}
+
+-- | 'repositoryInternal' Lens
+repositoryInternalL :: Lens_' Repository (Maybe Bool)
+repositoryInternalL f Repository{..} = (\repositoryInternal -> Repository { repositoryInternal, ..} ) <$> f repositoryInternal
+{-# INLINE repositoryInternalL #-}
+
+-- | 'repositoryInternalTracker' Lens
+repositoryInternalTrackerL :: Lens_' Repository (Maybe InternalTracker)
+repositoryInternalTrackerL f Repository{..} = (\repositoryInternalTracker -> Repository { repositoryInternalTracker, ..} ) <$> f repositoryInternalTracker
+{-# INLINE repositoryInternalTrackerL #-}
+
+-- | 'repositoryLanguage' Lens
+repositoryLanguageL :: Lens_' Repository (Maybe Text)
+repositoryLanguageL f Repository{..} = (\repositoryLanguage -> Repository { repositoryLanguage, ..} ) <$> f repositoryLanguage
+{-# INLINE repositoryLanguageL #-}
+
+-- | 'repositoryLanguagesUrl' Lens
+repositoryLanguagesUrlL :: Lens_' Repository (Maybe Text)
+repositoryLanguagesUrlL f Repository{..} = (\repositoryLanguagesUrl -> Repository { repositoryLanguagesUrl, ..} ) <$> f repositoryLanguagesUrl
+{-# INLINE repositoryLanguagesUrlL #-}
+
+-- | 'repositoryLink' Lens
+repositoryLinkL :: Lens_' Repository (Maybe Text)
+repositoryLinkL f Repository{..} = (\repositoryLink -> Repository { repositoryLink, ..} ) <$> f repositoryLink
+{-# INLINE repositoryLinkL #-}
+
+-- | 'repositoryMirror' Lens
+repositoryMirrorL :: Lens_' Repository (Maybe Bool)
+repositoryMirrorL f Repository{..} = (\repositoryMirror -> Repository { repositoryMirror, ..} ) <$> f repositoryMirror
+{-# INLINE repositoryMirrorL #-}
+
+-- | 'repositoryMirrorInterval' Lens
+repositoryMirrorIntervalL :: Lens_' Repository (Maybe Text)
+repositoryMirrorIntervalL f Repository{..} = (\repositoryMirrorInterval -> Repository { repositoryMirrorInterval, ..} ) <$> f repositoryMirrorInterval
+{-# INLINE repositoryMirrorIntervalL #-}
+
+-- | 'repositoryMirrorUpdated' Lens
+repositoryMirrorUpdatedL :: Lens_' Repository (Maybe DateTime)
+repositoryMirrorUpdatedL f Repository{..} = (\repositoryMirrorUpdated -> Repository { repositoryMirrorUpdated, ..} ) <$> f repositoryMirrorUpdated
+{-# INLINE repositoryMirrorUpdatedL #-}
+
+-- | 'repositoryName' Lens
+repositoryNameL :: Lens_' Repository (Maybe Text)
+repositoryNameL f Repository{..} = (\repositoryName -> Repository { repositoryName, ..} ) <$> f repositoryName
+{-# INLINE repositoryNameL #-}
+
+-- | 'repositoryOpenIssuesCount' Lens
+repositoryOpenIssuesCountL :: Lens_' Repository (Maybe Integer)
+repositoryOpenIssuesCountL f Repository{..} = (\repositoryOpenIssuesCount -> Repository { repositoryOpenIssuesCount, ..} ) <$> f repositoryOpenIssuesCount
+{-# INLINE repositoryOpenIssuesCountL #-}
+
+-- | 'repositoryOpenPrCounter' Lens
+repositoryOpenPrCounterL :: Lens_' Repository (Maybe Integer)
+repositoryOpenPrCounterL f Repository{..} = (\repositoryOpenPrCounter -> Repository { repositoryOpenPrCounter, ..} ) <$> f repositoryOpenPrCounter
+{-# INLINE repositoryOpenPrCounterL #-}
+
+-- | 'repositoryOriginalUrl' Lens
+repositoryOriginalUrlL :: Lens_' Repository (Maybe Text)
+repositoryOriginalUrlL f Repository{..} = (\repositoryOriginalUrl -> Repository { repositoryOriginalUrl, ..} ) <$> f repositoryOriginalUrl
+{-# INLINE repositoryOriginalUrlL #-}
+
+-- | 'repositoryOwner' Lens
+repositoryOwnerL :: Lens_' Repository (Maybe User)
+repositoryOwnerL f Repository{..} = (\repositoryOwner -> Repository { repositoryOwner, ..} ) <$> f repositoryOwner
+{-# INLINE repositoryOwnerL #-}
+
+-- | 'repositoryParent' Lens
+repositoryParentL :: Lens_' Repository (Maybe Repository)
+repositoryParentL f Repository{..} = (\repositoryParent -> Repository { repositoryParent, ..} ) <$> f repositoryParent
+{-# INLINE repositoryParentL #-}
+
+-- | 'repositoryPermissions' Lens
+repositoryPermissionsL :: Lens_' Repository (Maybe Permission)
+repositoryPermissionsL f Repository{..} = (\repositoryPermissions -> Repository { repositoryPermissions, ..} ) <$> f repositoryPermissions
+{-# INLINE repositoryPermissionsL #-}
+
+-- | 'repositoryPrivate' Lens
+repositoryPrivateL :: Lens_' Repository (Maybe Bool)
+repositoryPrivateL f Repository{..} = (\repositoryPrivate -> Repository { repositoryPrivate, ..} ) <$> f repositoryPrivate
+{-# INLINE repositoryPrivateL #-}
+
+-- | 'repositoryReleaseCounter' Lens
+repositoryReleaseCounterL :: Lens_' Repository (Maybe Integer)
+repositoryReleaseCounterL f Repository{..} = (\repositoryReleaseCounter -> Repository { repositoryReleaseCounter, ..} ) <$> f repositoryReleaseCounter
+{-# INLINE repositoryReleaseCounterL #-}
+
+-- | 'repositoryRepoTransfer' Lens
+repositoryRepoTransferL :: Lens_' Repository (Maybe RepoTransfer)
+repositoryRepoTransferL f Repository{..} = (\repositoryRepoTransfer -> Repository { repositoryRepoTransfer, ..} ) <$> f repositoryRepoTransfer
+{-# INLINE repositoryRepoTransferL #-}
+
+-- | 'repositorySize' Lens
+repositorySizeL :: Lens_' Repository (Maybe Integer)
+repositorySizeL f Repository{..} = (\repositorySize -> Repository { repositorySize, ..} ) <$> f repositorySize
+{-# INLINE repositorySizeL #-}
+
+-- | 'repositorySshUrl' Lens
+repositorySshUrlL :: Lens_' Repository (Maybe Text)
+repositorySshUrlL f Repository{..} = (\repositorySshUrl -> Repository { repositorySshUrl, ..} ) <$> f repositorySshUrl
+{-# INLINE repositorySshUrlL #-}
+
+-- | 'repositoryStarsCount' Lens
+repositoryStarsCountL :: Lens_' Repository (Maybe Integer)
+repositoryStarsCountL f Repository{..} = (\repositoryStarsCount -> Repository { repositoryStarsCount, ..} ) <$> f repositoryStarsCount
+{-# INLINE repositoryStarsCountL #-}
+
+-- | 'repositoryTemplate' Lens
+repositoryTemplateL :: Lens_' Repository (Maybe Bool)
+repositoryTemplateL f Repository{..} = (\repositoryTemplate -> Repository { repositoryTemplate, ..} ) <$> f repositoryTemplate
+{-# INLINE repositoryTemplateL #-}
+
+-- | 'repositoryUpdatedAt' Lens
+repositoryUpdatedAtL :: Lens_' Repository (Maybe DateTime)
+repositoryUpdatedAtL f Repository{..} = (\repositoryUpdatedAt -> Repository { repositoryUpdatedAt, ..} ) <$> f repositoryUpdatedAt
+{-# INLINE repositoryUpdatedAtL #-}
+
+-- | 'repositoryWatchersCount' Lens
+repositoryWatchersCountL :: Lens_' Repository (Maybe Integer)
+repositoryWatchersCountL f Repository{..} = (\repositoryWatchersCount -> Repository { repositoryWatchersCount, ..} ) <$> f repositoryWatchersCount
+{-# INLINE repositoryWatchersCountL #-}
+
+-- | 'repositoryWebsite' Lens
+repositoryWebsiteL :: Lens_' Repository (Maybe Text)
+repositoryWebsiteL f Repository{..} = (\repositoryWebsite -> Repository { repositoryWebsite, ..} ) <$> f repositoryWebsite
+{-# INLINE repositoryWebsiteL #-}
+
+
+
+-- * RepositoryMeta
+
+-- | 'repositoryMetaFullName' Lens
+repositoryMetaFullNameL :: Lens_' RepositoryMeta (Maybe Text)
+repositoryMetaFullNameL f RepositoryMeta{..} = (\repositoryMetaFullName -> RepositoryMeta { repositoryMetaFullName, ..} ) <$> f repositoryMetaFullName
+{-# INLINE repositoryMetaFullNameL #-}
+
+-- | 'repositoryMetaId' Lens
+repositoryMetaIdL :: Lens_' RepositoryMeta (Maybe Integer)
+repositoryMetaIdL f RepositoryMeta{..} = (\repositoryMetaId -> RepositoryMeta { repositoryMetaId, ..} ) <$> f repositoryMetaId
+{-# INLINE repositoryMetaIdL #-}
+
+-- | 'repositoryMetaName' Lens
+repositoryMetaNameL :: Lens_' RepositoryMeta (Maybe Text)
+repositoryMetaNameL f RepositoryMeta{..} = (\repositoryMetaName -> RepositoryMeta { repositoryMetaName, ..} ) <$> f repositoryMetaName
+{-# INLINE repositoryMetaNameL #-}
+
+-- | 'repositoryMetaOwner' Lens
+repositoryMetaOwnerL :: Lens_' RepositoryMeta (Maybe Text)
+repositoryMetaOwnerL f RepositoryMeta{..} = (\repositoryMetaOwner -> RepositoryMeta { repositoryMetaOwner, ..} ) <$> f repositoryMetaOwner
+{-# INLINE repositoryMetaOwnerL #-}
+
+
+
+-- * SearchResults
+
+-- | 'searchResultsData' Lens
+searchResultsDataL :: Lens_' SearchResults (Maybe [Repository])
+searchResultsDataL f SearchResults{..} = (\searchResultsData -> SearchResults { searchResultsData, ..} ) <$> f searchResultsData
+{-# INLINE searchResultsDataL #-}
+
+-- | 'searchResultsOk' Lens
+searchResultsOkL :: Lens_' SearchResults (Maybe Bool)
+searchResultsOkL f SearchResults{..} = (\searchResultsOk -> SearchResults { searchResultsOk, ..} ) <$> f searchResultsOk
+{-# INLINE searchResultsOkL #-}
+
+
+
+-- * ServerVersion
+
+-- | 'serverVersionVersion' Lens
+serverVersionVersionL :: Lens_' ServerVersion (Maybe Text)
+serverVersionVersionL f ServerVersion{..} = (\serverVersionVersion -> ServerVersion { serverVersionVersion, ..} ) <$> f serverVersionVersion
+{-# INLINE serverVersionVersionL #-}
+
+
+
+-- * StopWatch
+
+-- | 'stopWatchCreated' Lens
+stopWatchCreatedL :: Lens_' StopWatch (Maybe DateTime)
+stopWatchCreatedL f StopWatch{..} = (\stopWatchCreated -> StopWatch { stopWatchCreated, ..} ) <$> f stopWatchCreated
+{-# INLINE stopWatchCreatedL #-}
+
+-- | 'stopWatchDuration' Lens
+stopWatchDurationL :: Lens_' StopWatch (Maybe Text)
+stopWatchDurationL f StopWatch{..} = (\stopWatchDuration -> StopWatch { stopWatchDuration, ..} ) <$> f stopWatchDuration
+{-# INLINE stopWatchDurationL #-}
+
+-- | 'stopWatchIssueIndex' Lens
+stopWatchIssueIndexL :: Lens_' StopWatch (Maybe Integer)
+stopWatchIssueIndexL f StopWatch{..} = (\stopWatchIssueIndex -> StopWatch { stopWatchIssueIndex, ..} ) <$> f stopWatchIssueIndex
+{-# INLINE stopWatchIssueIndexL #-}
+
+-- | 'stopWatchIssueTitle' Lens
+stopWatchIssueTitleL :: Lens_' StopWatch (Maybe Text)
+stopWatchIssueTitleL f StopWatch{..} = (\stopWatchIssueTitle -> StopWatch { stopWatchIssueTitle, ..} ) <$> f stopWatchIssueTitle
+{-# INLINE stopWatchIssueTitleL #-}
+
+-- | 'stopWatchRepoName' Lens
+stopWatchRepoNameL :: Lens_' StopWatch (Maybe Text)
+stopWatchRepoNameL f StopWatch{..} = (\stopWatchRepoName -> StopWatch { stopWatchRepoName, ..} ) <$> f stopWatchRepoName
+{-# INLINE stopWatchRepoNameL #-}
+
+-- | 'stopWatchRepoOwnerName' Lens
+stopWatchRepoOwnerNameL :: Lens_' StopWatch (Maybe Text)
+stopWatchRepoOwnerNameL f StopWatch{..} = (\stopWatchRepoOwnerName -> StopWatch { stopWatchRepoOwnerName, ..} ) <$> f stopWatchRepoOwnerName
+{-# INLINE stopWatchRepoOwnerNameL #-}
+
+-- | 'stopWatchSeconds' Lens
+stopWatchSecondsL :: Lens_' StopWatch (Maybe Integer)
+stopWatchSecondsL f StopWatch{..} = (\stopWatchSeconds -> StopWatch { stopWatchSeconds, ..} ) <$> f stopWatchSeconds
+{-# INLINE stopWatchSecondsL #-}
+
+
+
+-- * SubmitPullReviewOptions
+
+-- | 'submitPullReviewOptionsBody' Lens
+submitPullReviewOptionsBodyL :: Lens_' SubmitPullReviewOptions (Maybe Text)
+submitPullReviewOptionsBodyL f SubmitPullReviewOptions{..} = (\submitPullReviewOptionsBody -> SubmitPullReviewOptions { submitPullReviewOptionsBody, ..} ) <$> f submitPullReviewOptionsBody
+{-# INLINE submitPullReviewOptionsBodyL #-}
+
+-- | 'submitPullReviewOptionsEvent' Lens
+submitPullReviewOptionsEventL :: Lens_' SubmitPullReviewOptions (Maybe Text)
+submitPullReviewOptionsEventL f SubmitPullReviewOptions{..} = (\submitPullReviewOptionsEvent -> SubmitPullReviewOptions { submitPullReviewOptionsEvent, ..} ) <$> f submitPullReviewOptionsEvent
+{-# INLINE submitPullReviewOptionsEventL #-}
+
+
+
+-- * Tag
+
+-- | 'tagCommit' Lens
+tagCommitL :: Lens_' Tag (Maybe CommitMeta)
+tagCommitL f Tag{..} = (\tagCommit -> Tag { tagCommit, ..} ) <$> f tagCommit
+{-# INLINE tagCommitL #-}
+
+-- | 'tagId' Lens
+tagIdL :: Lens_' Tag (Maybe Text)
+tagIdL f Tag{..} = (\tagId -> Tag { tagId, ..} ) <$> f tagId
+{-# INLINE tagIdL #-}
+
+-- | 'tagMessage' Lens
+tagMessageL :: Lens_' Tag (Maybe Text)
+tagMessageL f Tag{..} = (\tagMessage -> Tag { tagMessage, ..} ) <$> f tagMessage
+{-# INLINE tagMessageL #-}
+
+-- | 'tagName' Lens
+tagNameL :: Lens_' Tag (Maybe Text)
+tagNameL f Tag{..} = (\tagName -> Tag { tagName, ..} ) <$> f tagName
+{-# INLINE tagNameL #-}
+
+-- | 'tagTarballUrl' Lens
+tagTarballUrlL :: Lens_' Tag (Maybe Text)
+tagTarballUrlL f Tag{..} = (\tagTarballUrl -> Tag { tagTarballUrl, ..} ) <$> f tagTarballUrl
+{-# INLINE tagTarballUrlL #-}
+
+-- | 'tagZipballUrl' Lens
+tagZipballUrlL :: Lens_' Tag (Maybe Text)
+tagZipballUrlL f Tag{..} = (\tagZipballUrl -> Tag { tagZipballUrl, ..} ) <$> f tagZipballUrl
+{-# INLINE tagZipballUrlL #-}
+
+
+
+-- * Team
+
+-- | 'teamCanCreateOrgRepo' Lens
+teamCanCreateOrgRepoL :: Lens_' Team (Maybe Bool)
+teamCanCreateOrgRepoL f Team{..} = (\teamCanCreateOrgRepo -> Team { teamCanCreateOrgRepo, ..} ) <$> f teamCanCreateOrgRepo
+{-# INLINE teamCanCreateOrgRepoL #-}
+
+-- | 'teamDescription' Lens
+teamDescriptionL :: Lens_' Team (Maybe Text)
+teamDescriptionL f Team{..} = (\teamDescription -> Team { teamDescription, ..} ) <$> f teamDescription
+{-# INLINE teamDescriptionL #-}
+
+-- | 'teamId' Lens
+teamIdL :: Lens_' Team (Maybe Integer)
+teamIdL f Team{..} = (\teamId -> Team { teamId, ..} ) <$> f teamId
+{-# INLINE teamIdL #-}
+
+-- | 'teamIncludesAllRepositories' Lens
+teamIncludesAllRepositoriesL :: Lens_' Team (Maybe Bool)
+teamIncludesAllRepositoriesL f Team{..} = (\teamIncludesAllRepositories -> Team { teamIncludesAllRepositories, ..} ) <$> f teamIncludesAllRepositories
+{-# INLINE teamIncludesAllRepositoriesL #-}
+
+-- | 'teamName' Lens
+teamNameL :: Lens_' Team (Maybe Text)
+teamNameL f Team{..} = (\teamName -> Team { teamName, ..} ) <$> f teamName
+{-# INLINE teamNameL #-}
+
+-- | 'teamOrganization' Lens
+teamOrganizationL :: Lens_' Team (Maybe Organization)
+teamOrganizationL f Team{..} = (\teamOrganization -> Team { teamOrganization, ..} ) <$> f teamOrganization
+{-# INLINE teamOrganizationL #-}
+
+-- | 'teamPermission' Lens
+teamPermissionL :: Lens_' Team (Maybe E'Permission2)
+teamPermissionL f Team{..} = (\teamPermission -> Team { teamPermission, ..} ) <$> f teamPermission
+{-# INLINE teamPermissionL #-}
+
+-- | 'teamUnits' Lens
+teamUnitsL :: Lens_' Team (Maybe [Text])
+teamUnitsL f Team{..} = (\teamUnits -> Team { teamUnits, ..} ) <$> f teamUnits
+{-# INLINE teamUnitsL #-}
+
+-- | 'teamUnitsMap' Lens
+teamUnitsMapL :: Lens_' Team (Maybe (Map.Map String Text))
+teamUnitsMapL f Team{..} = (\teamUnitsMap -> Team { teamUnitsMap, ..} ) <$> f teamUnitsMap
+{-# INLINE teamUnitsMapL #-}
+
+
+
+-- * TeamSearch200Response
+
+-- | 'teamSearch200ResponseData' Lens
+teamSearch200ResponseDataL :: Lens_' TeamSearch200Response (Maybe [Team])
+teamSearch200ResponseDataL f TeamSearch200Response{..} = (\teamSearch200ResponseData -> TeamSearch200Response { teamSearch200ResponseData, ..} ) <$> f teamSearch200ResponseData
+{-# INLINE teamSearch200ResponseDataL #-}
+
+-- | 'teamSearch200ResponseOk' Lens
+teamSearch200ResponseOkL :: Lens_' TeamSearch200Response (Maybe Bool)
+teamSearch200ResponseOkL f TeamSearch200Response{..} = (\teamSearch200ResponseOk -> TeamSearch200Response { teamSearch200ResponseOk, ..} ) <$> f teamSearch200ResponseOk
+{-# INLINE teamSearch200ResponseOkL #-}
+
+
+
+-- * TimelineComment
+
+-- | 'timelineCommentAssignee' Lens
+timelineCommentAssigneeL :: Lens_' TimelineComment (Maybe User)
+timelineCommentAssigneeL f TimelineComment{..} = (\timelineCommentAssignee -> TimelineComment { timelineCommentAssignee, ..} ) <$> f timelineCommentAssignee
+{-# INLINE timelineCommentAssigneeL #-}
+
+-- | 'timelineCommentAssigneeTeam' Lens
+timelineCommentAssigneeTeamL :: Lens_' TimelineComment (Maybe Team)
+timelineCommentAssigneeTeamL f TimelineComment{..} = (\timelineCommentAssigneeTeam -> TimelineComment { timelineCommentAssigneeTeam, ..} ) <$> f timelineCommentAssigneeTeam
+{-# INLINE timelineCommentAssigneeTeamL #-}
+
+-- | 'timelineCommentBody' Lens
+timelineCommentBodyL :: Lens_' TimelineComment (Maybe Text)
+timelineCommentBodyL f TimelineComment{..} = (\timelineCommentBody -> TimelineComment { timelineCommentBody, ..} ) <$> f timelineCommentBody
+{-# INLINE timelineCommentBodyL #-}
+
+-- | 'timelineCommentCreatedAt' Lens
+timelineCommentCreatedAtL :: Lens_' TimelineComment (Maybe DateTime)
+timelineCommentCreatedAtL f TimelineComment{..} = (\timelineCommentCreatedAt -> TimelineComment { timelineCommentCreatedAt, ..} ) <$> f timelineCommentCreatedAt
+{-# INLINE timelineCommentCreatedAtL #-}
+
+-- | 'timelineCommentDependentIssue' Lens
+timelineCommentDependentIssueL :: Lens_' TimelineComment (Maybe Issue)
+timelineCommentDependentIssueL f TimelineComment{..} = (\timelineCommentDependentIssue -> TimelineComment { timelineCommentDependentIssue, ..} ) <$> f timelineCommentDependentIssue
+{-# INLINE timelineCommentDependentIssueL #-}
+
+-- | 'timelineCommentHtmlUrl' Lens
+timelineCommentHtmlUrlL :: Lens_' TimelineComment (Maybe Text)
+timelineCommentHtmlUrlL f TimelineComment{..} = (\timelineCommentHtmlUrl -> TimelineComment { timelineCommentHtmlUrl, ..} ) <$> f timelineCommentHtmlUrl
+{-# INLINE timelineCommentHtmlUrlL #-}
+
+-- | 'timelineCommentId' Lens
+timelineCommentIdL :: Lens_' TimelineComment (Maybe Integer)
+timelineCommentIdL f TimelineComment{..} = (\timelineCommentId -> TimelineComment { timelineCommentId, ..} ) <$> f timelineCommentId
+{-# INLINE timelineCommentIdL #-}
+
+-- | 'timelineCommentIssueUrl' Lens
+timelineCommentIssueUrlL :: Lens_' TimelineComment (Maybe Text)
+timelineCommentIssueUrlL f TimelineComment{..} = (\timelineCommentIssueUrl -> TimelineComment { timelineCommentIssueUrl, ..} ) <$> f timelineCommentIssueUrl
+{-# INLINE timelineCommentIssueUrlL #-}
+
+-- | 'timelineCommentLabel' Lens
+timelineCommentLabelL :: Lens_' TimelineComment (Maybe Label)
+timelineCommentLabelL f TimelineComment{..} = (\timelineCommentLabel -> TimelineComment { timelineCommentLabel, ..} ) <$> f timelineCommentLabel
+{-# INLINE timelineCommentLabelL #-}
+
+-- | 'timelineCommentMilestone' Lens
+timelineCommentMilestoneL :: Lens_' TimelineComment (Maybe Milestone)
+timelineCommentMilestoneL f TimelineComment{..} = (\timelineCommentMilestone -> TimelineComment { timelineCommentMilestone, ..} ) <$> f timelineCommentMilestone
+{-# INLINE timelineCommentMilestoneL #-}
+
+-- | 'timelineCommentNewRef' Lens
+timelineCommentNewRefL :: Lens_' TimelineComment (Maybe Text)
+timelineCommentNewRefL f TimelineComment{..} = (\timelineCommentNewRef -> TimelineComment { timelineCommentNewRef, ..} ) <$> f timelineCommentNewRef
+{-# INLINE timelineCommentNewRefL #-}
+
+-- | 'timelineCommentNewTitle' Lens
+timelineCommentNewTitleL :: Lens_' TimelineComment (Maybe Text)
+timelineCommentNewTitleL f TimelineComment{..} = (\timelineCommentNewTitle -> TimelineComment { timelineCommentNewTitle, ..} ) <$> f timelineCommentNewTitle
+{-# INLINE timelineCommentNewTitleL #-}
+
+-- | 'timelineCommentOldMilestone' Lens
+timelineCommentOldMilestoneL :: Lens_' TimelineComment (Maybe Milestone)
+timelineCommentOldMilestoneL f TimelineComment{..} = (\timelineCommentOldMilestone -> TimelineComment { timelineCommentOldMilestone, ..} ) <$> f timelineCommentOldMilestone
+{-# INLINE timelineCommentOldMilestoneL #-}
+
+-- | 'timelineCommentOldProjectId' Lens
+timelineCommentOldProjectIdL :: Lens_' TimelineComment (Maybe Integer)
+timelineCommentOldProjectIdL f TimelineComment{..} = (\timelineCommentOldProjectId -> TimelineComment { timelineCommentOldProjectId, ..} ) <$> f timelineCommentOldProjectId
+{-# INLINE timelineCommentOldProjectIdL #-}
+
+-- | 'timelineCommentOldRef' Lens
+timelineCommentOldRefL :: Lens_' TimelineComment (Maybe Text)
+timelineCommentOldRefL f TimelineComment{..} = (\timelineCommentOldRef -> TimelineComment { timelineCommentOldRef, ..} ) <$> f timelineCommentOldRef
+{-# INLINE timelineCommentOldRefL #-}
+
+-- | 'timelineCommentOldTitle' Lens
+timelineCommentOldTitleL :: Lens_' TimelineComment (Maybe Text)
+timelineCommentOldTitleL f TimelineComment{..} = (\timelineCommentOldTitle -> TimelineComment { timelineCommentOldTitle, ..} ) <$> f timelineCommentOldTitle
+{-# INLINE timelineCommentOldTitleL #-}
+
+-- | 'timelineCommentProjectId' Lens
+timelineCommentProjectIdL :: Lens_' TimelineComment (Maybe Integer)
+timelineCommentProjectIdL f TimelineComment{..} = (\timelineCommentProjectId -> TimelineComment { timelineCommentProjectId, ..} ) <$> f timelineCommentProjectId
+{-# INLINE timelineCommentProjectIdL #-}
+
+-- | 'timelineCommentPullRequestUrl' Lens
+timelineCommentPullRequestUrlL :: Lens_' TimelineComment (Maybe Text)
+timelineCommentPullRequestUrlL f TimelineComment{..} = (\timelineCommentPullRequestUrl -> TimelineComment { timelineCommentPullRequestUrl, ..} ) <$> f timelineCommentPullRequestUrl
+{-# INLINE timelineCommentPullRequestUrlL #-}
+
+-- | 'timelineCommentRefAction' Lens
+timelineCommentRefActionL :: Lens_' TimelineComment (Maybe Text)
+timelineCommentRefActionL f TimelineComment{..} = (\timelineCommentRefAction -> TimelineComment { timelineCommentRefAction, ..} ) <$> f timelineCommentRefAction
+{-# INLINE timelineCommentRefActionL #-}
+
+-- | 'timelineCommentRefComment' Lens
+timelineCommentRefCommentL :: Lens_' TimelineComment (Maybe Comment)
+timelineCommentRefCommentL f TimelineComment{..} = (\timelineCommentRefComment -> TimelineComment { timelineCommentRefComment, ..} ) <$> f timelineCommentRefComment
+{-# INLINE timelineCommentRefCommentL #-}
+
+-- | 'timelineCommentRefCommitSha' Lens
+timelineCommentRefCommitShaL :: Lens_' TimelineComment (Maybe Text)
+timelineCommentRefCommitShaL f TimelineComment{..} = (\timelineCommentRefCommitSha -> TimelineComment { timelineCommentRefCommitSha, ..} ) <$> f timelineCommentRefCommitSha
+{-# INLINE timelineCommentRefCommitShaL #-}
+
+-- | 'timelineCommentRefIssue' Lens
+timelineCommentRefIssueL :: Lens_' TimelineComment (Maybe Issue)
+timelineCommentRefIssueL f TimelineComment{..} = (\timelineCommentRefIssue -> TimelineComment { timelineCommentRefIssue, ..} ) <$> f timelineCommentRefIssue
+{-# INLINE timelineCommentRefIssueL #-}
+
+-- | 'timelineCommentRemovedAssignee' Lens
+timelineCommentRemovedAssigneeL :: Lens_' TimelineComment (Maybe Bool)
+timelineCommentRemovedAssigneeL f TimelineComment{..} = (\timelineCommentRemovedAssignee -> TimelineComment { timelineCommentRemovedAssignee, ..} ) <$> f timelineCommentRemovedAssignee
+{-# INLINE timelineCommentRemovedAssigneeL #-}
+
+-- | 'timelineCommentResolveDoer' Lens
+timelineCommentResolveDoerL :: Lens_' TimelineComment (Maybe User)
+timelineCommentResolveDoerL f TimelineComment{..} = (\timelineCommentResolveDoer -> TimelineComment { timelineCommentResolveDoer, ..} ) <$> f timelineCommentResolveDoer
+{-# INLINE timelineCommentResolveDoerL #-}
+
+-- | 'timelineCommentReviewId' Lens
+timelineCommentReviewIdL :: Lens_' TimelineComment (Maybe Integer)
+timelineCommentReviewIdL f TimelineComment{..} = (\timelineCommentReviewId -> TimelineComment { timelineCommentReviewId, ..} ) <$> f timelineCommentReviewId
+{-# INLINE timelineCommentReviewIdL #-}
+
+-- | 'timelineCommentTrackedTime' Lens
+timelineCommentTrackedTimeL :: Lens_' TimelineComment (Maybe TrackedTime)
+timelineCommentTrackedTimeL f TimelineComment{..} = (\timelineCommentTrackedTime -> TimelineComment { timelineCommentTrackedTime, ..} ) <$> f timelineCommentTrackedTime
+{-# INLINE timelineCommentTrackedTimeL #-}
+
+-- | 'timelineCommentType' Lens
+timelineCommentTypeL :: Lens_' TimelineComment (Maybe Text)
+timelineCommentTypeL f TimelineComment{..} = (\timelineCommentType -> TimelineComment { timelineCommentType, ..} ) <$> f timelineCommentType
+{-# INLINE timelineCommentTypeL #-}
+
+-- | 'timelineCommentUpdatedAt' Lens
+timelineCommentUpdatedAtL :: Lens_' TimelineComment (Maybe DateTime)
+timelineCommentUpdatedAtL f TimelineComment{..} = (\timelineCommentUpdatedAt -> TimelineComment { timelineCommentUpdatedAt, ..} ) <$> f timelineCommentUpdatedAt
+{-# INLINE timelineCommentUpdatedAtL #-}
+
+-- | 'timelineCommentUser' Lens
+timelineCommentUserL :: Lens_' TimelineComment (Maybe User)
+timelineCommentUserL f TimelineComment{..} = (\timelineCommentUser -> TimelineComment { timelineCommentUser, ..} ) <$> f timelineCommentUser
+{-# INLINE timelineCommentUserL #-}
+
+
+
+-- * TopicName
+
+-- | 'topicNameTopics' Lens
+topicNameTopicsL :: Lens_' TopicName (Maybe [Text])
+topicNameTopicsL f TopicName{..} = (\topicNameTopics -> TopicName { topicNameTopics, ..} ) <$> f topicNameTopics
+{-# INLINE topicNameTopicsL #-}
+
+
+
+-- * TopicResponse
+
+-- | 'topicResponseCreated' Lens
+topicResponseCreatedL :: Lens_' TopicResponse (Maybe DateTime)
+topicResponseCreatedL f TopicResponse{..} = (\topicResponseCreated -> TopicResponse { topicResponseCreated, ..} ) <$> f topicResponseCreated
+{-# INLINE topicResponseCreatedL #-}
+
+-- | 'topicResponseId' Lens
+topicResponseIdL :: Lens_' TopicResponse (Maybe Integer)
+topicResponseIdL f TopicResponse{..} = (\topicResponseId -> TopicResponse { topicResponseId, ..} ) <$> f topicResponseId
+{-# INLINE topicResponseIdL #-}
+
+-- | 'topicResponseRepoCount' Lens
+topicResponseRepoCountL :: Lens_' TopicResponse (Maybe Integer)
+topicResponseRepoCountL f TopicResponse{..} = (\topicResponseRepoCount -> TopicResponse { topicResponseRepoCount, ..} ) <$> f topicResponseRepoCount
+{-# INLINE topicResponseRepoCountL #-}
+
+-- | 'topicResponseTopicName' Lens
+topicResponseTopicNameL :: Lens_' TopicResponse (Maybe Text)
+topicResponseTopicNameL f TopicResponse{..} = (\topicResponseTopicName -> TopicResponse { topicResponseTopicName, ..} ) <$> f topicResponseTopicName
+{-# INLINE topicResponseTopicNameL #-}
+
+-- | 'topicResponseUpdated' Lens
+topicResponseUpdatedL :: Lens_' TopicResponse (Maybe DateTime)
+topicResponseUpdatedL f TopicResponse{..} = (\topicResponseUpdated -> TopicResponse { topicResponseUpdated, ..} ) <$> f topicResponseUpdated
+{-# INLINE topicResponseUpdatedL #-}
+
+
+
+-- * TrackedTime
+
+-- | 'trackedTimeCreated' Lens
+trackedTimeCreatedL :: Lens_' TrackedTime (Maybe DateTime)
+trackedTimeCreatedL f TrackedTime{..} = (\trackedTimeCreated -> TrackedTime { trackedTimeCreated, ..} ) <$> f trackedTimeCreated
+{-# INLINE trackedTimeCreatedL #-}
+
+-- | 'trackedTimeId' Lens
+trackedTimeIdL :: Lens_' TrackedTime (Maybe Integer)
+trackedTimeIdL f TrackedTime{..} = (\trackedTimeId -> TrackedTime { trackedTimeId, ..} ) <$> f trackedTimeId
+{-# INLINE trackedTimeIdL #-}
+
+-- | 'trackedTimeIssue' Lens
+trackedTimeIssueL :: Lens_' TrackedTime (Maybe Issue)
+trackedTimeIssueL f TrackedTime{..} = (\trackedTimeIssue -> TrackedTime { trackedTimeIssue, ..} ) <$> f trackedTimeIssue
+{-# INLINE trackedTimeIssueL #-}
+
+-- | 'trackedTimeIssueId' Lens
+trackedTimeIssueIdL :: Lens_' TrackedTime (Maybe Integer)
+trackedTimeIssueIdL f TrackedTime{..} = (\trackedTimeIssueId -> TrackedTime { trackedTimeIssueId, ..} ) <$> f trackedTimeIssueId
+{-# INLINE trackedTimeIssueIdL #-}
+
+-- | 'trackedTimeTime' Lens
+trackedTimeTimeL :: Lens_' TrackedTime (Maybe Integer)
+trackedTimeTimeL f TrackedTime{..} = (\trackedTimeTime -> TrackedTime { trackedTimeTime, ..} ) <$> f trackedTimeTime
+{-# INLINE trackedTimeTimeL #-}
+
+-- | 'trackedTimeUserId' Lens
+trackedTimeUserIdL :: Lens_' TrackedTime (Maybe Integer)
+trackedTimeUserIdL f TrackedTime{..} = (\trackedTimeUserId -> TrackedTime { trackedTimeUserId, ..} ) <$> f trackedTimeUserId
+{-# INLINE trackedTimeUserIdL #-}
+
+-- | 'trackedTimeUserName' Lens
+trackedTimeUserNameL :: Lens_' TrackedTime (Maybe Text)
+trackedTimeUserNameL f TrackedTime{..} = (\trackedTimeUserName -> TrackedTime { trackedTimeUserName, ..} ) <$> f trackedTimeUserName
+{-# INLINE trackedTimeUserNameL #-}
+
+
+
+-- * TransferRepoOption
+
+-- | 'transferRepoOptionNewOwner' Lens
+transferRepoOptionNewOwnerL :: Lens_' TransferRepoOption (Text)
+transferRepoOptionNewOwnerL f TransferRepoOption{..} = (\transferRepoOptionNewOwner -> TransferRepoOption { transferRepoOptionNewOwner, ..} ) <$> f transferRepoOptionNewOwner
+{-# INLINE transferRepoOptionNewOwnerL #-}
+
+-- | 'transferRepoOptionTeamIds' Lens
+transferRepoOptionTeamIdsL :: Lens_' TransferRepoOption (Maybe [Integer])
+transferRepoOptionTeamIdsL f TransferRepoOption{..} = (\transferRepoOptionTeamIds -> TransferRepoOption { transferRepoOptionTeamIds, ..} ) <$> f transferRepoOptionTeamIds
+{-# INLINE transferRepoOptionTeamIdsL #-}
+
+
+
+-- * UpdateFileOptions
+
+-- | 'updateFileOptionsAuthor' Lens
+updateFileOptionsAuthorL :: Lens_' UpdateFileOptions (Maybe Identity)
+updateFileOptionsAuthorL f UpdateFileOptions{..} = (\updateFileOptionsAuthor -> UpdateFileOptions { updateFileOptionsAuthor, ..} ) <$> f updateFileOptionsAuthor
+{-# INLINE updateFileOptionsAuthorL #-}
+
+-- | 'updateFileOptionsBranch' Lens
+updateFileOptionsBranchL :: Lens_' UpdateFileOptions (Maybe Text)
+updateFileOptionsBranchL f UpdateFileOptions{..} = (\updateFileOptionsBranch -> UpdateFileOptions { updateFileOptionsBranch, ..} ) <$> f updateFileOptionsBranch
+{-# INLINE updateFileOptionsBranchL #-}
+
+-- | 'updateFileOptionsCommitter' Lens
+updateFileOptionsCommitterL :: Lens_' UpdateFileOptions (Maybe Identity)
+updateFileOptionsCommitterL f UpdateFileOptions{..} = (\updateFileOptionsCommitter -> UpdateFileOptions { updateFileOptionsCommitter, ..} ) <$> f updateFileOptionsCommitter
+{-# INLINE updateFileOptionsCommitterL #-}
+
+-- | 'updateFileOptionsContent' Lens
+updateFileOptionsContentL :: Lens_' UpdateFileOptions (Text)
+updateFileOptionsContentL f UpdateFileOptions{..} = (\updateFileOptionsContent -> UpdateFileOptions { updateFileOptionsContent, ..} ) <$> f updateFileOptionsContent
+{-# INLINE updateFileOptionsContentL #-}
+
+-- | 'updateFileOptionsDates' Lens
+updateFileOptionsDatesL :: Lens_' UpdateFileOptions (Maybe CommitDateOptions)
+updateFileOptionsDatesL f UpdateFileOptions{..} = (\updateFileOptionsDates -> UpdateFileOptions { updateFileOptionsDates, ..} ) <$> f updateFileOptionsDates
+{-# INLINE updateFileOptionsDatesL #-}
+
+-- | 'updateFileOptionsFromPath' Lens
+updateFileOptionsFromPathL :: Lens_' UpdateFileOptions (Maybe Text)
+updateFileOptionsFromPathL f UpdateFileOptions{..} = (\updateFileOptionsFromPath -> UpdateFileOptions { updateFileOptionsFromPath, ..} ) <$> f updateFileOptionsFromPath
+{-# INLINE updateFileOptionsFromPathL #-}
+
+-- | 'updateFileOptionsMessage' Lens
+updateFileOptionsMessageL :: Lens_' UpdateFileOptions (Maybe Text)
+updateFileOptionsMessageL f UpdateFileOptions{..} = (\updateFileOptionsMessage -> UpdateFileOptions { updateFileOptionsMessage, ..} ) <$> f updateFileOptionsMessage
+{-# INLINE updateFileOptionsMessageL #-}
+
+-- | 'updateFileOptionsNewBranch' Lens
+updateFileOptionsNewBranchL :: Lens_' UpdateFileOptions (Maybe Text)
+updateFileOptionsNewBranchL f UpdateFileOptions{..} = (\updateFileOptionsNewBranch -> UpdateFileOptions { updateFileOptionsNewBranch, ..} ) <$> f updateFileOptionsNewBranch
+{-# INLINE updateFileOptionsNewBranchL #-}
+
+-- | 'updateFileOptionsSha' Lens
+updateFileOptionsShaL :: Lens_' UpdateFileOptions (Text)
+updateFileOptionsShaL f UpdateFileOptions{..} = (\updateFileOptionsSha -> UpdateFileOptions { updateFileOptionsSha, ..} ) <$> f updateFileOptionsSha
+{-# INLINE updateFileOptionsShaL #-}
+
+-- | 'updateFileOptionsSignoff' Lens
+updateFileOptionsSignoffL :: Lens_' UpdateFileOptions (Maybe Bool)
+updateFileOptionsSignoffL f UpdateFileOptions{..} = (\updateFileOptionsSignoff -> UpdateFileOptions { updateFileOptionsSignoff, ..} ) <$> f updateFileOptionsSignoff
+{-# INLINE updateFileOptionsSignoffL #-}
+
+
+
+-- * User
+
+-- | 'userActive' Lens
+userActiveL :: Lens_' User (Maybe Bool)
+userActiveL f User{..} = (\userActive -> User { userActive, ..} ) <$> f userActive
+{-# INLINE userActiveL #-}
+
+-- | 'userAvatarUrl' Lens
+userAvatarUrlL :: Lens_' User (Maybe Text)
+userAvatarUrlL f User{..} = (\userAvatarUrl -> User { userAvatarUrl, ..} ) <$> f userAvatarUrl
+{-# INLINE userAvatarUrlL #-}
+
+-- | 'userCreated' Lens
+userCreatedL :: Lens_' User (Maybe DateTime)
+userCreatedL f User{..} = (\userCreated -> User { userCreated, ..} ) <$> f userCreated
+{-# INLINE userCreatedL #-}
+
+-- | 'userDescription' Lens
+userDescriptionL :: Lens_' User (Maybe Text)
+userDescriptionL f User{..} = (\userDescription -> User { userDescription, ..} ) <$> f userDescription
+{-# INLINE userDescriptionL #-}
+
+-- | 'userEmail' Lens
+userEmailL :: Lens_' User (Maybe Text)
+userEmailL f User{..} = (\userEmail -> User { userEmail, ..} ) <$> f userEmail
+{-# INLINE userEmailL #-}
+
+-- | 'userFollowersCount' Lens
+userFollowersCountL :: Lens_' User (Maybe Integer)
+userFollowersCountL f User{..} = (\userFollowersCount -> User { userFollowersCount, ..} ) <$> f userFollowersCount
+{-# INLINE userFollowersCountL #-}
+
+-- | 'userFollowingCount' Lens
+userFollowingCountL :: Lens_' User (Maybe Integer)
+userFollowingCountL f User{..} = (\userFollowingCount -> User { userFollowingCount, ..} ) <$> f userFollowingCount
+{-# INLINE userFollowingCountL #-}
+
+-- | 'userFullName' Lens
+userFullNameL :: Lens_' User (Maybe Text)
+userFullNameL f User{..} = (\userFullName -> User { userFullName, ..} ) <$> f userFullName
+{-# INLINE userFullNameL #-}
+
+-- | 'userId' Lens
+userIdL :: Lens_' User (Maybe Integer)
+userIdL f User{..} = (\userId -> User { userId, ..} ) <$> f userId
+{-# INLINE userIdL #-}
+
+-- | 'userIsAdmin' Lens
+userIsAdminL :: Lens_' User (Maybe Bool)
+userIsAdminL f User{..} = (\userIsAdmin -> User { userIsAdmin, ..} ) <$> f userIsAdmin
+{-# INLINE userIsAdminL #-}
+
+-- | 'userLanguage' Lens
+userLanguageL :: Lens_' User (Maybe Text)
+userLanguageL f User{..} = (\userLanguage -> User { userLanguage, ..} ) <$> f userLanguage
+{-# INLINE userLanguageL #-}
+
+-- | 'userLastLogin' Lens
+userLastLoginL :: Lens_' User (Maybe DateTime)
+userLastLoginL f User{..} = (\userLastLogin -> User { userLastLogin, ..} ) <$> f userLastLogin
+{-# INLINE userLastLoginL #-}
+
+-- | 'userLocation' Lens
+userLocationL :: Lens_' User (Maybe Text)
+userLocationL f User{..} = (\userLocation -> User { userLocation, ..} ) <$> f userLocation
+{-# INLINE userLocationL #-}
+
+-- | 'userLogin' Lens
+userLoginL :: Lens_' User (Maybe Text)
+userLoginL f User{..} = (\userLogin -> User { userLogin, ..} ) <$> f userLogin
+{-# INLINE userLoginL #-}
+
+-- | 'userLoginName' Lens
+userLoginNameL :: Lens_' User (Maybe Text)
+userLoginNameL f User{..} = (\userLoginName -> User { userLoginName, ..} ) <$> f userLoginName
+{-# INLINE userLoginNameL #-}
+
+-- | 'userProhibitLogin' Lens
+userProhibitLoginL :: Lens_' User (Maybe Bool)
+userProhibitLoginL f User{..} = (\userProhibitLogin -> User { userProhibitLogin, ..} ) <$> f userProhibitLogin
+{-# INLINE userProhibitLoginL #-}
+
+-- | 'userRestricted' Lens
+userRestrictedL :: Lens_' User (Maybe Bool)
+userRestrictedL f User{..} = (\userRestricted -> User { userRestricted, ..} ) <$> f userRestricted
+{-# INLINE userRestrictedL #-}
+
+-- | 'userStarredReposCount' Lens
+userStarredReposCountL :: Lens_' User (Maybe Integer)
+userStarredReposCountL f User{..} = (\userStarredReposCount -> User { userStarredReposCount, ..} ) <$> f userStarredReposCount
+{-# INLINE userStarredReposCountL #-}
+
+-- | 'userVisibility' Lens
+userVisibilityL :: Lens_' User (Maybe Text)
+userVisibilityL f User{..} = (\userVisibility -> User { userVisibility, ..} ) <$> f userVisibility
+{-# INLINE userVisibilityL #-}
+
+-- | 'userWebsite' Lens
+userWebsiteL :: Lens_' User (Maybe Text)
+userWebsiteL f User{..} = (\userWebsite -> User { userWebsite, ..} ) <$> f userWebsite
+{-# INLINE userWebsiteL #-}
+
+
+
+-- * UserHeatmapData
+
+-- | 'userHeatmapDataContributions' Lens
+userHeatmapDataContributionsL :: Lens_' UserHeatmapData (Maybe Integer)
+userHeatmapDataContributionsL f UserHeatmapData{..} = (\userHeatmapDataContributions -> UserHeatmapData { userHeatmapDataContributions, ..} ) <$> f userHeatmapDataContributions
+{-# INLINE userHeatmapDataContributionsL #-}
+
+-- | 'userHeatmapDataTimestamp' Lens
+userHeatmapDataTimestampL :: Lens_' UserHeatmapData (Maybe Integer)
+userHeatmapDataTimestampL f UserHeatmapData{..} = (\userHeatmapDataTimestamp -> UserHeatmapData { userHeatmapDataTimestamp, ..} ) <$> f userHeatmapDataTimestamp
+{-# INLINE userHeatmapDataTimestampL #-}
+
+
+
+-- * UserSearch200Response
+
+-- | 'userSearch200ResponseData' Lens
+userSearch200ResponseDataL :: Lens_' UserSearch200Response (Maybe [User])
+userSearch200ResponseDataL f UserSearch200Response{..} = (\userSearch200ResponseData -> UserSearch200Response { userSearch200ResponseData, ..} ) <$> f userSearch200ResponseData
+{-# INLINE userSearch200ResponseDataL #-}
+
+-- | 'userSearch200ResponseOk' Lens
+userSearch200ResponseOkL :: Lens_' UserSearch200Response (Maybe Bool)
+userSearch200ResponseOkL f UserSearch200Response{..} = (\userSearch200ResponseOk -> UserSearch200Response { userSearch200ResponseOk, ..} ) <$> f userSearch200ResponseOk
+{-# INLINE userSearch200ResponseOkL #-}
+
+
+
+-- * UserSettings
+
+-- | 'userSettingsDescription' Lens
+userSettingsDescriptionL :: Lens_' UserSettings (Maybe Text)
+userSettingsDescriptionL f UserSettings{..} = (\userSettingsDescription -> UserSettings { userSettingsDescription, ..} ) <$> f userSettingsDescription
+{-# INLINE userSettingsDescriptionL #-}
+
+-- | 'userSettingsDiffViewStyle' Lens
+userSettingsDiffViewStyleL :: Lens_' UserSettings (Maybe Text)
+userSettingsDiffViewStyleL f UserSettings{..} = (\userSettingsDiffViewStyle -> UserSettings { userSettingsDiffViewStyle, ..} ) <$> f userSettingsDiffViewStyle
+{-# INLINE userSettingsDiffViewStyleL #-}
+
+-- | 'userSettingsFullName' Lens
+userSettingsFullNameL :: Lens_' UserSettings (Maybe Text)
+userSettingsFullNameL f UserSettings{..} = (\userSettingsFullName -> UserSettings { userSettingsFullName, ..} ) <$> f userSettingsFullName
+{-# INLINE userSettingsFullNameL #-}
+
+-- | 'userSettingsHideActivity' Lens
+userSettingsHideActivityL :: Lens_' UserSettings (Maybe Bool)
+userSettingsHideActivityL f UserSettings{..} = (\userSettingsHideActivity -> UserSettings { userSettingsHideActivity, ..} ) <$> f userSettingsHideActivity
+{-# INLINE userSettingsHideActivityL #-}
+
+-- | 'userSettingsHideEmail' Lens
+userSettingsHideEmailL :: Lens_' UserSettings (Maybe Bool)
+userSettingsHideEmailL f UserSettings{..} = (\userSettingsHideEmail -> UserSettings { userSettingsHideEmail, ..} ) <$> f userSettingsHideEmail
+{-# INLINE userSettingsHideEmailL #-}
+
+-- | 'userSettingsLanguage' Lens
+userSettingsLanguageL :: Lens_' UserSettings (Maybe Text)
+userSettingsLanguageL f UserSettings{..} = (\userSettingsLanguage -> UserSettings { userSettingsLanguage, ..} ) <$> f userSettingsLanguage
+{-# INLINE userSettingsLanguageL #-}
+
+-- | 'userSettingsLocation' Lens
+userSettingsLocationL :: Lens_' UserSettings (Maybe Text)
+userSettingsLocationL f UserSettings{..} = (\userSettingsLocation -> UserSettings { userSettingsLocation, ..} ) <$> f userSettingsLocation
+{-# INLINE userSettingsLocationL #-}
+
+-- | 'userSettingsTheme' Lens
+userSettingsThemeL :: Lens_' UserSettings (Maybe Text)
+userSettingsThemeL f UserSettings{..} = (\userSettingsTheme -> UserSettings { userSettingsTheme, ..} ) <$> f userSettingsTheme
+{-# INLINE userSettingsThemeL #-}
+
+-- | 'userSettingsWebsite' Lens
+userSettingsWebsiteL :: Lens_' UserSettings (Maybe Text)
+userSettingsWebsiteL f UserSettings{..} = (\userSettingsWebsite -> UserSettings { userSettingsWebsite, ..} ) <$> f userSettingsWebsite
+{-# INLINE userSettingsWebsiteL #-}
+
+
+
+-- * UserSettingsOptions
+
+-- | 'userSettingsOptionsDescription' Lens
+userSettingsOptionsDescriptionL :: Lens_' UserSettingsOptions (Maybe Text)
+userSettingsOptionsDescriptionL f UserSettingsOptions{..} = (\userSettingsOptionsDescription -> UserSettingsOptions { userSettingsOptionsDescription, ..} ) <$> f userSettingsOptionsDescription
+{-# INLINE userSettingsOptionsDescriptionL #-}
+
+-- | 'userSettingsOptionsDiffViewStyle' Lens
+userSettingsOptionsDiffViewStyleL :: Lens_' UserSettingsOptions (Maybe Text)
+userSettingsOptionsDiffViewStyleL f UserSettingsOptions{..} = (\userSettingsOptionsDiffViewStyle -> UserSettingsOptions { userSettingsOptionsDiffViewStyle, ..} ) <$> f userSettingsOptionsDiffViewStyle
+{-# INLINE userSettingsOptionsDiffViewStyleL #-}
+
+-- | 'userSettingsOptionsFullName' Lens
+userSettingsOptionsFullNameL :: Lens_' UserSettingsOptions (Maybe Text)
+userSettingsOptionsFullNameL f UserSettingsOptions{..} = (\userSettingsOptionsFullName -> UserSettingsOptions { userSettingsOptionsFullName, ..} ) <$> f userSettingsOptionsFullName
+{-# INLINE userSettingsOptionsFullNameL #-}
+
+-- | 'userSettingsOptionsHideActivity' Lens
+userSettingsOptionsHideActivityL :: Lens_' UserSettingsOptions (Maybe Bool)
+userSettingsOptionsHideActivityL f UserSettingsOptions{..} = (\userSettingsOptionsHideActivity -> UserSettingsOptions { userSettingsOptionsHideActivity, ..} ) <$> f userSettingsOptionsHideActivity
+{-# INLINE userSettingsOptionsHideActivityL #-}
+
+-- | 'userSettingsOptionsHideEmail' Lens
+userSettingsOptionsHideEmailL :: Lens_' UserSettingsOptions (Maybe Bool)
+userSettingsOptionsHideEmailL f UserSettingsOptions{..} = (\userSettingsOptionsHideEmail -> UserSettingsOptions { userSettingsOptionsHideEmail, ..} ) <$> f userSettingsOptionsHideEmail
+{-# INLINE userSettingsOptionsHideEmailL #-}
+
+-- | 'userSettingsOptionsLanguage' Lens
+userSettingsOptionsLanguageL :: Lens_' UserSettingsOptions (Maybe Text)
+userSettingsOptionsLanguageL f UserSettingsOptions{..} = (\userSettingsOptionsLanguage -> UserSettingsOptions { userSettingsOptionsLanguage, ..} ) <$> f userSettingsOptionsLanguage
+{-# INLINE userSettingsOptionsLanguageL #-}
+
+-- | 'userSettingsOptionsLocation' Lens
+userSettingsOptionsLocationL :: Lens_' UserSettingsOptions (Maybe Text)
+userSettingsOptionsLocationL f UserSettingsOptions{..} = (\userSettingsOptionsLocation -> UserSettingsOptions { userSettingsOptionsLocation, ..} ) <$> f userSettingsOptionsLocation
+{-# INLINE userSettingsOptionsLocationL #-}
+
+-- | 'userSettingsOptionsTheme' Lens
+userSettingsOptionsThemeL :: Lens_' UserSettingsOptions (Maybe Text)
+userSettingsOptionsThemeL f UserSettingsOptions{..} = (\userSettingsOptionsTheme -> UserSettingsOptions { userSettingsOptionsTheme, ..} ) <$> f userSettingsOptionsTheme
+{-# INLINE userSettingsOptionsThemeL #-}
+
+-- | 'userSettingsOptionsWebsite' Lens
+userSettingsOptionsWebsiteL :: Lens_' UserSettingsOptions (Maybe Text)
+userSettingsOptionsWebsiteL f UserSettingsOptions{..} = (\userSettingsOptionsWebsite -> UserSettingsOptions { userSettingsOptionsWebsite, ..} ) <$> f userSettingsOptionsWebsite
+{-# INLINE userSettingsOptionsWebsiteL #-}
+
+
+
+-- * WatchInfo
+
+-- | 'watchInfoCreatedAt' Lens
+watchInfoCreatedAtL :: Lens_' WatchInfo (Maybe DateTime)
+watchInfoCreatedAtL f WatchInfo{..} = (\watchInfoCreatedAt -> WatchInfo { watchInfoCreatedAt, ..} ) <$> f watchInfoCreatedAt
+{-# INLINE watchInfoCreatedAtL #-}
+
+-- | 'watchInfoIgnored' Lens
+watchInfoIgnoredL :: Lens_' WatchInfo (Maybe Bool)
+watchInfoIgnoredL f WatchInfo{..} = (\watchInfoIgnored -> WatchInfo { watchInfoIgnored, ..} ) <$> f watchInfoIgnored
+{-# INLINE watchInfoIgnoredL #-}
+
+-- | 'watchInfoReason' Lens
+watchInfoReasonL :: Lens_' WatchInfo (Maybe A.Value)
+watchInfoReasonL f WatchInfo{..} = (\watchInfoReason -> WatchInfo { watchInfoReason, ..} ) <$> f watchInfoReason
+{-# INLINE watchInfoReasonL #-}
+
+-- | 'watchInfoRepositoryUrl' Lens
+watchInfoRepositoryUrlL :: Lens_' WatchInfo (Maybe Text)
+watchInfoRepositoryUrlL f WatchInfo{..} = (\watchInfoRepositoryUrl -> WatchInfo { watchInfoRepositoryUrl, ..} ) <$> f watchInfoRepositoryUrl
+{-# INLINE watchInfoRepositoryUrlL #-}
+
+-- | 'watchInfoSubscribed' Lens
+watchInfoSubscribedL :: Lens_' WatchInfo (Maybe Bool)
+watchInfoSubscribedL f WatchInfo{..} = (\watchInfoSubscribed -> WatchInfo { watchInfoSubscribed, ..} ) <$> f watchInfoSubscribed
+{-# INLINE watchInfoSubscribedL #-}
+
+-- | 'watchInfoUrl' Lens
+watchInfoUrlL :: Lens_' WatchInfo (Maybe Text)
+watchInfoUrlL f WatchInfo{..} = (\watchInfoUrl -> WatchInfo { watchInfoUrl, ..} ) <$> f watchInfoUrl
+{-# INLINE watchInfoUrlL #-}
+
+
+
+-- * WikiCommit
+
+-- | 'wikiCommitAuthor' Lens
+wikiCommitAuthorL :: Lens_' WikiCommit (Maybe CommitUser)
+wikiCommitAuthorL f WikiCommit{..} = (\wikiCommitAuthor -> WikiCommit { wikiCommitAuthor, ..} ) <$> f wikiCommitAuthor
+{-# INLINE wikiCommitAuthorL #-}
+
+-- | 'wikiCommitCommiter' Lens
+wikiCommitCommiterL :: Lens_' WikiCommit (Maybe CommitUser)
+wikiCommitCommiterL f WikiCommit{..} = (\wikiCommitCommiter -> WikiCommit { wikiCommitCommiter, ..} ) <$> f wikiCommitCommiter
+{-# INLINE wikiCommitCommiterL #-}
+
+-- | 'wikiCommitMessage' Lens
+wikiCommitMessageL :: Lens_' WikiCommit (Maybe Text)
+wikiCommitMessageL f WikiCommit{..} = (\wikiCommitMessage -> WikiCommit { wikiCommitMessage, ..} ) <$> f wikiCommitMessage
+{-# INLINE wikiCommitMessageL #-}
+
+-- | 'wikiCommitSha' Lens
+wikiCommitShaL :: Lens_' WikiCommit (Maybe Text)
+wikiCommitShaL f WikiCommit{..} = (\wikiCommitSha -> WikiCommit { wikiCommitSha, ..} ) <$> f wikiCommitSha
+{-# INLINE wikiCommitShaL #-}
+
+
+
+-- * WikiCommitList
+
+-- | 'wikiCommitListCommits' Lens
+wikiCommitListCommitsL :: Lens_' WikiCommitList (Maybe [WikiCommit])
+wikiCommitListCommitsL f WikiCommitList{..} = (\wikiCommitListCommits -> WikiCommitList { wikiCommitListCommits, ..} ) <$> f wikiCommitListCommits
+{-# INLINE wikiCommitListCommitsL #-}
+
+-- | 'wikiCommitListCount' Lens
+wikiCommitListCountL :: Lens_' WikiCommitList (Maybe Integer)
+wikiCommitListCountL f WikiCommitList{..} = (\wikiCommitListCount -> WikiCommitList { wikiCommitListCount, ..} ) <$> f wikiCommitListCount
+{-# INLINE wikiCommitListCountL #-}
+
+
+
+-- * WikiPage
+
+-- | 'wikiPageCommitCount' Lens
+wikiPageCommitCountL :: Lens_' WikiPage (Maybe Integer)
+wikiPageCommitCountL f WikiPage{..} = (\wikiPageCommitCount -> WikiPage { wikiPageCommitCount, ..} ) <$> f wikiPageCommitCount
+{-# INLINE wikiPageCommitCountL #-}
+
+-- | 'wikiPageContentBase64' Lens
+wikiPageContentBase64L :: Lens_' WikiPage (Maybe Text)
+wikiPageContentBase64L f WikiPage{..} = (\wikiPageContentBase64 -> WikiPage { wikiPageContentBase64, ..} ) <$> f wikiPageContentBase64
+{-# INLINE wikiPageContentBase64L #-}
+
+-- | 'wikiPageFooter' Lens
+wikiPageFooterL :: Lens_' WikiPage (Maybe Text)
+wikiPageFooterL f WikiPage{..} = (\wikiPageFooter -> WikiPage { wikiPageFooter, ..} ) <$> f wikiPageFooter
+{-# INLINE wikiPageFooterL #-}
+
+-- | 'wikiPageHtmlUrl' Lens
+wikiPageHtmlUrlL :: Lens_' WikiPage (Maybe Text)
+wikiPageHtmlUrlL f WikiPage{..} = (\wikiPageHtmlUrl -> WikiPage { wikiPageHtmlUrl, ..} ) <$> f wikiPageHtmlUrl
+{-# INLINE wikiPageHtmlUrlL #-}
+
+-- | 'wikiPageLastCommit' Lens
+wikiPageLastCommitL :: Lens_' WikiPage (Maybe WikiCommit)
+wikiPageLastCommitL f WikiPage{..} = (\wikiPageLastCommit -> WikiPage { wikiPageLastCommit, ..} ) <$> f wikiPageLastCommit
+{-# INLINE wikiPageLastCommitL #-}
+
+-- | 'wikiPageSidebar' Lens
+wikiPageSidebarL :: Lens_' WikiPage (Maybe Text)
+wikiPageSidebarL f WikiPage{..} = (\wikiPageSidebar -> WikiPage { wikiPageSidebar, ..} ) <$> f wikiPageSidebar
+{-# INLINE wikiPageSidebarL #-}
+
+-- | 'wikiPageSubUrl' Lens
+wikiPageSubUrlL :: Lens_' WikiPage (Maybe Text)
+wikiPageSubUrlL f WikiPage{..} = (\wikiPageSubUrl -> WikiPage { wikiPageSubUrl, ..} ) <$> f wikiPageSubUrl
+{-# INLINE wikiPageSubUrlL #-}
+
+-- | 'wikiPageTitle' Lens
+wikiPageTitleL :: Lens_' WikiPage (Maybe Text)
+wikiPageTitleL f WikiPage{..} = (\wikiPageTitle -> WikiPage { wikiPageTitle, ..} ) <$> f wikiPageTitle
+{-# INLINE wikiPageTitleL #-}
+
+
+
+-- * WikiPageMetaData
+
+-- | 'wikiPageMetaDataHtmlUrl' Lens
+wikiPageMetaDataHtmlUrlL :: Lens_' WikiPageMetaData (Maybe Text)
+wikiPageMetaDataHtmlUrlL f WikiPageMetaData{..} = (\wikiPageMetaDataHtmlUrl -> WikiPageMetaData { wikiPageMetaDataHtmlUrl, ..} ) <$> f wikiPageMetaDataHtmlUrl
+{-# INLINE wikiPageMetaDataHtmlUrlL #-}
+
+-- | 'wikiPageMetaDataLastCommit' Lens
+wikiPageMetaDataLastCommitL :: Lens_' WikiPageMetaData (Maybe WikiCommit)
+wikiPageMetaDataLastCommitL f WikiPageMetaData{..} = (\wikiPageMetaDataLastCommit -> WikiPageMetaData { wikiPageMetaDataLastCommit, ..} ) <$> f wikiPageMetaDataLastCommit
+{-# INLINE wikiPageMetaDataLastCommitL #-}
+
+-- | 'wikiPageMetaDataSubUrl' Lens
+wikiPageMetaDataSubUrlL :: Lens_' WikiPageMetaData (Maybe Text)
+wikiPageMetaDataSubUrlL f WikiPageMetaData{..} = (\wikiPageMetaDataSubUrl -> WikiPageMetaData { wikiPageMetaDataSubUrl, ..} ) <$> f wikiPageMetaDataSubUrl
+{-# INLINE wikiPageMetaDataSubUrlL #-}
+
+-- | 'wikiPageMetaDataTitle' Lens
+wikiPageMetaDataTitleL :: Lens_' WikiPageMetaData (Maybe Text)
+wikiPageMetaDataTitleL f WikiPageMetaData{..} = (\wikiPageMetaDataTitle -> WikiPageMetaData { wikiPageMetaDataTitle, ..} ) <$> f wikiPageMetaDataTitle
+{-# INLINE wikiPageMetaDataTitleL #-}
+
+
diff --git a/openapi.yaml b/openapi.yaml
new file mode 100644
--- /dev/null
+++ b/openapi.yaml
@@ -0,0 +1,24233 @@
+openapi: 3.0.1
+info:
+  description: This documentation describes the Gitea API.
+  license:
+    name: MIT
+    url: http://opensource.org/licenses/MIT
+  title: Gitea API.
+  version: 1.19.4
+servers:
+- url: http://https://gitea.com/api/v1
+- url: https://https://gitea.com/api/v1
+security:
+- BasicAuth: []
+- Token: []
+- AccessToken: []
+- AuthorizationHeaderToken: []
+- SudoParam: []
+- SudoHeader: []
+- TOTPHeader: []
+paths:
+  /activitypub/user-id/{user-id}:
+    get:
+      operationId: activitypubPerson
+      parameters:
+      - description: user ID of the user
+        in: path
+        name: user-id
+        required: true
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ActivityPub'
+          description: ActivityPub
+      summary: Returns the Person actor for a user
+      tags:
+      - activitypub
+  /activitypub/user-id/{user-id}/inbox:
+    post:
+      operationId: activitypubPersonInbox
+      parameters:
+      - description: user ID of the user
+        in: path
+        name: user-id
+        required: true
+        schema:
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+      summary: Send to the inbox
+      tags:
+      - activitypub
+  /admin/cron:
+    get:
+      operationId: adminCronList
+      parameters:
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Cron'
+                type: array
+          description: CronList
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: List cron tasks
+      tags:
+      - admin
+  /admin/cron/{task}:
+    post:
+      operationId: adminCronRun
+      parameters:
+      - description: task to run
+        in: path
+        name: task
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Run cron task
+      tags:
+      - admin
+  /admin/hooks:
+    get:
+      operationId: adminListHooks
+      parameters:
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Hook'
+                type: array
+          description: HookList
+      summary: List system's webhooks
+      tags:
+      - admin
+    post:
+      operationId: adminCreateHook
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateHookOption'
+        required: true
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Hook'
+          description: Hook
+      summary: Create a hook
+      tags:
+      - admin
+      x-codegen-request-body-name: body
+  /admin/hooks/{id}:
+    delete:
+      operationId: adminDeleteHook
+      parameters:
+      - description: id of the hook to delete
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+      summary: Delete a hook
+      tags:
+      - admin
+    get:
+      operationId: adminGetHook
+      parameters:
+      - description: id of the hook to get
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Hook'
+          description: Hook
+      summary: Get a hook
+      tags:
+      - admin
+    patch:
+      operationId: adminEditHook
+      parameters:
+      - description: id of the hook to update
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditHookOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Hook'
+          description: Hook
+      summary: Update a hook
+      tags:
+      - admin
+      x-codegen-request-body-name: body
+  /admin/orgs:
+    get:
+      operationId: adminGetAllOrgs
+      parameters:
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Organization'
+                type: array
+          description: OrganizationList
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: List all organizations
+      tags:
+      - admin
+  /admin/unadopted:
+    get:
+      operationId: adminUnadoptedList
+      parameters:
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      - description: pattern of repositories to search for
+        in: query
+        name: pattern
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  type: string
+                type: array
+          description: StringSlice
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: List unadopted repositories
+      tags:
+      - admin
+  /admin/unadopted/{owner}/{repo}:
+    delete:
+      operationId: adminDeleteUnadoptedRepository
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Delete unadopted files
+      tags:
+      - admin
+    post:
+      operationId: adminAdoptRepository
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Adopt unadopted files as a repository
+      tags:
+      - admin
+  /admin/users:
+    get:
+      operationId: adminGetAllUsers
+      parameters:
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/User'
+                type: array
+          description: UserList
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: List all users
+      tags:
+      - admin
+    post:
+      operationId: adminCreateUser
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateUserOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/User'
+          description: User
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a user
+      tags:
+      - admin
+      x-codegen-request-body-name: body
+  /admin/users/{username}:
+    delete:
+      operationId: adminDeleteUser
+      parameters:
+      - description: username of user to delete
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      - description: purge the user from the system completely
+        in: query
+        name: purge
+        schema:
+          type: boolean
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Delete a user
+      tags:
+      - admin
+    patch:
+      operationId: adminEditUser
+      parameters:
+      - description: username of user to edit
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditUserOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/User'
+          description: User
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Edit an existing user
+      tags:
+      - admin
+      x-codegen-request-body-name: body
+  /admin/users/{username}/keys:
+    post:
+      operationId: adminCreatePublicKey
+      parameters:
+      - description: username of the user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateKeyOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PublicKey'
+          description: PublicKey
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Add a public key on behalf of a user
+      tags:
+      - admin
+      x-codegen-request-body-name: key
+  /admin/users/{username}/keys/{id}:
+    delete:
+      operationId: adminDeleteUserPublicKey
+      parameters:
+      - description: username of user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      - description: id of the key to delete
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Delete a user's public key
+      tags:
+      - admin
+  /admin/users/{username}/orgs:
+    post:
+      operationId: adminCreateOrg
+      parameters:
+      - description: username of the user that will own the created organization
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateOrgOption'
+        required: true
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Organization'
+          description: Organization
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create an organization
+      tags:
+      - admin
+      x-codegen-request-body-name: organization
+  /admin/users/{username}/repos:
+    post:
+      operationId: adminCreateRepo
+      parameters:
+      - description: username of the user. This user will own the created repository
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateRepoOption'
+        required: true
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Repository'
+          description: Repository
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "409":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a repository on behalf of a user
+      tags:
+      - admin
+      x-codegen-request-body-name: repository
+  /markdown:
+    post:
+      operationId: renderMarkdown
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/MarkdownOption'
+        required: false
+      responses:
+        "200":
+          content:
+            text/html:
+              schema:
+                type: string
+          description: MarkdownRender is a rendered markdown document
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Render a markdown document as HTML
+      tags:
+      - miscellaneous
+      x-codegen-request-body-name: body
+  /markdown/raw:
+    post:
+      operationId: renderMarkdownRaw
+      requestBody:
+        content:
+          text/plain:
+            schema:
+              type: string
+        description: Request body to render
+        required: true
+      responses:
+        "200":
+          content:
+            text/html:
+              schema:
+                type: string
+          description: MarkdownRender is a rendered markdown document
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Render raw markdown as HTML
+      tags:
+      - miscellaneous
+      x-codegen-request-body-name: body
+  /nodeinfo:
+    get:
+      operationId: getNodeInfo
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NodeInfo'
+          description: NodeInfo
+      summary: Returns the nodeinfo of the Gitea application
+      tags:
+      - miscellaneous
+  /notifications:
+    get:
+      operationId: notifyGetList
+      parameters:
+      - description: "If true, show notifications marked as read. Default value is\
+          \ false"
+        in: query
+        name: all
+        schema:
+          type: boolean
+      - description: "Show notifications with the provided status types. Options are:\
+          \ unread, read and/or pinned. Defaults to unread & pinned."
+        explode: true
+        in: query
+        name: status-types
+        schema:
+          items:
+            type: string
+          type: array
+        style: form
+      - description: filter notifications by subject type
+        explode: true
+        in: query
+        name: subject-type
+        schema:
+          items:
+            enum:
+            - issue
+            - pull
+            - commit
+            - repository
+            type: string
+          type: array
+        style: form
+      - description: Only show notifications updated after the given time. This is
+          a timestamp in RFC 3339 format
+        in: query
+        name: since
+        schema:
+          format: date-time
+          type: string
+      - description: Only show notifications updated before the given time. This is
+          a timestamp in RFC 3339 format
+        in: query
+        name: before
+        schema:
+          format: date-time
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/NotificationThread'
+                type: array
+          description: NotificationThreadList
+      summary: List users's notification threads
+      tags:
+      - notification
+    put:
+      operationId: notifyReadList
+      parameters:
+      - description: Describes the last point that notifications were checked. Anything
+          updated since this time will not be updated.
+        in: query
+        name: last_read_at
+        schema:
+          format: date-time
+          type: string
+      - description: "If true, mark all notifications on this repo. Default value\
+          \ is false"
+        in: query
+        name: all
+        schema:
+          type: string
+      - description: "Mark notifications with the provided status types. Options are:\
+          \ unread, read and/or pinned. Defaults to unread."
+        explode: true
+        in: query
+        name: status-types
+        schema:
+          items:
+            type: string
+          type: array
+        style: form
+      - description: "Status to mark notifications as, Defaults to read."
+        in: query
+        name: to-status
+        schema:
+          type: string
+      responses:
+        "205":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/NotificationThread'
+                type: array
+          description: NotificationThreadList
+      summary: "Mark notification threads as read, pinned or unread"
+      tags:
+      - notification
+  /notifications/new:
+    get:
+      operationId: notifyNewAvailable
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NotificationCount'
+            text/html:
+              schema:
+                $ref: '#/components/schemas/NotificationCount'
+          description: Number of unread notifications
+      summary: Check if unread notifications exist
+      tags:
+      - notification
+  /notifications/threads/{id}:
+    get:
+      operationId: notifyGetThread
+      parameters:
+      - description: id of notification thread
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NotificationThread'
+          description: NotificationThread
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get notification thread by ID
+      tags:
+      - notification
+    patch:
+      operationId: notifyReadThread
+      parameters:
+      - description: id of notification thread
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      - description: Status to mark notifications as
+        in: query
+        name: to-status
+        schema:
+          default: read
+          type: string
+      responses:
+        "205":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/NotificationThread'
+          description: NotificationThread
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Mark notification thread as read by ID
+      tags:
+      - notification
+  /org/{org}/repos:
+    post:
+      deprecated: true
+      operationId: createOrgRepoDeprecated
+      parameters:
+      - description: name of organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateRepoOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Repository'
+          description: Repository
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a repository in an organization
+      tags:
+      - organization
+      x-codegen-request-body-name: body
+  /orgs:
+    get:
+      operationId: orgGetAll
+      parameters:
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Organization'
+                type: array
+          description: OrganizationList
+      summary: Get list of organizations
+      tags:
+      - organization
+    post:
+      operationId: orgCreate
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateOrgOption'
+        required: true
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Organization'
+          description: Organization
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create an organization
+      tags:
+      - organization
+      x-codegen-request-body-name: organization
+  /orgs/{org}:
+    delete:
+      operationId: orgDelete
+      parameters:
+      - description: organization that is to be deleted
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+      summary: Delete an organization
+      tags:
+      - organization
+    get:
+      operationId: orgGet
+      parameters:
+      - description: name of the organization to get
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Organization'
+          description: Organization
+      summary: Get an organization
+      tags:
+      - organization
+    patch:
+      operationId: orgEdit
+      parameters:
+      - description: name of the organization to edit
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditOrgOption'
+        required: true
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Organization'
+          description: Organization
+      summary: Edit an organization
+      tags:
+      - organization
+      x-codegen-request-body-name: body
+  /orgs/{org}/hooks:
+    get:
+      operationId: orgListHooks
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Hook'
+                type: array
+          description: HookList
+      summary: List an organization's webhooks
+      tags:
+      - organization
+    post:
+      operationId: orgCreateHook
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateHookOption'
+        required: true
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Hook'
+          description: Hook
+      summary: Create a hook
+      tags:
+      - organization
+      x-codegen-request-body-name: body
+  /orgs/{org}/hooks/{id}:
+    delete:
+      operationId: orgDeleteHook
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: id of the hook to delete
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+      summary: Delete a hook
+      tags:
+      - organization
+    get:
+      operationId: orgGetHook
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: id of the hook to get
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Hook'
+          description: Hook
+      summary: Get a hook
+      tags:
+      - organization
+    patch:
+      operationId: orgEditHook
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: id of the hook to update
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditHookOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Hook'
+          description: Hook
+      summary: Update a hook
+      tags:
+      - organization
+      x-codegen-request-body-name: body
+  /orgs/{org}/labels:
+    get:
+      operationId: orgListLabels
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Label'
+                type: array
+          description: LabelList
+      summary: List an organization's labels
+      tags:
+      - organization
+    post:
+      operationId: orgCreateLabel
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateLabelOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Label'
+          description: Label
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a label for an organization
+      tags:
+      - organization
+      x-codegen-request-body-name: body
+  /orgs/{org}/labels/{id}:
+    delete:
+      operationId: orgDeleteLabel
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: id of the label to delete
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+      summary: Delete a label
+      tags:
+      - organization
+    get:
+      operationId: orgGetLabel
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: id of the label to get
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Label'
+          description: Label
+      summary: Get a single label
+      tags:
+      - organization
+    patch:
+      operationId: orgEditLabel
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: id of the label to edit
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditLabelOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Label'
+          description: Label
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Update a label
+      tags:
+      - organization
+      x-codegen-request-body-name: body
+  /orgs/{org}/members:
+    get:
+      operationId: orgListMembers
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/User'
+                type: array
+          description: UserList
+      summary: List an organization's members
+      tags:
+      - organization
+  /orgs/{org}/members/{username}:
+    delete:
+      operationId: orgDeleteMember
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: username of the user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: member removed
+      summary: Remove a member from an organization
+      tags:
+      - organization
+    get:
+      operationId: orgIsMember
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: username of the user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: user is a member
+        "303":
+          content: {}
+          description: "redirection to /orgs/{org}/public_members/{username}"
+        "404":
+          content: {}
+          description: user is not a member
+      summary: Check if a user is a member of an organization
+      tags:
+      - organization
+  /orgs/{org}/public_members:
+    get:
+      operationId: orgListPublicMembers
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/User'
+                type: array
+          description: UserList
+      summary: List an organization's public members
+      tags:
+      - organization
+  /orgs/{org}/public_members/{username}:
+    delete:
+      operationId: orgConcealMember
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: username of the user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Conceal a user's membership
+      tags:
+      - organization
+    get:
+      operationId: orgIsPublicMember
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: username of the user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: user is a public member
+        "404":
+          content: {}
+          description: user is not a public member
+      summary: Check if a user is a public member of an organization
+      tags:
+      - organization
+    put:
+      operationId: orgPublicizeMember
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: username of the user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: membership publicized
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Publicize a user's membership
+      tags:
+      - organization
+  /orgs/{org}/repos:
+    get:
+      operationId: orgListRepos
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Repository'
+                type: array
+          description: RepositoryList
+      summary: List an organization's repos
+      tags:
+      - organization
+    post:
+      operationId: createOrgRepo
+      parameters:
+      - description: name of organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateRepoOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Repository'
+          description: Repository
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Create a repository in an organization
+      tags:
+      - organization
+      x-codegen-request-body-name: body
+  /orgs/{org}/teams:
+    get:
+      operationId: orgListTeams
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Team'
+                type: array
+          description: TeamList
+      summary: List an organization's teams
+      tags:
+      - organization
+    post:
+      operationId: orgCreateTeam
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateTeamOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Team'
+          description: Team
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a team
+      tags:
+      - organization
+      x-codegen-request-body-name: body
+  /orgs/{org}/teams/search:
+    get:
+      operationId: teamSearch
+      parameters:
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: keywords to search
+        in: query
+        name: q
+        schema:
+          type: string
+      - description: include search within team description (defaults to true)
+        in: query
+        name: include_desc
+        schema:
+          type: boolean
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/teamSearch_200_response'
+          description: SearchResults of a successful search
+      summary: Search for teams within an organization
+      tags:
+      - organization
+  /packages/{owner}:
+    get:
+      operationId: listPackages
+      parameters:
+      - description: owner of the packages
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      - description: package type filter
+        in: query
+        name: type
+        schema:
+          enum:
+          - cargo
+          - chef
+          - composer
+          - conan
+          - conda
+          - container
+          - generic
+          - helm
+          - maven
+          - npm
+          - nuget
+          - pub
+          - pypi
+          - rubygems
+          - vagrant
+          type: string
+      - description: name filter
+        in: query
+        name: q
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Package'
+                type: array
+          description: PackageList
+      summary: Gets all packages of an owner
+      tags:
+      - package
+  /packages/{owner}/{type}/{name}/{version}:
+    delete:
+      operationId: deletePackage
+      parameters:
+      - description: owner of the package
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: type of the package
+        in: path
+        name: type
+        required: true
+        schema:
+          type: string
+      - description: name of the package
+        in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      - description: version of the package
+        in: path
+        name: version
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Delete a package
+      tags:
+      - package
+    get:
+      operationId: getPackage
+      parameters:
+      - description: owner of the package
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: type of the package
+        in: path
+        name: type
+        required: true
+        schema:
+          type: string
+      - description: name of the package
+        in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      - description: version of the package
+        in: path
+        name: version
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Package'
+          description: Package
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Gets a package
+      tags:
+      - package
+  /packages/{owner}/{type}/{name}/{version}/files:
+    get:
+      operationId: listPackageFiles
+      parameters:
+      - description: owner of the package
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: type of the package
+        in: path
+        name: type
+        required: true
+        schema:
+          type: string
+      - description: name of the package
+        in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      - description: version of the package
+        in: path
+        name: version
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/PackageFile'
+                type: array
+          description: PackageFileList
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Gets all files of a package
+      tags:
+      - package
+  /repos/issues/search:
+    get:
+      operationId: issueSearchIssues
+      parameters:
+      - description: whether issue is open or closed
+        in: query
+        name: state
+        schema:
+          type: string
+      - description: comma separated list of labels. Fetch only issues that have any
+          of this labels. Non existent labels are discarded
+        in: query
+        name: labels
+        schema:
+          type: string
+      - description: comma separated list of milestone names. Fetch only issues that
+          have any of this milestones. Non existent are discarded
+        in: query
+        name: milestones
+        schema:
+          type: string
+      - description: search string
+        in: query
+        name: q
+        schema:
+          type: string
+      - description: repository to prioritize in the results
+        in: query
+        name: priority_repo_id
+        schema:
+          format: int64
+          type: integer
+      - description: filter by type (issues / pulls) if set
+        in: query
+        name: type
+        schema:
+          type: string
+      - description: Only show notifications updated after the given time. This is
+          a timestamp in RFC 3339 format
+        in: query
+        name: since
+        schema:
+          format: date-time
+          type: string
+      - description: Only show notifications updated before the given time. This is
+          a timestamp in RFC 3339 format
+        in: query
+        name: before
+        schema:
+          format: date-time
+          type: string
+      - description: "filter (issues / pulls) assigned to you, default is false"
+        in: query
+        name: assigned
+        schema:
+          type: boolean
+      - description: "filter (issues / pulls) created by you, default is false"
+        in: query
+        name: created
+        schema:
+          type: boolean
+      - description: "filter (issues / pulls) mentioning you, default is false"
+        in: query
+        name: mentioned
+        schema:
+          type: boolean
+      - description: "filter pulls requesting your review, default is false"
+        in: query
+        name: review_requested
+        schema:
+          type: boolean
+      - description: filter by owner
+        in: query
+        name: owner
+        schema:
+          type: string
+      - description: filter by team (requires organization owner parameter to be provided)
+        in: query
+        name: team
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Issue'
+                type: array
+          description: IssueList
+      summary: Search for issues across the repositories that the user has access
+        to
+      tags:
+      - issue
+  /repos/migrate:
+    post:
+      operationId: repoMigrate
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/MigrateRepoOptions'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Repository'
+          description: Repository
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "409":
+          content: {}
+          description: The repository with the same name already exists.
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Migrate a remote git repository
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/search:
+    get:
+      operationId: repoSearch
+      parameters:
+      - description: keyword
+        in: query
+        name: q
+        schema:
+          type: string
+      - description: Limit search to repositories with keyword as topic
+        in: query
+        name: topic
+        schema:
+          type: boolean
+      - description: include search of keyword within repository description
+        in: query
+        name: includeDesc
+        schema:
+          type: boolean
+      - description: search only for repos that the user with the given id owns or
+          contributes to
+        in: query
+        name: uid
+        schema:
+          format: int64
+          type: integer
+      - description: repo owner to prioritize in the results
+        in: query
+        name: priority_owner_id
+        schema:
+          format: int64
+          type: integer
+      - description: search only for repos that belong to the given team id
+        in: query
+        name: team_id
+        schema:
+          format: int64
+          type: integer
+      - description: search only for repos that the user with the given id has starred
+        in: query
+        name: starredBy
+        schema:
+          format: int64
+          type: integer
+      - description: include private repositories this user has access to (defaults
+          to true)
+        in: query
+        name: private
+        schema:
+          type: boolean
+      - description: "show only pubic, private or all repositories (defaults to all)"
+        in: query
+        name: is_private
+        schema:
+          type: boolean
+      - description: include template repositories this user has access to (defaults
+          to true)
+        in: query
+        name: template
+        schema:
+          type: boolean
+      - description: "show only archived, non-archived or all repositories (defaults\
+          \ to all)"
+        in: query
+        name: archived
+        schema:
+          type: boolean
+      - description: "type of repository to search for. Supported values are \"fork\"\
+          , \"source\", \"mirror\" and \"collaborative\""
+        in: query
+        name: mode
+        schema:
+          type: string
+      - description: "if `uid` is given, search only for repos that the user owns"
+        in: query
+        name: exclusive
+        schema:
+          type: boolean
+      - description: "sort repos by attribute. Supported values are \"alpha\", \"\
+          created\", \"updated\", \"size\", and \"id\". Default is \"alpha\""
+        in: query
+        name: sort
+        schema:
+          type: string
+      - description: "sort order, either \"asc\" (ascending) or \"desc\" (descending).\
+          \ Default is \"asc\", ignored if \"sort\" is not specified."
+        in: query
+        name: order
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/SearchResults'
+          description: SearchResults
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Search for repositories
+      tags:
+      - repository
+  /repos/{owner}/{repo}:
+    delete:
+      operationId: repoDelete
+      parameters:
+      - description: owner of the repo to delete
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo to delete
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Delete a repository
+      tags:
+      - repository
+    get:
+      operationId: repoGet
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Repository'
+          description: Repository
+      summary: Get a repository
+      tags:
+      - repository
+    patch:
+      operationId: repoEdit
+      parameters:
+      - description: owner of the repo to edit
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo to edit
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditRepoOption'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/EditRepoOption'
+        description: Properties of a repo that you can edit
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Repository'
+          description: Repository
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Edit a repository's properties. Only fields that are set will be changed.
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/archive/{archive}:
+    get:
+      operationId: repoGetArchive
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: the git reference for download with attached archive format (e.g.
+          master.zip)
+        in: path
+        name: archive
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content: {}
+          description: success
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get an archive of a repository
+      tags:
+      - repository
+  /repos/{owner}/{repo}/assignees:
+    get:
+      operationId: repoGetAssignees
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/User'
+                type: array
+          description: UserList
+      summary: Return all users that have write access and can be assigned to issues
+      tags:
+      - repository
+  /repos/{owner}/{repo}/branch_protections:
+    get:
+      operationId: repoListBranchProtection
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/BranchProtection'
+                type: array
+          description: BranchProtectionList
+      summary: List branch protections for a repository
+      tags:
+      - repository
+    post:
+      operationId: repoCreateBranchProtection
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateBranchProtectionOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BranchProtection'
+          description: BranchProtection
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a branch protections for a repository
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/branch_protections/{name}:
+    delete:
+      operationId: repoDeleteBranchProtection
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: name of protected branch
+        in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Delete a specific branch protection for the repository
+      tags:
+      - repository
+    get:
+      operationId: repoGetBranchProtection
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: name of protected branch
+        in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BranchProtection'
+          description: BranchProtection
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a specific branch protection for the repository
+      tags:
+      - repository
+    patch:
+      operationId: repoEditBranchProtection
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: name of protected branch
+        in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditBranchProtectionOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/BranchProtection'
+          description: BranchProtection
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Edit a branch protections for a repository. Only fields that are set
+        will be changed
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/branches:
+    get:
+      operationId: repoListBranches
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Branch'
+                type: array
+          description: BranchList
+      summary: List a repository's branches
+      tags:
+      - repository
+    post:
+      operationId: repoCreateBranch
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateBranchRepoOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Branch'
+          description: Branch
+        "404":
+          content: {}
+          description: The old branch does not exist.
+        "409":
+          content: {}
+          description: The branch with the same name already exists.
+      summary: Create a branch
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/branches/{branch}:
+    delete:
+      operationId: repoDeleteBranch
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: branch to delete
+        in: path
+        name: branch
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Delete a specific branch from a repository
+      tags:
+      - repository
+    get:
+      operationId: repoGetBranch
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: branch to get
+        in: path
+        name: branch
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Branch'
+          description: Branch
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: "Retrieve a specific branch from a repository, including its effective\
+        \ branch protection"
+      tags:
+      - repository
+  /repos/{owner}/{repo}/collaborators:
+    get:
+      operationId: repoListCollaborators
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/User'
+                type: array
+          description: UserList
+      summary: List a repository's collaborators
+      tags:
+      - repository
+  /repos/{owner}/{repo}/collaborators/{collaborator}:
+    delete:
+      operationId: repoDeleteCollaborator
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: username of the collaborator to delete
+        in: path
+        name: collaborator
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Delete a collaborator from a repository
+      tags:
+      - repository
+    get:
+      operationId: repoCheckCollaborator
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: username of the collaborator
+        in: path
+        name: collaborator
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Check if a user is a collaborator of a repository
+      tags:
+      - repository
+    put:
+      operationId: repoAddCollaborator
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: username of the collaborator to add
+        in: path
+        name: collaborator
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/AddCollaboratorOption'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/AddCollaboratorOption'
+        required: false
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Add a collaborator to a repository
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/collaborators/{collaborator}/permission:
+    get:
+      operationId: repoGetRepoPermissions
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: username of the collaborator
+        in: path
+        name: collaborator
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/RepoCollaboratorPermission'
+          description: RepoCollaboratorPermission
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get repository permissions for a user
+      tags:
+      - repository
+  /repos/{owner}/{repo}/commits:
+    get:
+      operationId: repoGetAllCommits
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: SHA or branch to start listing commits from (usually 'master')
+        in: query
+        name: sha
+        schema:
+          type: string
+      - description: filepath of a file/dir
+        in: query
+        name: path
+        schema:
+          type: string
+      - description: "include diff stats for every commit (disable for speedup, default\
+          \ 'true')"
+        in: query
+        name: stat
+        schema:
+          type: boolean
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results (ignored if used with 'path')
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Commit'
+                type: array
+          description: CommitList
+          headers:
+            X-HasMore:
+              description: True if there is another page
+              schema:
+                type: boolean
+            X-PageCount:
+              description: Total number of pages
+              schema:
+                format: int64
+                type: integer
+            X-PerPage:
+              description: Commits per page
+              schema:
+                format: int64
+                type: integer
+            X-Total:
+              description: Total commit count
+              schema:
+                format: int64
+                type: integer
+            X-Page:
+              description: The current page
+              schema:
+                format: int64
+                type: integer
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "409":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/APIError'
+          description: EmptyRepository
+      summary: Get a list of all commits from a repository
+      tags:
+      - repository
+  /repos/{owner}/{repo}/commits/{ref}/status:
+    get:
+      operationId: repoGetCombinedStatusByRef
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: name of branch/tag/commit
+        in: path
+        name: ref
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CombinedStatus'
+          description: CombinedStatus
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: "Get a commit's combined status, by branch/tag/commit reference"
+      tags:
+      - repository
+  /repos/{owner}/{repo}/commits/{ref}/statuses:
+    get:
+      operationId: repoListStatusesByRef
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: name of branch/tag/commit
+        in: path
+        name: ref
+        required: true
+        schema:
+          type: string
+      - description: type of sort
+        in: query
+        name: sort
+        schema:
+          enum:
+          - oldest
+          - recentupdate
+          - leastupdate
+          - leastindex
+          - highestindex
+          type: string
+      - description: type of state
+        in: query
+        name: state
+        schema:
+          enum:
+          - pending
+          - success
+          - error
+          - failure
+          - warning
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/CommitStatus'
+                type: array
+          description: CommitStatusList
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: "Get a commit's statuses, by branch/tag/commit reference"
+      tags:
+      - repository
+  /repos/{owner}/{repo}/contents:
+    get:
+      operationId: repoGetContentsList
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: The name of the commit/branch/tag. Default the repository’s default
+          branch (usually master)
+        in: query
+        name: ref
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/ContentsResponse'
+                type: array
+          description: ContentsListResponse
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Gets the metadata of all the entries of the root dir
+      tags:
+      - repository
+  /repos/{owner}/{repo}/contents/{filepath}:
+    delete:
+      operationId: repoDeleteFile
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: path of the file to delete
+        in: path
+        name: filepath
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/DeleteFileOptions'
+        required: true
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FileDeleteResponse'
+          description: FileDeleteResponse
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "403":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Delete a file in a repository
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+    get:
+      operationId: repoGetContents
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: "path of the dir, file, symlink or submodule in the repo"
+        in: path
+        name: filepath
+        required: true
+        schema:
+          type: string
+      - description: The name of the commit/branch/tag. Default the repository’s default
+          branch (usually master)
+        in: query
+        name: ref
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ContentsResponse'
+          description: ContentsResponse
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: "Gets the metadata and contents (if a file) of an entry in a repository,\
+        \ or a list of entries if a dir"
+      tags:
+      - repository
+    post:
+      operationId: repoCreateFile
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: path of the file to create
+        in: path
+        name: filepath
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateFileOptions'
+        required: true
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FileResponse'
+          description: FileResponse
+        "403":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "422":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a file in a repository
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+    put:
+      operationId: repoUpdateFile
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: path of the file to update
+        in: path
+        name: filepath
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/UpdateFileOptions'
+        required: true
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FileResponse'
+          description: FileResponse
+        "403":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "422":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Update a file in a repository
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/diffpatch:
+    post:
+      operationId: repoApplyDiffPatch
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/UpdateFileOptions'
+        required: true
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/FileResponse'
+          description: FileResponse
+      summary: Apply diff patch to repository
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/editorconfig/{filepath}:
+    get:
+      operationId: repoGetEditorConfig
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: filepath of file to get
+        in: path
+        name: filepath
+        required: true
+        schema:
+          type: string
+      - description: The name of the commit/branch/tag. Default the repository’s default
+          branch (usually master)
+        in: query
+        name: ref
+        schema:
+          type: string
+      responses:
+        "200":
+          content: {}
+          description: success
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get the EditorConfig definitions of a file in a repository
+      tags:
+      - repository
+  /repos/{owner}/{repo}/forks:
+    get:
+      operationId: listForks
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Repository'
+                type: array
+          description: RepositoryList
+      summary: List a repository's forks
+      tags:
+      - repository
+    post:
+      operationId: createFork
+      parameters:
+      - description: owner of the repo to fork
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo to fork
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateForkOption'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/CreateForkOption'
+        required: false
+      responses:
+        "202":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Repository'
+          description: Repository
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "409":
+          content: {}
+          description: The repository with the same name already exists.
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Fork a repository
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/git/blobs/{sha}:
+    get:
+      operationId: GetBlob
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: sha of the commit
+        in: path
+        name: sha
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GitBlobResponse'
+          description: GitBlobResponse
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Gets the blob of a repository.
+      tags:
+      - repository
+  /repos/{owner}/{repo}/git/commits/{sha}:
+    get:
+      operationId: repoGetSingleCommit
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: a git ref or commit sha
+        in: path
+        name: sha
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Commit'
+          description: Commit
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Get a single commit from a repository
+      tags:
+      - repository
+  /repos/{owner}/{repo}/git/commits/{sha}.{diffType}:
+    get:
+      operationId: repoDownloadCommitDiffOrPatch
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: SHA of the commit to get
+        in: path
+        name: sha
+        required: true
+        schema:
+          type: string
+      - description: whether the output is diff or patch
+        in: path
+        name: diffType
+        required: true
+        schema:
+          enum:
+          - diff
+          - patch
+          type: string
+      responses:
+        "200":
+          content:
+            text/plain:
+              schema:
+                type: string
+          description: APIString is a string response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a commit's diff or patch
+      tags:
+      - repository
+  /repos/{owner}/{repo}/git/notes/{sha}:
+    get:
+      operationId: repoGetNote
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: a git ref or commit sha
+        in: path
+        name: sha
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Note'
+          description: Note
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Get a note corresponding to a single commit from a repository
+      tags:
+      - repository
+  /repos/{owner}/{repo}/git/refs:
+    get:
+      operationId: repoListAllGitRefs
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Reference'
+                type: array
+          description: ReferenceList
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get specified ref or filtered repository's refs
+      tags:
+      - repository
+  /repos/{owner}/{repo}/git/refs/{ref}:
+    get:
+      operationId: repoListGitRefs
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: part or full name of the ref
+        in: path
+        name: ref
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Reference'
+                type: array
+          description: ReferenceList
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get specified ref or filtered repository's refs
+      tags:
+      - repository
+  /repos/{owner}/{repo}/git/tags/{sha}:
+    get:
+      operationId: GetAnnotatedTag
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: "sha of the tag. The Git tags API only supports annotated tag\
+          \ objects, not lightweight tags."
+        in: path
+        name: sha
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/AnnotatedTag'
+          description: AnnotatedTag
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Gets the tag object of an annotated tag (not lightweight tags)
+      tags:
+      - repository
+  /repos/{owner}/{repo}/git/trees/{sha}:
+    get:
+      operationId: GetTree
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: sha of the commit
+        in: path
+        name: sha
+        required: true
+        schema:
+          type: string
+      - description: show all directories and files
+        in: query
+        name: recursive
+        schema:
+          type: boolean
+      - description: "page number; the 'truncated' field in the response will be true\
+          \ if there are still more items after this page, false if the last page"
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: number of items per page
+        in: query
+        name: per_page
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GitTreeResponse'
+          description: GitTreeResponse
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Gets the tree of a repository.
+      tags:
+      - repository
+  /repos/{owner}/{repo}/hooks:
+    get:
+      operationId: repoListHooks
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Hook'
+                type: array
+          description: HookList
+      summary: List the hooks in a repository
+      tags:
+      - repository
+    post:
+      operationId: repoCreateHook
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateHookOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Hook'
+          description: Hook
+      summary: Create a hook
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/hooks/git:
+    get:
+      operationId: repoListGitHooks
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/GitHook'
+                type: array
+          description: GitHookList
+      summary: List the Git hooks in a repository
+      tags:
+      - repository
+  /repos/{owner}/{repo}/hooks/git/{id}:
+    delete:
+      operationId: repoDeleteGitHook
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the hook to get
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Delete a Git hook in a repository
+      tags:
+      - repository
+    get:
+      operationId: repoGetGitHook
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the hook to get
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GitHook'
+          description: GitHook
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a Git hook
+      tags:
+      - repository
+    patch:
+      operationId: repoEditGitHook
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the hook to get
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditGitHookOption'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/EditGitHookOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GitHook'
+          description: GitHook
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Edit a Git hook in a repository
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/hooks/{id}:
+    delete:
+      operationId: repoDeleteHook
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the hook to delete
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Delete a hook in a repository
+      tags:
+      - repository
+    get:
+      operationId: repoGetHook
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the hook to get
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Hook'
+          description: Hook
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a hook
+      tags:
+      - repository
+    patch:
+      operationId: repoEditHook
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the hook
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditHookOption'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/EditHookOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Hook'
+          description: Hook
+      summary: Edit a hook in a repository
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/hooks/{id}/tests:
+    post:
+      operationId: repoTestHook
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the hook to test
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: "The name of the commit/branch/tag, indicates which commit will\
+          \ be loaded to the webhook payload."
+        in: query
+        name: ref
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+      summary: Test a push webhook
+      tags:
+      - repository
+  /repos/{owner}/{repo}/issue_templates:
+    get:
+      operationId: repoGetIssueTemplates
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/IssueTemplate'
+                type: array
+          description: IssueTemplates
+      summary: Get available issue templates for a repository
+      tags:
+      - repository
+  /repos/{owner}/{repo}/issues:
+    get:
+      operationId: issueListIssues
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: whether issue is open or closed
+        in: query
+        name: state
+        schema:
+          enum:
+          - closed
+          - open
+          - all
+          type: string
+      - description: comma separated list of labels. Fetch only issues that have any
+          of this labels. Non existent labels are discarded
+        in: query
+        name: labels
+        schema:
+          type: string
+      - description: search string
+        in: query
+        name: q
+        schema:
+          type: string
+      - description: filter by type (issues / pulls) if set
+        in: query
+        name: type
+        schema:
+          enum:
+          - issues
+          - pulls
+          type: string
+      - description: comma separated list of milestone names or ids. It uses names
+          and fall back to ids. Fetch only issues that have any of this milestones.
+          Non existent milestones are discarded
+        in: query
+        name: milestones
+        schema:
+          type: string
+      - description: Only show items updated after the given time. This is a timestamp
+          in RFC 3339 format
+        in: query
+        name: since
+        schema:
+          format: date-time
+          type: string
+      - description: Only show items updated before the given time. This is a timestamp
+          in RFC 3339 format
+        in: query
+        name: before
+        schema:
+          format: date-time
+          type: string
+      - description: Only show items which were created by the the given user
+        in: query
+        name: created_by
+        schema:
+          type: string
+      - description: Only show items for which the given user is assigned
+        in: query
+        name: assigned_by
+        schema:
+          type: string
+      - description: Only show items in which the given user was mentioned
+        in: query
+        name: mentioned_by
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Issue'
+                type: array
+          description: IssueList
+      summary: List a repository's issues
+      tags:
+      - issue
+    post:
+      operationId: issueCreateIssue
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateIssueOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Issue'
+          description: Issue
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "412":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: "Create an issue. If using deadline only the date will be taken into\
+        \ account, and time of day ignored."
+      tags:
+      - issue
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/issues/comments:
+    get:
+      operationId: issueGetRepoComments
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: "if provided, only comments updated since the provided time are\
+          \ returned."
+        in: query
+        name: since
+        schema:
+          format: date-time
+          type: string
+      - description: "if provided, only comments updated before the provided time\
+          \ are returned."
+        in: query
+        name: before
+        schema:
+          format: date-time
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Comment'
+                type: array
+          description: CommentList
+      summary: List all comments in a repository
+      tags:
+      - issue
+  /repos/{owner}/{repo}/issues/comments/{id}:
+    delete:
+      operationId: issueDeleteComment
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of comment to delete
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Delete a comment
+      tags:
+      - issue
+    get:
+      operationId: issueGetComment
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the comment
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Comment'
+          description: Comment
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a comment
+      tags:
+      - issue
+    patch:
+      operationId: issueEditComment
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the comment to edit
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditIssueCommentOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Comment'
+          description: Comment
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Edit a comment
+      tags:
+      - issue
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/issues/comments/{id}/assets:
+    get:
+      operationId: issueListIssueCommentAttachments
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the comment
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Attachment'
+                type: array
+          description: AttachmentList
+        "404":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: List comment's attachments
+      tags:
+      - issue
+    post:
+      operationId: issueCreateIssueCommentAttachment
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the comment
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: name of the attachment
+        in: query
+        name: name
+        schema:
+          type: string
+      requestBody:
+        content:
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/issueCreateIssueCommentAttachment_request'
+        required: true
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Attachment'
+          description: Attachment
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a comment attachment
+      tags:
+      - issue
+  /repos/{owner}/{repo}/issues/comments/{id}/assets/{attachment_id}:
+    delete:
+      operationId: issueDeleteIssueCommentAttachment
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the comment
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: id of the attachment to delete
+        in: path
+        name: attachment_id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Delete a comment attachment
+      tags:
+      - issue
+    get:
+      operationId: issueGetIssueCommentAttachment
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the comment
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: id of the attachment to get
+        in: path
+        name: attachment_id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Attachment'
+          description: Attachment
+        "404":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Get a comment attachment
+      tags:
+      - issue
+    patch:
+      operationId: issueEditIssueCommentAttachment
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the comment
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: id of the attachment to edit
+        in: path
+        name: attachment_id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditAttachmentOptions'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Attachment'
+          description: Attachment
+        "404":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Edit a comment attachment
+      tags:
+      - issue
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/issues/comments/{id}/reactions:
+    delete:
+      operationId: issueDeleteCommentReaction
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the comment to edit
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditReactionOption'
+        required: false
+      responses:
+        "200":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Remove a reaction from a comment of an issue
+      tags:
+      - issue
+      x-codegen-request-body-name: content
+    get:
+      operationId: issueGetCommentReactions
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the comment to edit
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Reaction'
+                type: array
+          description: ReactionList
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Get a list of reactions from a comment of an issue
+      tags:
+      - issue
+    post:
+      operationId: issuePostCommentReaction
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the comment to edit
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditReactionOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Reaction'
+          description: Reaction
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Reaction'
+          description: Reaction
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Add a reaction to a comment of an issue
+      tags:
+      - issue
+      x-codegen-request-body-name: content
+  /repos/{owner}/{repo}/issues/{index}:
+    delete:
+      operationId: issueDelete
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of issue to delete
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Delete an issue
+      tags:
+      - issue
+    get:
+      operationId: issueGetIssue
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue to get
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Issue'
+          description: Issue
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get an issue
+      tags:
+      - issue
+    patch:
+      operationId: issueEditIssue
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue to edit
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditIssueOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Issue'
+          description: Issue
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "412":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: "Edit an issue. If using deadline only the date will be taken into\
+        \ account, and time of day ignored."
+      tags:
+      - issue
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/issues/{index}/assets:
+    get:
+      operationId: issueListIssueAttachments
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Attachment'
+                type: array
+          description: AttachmentList
+        "404":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: List issue's attachments
+      tags:
+      - issue
+    post:
+      operationId: issueCreateIssueAttachment
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: name of the attachment
+        in: query
+        name: name
+        schema:
+          type: string
+      requestBody:
+        content:
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/issueCreateIssueCommentAttachment_request'
+        required: true
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Attachment'
+          description: Attachment
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create an issue attachment
+      tags:
+      - issue
+  /repos/{owner}/{repo}/issues/{index}/assets/{attachment_id}:
+    delete:
+      operationId: issueDeleteIssueAttachment
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: id of the attachment to delete
+        in: path
+        name: attachment_id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Delete an issue attachment
+      tags:
+      - issue
+    get:
+      operationId: issueGetIssueAttachment
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: id of the attachment to get
+        in: path
+        name: attachment_id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Attachment'
+          description: Attachment
+        "404":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Get an issue attachment
+      tags:
+      - issue
+    patch:
+      operationId: issueEditIssueAttachment
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: id of the attachment to edit
+        in: path
+        name: attachment_id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditAttachmentOptions'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Attachment'
+          description: Attachment
+        "404":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Edit an issue attachment
+      tags:
+      - issue
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/issues/{index}/comments:
+    get:
+      operationId: issueGetComments
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: "if provided, only comments updated since the specified time\
+          \ are returned."
+        in: query
+        name: since
+        schema:
+          format: date-time
+          type: string
+      - description: "if provided, only comments updated before the provided time\
+          \ are returned."
+        in: query
+        name: before
+        schema:
+          format: date-time
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Comment'
+                type: array
+          description: CommentList
+      summary: List all comments on an issue
+      tags:
+      - issue
+    post:
+      operationId: issueCreateComment
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateIssueCommentOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Comment'
+          description: Comment
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Add a comment to an issue
+      tags:
+      - issue
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/issues/{index}/comments/{id}:
+    delete:
+      deprecated: true
+      operationId: issueDeleteCommentDeprecated
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: this parameter is ignored
+        in: path
+        name: index
+        required: true
+        schema:
+          type: integer
+      - description: id of comment to delete
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Delete a comment
+      tags:
+      - issue
+    patch:
+      deprecated: true
+      operationId: issueEditCommentDeprecated
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: this parameter is ignored
+        in: path
+        name: index
+        required: true
+        schema:
+          type: integer
+      - description: id of the comment to edit
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditIssueCommentOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Comment'
+          description: Comment
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Edit a comment
+      tags:
+      - issue
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/issues/{index}/deadline:
+    post:
+      operationId: issueEditIssueDeadline
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue to create or update a deadline on
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditDeadlineOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/IssueDeadline'
+          description: IssueDeadline
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: "Set an issue deadline. If set to null, the deadline is deleted. If\
+        \ using deadline only the date will be taken into account, and time of day\
+        \ ignored."
+      tags:
+      - issue
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/issues/{index}/labels:
+    delete:
+      operationId: issueClearLabels
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Remove all labels from an issue
+      tags:
+      - issue
+    get:
+      operationId: issueGetLabels
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Label'
+                type: array
+          description: LabelList
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get an issue's labels
+      tags:
+      - issue
+    post:
+      operationId: issueAddLabel
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/IssueLabelsOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Label'
+                type: array
+          description: LabelList
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Add a label to an issue
+      tags:
+      - issue
+      x-codegen-request-body-name: body
+    put:
+      operationId: issueReplaceLabels
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/IssueLabelsOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Label'
+                type: array
+          description: LabelList
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Replace an issue's labels
+      tags:
+      - issue
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/issues/{index}/labels/{id}:
+    delete:
+      operationId: issueRemoveLabel
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: id of the label to remove
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Remove a label from an issue
+      tags:
+      - issue
+  /repos/{owner}/{repo}/issues/{index}/reactions:
+    delete:
+      operationId: issueDeleteIssueReaction
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditReactionOption'
+        required: false
+      responses:
+        "200":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Remove a reaction from an issue
+      tags:
+      - issue
+      x-codegen-request-body-name: content
+    get:
+      operationId: issueGetIssueReactions
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Reaction'
+                type: array
+          description: ReactionList
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Get a list reactions of an issue
+      tags:
+      - issue
+    post:
+      operationId: issuePostIssueReaction
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditReactionOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Reaction'
+          description: Reaction
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Reaction'
+          description: Reaction
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Add a reaction to an issue
+      tags:
+      - issue
+      x-codegen-request-body-name: content
+  /repos/{owner}/{repo}/issues/{index}/stopwatch/delete:
+    delete:
+      operationId: issueDeleteStopWatch
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue to stop the stopwatch on
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: "Not repo writer, user does not have rights to toggle stopwatch"
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "409":
+          content: {}
+          description: Cannot cancel a non existent stopwatch
+      summary: Delete an issue's existing stopwatch.
+      tags:
+      - issue
+  /repos/{owner}/{repo}/issues/{index}/stopwatch/start:
+    post:
+      operationId: issueStartStopWatch
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue to create the stopwatch on
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "201":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: "Not repo writer, user does not have rights to toggle stopwatch"
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "409":
+          content: {}
+          description: Cannot start a stopwatch again if it already exists
+      summary: Start stopwatch on an issue.
+      tags:
+      - issue
+  /repos/{owner}/{repo}/issues/{index}/stopwatch/stop:
+    post:
+      operationId: issueStopStopWatch
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue to stop the stopwatch on
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "201":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: "Not repo writer, user does not have rights to toggle stopwatch"
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "409":
+          content: {}
+          description: Cannot stop a non existent stopwatch
+      summary: Stop an issue's existing stopwatch.
+      tags:
+      - issue
+  /repos/{owner}/{repo}/issues/{index}/subscriptions:
+    get:
+      operationId: issueSubscriptions
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/User'
+                type: array
+          description: UserList
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get users who subscribed on an issue.
+      tags:
+      - issue
+  /repos/{owner}/{repo}/issues/{index}/subscriptions/check:
+    get:
+      operationId: issueCheckSubscription
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WatchInfo'
+          description: WatchInfo
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Check if user is subscribed to an issue
+      tags:
+      - issue
+  /repos/{owner}/{repo}/issues/{index}/subscriptions/{user}:
+    delete:
+      operationId: issueDeleteSubscription
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: user witch unsubscribe
+        in: path
+        name: user
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content: {}
+          description: Already unsubscribed
+        "201":
+          content: {}
+          description: Successfully Unsubscribed
+        "304":
+          content: {}
+          description: User can only subscribe itself if he is no admin
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Unsubscribe user from issue
+      tags:
+      - issue
+    put:
+      operationId: issueAddSubscription
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: user to subscribe
+        in: path
+        name: user
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content: {}
+          description: Already subscribed
+        "201":
+          content: {}
+          description: Successfully Subscribed
+        "304":
+          content: {}
+          description: User can only subscribe itself if he is no admin
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Subscribe user to issue
+      tags:
+      - issue
+  /repos/{owner}/{repo}/issues/{index}/timeline:
+    get:
+      operationId: issueGetCommentsAndTimeline
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: "if provided, only comments updated since the specified time\
+          \ are returned."
+        in: query
+        name: since
+        schema:
+          format: date-time
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      - description: "if provided, only comments updated before the provided time\
+          \ are returned."
+        in: query
+        name: before
+        schema:
+          format: date-time
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/TimelineComment'
+                type: array
+          description: TimelineList
+      summary: List all comments and events on an issue
+      tags:
+      - issue
+  /repos/{owner}/{repo}/issues/{index}/times:
+    delete:
+      operationId: issueResetTime
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue to add tracked time to
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Reset a tracked time of an issue
+      tags:
+      - issue
+    get:
+      operationId: issueTrackedTimes
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: optional filter by user (available for issue managers)
+        in: query
+        name: user
+        schema:
+          type: string
+      - description: Only show times updated after the given time. This is a timestamp
+          in RFC 3339 format
+        in: query
+        name: since
+        schema:
+          format: date-time
+          type: string
+      - description: Only show times updated before the given time. This is a timestamp
+          in RFC 3339 format
+        in: query
+        name: before
+        schema:
+          format: date-time
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/TrackedTime'
+                type: array
+          description: TrackedTimeList
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: List an issue's tracked times
+      tags:
+      - issue
+    post:
+      operationId: issueAddTime
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/AddTimeOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/TrackedTime'
+          description: TrackedTime
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Add tracked time to a issue
+      tags:
+      - issue
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/issues/{index}/times/{id}:
+    delete:
+      operationId: issueDeleteTime
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the issue
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: id of time to delete
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Delete specific tracked time
+      tags:
+      - issue
+  /repos/{owner}/{repo}/keys:
+    get:
+      operationId: repoListKeys
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: the key_id to search for
+        in: query
+        name: key_id
+        schema:
+          type: integer
+      - description: fingerprint of the key
+        in: query
+        name: fingerprint
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/DeployKey'
+                type: array
+          description: DeployKeyList
+      summary: List a repository's keys
+      tags:
+      - repository
+    post:
+      operationId: repoCreateKey
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateKeyOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeployKey'
+          description: DeployKey
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Add a key to a repository
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/keys/{id}:
+    delete:
+      operationId: repoDeleteKey
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the key to delete
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Delete a key from a repository
+      tags:
+      - repository
+    get:
+      operationId: repoGetKey
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the key to get
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/DeployKey'
+          description: DeployKey
+      summary: Get a repository's key by id
+      tags:
+      - repository
+  /repos/{owner}/{repo}/labels:
+    get:
+      operationId: issueListLabels
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Label'
+                type: array
+          description: LabelList
+      summary: Get all of a repository's labels
+      tags:
+      - issue
+    post:
+      operationId: issueCreateLabel
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateLabelOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Label'
+          description: Label
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a label
+      tags:
+      - issue
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/labels/{id}:
+    delete:
+      operationId: issueDeleteLabel
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the label to delete
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+      summary: Delete a label
+      tags:
+      - issue
+    get:
+      operationId: issueGetLabel
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the label to get
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Label'
+          description: Label
+      summary: Get a single label
+      tags:
+      - issue
+    patch:
+      operationId: issueEditLabel
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the label to edit
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditLabelOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Label'
+          description: Label
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Update a label
+      tags:
+      - issue
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/languages:
+    get:
+      operationId: repoGetLanguages
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                additionalProperties:
+                  format: int64
+                  type: integer
+                type: object
+          description: LanguageStatistics
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get languages and number of bytes of code written
+      tags:
+      - repository
+  /repos/{owner}/{repo}/media/{filepath}:
+    get:
+      operationId: repoGetRawFileOrLFS
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: filepath of the file to get
+        in: path
+        name: filepath
+        required: true
+        schema:
+          type: string
+      - description: The name of the commit/branch/tag. Default the repository’s default
+          branch (usually master)
+        in: query
+        name: ref
+        schema:
+          type: string
+      responses:
+        "200":
+          content: {}
+          description: Returns raw file content.
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a file or it's LFS object from a repository
+      tags:
+      - repository
+  /repos/{owner}/{repo}/milestones:
+    get:
+      operationId: issueGetMilestonesList
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: "Milestone state, Recognized values are open, closed and all.\
+          \ Defaults to \"open\""
+        in: query
+        name: state
+        schema:
+          type: string
+      - description: filter by milestone name
+        in: query
+        name: name
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Milestone'
+                type: array
+          description: MilestoneList
+      summary: Get all of a repository's opened milestones
+      tags:
+      - issue
+    post:
+      operationId: issueCreateMilestone
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateMilestoneOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Milestone'
+          description: Milestone
+      summary: Create a milestone
+      tags:
+      - issue
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/milestones/{id}:
+    delete:
+      operationId: issueDeleteMilestone
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: "the milestone to delete, identified by ID and if not available\
+          \ by name"
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+      summary: Delete a milestone
+      tags:
+      - issue
+    get:
+      operationId: issueGetMilestone
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: "the milestone to get, identified by ID and if not available\
+          \ by name"
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Milestone'
+          description: Milestone
+      summary: Get a milestone
+      tags:
+      - issue
+    patch:
+      operationId: issueEditMilestone
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: "the milestone to edit, identified by ID and if not available\
+          \ by name"
+        in: path
+        name: id
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditMilestoneOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Milestone'
+          description: Milestone
+      summary: Update a milestone
+      tags:
+      - issue
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/mirror-sync:
+    post:
+      operationId: repoMirrorSync
+      parameters:
+      - description: owner of the repo to sync
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo to sync
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Sync a mirrored repository
+      tags:
+      - repository
+  /repos/{owner}/{repo}/notifications:
+    get:
+      operationId: notifyGetRepoList
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: "If true, show notifications marked as read. Default value is\
+          \ false"
+        in: query
+        name: all
+        schema:
+          type: boolean
+      - description: "Show notifications with the provided status types. Options are:\
+          \ unread, read and/or pinned. Defaults to unread & pinned"
+        explode: true
+        in: query
+        name: status-types
+        schema:
+          items:
+            type: string
+          type: array
+        style: form
+      - description: filter notifications by subject type
+        explode: true
+        in: query
+        name: subject-type
+        schema:
+          items:
+            enum:
+            - issue
+            - pull
+            - commit
+            - repository
+            type: string
+          type: array
+        style: form
+      - description: Only show notifications updated after the given time. This is
+          a timestamp in RFC 3339 format
+        in: query
+        name: since
+        schema:
+          format: date-time
+          type: string
+      - description: Only show notifications updated before the given time. This is
+          a timestamp in RFC 3339 format
+        in: query
+        name: before
+        schema:
+          format: date-time
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/NotificationThread'
+                type: array
+          description: NotificationThreadList
+      summary: List users's notification threads on a specific repo
+      tags:
+      - notification
+    put:
+      operationId: notifyReadRepoList
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: "If true, mark all notifications on this repo. Default value\
+          \ is false"
+        in: query
+        name: all
+        schema:
+          type: string
+      - description: "Mark notifications with the provided status types. Options are:\
+          \ unread, read and/or pinned. Defaults to unread."
+        explode: true
+        in: query
+        name: status-types
+        schema:
+          items:
+            type: string
+          type: array
+        style: form
+      - description: Status to mark notifications as. Defaults to read.
+        in: query
+        name: to-status
+        schema:
+          type: string
+      - description: Describes the last point that notifications were checked. Anything
+          updated since this time will not be updated.
+        in: query
+        name: last_read_at
+        schema:
+          format: date-time
+          type: string
+      responses:
+        "205":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/NotificationThread'
+                type: array
+          description: NotificationThreadList
+      summary: "Mark notification threads as read, pinned or unread on a specific\
+        \ repo"
+      tags:
+      - notification
+  /repos/{owner}/{repo}/pulls:
+    get:
+      operationId: repoListPullRequests
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: "State of pull request: open or closed (optional)"
+        in: query
+        name: state
+        schema:
+          enum:
+          - closed
+          - open
+          - all
+          type: string
+      - description: Type of sort
+        in: query
+        name: sort
+        schema:
+          enum:
+          - oldest
+          - recentupdate
+          - leastupdate
+          - mostcomment
+          - leastcomment
+          - priority
+          type: string
+      - description: ID of the milestone
+        in: query
+        name: milestone
+        schema:
+          format: int64
+          type: integer
+      - description: Label IDs
+        explode: true
+        in: query
+        name: labels
+        schema:
+          items:
+            format: int64
+            type: integer
+          type: array
+        style: form
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/PullRequest'
+                type: array
+          description: PullRequestList
+      summary: List a repo's pull requests
+      tags:
+      - repository
+    post:
+      operationId: repoCreatePullRequest
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreatePullRequestOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PullRequest'
+          description: PullRequest
+        "409":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a pull request
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/pulls/{index}:
+    get:
+      operationId: repoGetPullRequest
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request to get
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PullRequest'
+          description: PullRequest
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a pull request
+      tags:
+      - repository
+    patch:
+      operationId: repoEditPullRequest
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request to edit
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditPullRequestOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PullRequest'
+          description: PullRequest
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "409":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "412":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: "Update a pull request. If using deadline only the date will be taken\
+        \ into account, and time of day ignored."
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/pulls/{index}.{diffType}:
+    get:
+      operationId: repoDownloadPullDiffOrPatch
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request to get
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: whether the output is diff or patch
+        in: path
+        name: diffType
+        required: true
+        schema:
+          enum:
+          - diff
+          - patch
+          type: string
+      - description: "whether to include binary file changes. if true, the diff is\
+          \ applicable with `git apply`"
+        in: query
+        name: binary
+        schema:
+          type: boolean
+      responses:
+        "200":
+          content:
+            text/plain:
+              schema:
+                type: string
+          description: APIString is a string response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a pull request diff or patch
+      tags:
+      - repository
+  /repos/{owner}/{repo}/pulls/{index}/commits:
+    get:
+      operationId: repoGetPullRequestCommits
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request to get
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Commit'
+                type: array
+          description: CommitList
+          headers:
+            X-HasMore:
+              description: True if there is another page
+              schema:
+                type: boolean
+            X-PageCount:
+              description: Total number of pages
+              schema:
+                format: int64
+                type: integer
+            X-PerPage:
+              description: Commits per page
+              schema:
+                format: int64
+                type: integer
+            X-Total:
+              description: Total commit count
+              schema:
+                format: int64
+                type: integer
+            X-Page:
+              description: The current page
+              schema:
+                format: int64
+                type: integer
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get commits for a pull request
+      tags:
+      - repository
+  /repos/{owner}/{repo}/pulls/{index}/files:
+    get:
+      operationId: repoGetPullRequestFiles
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request to get
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: skip to given file
+        in: query
+        name: skip-to
+        schema:
+          type: string
+      - description: whitespace behavior
+        in: query
+        name: whitespace
+        schema:
+          enum:
+          - ignore-all
+          - ignore-change
+          - ignore-eol
+          - show-all
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/ChangedFile'
+                type: array
+          description: ChangedFileList
+          headers:
+            X-HasMore:
+              description: True if there is another page
+              schema:
+                type: boolean
+            X-PageCount:
+              description: Total number of pages
+              schema:
+                format: int64
+                type: integer
+            X-PerPage:
+              description: Commits per page
+              schema:
+                format: int64
+                type: integer
+            X-Total:
+              description: Total commit count
+              schema:
+                format: int64
+                type: integer
+            X-Page:
+              description: The current page
+              schema:
+                format: int64
+                type: integer
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get changed files for a pull request
+      tags:
+      - repository
+  /repos/{owner}/{repo}/pulls/{index}/merge:
+    delete:
+      operationId: repoCancelScheduledAutoMerge
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request to merge
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Cancel the scheduled auto merge for the given pull request
+      tags:
+      - repository
+    get:
+      operationId: repoPullRequestIsMerged
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: pull request has been merged
+        "404":
+          content: {}
+          description: pull request has not been merged
+      summary: Check if a pull request has been merged
+      tags:
+      - repository
+    post:
+      operationId: repoMergePullRequest
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request to merge
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/MergePullRequestOption'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/MergePullRequestOption'
+        required: false
+      responses:
+        "200":
+          content: {}
+          description: APIEmpty is an empty response
+        "405":
+          content: {}
+          description: APIEmpty is an empty response
+        "409":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Merge a pull request
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/pulls/{index}/requested_reviewers:
+    delete:
+      operationId: repoDeletePullReviewRequests
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PullReviewRequestOptions'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/PullReviewRequestOptions'
+        required: true
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: cancel review requests for a pull request
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+    post:
+      operationId: repoCreatePullReviewRequests
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/PullReviewRequestOptions'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/PullReviewRequestOptions'
+        required: true
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/PullReview'
+                type: array
+          description: PullReviewList
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: create review requests for a pull request
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/pulls/{index}/reviews:
+    get:
+      operationId: repoListPullReviews
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/PullReview'
+                type: array
+          description: PullReviewList
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: List all reviews for a pull request
+      tags:
+      - repository
+    post:
+      operationId: repoCreatePullReview
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreatePullReviewOptions'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/CreatePullReviewOptions'
+        required: true
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PullReview'
+          description: PullReview
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a review to an pull request
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/pulls/{index}/reviews/{id}:
+    delete:
+      operationId: repoDeletePullReview
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: id of the review
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Delete a specific review from a pull request
+      tags:
+      - repository
+    get:
+      operationId: repoGetPullReview
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: id of the review
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PullReview'
+          description: PullReview
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a specific review for a pull request
+      tags:
+      - repository
+    post:
+      operationId: repoSubmitPullReview
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: id of the review
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SubmitPullReviewOptions'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/SubmitPullReviewOptions'
+        required: true
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PullReview'
+          description: PullReview
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Submit a pending review to an pull request
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/pulls/{index}/reviews/{id}/comments:
+    get:
+      operationId: repoGetPullReviewComments
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: id of the review
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/PullReviewComment'
+                type: array
+          description: PullCommentList
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a specific review for a pull request
+      tags:
+      - repository
+  /repos/{owner}/{repo}/pulls/{index}/reviews/{id}/dismissals:
+    post:
+      operationId: repoDismissPullReview
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: id of the review
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/DismissPullReviewOptions'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/DismissPullReviewOptions'
+        required: true
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PullReview'
+          description: PullReview
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Dismiss a review for a pull request
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/pulls/{index}/reviews/{id}/undismissals:
+    post:
+      operationId: repoUnDismissPullReview
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: id of the review
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PullReview'
+          description: PullReview
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Cancel to dismiss a review for a pull request
+      tags:
+      - repository
+  /repos/{owner}/{repo}/pulls/{index}/update:
+    post:
+      operationId: repoUpdatePullRequest
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: index of the pull request to get
+        in: path
+        name: index
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: how to update pull request
+        in: query
+        name: style
+        schema:
+          enum:
+          - merge
+          - rebase
+          type: string
+      responses:
+        "200":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "409":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Merge PR's baseBranch into headBranch
+      tags:
+      - repository
+  /repos/{owner}/{repo}/push_mirrors:
+    get:
+      operationId: repoListPushMirrors
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/PushMirror'
+                type: array
+          description: PushMirrorList
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Get all push mirrors of the repository
+      tags:
+      - repository
+    post:
+      operationId: repoAddPushMirror
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreatePushMirrorOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PushMirror'
+          description: PushMirror
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: add a push mirror to the repository
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/push_mirrors-sync:
+    post:
+      operationId: repoPushMirrorSync
+      parameters:
+      - description: owner of the repo to sync
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo to sync
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content: {}
+          description: APIEmpty is an empty response
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Sync all push mirrored repository
+      tags:
+      - repository
+  /repos/{owner}/{repo}/push_mirrors/{name}:
+    delete:
+      operationId: repoDeletePushMirror
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: remote name of the pushMirror
+        in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: deletes a push mirror from a repository by remoteName
+      tags:
+      - repository
+    get:
+      operationId: repoGetPushMirrorByRemoteName
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: remote name of push mirror
+        in: path
+        name: name
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PushMirror'
+          description: PushMirror
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Get push mirror of the repository by remoteName
+      tags:
+      - repository
+  /repos/{owner}/{repo}/raw/{filepath}:
+    get:
+      operationId: repoGetRawFile
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: filepath of the file to get
+        in: path
+        name: filepath
+        required: true
+        schema:
+          type: string
+      - description: The name of the commit/branch/tag. Default the repository’s default
+          branch (usually master)
+        in: query
+        name: ref
+        schema:
+          type: string
+      responses:
+        "200":
+          content: {}
+          description: Returns raw file content.
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a file from a repository
+      tags:
+      - repository
+  /repos/{owner}/{repo}/releases:
+    get:
+      operationId: repoListReleases
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: "filter (exclude / include) drafts, if you dont have repo write\
+          \ access none will show"
+        in: query
+        name: draft
+        schema:
+          type: boolean
+      - description: filter (exclude / include) pre-releases
+        in: query
+        name: pre-release
+        schema:
+          type: boolean
+      - description: "page size of results, deprecated - use limit"
+        in: query
+        name: per_page
+        schema:
+          type: integer
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Release'
+                type: array
+          description: ReleaseList
+      summary: List a repo's releases
+      tags:
+      - repository
+    post:
+      operationId: repoCreateRelease
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateReleaseOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Release'
+          description: Release
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "409":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a release
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/releases/latest:
+    get:
+      operationId: repoGetLatestRelease
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Release'
+          description: Release
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: "Gets the most recent non-prerelease, non-draft release of a repository,\
+        \ sorted by created_at"
+      tags:
+      - repository
+  /repos/{owner}/{repo}/releases/tags/{tag}:
+    delete:
+      operationId: repoDeleteReleaseByTag
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: tag name of the release to delete
+        in: path
+        name: tag
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "405":
+          content: {}
+          description: APIEmpty is an empty response
+      summary: Delete a release by tag name
+      tags:
+      - repository
+    get:
+      operationId: repoGetReleaseByTag
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: tag name of the release to get
+        in: path
+        name: tag
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Release'
+          description: Release
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a release by tag name
+      tags:
+      - repository
+  /repos/{owner}/{repo}/releases/{id}:
+    delete:
+      operationId: repoDeleteRelease
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the release to delete
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "405":
+          content: {}
+          description: APIEmpty is an empty response
+      summary: Delete a release
+      tags:
+      - repository
+    get:
+      operationId: repoGetRelease
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the release to get
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Release'
+          description: Release
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a release
+      tags:
+      - repository
+    patch:
+      operationId: repoEditRelease
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the release to edit
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditReleaseOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Release'
+          description: Release
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Update a release
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/releases/{id}/assets:
+    get:
+      operationId: repoListReleaseAttachments
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the release
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Attachment'
+                type: array
+          description: AttachmentList
+      summary: List release's attachments
+      tags:
+      - repository
+    post:
+      operationId: repoCreateReleaseAttachment
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the release
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: name of the attachment
+        in: query
+        name: name
+        schema:
+          type: string
+      requestBody:
+        content:
+          multipart/form-data:
+            schema:
+              $ref: '#/components/schemas/issueCreateIssueCommentAttachment_request'
+        required: true
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Attachment'
+          description: Attachment
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a release attachment
+      tags:
+      - repository
+  /repos/{owner}/{repo}/releases/{id}/assets/{attachment_id}:
+    delete:
+      operationId: repoDeleteReleaseAttachment
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the release
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: id of the attachment to delete
+        in: path
+        name: attachment_id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+      summary: Delete a release attachment
+      tags:
+      - repository
+    get:
+      operationId: repoGetReleaseAttachment
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the release
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: id of the attachment to get
+        in: path
+        name: attachment_id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Attachment'
+          description: Attachment
+      summary: Get a release attachment
+      tags:
+      - repository
+    patch:
+      operationId: repoEditReleaseAttachment
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: id of the release
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: id of the attachment to edit
+        in: path
+        name: attachment_id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditAttachmentOptions'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Attachment'
+          description: Attachment
+      summary: Edit a release attachment
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/reviewers:
+    get:
+      operationId: repoGetReviewers
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/User'
+                type: array
+          description: UserList
+      summary: Return all users that can be requested to review in this repo
+      tags:
+      - repository
+  /repos/{owner}/{repo}/signing-key.gpg:
+    get:
+      operationId: repoSigningKey
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            text/plain:
+              schema:
+                type: string
+          description: GPG armored public key
+      summary: Get signing-key.gpg for given repository
+      tags:
+      - repository
+  /repos/{owner}/{repo}/stargazers:
+    get:
+      operationId: repoListStargazers
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/User'
+                type: array
+          description: UserList
+      summary: List a repo's stargazers
+      tags:
+      - repository
+  /repos/{owner}/{repo}/statuses/{sha}:
+    get:
+      operationId: repoListStatuses
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: sha of the commit
+        in: path
+        name: sha
+        required: true
+        schema:
+          type: string
+      - description: type of sort
+        in: query
+        name: sort
+        schema:
+          enum:
+          - oldest
+          - recentupdate
+          - leastupdate
+          - leastindex
+          - highestindex
+          type: string
+      - description: type of state
+        in: query
+        name: state
+        schema:
+          enum:
+          - pending
+          - success
+          - error
+          - failure
+          - warning
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/CommitStatus'
+                type: array
+          description: CommitStatusList
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Get a commit's statuses
+      tags:
+      - repository
+    post:
+      operationId: repoCreateStatus
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: sha of the commit
+        in: path
+        name: sha
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateStatusOption'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/CreateStatusOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/CommitStatus'
+          description: CommitStatus
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a commit status
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/subscribers:
+    get:
+      operationId: repoListSubscribers
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/User'
+                type: array
+          description: UserList
+      summary: List a repo's watchers
+      tags:
+      - repository
+  /repos/{owner}/{repo}/subscription:
+    delete:
+      operationId: userCurrentDeleteSubscription
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+      summary: Unwatch a repo
+      tags:
+      - repository
+    get:
+      operationId: userCurrentCheckSubscription
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WatchInfo'
+            text/html:
+              schema:
+                $ref: '#/components/schemas/WatchInfo'
+          description: WatchInfo
+        "404":
+          content: {}
+          description: User is not watching this repo or repo do not exist
+      summary: Check if the current user is watching a repo
+      tags:
+      - repository
+    put:
+      operationId: userCurrentPutSubscription
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WatchInfo'
+            text/html:
+              schema:
+                $ref: '#/components/schemas/WatchInfo'
+          description: WatchInfo
+      summary: Watch a repo
+      tags:
+      - repository
+  /repos/{owner}/{repo}/tags:
+    get:
+      operationId: repoListTags
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: "page size of results, default maximum page size is 50"
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Tag'
+                type: array
+          description: TagList
+      summary: List a repository's tags
+      tags:
+      - repository
+    post:
+      operationId: repoCreateTag
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateTagOption'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/CreateTagOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Tag'
+          description: Tag
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "405":
+          content: {}
+          description: APIEmpty is an empty response
+        "409":
+          content: {}
+          description: APIConflict is a conflict empty response
+      summary: Create a new git tag in a repository
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/tags/{tag}:
+    delete:
+      operationId: repoDeleteTag
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: name of tag to delete
+        in: path
+        name: tag
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "405":
+          content: {}
+          description: APIEmpty is an empty response
+        "409":
+          content: {}
+          description: APIConflict is a conflict empty response
+      summary: Delete a repository's tag by name
+      tags:
+      - repository
+    get:
+      operationId: repoGetTag
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: name of tag
+        in: path
+        name: tag
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Tag'
+          description: Tag
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get the tag of a repository by tag name
+      tags:
+      - repository
+  /repos/{owner}/{repo}/teams:
+    get:
+      operationId: repoListTeams
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Team'
+                type: array
+          description: TeamList
+      summary: List a repository's teams
+      tags:
+      - repository
+  /repos/{owner}/{repo}/teams/{team}:
+    delete:
+      operationId: repoDeleteTeam
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: team name
+        in: path
+        name: team
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "405":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Delete a team from a repository
+      tags:
+      - repository
+    get:
+      operationId: repoCheckTeam
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: team name
+        in: path
+        name: team
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Team'
+          description: Team
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "405":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Check if a team is assigned to a repository
+      tags:
+      - repository
+    put:
+      operationId: repoAddTeam
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: team name
+        in: path
+        name: team
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "405":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Add a team to a repository
+      tags:
+      - repository
+  /repos/{owner}/{repo}/times:
+    get:
+      operationId: repoTrackedTimes
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: optional filter by user (available for issue managers)
+        in: query
+        name: user
+        schema:
+          type: string
+      - description: Only show times updated after the given time. This is a timestamp
+          in RFC 3339 format
+        in: query
+        name: since
+        schema:
+          format: date-time
+          type: string
+      - description: Only show times updated before the given time. This is a timestamp
+          in RFC 3339 format
+        in: query
+        name: before
+        schema:
+          format: date-time
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/TrackedTime'
+                type: array
+          description: TrackedTimeList
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: List a repo's tracked times
+      tags:
+      - repository
+  /repos/{owner}/{repo}/times/{user}:
+    get:
+      deprecated: true
+      operationId: userTrackedTimes
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: username of user
+        in: path
+        name: user
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/TrackedTime'
+                type: array
+          description: TrackedTimeList
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: List a user's tracked times in a repo
+      tags:
+      - repository
+  /repos/{owner}/{repo}/topics:
+    get:
+      operationId: repoListTopics
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/TopicName'
+          description: TopicNames
+      summary: Get list of topics that a repository has
+      tags:
+      - repository
+    put:
+      operationId: repoUpdateTopics
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/RepoTopicOptions'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/RepoTopicOptions'
+        required: false
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "422":
+          content: {}
+          description: APIInvalidTopicsError is error format response to invalid topics
+          headers:
+            invalidTopics:
+              schema:
+                items:
+                  type: string
+                type: array
+            message:
+              schema:
+                type: string
+      summary: Replace list of topics for a repository
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/topics/{topic}:
+    delete:
+      operationId: repoDeleteTopic
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: name of the topic to delete
+        in: path
+        name: topic
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "422":
+          content: {}
+          description: APIInvalidTopicsError is error format response to invalid topics
+          headers:
+            invalidTopics:
+              schema:
+                items:
+                  type: string
+                type: array
+            message:
+              schema:
+                type: string
+      summary: Delete a topic from a repository
+      tags:
+      - repository
+    put:
+      operationId: repoAddTopic
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: name of the topic to add
+        in: path
+        name: topic
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "422":
+          content: {}
+          description: APIInvalidTopicsError is error format response to invalid topics
+          headers:
+            invalidTopics:
+              schema:
+                items:
+                  type: string
+                type: array
+            message:
+              schema:
+                type: string
+      summary: Add a topic to a repository
+      tags:
+      - repository
+  /repos/{owner}/{repo}/transfer:
+    post:
+      operationId: repoTransfer
+      parameters:
+      - description: owner of the repo to transfer
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo to transfer
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/TransferRepoOption'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/TransferRepoOption'
+        description: Transfer Options
+        required: true
+      responses:
+        "202":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Repository'
+          description: Repository
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Transfer a repo ownership
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/transfer/accept:
+    post:
+      operationId: acceptRepoTransfer
+      parameters:
+      - description: owner of the repo to transfer
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo to transfer
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "202":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Repository'
+          description: Repository
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Accept a repo transfer
+      tags:
+      - repository
+  /repos/{owner}/{repo}/transfer/reject:
+    post:
+      operationId: rejectRepoTransfer
+      parameters:
+      - description: owner of the repo to transfer
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo to transfer
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Repository'
+          description: Repository
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Reject a repo transfer
+      tags:
+      - repository
+  /repos/{owner}/{repo}/wiki/new:
+    post:
+      operationId: repoCreateWikiPage
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateWikiPageOptions'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WikiPage'
+            text/html:
+              schema:
+                $ref: '#/components/schemas/WikiPage'
+          description: WikiPage
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a wiki page
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/wiki/page/{pageName}:
+    delete:
+      operationId: repoDeleteWikiPage
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: name of the page
+        in: path
+        name: pageName
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Delete a wiki page
+      tags:
+      - repository
+    get:
+      operationId: repoGetWikiPage
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: name of the page
+        in: path
+        name: pageName
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WikiPage'
+          description: WikiPage
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a wiki page
+      tags:
+      - repository
+    patch:
+      operationId: repoEditWikiPage
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: name of the page
+        in: path
+        name: pageName
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateWikiPageOptions'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WikiPage'
+            text/html:
+              schema:
+                $ref: '#/components/schemas/WikiPage'
+          description: WikiPage
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Edit a wiki page
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repos/{owner}/{repo}/wiki/pages:
+    get:
+      operationId: repoGetWikiPages
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/WikiPageMetaData'
+                type: array
+          description: WikiPageList
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get all wiki pages
+      tags:
+      - repository
+  /repos/{owner}/{repo}/wiki/revisions/{pageName}:
+    get:
+      operationId: repoGetWikiPageRevisions
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      - description: name of the page
+        in: path
+        name: pageName
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/WikiCommitList'
+          description: WikiCommitList
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get revisions of a wiki page
+      tags:
+      - repository
+  /repos/{template_owner}/{template_repo}/generate:
+    post:
+      operationId: generateRepo
+      parameters:
+      - description: name of the template repository owner
+        in: path
+        name: template_owner
+        required: true
+        schema:
+          type: string
+      - description: name of the template repository
+        in: path
+        name: template_repo
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/GenerateRepoOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Repository'
+          description: Repository
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "409":
+          content: {}
+          description: The repository with the same name already exists.
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a repository using a template
+      tags:
+      - repository
+      x-codegen-request-body-name: body
+  /repositories/{id}:
+    get:
+      operationId: repoGetByID
+      parameters:
+      - description: id of the repo to get
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Repository'
+          description: Repository
+      summary: Get a repository by id
+      tags:
+      - repository
+  /settings/api:
+    get:
+      operationId: getGeneralAPISettings
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GeneralAPISettings'
+          description: GeneralAPISettings
+      summary: Get instance's global settings for api
+      tags:
+      - settings
+  /settings/attachment:
+    get:
+      operationId: getGeneralAttachmentSettings
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GeneralAttachmentSettings'
+          description: GeneralAttachmentSettings
+      summary: Get instance's global settings for Attachment
+      tags:
+      - settings
+  /settings/repository:
+    get:
+      operationId: getGeneralRepositorySettings
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GeneralRepoSettings'
+          description: GeneralRepoSettings
+      summary: Get instance's global settings for repositories
+      tags:
+      - settings
+  /settings/ui:
+    get:
+      operationId: getGeneralUISettings
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GeneralUISettings'
+          description: GeneralUISettings
+      summary: Get instance's global settings for ui
+      tags:
+      - settings
+  /signing-key.gpg:
+    get:
+      operationId: getSigningKey
+      responses:
+        "200":
+          content:
+            text/plain:
+              schema:
+                type: string
+          description: GPG armored public key
+      summary: Get default signing-key.gpg
+      tags:
+      - miscellaneous
+  /teams/{id}:
+    delete:
+      operationId: orgDeleteTeam
+      parameters:
+      - description: id of the team to delete
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: team deleted
+      summary: Delete a team
+      tags:
+      - organization
+    get:
+      operationId: orgGetTeam
+      parameters:
+      - description: id of the team to get
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Team'
+          description: Team
+      summary: Get a team
+      tags:
+      - organization
+    patch:
+      operationId: orgEditTeam
+      parameters:
+      - description: id of the team to edit
+        in: path
+        name: id
+        required: true
+        schema:
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/EditTeamOption'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Team'
+          description: Team
+      summary: Edit a team
+      tags:
+      - organization
+      x-codegen-request-body-name: body
+  /teams/{id}/members:
+    get:
+      operationId: orgListTeamMembers
+      parameters:
+      - description: id of the team
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/User'
+                type: array
+          description: UserList
+      summary: List a team's members
+      tags:
+      - organization
+  /teams/{id}/members/{username}:
+    delete:
+      operationId: orgRemoveTeamMember
+      parameters:
+      - description: id of the team
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: username of the user to remove
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Remove a team member
+      tags:
+      - organization
+    get:
+      operationId: orgListTeamMember
+      parameters:
+      - description: id of the team
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: username of the member to list
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/User'
+          description: User
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: List a particular member of team
+      tags:
+      - organization
+    put:
+      operationId: orgAddTeamMember
+      parameters:
+      - description: id of the team
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: username of the user to add
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Add a team member
+      tags:
+      - organization
+  /teams/{id}/repos:
+    get:
+      operationId: orgListTeamRepos
+      parameters:
+      - description: id of the team
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Repository'
+                type: array
+          description: RepositoryList
+      summary: List a team's repos
+      tags:
+      - organization
+  /teams/{id}/repos/{org}/{repo}:
+    delete:
+      description: "This does not delete the repository, it only removes the repository\
+        \ from the team."
+      operationId: orgRemoveTeamRepository
+      parameters:
+      - description: id of the team
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: organization that owns the repo to remove
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: name of the repo to remove
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Remove a repository from a team
+      tags:
+      - organization
+    get:
+      operationId: orgListTeamRepo
+      parameters:
+      - description: id of the team
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: organization that owns the repo to list
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: name of the repo to list
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Repository'
+          description: Repository
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: List a particular repo of team
+      tags:
+      - organization
+    put:
+      operationId: orgAddTeamRepository
+      parameters:
+      - description: id of the team
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      - description: organization that owns the repo to add
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      - description: name of the repo to add
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Add a repository to a team
+      tags:
+      - organization
+  /topics/search:
+    get:
+      operationId: topicSearch
+      parameters:
+      - description: keywords to search
+        in: query
+        name: q
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/TopicResponse'
+                type: array
+          description: TopicListResponse
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: search topics via keyword
+      tags:
+      - repository
+  /user:
+    get:
+      operationId: userGetCurrent
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/User'
+          description: User
+      summary: Get the authenticated user
+      tags:
+      - user
+  /user/applications/oauth2:
+    get:
+      operationId: userGetOauth2Application
+      parameters:
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/OAuth2Application'
+                type: array
+          description: OAuth2ApplicationList represents a list of OAuth2 applications.
+      summary: List the authenticated user's oauth2 applications
+      tags:
+      - user
+    post:
+      operationId: userCreateOAuth2Application
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateOAuth2ApplicationOptions'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/CreateOAuth2ApplicationOptions'
+        required: true
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/OAuth2Application'
+          description: OAuth2Application
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: creates a new OAuth2 application
+      tags:
+      - user
+      x-codegen-request-body-name: body
+  /user/applications/oauth2/{id}:
+    delete:
+      operationId: userDeleteOAuth2Application
+      parameters:
+      - description: token to be deleted
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: delete an OAuth2 Application
+      tags:
+      - user
+    get:
+      operationId: userGetOAuth2Application
+      parameters:
+      - description: Application ID to be found
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/OAuth2Application'
+          description: OAuth2Application
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: get an OAuth2 Application
+      tags:
+      - user
+    patch:
+      operationId: userUpdateOAuth2Application
+      parameters:
+      - description: application to be updated
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateOAuth2ApplicationOptions'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/CreateOAuth2ApplicationOptions'
+        required: true
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/OAuth2Application'
+          description: OAuth2Application
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: "update an OAuth2 Application, this includes regenerating the client\
+        \ secret"
+      tags:
+      - user
+      x-codegen-request-body-name: body
+  /user/emails:
+    delete:
+      operationId: userDeleteEmail
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/DeleteEmailOption'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/DeleteEmailOption'
+        required: false
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Delete email addresses
+      tags:
+      - user
+      x-codegen-request-body-name: body
+    get:
+      operationId: userListEmails
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Email'
+                type: array
+          description: EmailList
+      summary: List the authenticated user's email addresses
+      tags:
+      - user
+    post:
+      operationId: userAddEmail
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateEmailOption'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/CreateEmailOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Email'
+                type: array
+          description: EmailList
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Add email addresses
+      tags:
+      - user
+      x-codegen-request-body-name: body
+  /user/followers:
+    get:
+      operationId: userCurrentListFollowers
+      parameters:
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/User'
+                type: array
+          description: UserList
+      summary: List the authenticated user's followers
+      tags:
+      - user
+  /user/following:
+    get:
+      operationId: userCurrentListFollowing
+      parameters:
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/User'
+                type: array
+          description: UserList
+      summary: List the users that the authenticated user is following
+      tags:
+      - user
+  /user/following/{username}:
+    delete:
+      operationId: userCurrentDeleteFollow
+      parameters:
+      - description: username of user to unfollow
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+      summary: Unfollow a user
+      tags:
+      - user
+    get:
+      operationId: userCurrentCheckFollowing
+      parameters:
+      - description: username of followed user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Check whether a user is followed by the authenticated user
+      tags:
+      - user
+    put:
+      operationId: userCurrentPutFollow
+      parameters:
+      - description: username of user to follow
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+      summary: Follow a user
+      tags:
+      - user
+  /user/gpg_key_token:
+    get:
+      operationId: getVerificationToken
+      responses:
+        "200":
+          content:
+            text/plain:
+              schema:
+                type: string
+          description: APIString is a string response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a Token to verify
+      tags:
+      - user
+  /user/gpg_key_verify:
+    post:
+      operationId: userVerifyGPGKey
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GPGKey'
+          description: GPGKey
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Verify a GPG key
+      tags:
+      - user
+  /user/gpg_keys:
+    get:
+      operationId: userCurrentListGPGKeys
+      parameters:
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/GPGKey'
+                type: array
+          description: GPGKeyList
+      summary: List the authenticated user's GPG keys
+      tags:
+      - user
+    post:
+      operationId: userCurrentPostGPGKey
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateGPGKeyOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GPGKey'
+          description: GPGKey
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a GPG key
+      tags:
+      - user
+      x-codegen-request-body-name: Form
+  /user/gpg_keys/{id}:
+    delete:
+      operationId: userCurrentDeleteGPGKey
+      parameters:
+      - description: id of key to delete
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Remove a GPG key
+      tags:
+      - user
+    get:
+      operationId: userCurrentGetGPGKey
+      parameters:
+      - description: id of key to get
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/GPGKey'
+          description: GPGKey
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a GPG key
+      tags:
+      - user
+  /user/keys:
+    get:
+      operationId: userCurrentListKeys
+      parameters:
+      - description: fingerprint of the key
+        in: query
+        name: fingerprint
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/PublicKey'
+                type: array
+          description: PublicKeyList
+      summary: List the authenticated user's public keys
+      tags:
+      - user
+    post:
+      operationId: userCurrentPostKey
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateKeyOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PublicKey'
+          description: PublicKey
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a public key
+      tags:
+      - user
+      x-codegen-request-body-name: body
+  /user/keys/{id}:
+    delete:
+      operationId: userCurrentDeleteKey
+      parameters:
+      - description: id of key to delete
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Delete a public key
+      tags:
+      - user
+    get:
+      operationId: userCurrentGetKey
+      parameters:
+      - description: id of key to get
+        in: path
+        name: id
+        required: true
+        schema:
+          format: int64
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/PublicKey'
+          description: PublicKey
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a public key
+      tags:
+      - user
+  /user/orgs:
+    get:
+      operationId: orgListCurrentUserOrgs
+      parameters:
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Organization'
+                type: array
+          description: OrganizationList
+      summary: List the current user's organizations
+      tags:
+      - organization
+  /user/repos:
+    get:
+      operationId: userCurrentListRepos
+      parameters:
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Repository'
+                type: array
+          description: RepositoryList
+      summary: List the repos that the authenticated user owns
+      tags:
+      - user
+    post:
+      operationId: createCurrentUserRepo
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateRepoOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Repository'
+          description: Repository
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "409":
+          content: {}
+          description: The repository with the same name already exists.
+        "422":
+          content: {}
+          description: APIValidationError is error format response related to input
+            validation
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create a repository
+      tags:
+      - repository
+      - user
+      x-codegen-request-body-name: body
+  /user/settings:
+    get:
+      operationId: getUserSettings
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/UserSettings'
+                type: array
+          description: UserSettings
+      summary: Get user settings
+      tags:
+      - user
+    patch:
+      operationId: updateUserSettings
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/UserSettingsOptions'
+          text/plain:
+            schema:
+              $ref: '#/components/schemas/UserSettingsOptions'
+        required: false
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/UserSettings'
+                type: array
+          description: UserSettings
+      summary: Update user settings
+      tags:
+      - user
+      x-codegen-request-body-name: body
+  /user/starred:
+    get:
+      operationId: userCurrentListStarred
+      parameters:
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Repository'
+                type: array
+          description: RepositoryList
+      summary: The repos that the authenticated user has starred
+      tags:
+      - user
+  /user/starred/{owner}/{repo}:
+    delete:
+      operationId: userCurrentDeleteStar
+      parameters:
+      - description: owner of the repo to unstar
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo to unstar
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+      summary: Unstar the given repo
+      tags:
+      - user
+    get:
+      operationId: userCurrentCheckStarring
+      parameters:
+      - description: owner of the repo
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Whether the authenticated is starring the repo
+      tags:
+      - user
+    put:
+      operationId: userCurrentPutStar
+      parameters:
+      - description: owner of the repo to star
+        in: path
+        name: owner
+        required: true
+        schema:
+          type: string
+      - description: name of the repo to star
+        in: path
+        name: repo
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+      summary: Star the given repo
+      tags:
+      - user
+  /user/stopwatches:
+    get:
+      operationId: userGetStopWatches
+      parameters:
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/StopWatch'
+                type: array
+          description: StopWatchList
+      summary: Get list of all existing stopwatches
+      tags:
+      - user
+  /user/subscriptions:
+    get:
+      operationId: userCurrentListSubscriptions
+      parameters:
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Repository'
+                type: array
+          description: RepositoryList
+      summary: List repositories watched by the authenticated user
+      tags:
+      - user
+  /user/teams:
+    get:
+      operationId: userListTeams
+      parameters:
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Team'
+                type: array
+          description: TeamList
+      summary: List all the teams a user belongs to
+      tags:
+      - user
+  /user/times:
+    get:
+      operationId: userCurrentTrackedTimes
+      parameters:
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      - description: Only show times updated after the given time. This is a timestamp
+          in RFC 3339 format
+        in: query
+        name: since
+        schema:
+          format: date-time
+          type: string
+      - description: Only show times updated before the given time. This is a timestamp
+          in RFC 3339 format
+        in: query
+        name: before
+        schema:
+          format: date-time
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/TrackedTime'
+                type: array
+          description: TrackedTimeList
+      summary: List the current user's tracked times
+      tags:
+      - user
+  /users/search:
+    get:
+      operationId: userSearch
+      parameters:
+      - description: keyword
+        in: query
+        name: q
+        schema:
+          type: string
+      - description: ID of the user to search for
+        in: query
+        name: uid
+        schema:
+          format: int64
+          type: integer
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/userSearch_200_response'
+          description: SearchResults of a successful search
+      summary: Search for users
+      tags:
+      - user
+  /users/{username}:
+    get:
+      operationId: userGet
+      parameters:
+      - description: username of user to get
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/User'
+          description: User
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a user
+      tags:
+      - user
+  /users/{username}/followers:
+    get:
+      operationId: userListFollowers
+      parameters:
+      - description: username of user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/User'
+                type: array
+          description: UserList
+      summary: List the given user's followers
+      tags:
+      - user
+  /users/{username}/following:
+    get:
+      operationId: userListFollowing
+      parameters:
+      - description: username of user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/User'
+                type: array
+          description: UserList
+      summary: List the users that the given user is following
+      tags:
+      - user
+  /users/{username}/following/{target}:
+    get:
+      operationId: userCheckFollowing
+      parameters:
+      - description: username of following user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      - description: username of followed user
+        in: path
+        name: target
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Check if one user is following another user
+      tags:
+      - user
+  /users/{username}/gpg_keys:
+    get:
+      operationId: userListGPGKeys
+      parameters:
+      - description: username of user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/GPGKey'
+                type: array
+          description: GPGKeyList
+      summary: List the given user's GPG keys
+      tags:
+      - user
+  /users/{username}/heatmap:
+    get:
+      operationId: userGetHeatmapData
+      parameters:
+      - description: username of user to get
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/UserHeatmapData'
+                type: array
+          description: UserHeatmapData
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get a user's heatmap
+      tags:
+      - user
+  /users/{username}/keys:
+    get:
+      operationId: userListKeys
+      parameters:
+      - description: username of user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      - description: fingerprint of the key
+        in: query
+        name: fingerprint
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/PublicKey'
+                type: array
+          description: PublicKeyList
+      summary: List the given user's public keys
+      tags:
+      - user
+  /users/{username}/orgs:
+    get:
+      operationId: orgListUserOrgs
+      parameters:
+      - description: username of user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Organization'
+                type: array
+          description: OrganizationList
+      summary: List a user's organizations
+      tags:
+      - organization
+  /users/{username}/orgs/{org}/permissions:
+    get:
+      operationId: orgGetUserPermissions
+      parameters:
+      - description: username of user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      - description: name of the organization
+        in: path
+        name: org
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/OrganizationPermissions'
+          description: OrganizationPermissions
+        "403":
+          content: {}
+          description: APIForbiddenError is a forbidden error response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+      summary: Get user permissions in organization
+      tags:
+      - organization
+  /users/{username}/repos:
+    get:
+      operationId: userListRepos
+      parameters:
+      - description: username of user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Repository'
+                type: array
+          description: RepositoryList
+      summary: List the repos owned by the given user
+      tags:
+      - user
+  /users/{username}/starred:
+    get:
+      operationId: userListStarred
+      parameters:
+      - description: username of user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Repository'
+                type: array
+          description: RepositoryList
+      summary: The repos that the given user has starred
+      tags:
+      - user
+  /users/{username}/subscriptions:
+    get:
+      operationId: userListSubscriptions
+      parameters:
+      - description: username of the user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/Repository'
+                type: array
+          description: RepositoryList
+      summary: List the repositories watched by a user
+      tags:
+      - user
+  /users/{username}/tokens:
+    get:
+      operationId: userGetTokens
+      parameters:
+      - description: username of user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      - description: page number of results to return (1-based)
+        in: query
+        name: page
+        schema:
+          type: integer
+      - description: page size of results
+        in: query
+        name: limit
+        schema:
+          type: integer
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                items:
+                  $ref: '#/components/schemas/AccessToken'
+                type: array
+          description: AccessTokenList represents a list of API access token.
+      summary: List the authenticated user's access tokens
+      tags:
+      - user
+    post:
+      operationId: userCreateToken
+      parameters:
+      - description: username of user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CreateAccessTokenOption'
+        required: false
+      responses:
+        "201":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/AccessToken'
+          description: AccessToken represents an API access token.
+        "400":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: Create an access token
+      tags:
+      - user
+      x-codegen-request-body-name: body
+  /users/{username}/tokens/{token}:
+    delete:
+      operationId: userDeleteAccessToken
+      parameters:
+      - description: username of user
+        in: path
+        name: username
+        required: true
+        schema:
+          type: string
+      - description: "token to be deleted, identified by ID and if not available by\
+          \ name"
+        in: path
+        name: token
+        required: true
+        schema:
+          type: string
+      responses:
+        "204":
+          content: {}
+          description: APIEmpty is an empty response
+        "404":
+          content: {}
+          description: APINotFound is a not found empty response
+        "422":
+          content: {}
+          description: APIError is error format response
+          headers:
+            message:
+              schema:
+                type: string
+            url:
+              schema:
+                type: string
+      summary: delete an access token
+      tags:
+      - user
+  /version:
+    get:
+      operationId: getVersion
+      responses:
+        "200":
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ServerVersion'
+          description: ServerVersion
+      summary: Returns the version of the Gitea application
+      tags:
+      - miscellaneous
+components:
+  responses:
+    AccessToken:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/AccessToken'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/AccessToken'
+      description: AccessToken represents an API access token.
+    AccessTokenList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/AccessToken'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/AccessToken'
+            type: array
+      description: AccessTokenList represents a list of API access token.
+    ActivityPub:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ActivityPub'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/ActivityPub'
+      description: ActivityPub
+    AnnotatedTag:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/AnnotatedTag'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/AnnotatedTag'
+      description: AnnotatedTag
+    Attachment:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Attachment'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/Attachment'
+      description: Attachment
+    AttachmentList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/Attachment'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/Attachment'
+            type: array
+      description: AttachmentList
+    Branch:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Branch'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/Branch'
+      description: Branch
+    BranchList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/Branch'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/Branch'
+            type: array
+      description: BranchList
+    BranchProtection:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/BranchProtection'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/BranchProtection'
+      description: BranchProtection
+    BranchProtectionList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/BranchProtection'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/BranchProtection'
+            type: array
+      description: BranchProtectionList
+    ChangedFileList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/ChangedFile'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/ChangedFile'
+            type: array
+      description: ChangedFileList
+      headers:
+        X-HasMore:
+          description: True if there is another page
+          schema:
+            type: boolean
+        X-PageCount:
+          description: Total number of pages
+          schema:
+            format: int64
+            type: integer
+        X-PerPage:
+          description: Commits per page
+          schema:
+            format: int64
+            type: integer
+        X-Total:
+          description: Total commit count
+          schema:
+            format: int64
+            type: integer
+        X-Page:
+          description: The current page
+          schema:
+            format: int64
+            type: integer
+    CombinedStatus:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/CombinedStatus'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/CombinedStatus'
+      description: CombinedStatus
+    Comment:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Comment'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/Comment'
+      description: Comment
+    CommentList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/Comment'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/Comment'
+            type: array
+      description: CommentList
+    Commit:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Commit'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/Commit'
+      description: Commit
+    CommitList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/Commit'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/Commit'
+            type: array
+      description: CommitList
+      headers:
+        X-HasMore:
+          description: True if there is another page
+          schema:
+            type: boolean
+        X-PageCount:
+          description: Total number of pages
+          schema:
+            format: int64
+            type: integer
+        X-PerPage:
+          description: Commits per page
+          schema:
+            format: int64
+            type: integer
+        X-Total:
+          description: Total commit count
+          schema:
+            format: int64
+            type: integer
+        X-Page:
+          description: The current page
+          schema:
+            format: int64
+            type: integer
+    CommitStatus:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/CommitStatus'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/CommitStatus'
+      description: CommitStatus
+    CommitStatusList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/CommitStatus'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/CommitStatus'
+            type: array
+      description: CommitStatusList
+    ContentsListResponse:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/ContentsResponse'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/ContentsResponse'
+            type: array
+      description: ContentsListResponse
+    ContentsResponse:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ContentsResponse'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/ContentsResponse'
+      description: ContentsResponse
+    CronList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/Cron'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/Cron'
+            type: array
+      description: CronList
+    DeployKey:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/DeployKey'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/DeployKey'
+      description: DeployKey
+    DeployKeyList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/DeployKey'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/DeployKey'
+            type: array
+      description: DeployKeyList
+    EmailList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/Email'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/Email'
+            type: array
+      description: EmailList
+    EmptyRepository:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/APIError'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/APIError'
+      description: EmptyRepository
+    FileDeleteResponse:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/FileDeleteResponse'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/FileDeleteResponse'
+      description: FileDeleteResponse
+    FileResponse:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/FileResponse'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/FileResponse'
+      description: FileResponse
+    GPGKey:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/GPGKey'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/GPGKey'
+      description: GPGKey
+    GPGKeyList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/GPGKey'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/GPGKey'
+            type: array
+      description: GPGKeyList
+    GeneralAPISettings:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/GeneralAPISettings'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/GeneralAPISettings'
+      description: GeneralAPISettings
+    GeneralAttachmentSettings:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/GeneralAttachmentSettings'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/GeneralAttachmentSettings'
+      description: GeneralAttachmentSettings
+    GeneralRepoSettings:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/GeneralRepoSettings'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/GeneralRepoSettings'
+      description: GeneralRepoSettings
+    GeneralUISettings:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/GeneralUISettings'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/GeneralUISettings'
+      description: GeneralUISettings
+    GitBlobResponse:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/GitBlobResponse'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/GitBlobResponse'
+      description: GitBlobResponse
+    GitHook:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/GitHook'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/GitHook'
+      description: GitHook
+    GitHookList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/GitHook'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/GitHook'
+            type: array
+      description: GitHookList
+    GitTreeResponse:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/GitTreeResponse'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/GitTreeResponse'
+      description: GitTreeResponse
+    Hook:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Hook'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/Hook'
+      description: Hook
+    HookList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/Hook'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/Hook'
+            type: array
+      description: HookList
+    Issue:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Issue'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/Issue'
+      description: Issue
+    IssueDeadline:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/IssueDeadline'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/IssueDeadline'
+      description: IssueDeadline
+    IssueList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/Issue'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/Issue'
+            type: array
+      description: IssueList
+    IssueTemplates:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/IssueTemplate'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/IssueTemplate'
+            type: array
+      description: IssueTemplates
+    Label:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Label'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/Label'
+      description: Label
+    LabelList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/Label'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/Label'
+            type: array
+      description: LabelList
+    LanguageStatistics:
+      content:
+        application/json:
+          schema:
+            additionalProperties:
+              format: int64
+              type: integer
+            type: object
+        text/html:
+          schema:
+            additionalProperties:
+              format: int64
+              type: integer
+            type: object
+      description: LanguageStatistics
+    MarkdownRender:
+      content:
+        application/json:
+          schema:
+            type: string
+        text/html:
+          schema:
+            type: string
+      description: MarkdownRender is a rendered markdown document
+    Milestone:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Milestone'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/Milestone'
+      description: Milestone
+    MilestoneList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/Milestone'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/Milestone'
+            type: array
+      description: MilestoneList
+    NodeInfo:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/NodeInfo'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/NodeInfo'
+      description: NodeInfo
+    Note:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Note'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/Note'
+      description: Note
+    NotificationCount:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/NotificationCount'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/NotificationCount'
+      description: Number of unread notifications
+    NotificationThread:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/NotificationThread'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/NotificationThread'
+      description: NotificationThread
+    NotificationThreadList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/NotificationThread'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/NotificationThread'
+            type: array
+      description: NotificationThreadList
+    OAuth2Application:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/OAuth2Application'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/OAuth2Application'
+      description: OAuth2Application
+    OAuth2ApplicationList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/OAuth2Application'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/OAuth2Application'
+            type: array
+      description: OAuth2ApplicationList represents a list of OAuth2 applications.
+    Organization:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Organization'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/Organization'
+      description: Organization
+    OrganizationList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/Organization'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/Organization'
+            type: array
+      description: OrganizationList
+    OrganizationPermissions:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/OrganizationPermissions'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/OrganizationPermissions'
+      description: OrganizationPermissions
+    Package:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Package'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/Package'
+      description: Package
+    PackageFileList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/PackageFile'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/PackageFile'
+            type: array
+      description: PackageFileList
+    PackageList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/Package'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/Package'
+            type: array
+      description: PackageList
+    PublicKey:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/PublicKey'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/PublicKey'
+      description: PublicKey
+    PublicKeyList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/PublicKey'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/PublicKey'
+            type: array
+      description: PublicKeyList
+    PullRequest:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/PullRequest'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/PullRequest'
+      description: PullRequest
+    PullRequestList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/PullRequest'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/PullRequest'
+            type: array
+      description: PullRequestList
+    PullReview:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/PullReview'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/PullReview'
+      description: PullReview
+    PullReviewComment:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/PullReviewComment'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/PullReviewComment'
+      description: PullComment
+    PullReviewCommentList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/PullReviewComment'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/PullReviewComment'
+            type: array
+      description: PullCommentList
+    PullReviewList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/PullReview'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/PullReview'
+            type: array
+      description: PullReviewList
+    PushMirror:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/PushMirror'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/PushMirror'
+      description: PushMirror
+    PushMirrorList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/PushMirror'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/PushMirror'
+            type: array
+      description: PushMirrorList
+    Reaction:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Reaction'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/Reaction'
+      description: Reaction
+    ReactionList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/Reaction'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/Reaction'
+            type: array
+      description: ReactionList
+    Reference:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Reference'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/Reference'
+      description: Reference
+    ReferenceList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/Reference'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/Reference'
+            type: array
+      description: ReferenceList
+    Release:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Release'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/Release'
+      description: Release
+    ReleaseList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/Release'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/Release'
+            type: array
+      description: ReleaseList
+    RepoCollaboratorPermission:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/RepoCollaboratorPermission'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/RepoCollaboratorPermission'
+      description: RepoCollaboratorPermission
+    Repository:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Repository'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/Repository'
+      description: Repository
+    RepositoryList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/Repository'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/Repository'
+            type: array
+      description: RepositoryList
+    SearchResults:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/SearchResults'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/SearchResults'
+      description: SearchResults
+    ServerVersion:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/ServerVersion'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/ServerVersion'
+      description: ServerVersion
+    StopWatch:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/StopWatch'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/StopWatch'
+      description: StopWatch
+    StopWatchList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/StopWatch'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/StopWatch'
+            type: array
+      description: StopWatchList
+    StringSlice:
+      content:
+        application/json:
+          schema:
+            items:
+              type: string
+            type: array
+        text/html:
+          schema:
+            items:
+              type: string
+            type: array
+      description: StringSlice
+    Tag:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Tag'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/Tag'
+      description: Tag
+    TagList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/Tag'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/Tag'
+            type: array
+      description: TagList
+    Team:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/Team'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/Team'
+      description: Team
+    TeamList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/Team'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/Team'
+            type: array
+      description: TeamList
+    TimelineList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/TimelineComment'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/TimelineComment'
+            type: array
+      description: TimelineList
+    TopicListResponse:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/TopicResponse'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/TopicResponse'
+            type: array
+      description: TopicListResponse
+    TopicNames:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/TopicName'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/TopicName'
+      description: TopicNames
+    TrackedTime:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/TrackedTime'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/TrackedTime'
+      description: TrackedTime
+    TrackedTimeList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/TrackedTime'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/TrackedTime'
+            type: array
+      description: TrackedTimeList
+    User:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/User'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/User'
+      description: User
+    UserHeatmapData:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/UserHeatmapData'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/UserHeatmapData'
+            type: array
+      description: UserHeatmapData
+    UserList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/User'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/User'
+            type: array
+      description: UserList
+    UserSettings:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/UserSettings'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/UserSettings'
+            type: array
+      description: UserSettings
+    WatchInfo:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/WatchInfo'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/WatchInfo'
+      description: WatchInfo
+    WikiCommitList:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/WikiCommitList'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/WikiCommitList'
+      description: WikiCommitList
+    WikiPage:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/WikiPage'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/WikiPage'
+      description: WikiPage
+    WikiPageList:
+      content:
+        application/json:
+          schema:
+            items:
+              $ref: '#/components/schemas/WikiPageMetaData'
+            type: array
+        text/html:
+          schema:
+            items:
+              $ref: '#/components/schemas/WikiPageMetaData'
+            type: array
+      description: WikiPageList
+    conflict:
+      content: {}
+      description: APIConflict is a conflict empty response
+    empty:
+      content: {}
+      description: APIEmpty is an empty response
+    error:
+      content: {}
+      description: APIError is error format response
+      headers:
+        message:
+          schema:
+            type: string
+        url:
+          schema:
+            type: string
+    forbidden:
+      content: {}
+      description: APIForbiddenError is a forbidden error response
+      headers:
+        message:
+          schema:
+            type: string
+        url:
+          schema:
+            type: string
+    invalidTopicsError:
+      content: {}
+      description: APIInvalidTopicsError is error format response to invalid topics
+      headers:
+        invalidTopics:
+          schema:
+            items:
+              type: string
+            type: array
+        message:
+          schema:
+            type: string
+    notFound:
+      content: {}
+      description: APINotFound is a not found empty response
+    parameterBodies:
+      content:
+        application/json:
+          schema:
+            $ref: '#/components/schemas/CreatePushMirrorOption'
+        text/html:
+          schema:
+            $ref: '#/components/schemas/CreatePushMirrorOption'
+      description: parameterBodies
+    redirect:
+      content: {}
+      description: APIRedirect is a redirect response
+    string:
+      content:
+        application/json:
+          schema:
+            type: string
+        text/html:
+          schema:
+            type: string
+      description: APIString is a string response
+    validationError:
+      content: {}
+      description: APIValidationError is error format response related to input validation
+      headers:
+        message:
+          schema:
+            type: string
+        url:
+          schema:
+            type: string
+  schemas:
+    APIError:
+      description: APIError is an api error with a message
+      example:
+        message: message
+        url: url
+      properties:
+        message:
+          type: string
+          x-go-name: Message
+        url:
+          type: string
+          x-go-name: URL
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    AccessToken:
+      example:
+        sha1: sha1
+        name: name
+        token_last_eight: token_last_eight
+        id: 0
+        scopes:
+        - scopes
+        - scopes
+      properties:
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        name:
+          type: string
+          x-go-name: Name
+        scopes:
+          items:
+            type: string
+          type: array
+          x-go-name: Scopes
+        sha1:
+          type: string
+          x-go-name: Token
+        token_last_eight:
+          type: string
+          x-go-name: TokenLastEight
+      title: AccessToken represents an API access token.
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    ActivityPub:
+      description: ActivityPub type
+      example:
+        '@context': '@context'
+      properties:
+        '@context':
+          type: string
+          x-go-name: Context
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    AddCollaboratorOption:
+      description: AddCollaboratorOption options when adding a user as a collaborator
+        of a repository
+      example:
+        permission: permission
+      properties:
+        permission:
+          type: string
+          x-go-name: Permission
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    AddTimeOption:
+      description: AddTimeOption options for adding time to an issue
+      example:
+        created: 2000-01-23T04:56:07.000+00:00
+        user_name: user_name
+        time: 0
+      properties:
+        created:
+          format: date-time
+          type: string
+          x-go-name: Created
+        time:
+          description: time in seconds
+          format: int64
+          type: integer
+          x-go-name: Time
+        user_name:
+          description: User who spent the time (optional)
+          type: string
+          x-go-name: User
+      required:
+      - time
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    AnnotatedTag:
+      description: AnnotatedTag represents an annotated tag
+      example:
+        tagger:
+          date: date
+          name: name
+          email: email
+        tag: tag
+        message: message
+        sha: sha
+        url: url
+        verification:
+          reason: reason
+          payload: payload
+          signature: signature
+          verified: true
+          signer:
+            name: name
+            email: email
+            username: username
+        object:
+          type: type
+          sha: sha
+          url: url
+      properties:
+        message:
+          type: string
+          x-go-name: Message
+        object:
+          $ref: '#/components/schemas/AnnotatedTagObject'
+        sha:
+          type: string
+          x-go-name: SHA
+        tag:
+          type: string
+          x-go-name: Tag
+        tagger:
+          $ref: '#/components/schemas/CommitUser'
+        url:
+          type: string
+          x-go-name: URL
+        verification:
+          $ref: '#/components/schemas/PayloadCommitVerification'
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    AnnotatedTagObject:
+      description: AnnotatedTagObject contains meta information of the tag object
+      example:
+        type: type
+        sha: sha
+        url: url
+      properties:
+        sha:
+          type: string
+          x-go-name: SHA
+        type:
+          type: string
+          x-go-name: Type
+        url:
+          type: string
+          x-go-name: URL
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Attachment:
+      description: Attachment a generic attachment
+      example:
+        size: 1
+        name: name
+        created_at: 2000-01-23T04:56:07.000+00:00
+        browser_download_url: browser_download_url
+        id: 6
+        uuid: uuid
+        download_count: 0
+      properties:
+        browser_download_url:
+          type: string
+          x-go-name: DownloadURL
+        created_at:
+          format: date-time
+          type: string
+          x-go-name: Created
+        download_count:
+          format: int64
+          type: integer
+          x-go-name: DownloadCount
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        name:
+          type: string
+          x-go-name: Name
+        size:
+          format: int64
+          type: integer
+          x-go-name: Size
+        uuid:
+          type: string
+          x-go-name: UUID
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Branch:
+      description: Branch represents a repository branch
+      example:
+        enable_status_check: true
+        status_check_contexts:
+        - status_check_contexts
+        - status_check_contexts
+        protected: true
+        user_can_push: true
+        commit:
+          committer:
+            name: name
+            email: email
+            username: username
+          removed:
+          - removed
+          - removed
+          added:
+          - added
+          - added
+          author:
+            name: name
+            email: email
+            username: username
+          modified:
+          - modified
+          - modified
+          id: id
+          message: message
+          url: url
+          verification:
+            reason: reason
+            payload: payload
+            signature: signature
+            verified: true
+            signer:
+              name: name
+              email: email
+              username: username
+          timestamp: 2000-01-23T04:56:07.000+00:00
+        name: name
+        required_approvals: 0
+        effective_branch_protection_name: effective_branch_protection_name
+        user_can_merge: true
+      properties:
+        commit:
+          $ref: '#/components/schemas/PayloadCommit'
+        effective_branch_protection_name:
+          type: string
+          x-go-name: EffectiveBranchProtectionName
+        enable_status_check:
+          type: boolean
+          x-go-name: EnableStatusCheck
+        name:
+          type: string
+          x-go-name: Name
+        protected:
+          type: boolean
+          x-go-name: Protected
+        required_approvals:
+          format: int64
+          type: integer
+          x-go-name: RequiredApprovals
+        status_check_contexts:
+          items:
+            type: string
+          type: array
+          x-go-name: StatusCheckContexts
+        user_can_merge:
+          type: boolean
+          x-go-name: UserCanMerge
+        user_can_push:
+          type: boolean
+          x-go-name: UserCanPush
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    BranchProtection:
+      description: BranchProtection represents a branch protection for a repository
+      example:
+        merge_whitelist_teams:
+        - merge_whitelist_teams
+        - merge_whitelist_teams
+        enable_push: true
+        push_whitelist_teams:
+        - push_whitelist_teams
+        - push_whitelist_teams
+        block_on_outdated_branch: true
+        push_whitelist_deploy_keys: true
+        created_at: 2000-01-23T04:56:07.000+00:00
+        enable_status_check: true
+        merge_whitelist_usernames:
+        - merge_whitelist_usernames
+        - merge_whitelist_usernames
+        updated_at: 2000-01-23T04:56:07.000+00:00
+        branch_name: branch_name
+        required_approvals: 0
+        block_on_rejected_reviews: true
+        require_signed_commits: true
+        enable_merge_whitelist: true
+        enable_push_whitelist: true
+        rule_name: rule_name
+        approvals_whitelist_username:
+        - approvals_whitelist_username
+        - approvals_whitelist_username
+        dismiss_stale_approvals: true
+        status_check_contexts:
+        - status_check_contexts
+        - status_check_contexts
+        push_whitelist_usernames:
+        - push_whitelist_usernames
+        - push_whitelist_usernames
+        protected_file_patterns: protected_file_patterns
+        enable_approvals_whitelist: true
+        approvals_whitelist_teams:
+        - approvals_whitelist_teams
+        - approvals_whitelist_teams
+        unprotected_file_patterns: unprotected_file_patterns
+        block_on_official_review_requests: true
+      properties:
+        approvals_whitelist_teams:
+          items:
+            type: string
+          type: array
+          x-go-name: ApprovalsWhitelistTeams
+        approvals_whitelist_username:
+          items:
+            type: string
+          type: array
+          x-go-name: ApprovalsWhitelistUsernames
+        block_on_official_review_requests:
+          type: boolean
+          x-go-name: BlockOnOfficialReviewRequests
+        block_on_outdated_branch:
+          type: boolean
+          x-go-name: BlockOnOutdatedBranch
+        block_on_rejected_reviews:
+          type: boolean
+          x-go-name: BlockOnRejectedReviews
+        branch_name:
+          description: "Deprecated: true"
+          type: string
+          x-go-name: BranchName
+        created_at:
+          format: date-time
+          type: string
+          x-go-name: Created
+        dismiss_stale_approvals:
+          type: boolean
+          x-go-name: DismissStaleApprovals
+        enable_approvals_whitelist:
+          type: boolean
+          x-go-name: EnableApprovalsWhitelist
+        enable_merge_whitelist:
+          type: boolean
+          x-go-name: EnableMergeWhitelist
+        enable_push:
+          type: boolean
+          x-go-name: EnablePush
+        enable_push_whitelist:
+          type: boolean
+          x-go-name: EnablePushWhitelist
+        enable_status_check:
+          type: boolean
+          x-go-name: EnableStatusCheck
+        merge_whitelist_teams:
+          items:
+            type: string
+          type: array
+          x-go-name: MergeWhitelistTeams
+        merge_whitelist_usernames:
+          items:
+            type: string
+          type: array
+          x-go-name: MergeWhitelistUsernames
+        protected_file_patterns:
+          type: string
+          x-go-name: ProtectedFilePatterns
+        push_whitelist_deploy_keys:
+          type: boolean
+          x-go-name: PushWhitelistDeployKeys
+        push_whitelist_teams:
+          items:
+            type: string
+          type: array
+          x-go-name: PushWhitelistTeams
+        push_whitelist_usernames:
+          items:
+            type: string
+          type: array
+          x-go-name: PushWhitelistUsernames
+        require_signed_commits:
+          type: boolean
+          x-go-name: RequireSignedCommits
+        required_approvals:
+          format: int64
+          type: integer
+          x-go-name: RequiredApprovals
+        rule_name:
+          type: string
+          x-go-name: RuleName
+        status_check_contexts:
+          items:
+            type: string
+          type: array
+          x-go-name: StatusCheckContexts
+        unprotected_file_patterns:
+          type: string
+          x-go-name: UnprotectedFilePatterns
+        updated_at:
+          format: date-time
+          type: string
+          x-go-name: Updated
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    ChangedFile:
+      description: ChangedFile store information about files affected by the pull
+        request
+      example:
+        filename: filename
+        additions: 0
+        deletions: 1
+        html_url: html_url
+        changes: 6
+        previous_filename: previous_filename
+        raw_url: raw_url
+        contents_url: contents_url
+        status: status
+      properties:
+        additions:
+          format: int64
+          type: integer
+          x-go-name: Additions
+        changes:
+          format: int64
+          type: integer
+          x-go-name: Changes
+        contents_url:
+          type: string
+          x-go-name: ContentsURL
+        deletions:
+          format: int64
+          type: integer
+          x-go-name: Deletions
+        filename:
+          type: string
+          x-go-name: Filename
+        html_url:
+          type: string
+          x-go-name: HTMLURL
+        previous_filename:
+          type: string
+          x-go-name: PreviousFilename
+        raw_url:
+          type: string
+          x-go-name: RawURL
+        status:
+          type: string
+          x-go-name: Status
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CombinedStatus:
+      description: CombinedStatus holds the combined state of several statuses for
+        a single commit
+      example:
+        commit_url: commit_url
+        total_count: 6
+        statuses:
+        - creator:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          updated_at: 2000-01-23T04:56:07.000+00:00
+          target_url: target_url
+          context: context
+          created_at: 2000-01-23T04:56:07.000+00:00
+          description: description
+          id: 0
+          url: url
+          status: status
+        - creator:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          updated_at: 2000-01-23T04:56:07.000+00:00
+          target_url: target_url
+          context: context
+          created_at: 2000-01-23T04:56:07.000+00:00
+          description: description
+          id: 0
+          url: url
+          status: status
+        state: state
+        repository:
+          parent: null
+          open_pr_counter: 5
+          language: language
+          repo_transfer:
+            teams:
+            - can_create_org_repo: true
+              units_map:
+                repo.code: read
+                repo.ext_issues: none
+                repo.ext_wiki: none
+                repo.issues: write
+                repo.projects: none
+                repo.pulls: owner
+                repo.releases: none
+                repo.wiki: admin
+              organization:
+                website: website
+                full_name: full_name
+                repo_admin_change_team_access: true
+                avatar_url: avatar_url
+                visibility: visibility
+                name: name
+                description: description
+                location: location
+                id: 0
+                username: username
+              name: name
+              description: description
+              permission: none
+              id: 2
+              includes_all_repositories: true
+              units:
+              - repo.code
+              - repo.issues
+              - repo.ext_issues
+              - repo.wiki
+              - repo.pulls
+              - repo.releases
+              - repo.projects
+              - repo.ext_wiki
+            - can_create_org_repo: true
+              units_map:
+                repo.code: read
+                repo.ext_issues: none
+                repo.ext_wiki: none
+                repo.issues: write
+                repo.projects: none
+                repo.pulls: owner
+                repo.releases: none
+                repo.wiki: admin
+              organization:
+                website: website
+                full_name: full_name
+                repo_admin_change_team_access: true
+                avatar_url: avatar_url
+                visibility: visibility
+                name: name
+                description: description
+                location: location
+                id: 0
+                username: username
+              name: name
+              description: description
+              permission: none
+              id: 2
+              includes_all_repositories: true
+              units:
+              - repo.code
+              - repo.issues
+              - repo.ext_issues
+              - repo.wiki
+              - repo.pulls
+              - repo.releases
+              - repo.projects
+              - repo.ext_wiki
+            doer:
+              website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+            recipient:
+              website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+          has_pull_requests: true
+          empty: true
+          permissions:
+            pull: true
+            admin: true
+            push: true
+          id: 6
+          release_counter: 5
+          default_delete_branch_after_merge: true
+          ssh_url: ssh_url
+          full_name: full_name
+          size: 7
+          languages_url: languages_url
+          clone_url: clone_url
+          html_url: html_url
+          name: name
+          default_branch: default_branch
+          mirror_updated: 2000-01-23T04:56:07.000+00:00
+          ignore_whitespace_conflicts: true
+          template: true
+          internal: true
+          mirror: true
+          private: true
+          open_issues_count: 1
+          link: link
+          created_at: 2000-01-23T04:56:07.000+00:00
+          default_allow_maintainer_edit: true
+          description: description
+          allow_rebase_update: true
+          has_projects: true
+          archived: true
+          has_wiki: true
+          updated_at: 2000-01-23T04:56:07.000+00:00
+          allow_merge_commits: true
+          stars_count: 9
+          allow_rebase_explicit: true
+          external_tracker:
+            external_tracker_regexp_pattern: external_tracker_regexp_pattern
+            external_tracker_style: external_tracker_style
+            external_tracker_url: external_tracker_url
+            external_tracker_format: external_tracker_format
+          mirror_interval: mirror_interval
+          owner:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          allow_squash_merge: true
+          external_wiki:
+            external_wiki_url: external_wiki_url
+          website: website
+          internal_tracker:
+            enable_issue_dependencies: true
+            allow_only_contributors_to_track_time: true
+            enable_time_tracker: true
+          has_issues: true
+          allow_rebase: true
+          default_merge_style: default_merge_style
+          fork: true
+          avatar_url: avatar_url
+          original_url: original_url
+          watchers_count: 3
+          forks_count: 0
+        sha: sha
+        url: url
+      properties:
+        commit_url:
+          type: string
+          x-go-name: CommitURL
+        repository:
+          $ref: '#/components/schemas/Repository'
+        sha:
+          type: string
+          x-go-name: SHA
+        state:
+          description: |-
+            CommitStatusState holds the state of a CommitStatus
+            It can be "pending", "success", "error", "failure", and "warning"
+          type: string
+          x-go-package: code.gitea.io/gitea/modules/structs
+        statuses:
+          items:
+            $ref: '#/components/schemas/CommitStatus'
+          type: array
+          x-go-name: Statuses
+        total_count:
+          format: int64
+          type: integer
+          x-go-name: TotalCount
+        url:
+          type: string
+          x-go-name: URL
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Comment:
+      description: Comment represents a comment on a commit or issue
+      example:
+        issue_url: issue_url
+        assets:
+        - size: 1
+          name: name
+          created_at: 2000-01-23T04:56:07.000+00:00
+          browser_download_url: browser_download_url
+          id: 6
+          uuid: uuid
+          download_count: 0
+        - size: 1
+          name: name
+          created_at: 2000-01-23T04:56:07.000+00:00
+          browser_download_url: browser_download_url
+          id: 6
+          uuid: uuid
+          download_count: 0
+        updated_at: 2000-01-23T04:56:07.000+00:00
+        html_url: html_url
+        original_author_id: 6
+        created_at: 2000-01-23T04:56:07.000+00:00
+        id: 0
+        pull_request_url: pull_request_url
+        body: body
+        original_author: original_author
+        user:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+      properties:
+        assets:
+          items:
+            $ref: '#/components/schemas/Attachment'
+          type: array
+          x-go-name: Attachments
+        body:
+          type: string
+          x-go-name: Body
+        created_at:
+          format: date-time
+          type: string
+          x-go-name: Created
+        html_url:
+          type: string
+          x-go-name: HTMLURL
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        issue_url:
+          type: string
+          x-go-name: IssueURL
+        original_author:
+          type: string
+          x-go-name: OriginalAuthor
+        original_author_id:
+          format: int64
+          type: integer
+          x-go-name: OriginalAuthorID
+        pull_request_url:
+          type: string
+          x-go-name: PRURL
+        updated_at:
+          format: date-time
+          type: string
+          x-go-name: Updated
+        user:
+          $ref: '#/components/schemas/User'
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Commit:
+      example:
+        committer:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        stats:
+          total: 1
+          additions: 0
+          deletions: 6
+        author:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        created: 2000-01-23T04:56:07.000+00:00
+        html_url: html_url
+        commit:
+          committer:
+            date: date
+            name: name
+            email: email
+          author:
+            date: date
+            name: name
+            email: email
+          tree:
+            created: 2000-01-23T04:56:07.000+00:00
+            sha: sha
+            url: url
+          message: message
+          url: url
+          verification:
+            reason: reason
+            payload: payload
+            signature: signature
+            verified: true
+            signer:
+              name: name
+              email: email
+              username: username
+        files:
+        - filename: filename
+        - filename: filename
+        sha: sha
+        url: url
+        parents:
+        - created: 2000-01-23T04:56:07.000+00:00
+          sha: sha
+          url: url
+        - created: 2000-01-23T04:56:07.000+00:00
+          sha: sha
+          url: url
+      properties:
+        author:
+          $ref: '#/components/schemas/User'
+        commit:
+          $ref: '#/components/schemas/RepoCommit'
+        committer:
+          $ref: '#/components/schemas/User'
+        created:
+          format: date-time
+          type: string
+          x-go-name: Created
+        files:
+          items:
+            $ref: '#/components/schemas/CommitAffectedFiles'
+          type: array
+          x-go-name: Files
+        html_url:
+          type: string
+          x-go-name: HTMLURL
+        parents:
+          items:
+            $ref: '#/components/schemas/CommitMeta'
+          type: array
+          x-go-name: Parents
+        sha:
+          type: string
+          x-go-name: SHA
+        stats:
+          $ref: '#/components/schemas/CommitStats'
+        url:
+          type: string
+          x-go-name: URL
+      title: Commit contains information generated from a Git commit.
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CommitAffectedFiles:
+      description: CommitAffectedFiles store information about files affected by the
+        commit
+      example:
+        filename: filename
+      properties:
+        filename:
+          type: string
+          x-go-name: Filename
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CommitDateOptions:
+      description: CommitDateOptions store dates for GIT_AUTHOR_DATE and GIT_COMMITTER_DATE
+      example:
+        committer: 2000-01-23T04:56:07.000+00:00
+        author: 2000-01-23T04:56:07.000+00:00
+      properties:
+        author:
+          format: date-time
+          type: string
+          x-go-name: Author
+        committer:
+          format: date-time
+          type: string
+          x-go-name: Committer
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CommitMeta:
+      example:
+        created: 2000-01-23T04:56:07.000+00:00
+        sha: sha
+        url: url
+      properties:
+        created:
+          format: date-time
+          type: string
+          x-go-name: Created
+        sha:
+          type: string
+          x-go-name: SHA
+        url:
+          type: string
+          x-go-name: URL
+      title: CommitMeta contains meta information of a commit in terms of API.
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CommitStats:
+      description: CommitStats is statistics for a RepoCommit
+      example:
+        total: 1
+        additions: 0
+        deletions: 6
+      properties:
+        additions:
+          format: int64
+          type: integer
+          x-go-name: Additions
+        deletions:
+          format: int64
+          type: integer
+          x-go-name: Deletions
+        total:
+          format: int64
+          type: integer
+          x-go-name: Total
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CommitStatus:
+      description: CommitStatus holds a single status of a single Commit
+      example:
+        creator:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        updated_at: 2000-01-23T04:56:07.000+00:00
+        target_url: target_url
+        context: context
+        created_at: 2000-01-23T04:56:07.000+00:00
+        description: description
+        id: 0
+        url: url
+        status: status
+      properties:
+        context:
+          type: string
+          x-go-name: Context
+        created_at:
+          format: date-time
+          type: string
+          x-go-name: Created
+        creator:
+          $ref: '#/components/schemas/User'
+        description:
+          type: string
+          x-go-name: Description
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        status:
+          description: |-
+            CommitStatusState holds the state of a CommitStatus
+            It can be "pending", "success", "error", "failure", and "warning"
+          type: string
+          x-go-package: code.gitea.io/gitea/modules/structs
+        target_url:
+          type: string
+          x-go-name: TargetURL
+        updated_at:
+          format: date-time
+          type: string
+          x-go-name: Updated
+        url:
+          type: string
+          x-go-name: URL
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CommitStatusState:
+      description: |-
+        CommitStatusState holds the state of a CommitStatus
+        It can be "pending", "success", "error", "failure", and "warning"
+      type: string
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CommitUser:
+      example:
+        date: date
+        name: name
+        email: email
+      properties:
+        date:
+          type: string
+          x-go-name: Date
+        email:
+          format: email
+          type: string
+          x-go-name: Email
+        name:
+          type: string
+          x-go-name: Name
+      title: CommitUser contains information of a user in the context of a commit.
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    ContentsResponse:
+      description: "ContentsResponse contains information about a repo's entry's (dir,\
+        \ file, symlink, submodule) metadata and content"
+      example:
+        _links:
+          git: git
+          self: self
+          html: html
+        submodule_git_url: submodule_git_url
+        last_commit_sha: last_commit_sha
+        encoding: encoding
+        type: type
+        sha: sha
+        content: content
+        url: url
+        target: target
+        path: path
+        size: 0
+        html_url: html_url
+        download_url: download_url
+        name: name
+        git_url: git_url
+      properties:
+        _links:
+          $ref: '#/components/schemas/FileLinksResponse'
+        content:
+          description: "`content` is populated when `type` is `file`, otherwise null"
+          type: string
+          x-go-name: Content
+        download_url:
+          type: string
+          x-go-name: DownloadURL
+        encoding:
+          description: "`encoding` is populated when `type` is `file`, otherwise null"
+          type: string
+          x-go-name: Encoding
+        git_url:
+          type: string
+          x-go-name: GitURL
+        html_url:
+          type: string
+          x-go-name: HTMLURL
+        last_commit_sha:
+          type: string
+          x-go-name: LastCommitSHA
+        name:
+          type: string
+          x-go-name: Name
+        path:
+          type: string
+          x-go-name: Path
+        sha:
+          type: string
+          x-go-name: SHA
+        size:
+          format: int64
+          type: integer
+          x-go-name: Size
+        submodule_git_url:
+          description: "`submodule_git_url` is populated when `type` is `submodule`,\
+            \ otherwise null"
+          type: string
+          x-go-name: SubmoduleGitURL
+        target:
+          description: "`target` is populated when `type` is `symlink`, otherwise\
+            \ null"
+          type: string
+          x-go-name: Target
+        type:
+          description: "`type` will be `file`, `dir`, `symlink`, or `submodule`"
+          type: string
+          x-go-name: Type
+        url:
+          type: string
+          x-go-name: URL
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateAccessTokenOption:
+      description: CreateAccessTokenOption options when create access token
+      example:
+        name: name
+        scopes:
+        - scopes
+        - scopes
+      properties:
+        name:
+          type: string
+          x-go-name: Name
+        scopes:
+          items:
+            type: string
+          type: array
+          x-go-name: Scopes
+      required:
+      - name
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateBranchProtectionOption:
+      description: CreateBranchProtectionOption options for creating a branch protection
+      example:
+        block_on_rejected_reviews: true
+        merge_whitelist_teams:
+        - merge_whitelist_teams
+        - merge_whitelist_teams
+        enable_push: true
+        require_signed_commits: true
+        enable_merge_whitelist: true
+        enable_push_whitelist: true
+        push_whitelist_teams:
+        - push_whitelist_teams
+        - push_whitelist_teams
+        block_on_outdated_branch: true
+        push_whitelist_deploy_keys: true
+        rule_name: rule_name
+        approvals_whitelist_username:
+        - approvals_whitelist_username
+        - approvals_whitelist_username
+        dismiss_stale_approvals: true
+        enable_status_check: true
+        status_check_contexts:
+        - status_check_contexts
+        - status_check_contexts
+        push_whitelist_usernames:
+        - push_whitelist_usernames
+        - push_whitelist_usernames
+        merge_whitelist_usernames:
+        - merge_whitelist_usernames
+        - merge_whitelist_usernames
+        protected_file_patterns: protected_file_patterns
+        branch_name: branch_name
+        enable_approvals_whitelist: true
+        approvals_whitelist_teams:
+        - approvals_whitelist_teams
+        - approvals_whitelist_teams
+        required_approvals: 0
+        unprotected_file_patterns: unprotected_file_patterns
+        block_on_official_review_requests: true
+      properties:
+        approvals_whitelist_teams:
+          items:
+            type: string
+          type: array
+          x-go-name: ApprovalsWhitelistTeams
+        approvals_whitelist_username:
+          items:
+            type: string
+          type: array
+          x-go-name: ApprovalsWhitelistUsernames
+        block_on_official_review_requests:
+          type: boolean
+          x-go-name: BlockOnOfficialReviewRequests
+        block_on_outdated_branch:
+          type: boolean
+          x-go-name: BlockOnOutdatedBranch
+        block_on_rejected_reviews:
+          type: boolean
+          x-go-name: BlockOnRejectedReviews
+        branch_name:
+          description: "Deprecated: true"
+          type: string
+          x-go-name: BranchName
+        dismiss_stale_approvals:
+          type: boolean
+          x-go-name: DismissStaleApprovals
+        enable_approvals_whitelist:
+          type: boolean
+          x-go-name: EnableApprovalsWhitelist
+        enable_merge_whitelist:
+          type: boolean
+          x-go-name: EnableMergeWhitelist
+        enable_push:
+          type: boolean
+          x-go-name: EnablePush
+        enable_push_whitelist:
+          type: boolean
+          x-go-name: EnablePushWhitelist
+        enable_status_check:
+          type: boolean
+          x-go-name: EnableStatusCheck
+        merge_whitelist_teams:
+          items:
+            type: string
+          type: array
+          x-go-name: MergeWhitelistTeams
+        merge_whitelist_usernames:
+          items:
+            type: string
+          type: array
+          x-go-name: MergeWhitelistUsernames
+        protected_file_patterns:
+          type: string
+          x-go-name: ProtectedFilePatterns
+        push_whitelist_deploy_keys:
+          type: boolean
+          x-go-name: PushWhitelistDeployKeys
+        push_whitelist_teams:
+          items:
+            type: string
+          type: array
+          x-go-name: PushWhitelistTeams
+        push_whitelist_usernames:
+          items:
+            type: string
+          type: array
+          x-go-name: PushWhitelistUsernames
+        require_signed_commits:
+          type: boolean
+          x-go-name: RequireSignedCommits
+        required_approvals:
+          format: int64
+          type: integer
+          x-go-name: RequiredApprovals
+        rule_name:
+          type: string
+          x-go-name: RuleName
+        status_check_contexts:
+          items:
+            type: string
+          type: array
+          x-go-name: StatusCheckContexts
+        unprotected_file_patterns:
+          type: string
+          x-go-name: UnprotectedFilePatterns
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateBranchRepoOption:
+      description: CreateBranchRepoOption options when creating a branch in a repository
+      example:
+        new_branch_name: new_branch_name
+        old_branch_name: old_branch_name
+      properties:
+        new_branch_name:
+          description: Name of the branch to create
+          type: string
+          x-go-name: BranchName
+        old_branch_name:
+          description: Name of the old branch to create from
+          type: string
+          x-go-name: OldBranchName
+      required:
+      - new_branch_name
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateEmailOption:
+      description: CreateEmailOption options when creating email addresses
+      example:
+        emails:
+        - emails
+        - emails
+      properties:
+        emails:
+          description: email addresses to add
+          items:
+            type: string
+          type: array
+          x-go-name: Emails
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateFileOptions:
+      description: |-
+        CreateFileOptions options for creating files
+        Note: `author` and `committer` are optional (if only one is given, it will be used for the other, otherwise the authenticated user will be used)
+      example:
+        committer:
+          name: name
+          email: email
+        author:
+          name: name
+          email: email
+        new_branch: new_branch
+        dates:
+          committer: 2000-01-23T04:56:07.000+00:00
+          author: 2000-01-23T04:56:07.000+00:00
+        signoff: true
+        message: message
+        branch: branch
+        content: content
+      properties:
+        author:
+          $ref: '#/components/schemas/Identity'
+        branch:
+          description: "branch (optional) to base this file from. if not given, the\
+            \ default branch is used"
+          type: string
+          x-go-name: BranchName
+        committer:
+          $ref: '#/components/schemas/Identity'
+        content:
+          description: content must be base64 encoded
+          type: string
+          x-go-name: Content
+        dates:
+          $ref: '#/components/schemas/CommitDateOptions'
+        message:
+          description: "message (optional) for the commit of this file. if not supplied,\
+            \ a default message will be used"
+          type: string
+          x-go-name: Message
+        new_branch:
+          description: new_branch (optional) will make a new branch from `branch`
+            before creating the file
+          type: string
+          x-go-name: NewBranchName
+        signoff:
+          description: Add a Signed-off-by trailer by the committer at the end of
+            the commit log message.
+          type: boolean
+          x-go-name: Signoff
+      required:
+      - content
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateForkOption:
+      description: CreateForkOption options for creating a fork
+      example:
+        organization: organization
+        name: name
+      properties:
+        name:
+          description: name of the forked repository
+          type: string
+          x-go-name: Name
+        organization:
+          description: "organization name, if forking into an organization"
+          type: string
+          x-go-name: Organization
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateGPGKeyOption:
+      description: CreateGPGKeyOption options create user GPG key
+      example:
+        armored_public_key: armored_public_key
+        armored_signature: armored_signature
+      properties:
+        armored_public_key:
+          description: An armored GPG key to add
+          type: string
+          x-go-name: ArmoredKey
+        armored_signature:
+          type: string
+          x-go-name: Signature
+      required:
+      - armored_public_key
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateHookOption:
+      description: CreateHookOption options when create a hook
+      example:
+        branch_filter: branch_filter
+        active: false
+        type: dingtalk
+        config:
+          key: config
+        authorization_header: authorization_header
+        events:
+        - events
+        - events
+      properties:
+        active:
+          default: false
+          type: boolean
+          x-go-name: Active
+        authorization_header:
+          type: string
+          x-go-name: AuthorizationHeader
+        branch_filter:
+          type: string
+          x-go-name: BranchFilter
+        config:
+          additionalProperties:
+            type: string
+          description: |-
+            CreateHookOptionConfig has all config options in it
+            required are "content_type" and "url" Required
+          type: object
+          x-go-package: code.gitea.io/gitea/modules/structs
+        events:
+          items:
+            type: string
+          type: array
+          x-go-name: Events
+        type:
+          enum:
+          - dingtalk
+          - discord
+          - gitea
+          - gogs
+          - msteams
+          - slack
+          - telegram
+          - feishu
+          - wechatwork
+          - packagist
+          type: string
+          x-go-name: Type
+      required:
+      - config
+      - type
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateHookOptionConfig:
+      additionalProperties:
+        type: string
+      description: |-
+        CreateHookOptionConfig has all config options in it
+        required are "content_type" and "url" Required
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateIssueCommentOption:
+      description: CreateIssueCommentOption options for creating a comment on an issue
+      example:
+        body: body
+      properties:
+        body:
+          type: string
+          x-go-name: Body
+      required:
+      - body
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateIssueOption:
+      description: CreateIssueOption options to create one issue
+      example:
+        ref: ref
+        milestone: 6
+        due_date: 2000-01-23T04:56:07.000+00:00
+        assignees:
+        - assignees
+        - assignees
+        closed: true
+        assignee: assignee
+        body: body
+        title: title
+        labels:
+        - 0
+        - 0
+      properties:
+        assignee:
+          description: deprecated
+          type: string
+          x-go-name: Assignee
+        assignees:
+          items:
+            type: string
+          type: array
+          x-go-name: Assignees
+        body:
+          type: string
+          x-go-name: Body
+        closed:
+          type: boolean
+          x-go-name: Closed
+        due_date:
+          format: date-time
+          type: string
+          x-go-name: Deadline
+        labels:
+          description: list of label ids
+          items:
+            format: int64
+            type: integer
+          type: array
+          x-go-name: Labels
+        milestone:
+          description: milestone id
+          format: int64
+          type: integer
+          x-go-name: Milestone
+        ref:
+          type: string
+          x-go-name: Ref
+        title:
+          type: string
+          x-go-name: Title
+      required:
+      - title
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateKeyOption:
+      description: CreateKeyOption options when creating a key
+      example:
+        read_only: true
+        title: title
+        key: key
+      properties:
+        key:
+          description: An armored SSH key to add
+          type: string
+          x-go-name: Key
+        read_only:
+          description: Describe if the key has only read access or read/write
+          type: boolean
+          x-go-name: ReadOnly
+        title:
+          description: Title of the key to add
+          type: string
+          x-go-name: Title
+      required:
+      - key
+      - title
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateLabelOption:
+      description: CreateLabelOption options for creating a label
+      example:
+        color: '#00aabb'
+        name: name
+        description: description
+        exclusive: false
+      properties:
+        color:
+          example: '#00aabb'
+          type: string
+          x-go-name: Color
+        description:
+          type: string
+          x-go-name: Description
+        exclusive:
+          example: false
+          type: boolean
+          x-go-name: Exclusive
+        name:
+          type: string
+          x-go-name: Name
+      required:
+      - color
+      - name
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateMilestoneOption:
+      description: CreateMilestoneOption options for creating a milestone
+      example:
+        description: description
+        state: open
+        title: title
+        due_on: 2000-01-23T04:56:07.000+00:00
+      properties:
+        description:
+          type: string
+          x-go-name: Description
+        due_on:
+          format: date-time
+          type: string
+          x-go-name: Deadline
+        state:
+          enum:
+          - open
+          - closed
+          type: string
+          x-go-name: State
+        title:
+          type: string
+          x-go-name: Title
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateOAuth2ApplicationOptions:
+      description: CreateOAuth2ApplicationOptions holds options to create an oauth2
+        application
+      example:
+        name: name
+        confidential_client: true
+        redirect_uris:
+        - redirect_uris
+        - redirect_uris
+      properties:
+        confidential_client:
+          type: boolean
+          x-go-name: ConfidentialClient
+        name:
+          type: string
+          x-go-name: Name
+        redirect_uris:
+          items:
+            type: string
+          type: array
+          x-go-name: RedirectURIs
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateOrgOption:
+      description: CreateOrgOption options for creating an organization
+      example:
+        website: website
+        full_name: full_name
+        repo_admin_change_team_access: true
+        visibility: public
+        description: description
+        location: location
+        username: username
+      properties:
+        description:
+          type: string
+          x-go-name: Description
+        full_name:
+          type: string
+          x-go-name: FullName
+        location:
+          type: string
+          x-go-name: Location
+        repo_admin_change_team_access:
+          type: boolean
+          x-go-name: RepoAdminChangeTeamAccess
+        username:
+          type: string
+          x-go-name: UserName
+        visibility:
+          description: "possible values are `public` (default), `limited` or `private`"
+          enum:
+          - public
+          - limited
+          - private
+          type: string
+          x-go-name: Visibility
+        website:
+          type: string
+          x-go-name: Website
+      required:
+      - username
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreatePullRequestOption:
+      description: CreatePullRequestOption options when creating a pull request
+      example:
+        head: head
+        milestone: 6
+        due_date: 2000-01-23T04:56:07.000+00:00
+        assignees:
+        - assignees
+        - assignees
+        assignee: assignee
+        body: body
+        title: title
+        base: base
+        labels:
+        - 0
+        - 0
+      properties:
+        assignee:
+          type: string
+          x-go-name: Assignee
+        assignees:
+          items:
+            type: string
+          type: array
+          x-go-name: Assignees
+        base:
+          type: string
+          x-go-name: Base
+        body:
+          type: string
+          x-go-name: Body
+        due_date:
+          format: date-time
+          type: string
+          x-go-name: Deadline
+        head:
+          type: string
+          x-go-name: Head
+        labels:
+          items:
+            format: int64
+            type: integer
+          type: array
+          x-go-name: Labels
+        milestone:
+          format: int64
+          type: integer
+          x-go-name: Milestone
+        title:
+          type: string
+          x-go-name: Title
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreatePullReviewComment:
+      description: CreatePullReviewComment represent a review comment for creation
+        api
+      example:
+        path: path
+        new_position: 0
+        old_position: 6
+        body: body
+      properties:
+        body:
+          type: string
+          x-go-name: Body
+        new_position:
+          description: if comment to new file line or 0
+          format: int64
+          type: integer
+          x-go-name: NewLineNum
+        old_position:
+          description: if comment to old file line or 0
+          format: int64
+          type: integer
+          x-go-name: OldLineNum
+        path:
+          description: the tree path
+          type: string
+          x-go-name: Path
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreatePullReviewOptions:
+      description: CreatePullReviewOptions are options to create a pull review
+      example:
+        comments:
+        - path: path
+          new_position: 0
+          old_position: 6
+          body: body
+        - path: path
+          new_position: 0
+          old_position: 6
+          body: body
+        body: body
+        event: event
+        commit_id: commit_id
+      properties:
+        body:
+          type: string
+          x-go-name: Body
+        comments:
+          items:
+            $ref: '#/components/schemas/CreatePullReviewComment'
+          type: array
+          x-go-name: Comments
+        commit_id:
+          type: string
+          x-go-name: CommitID
+        event:
+          description: ReviewStateType review state type
+          type: string
+          x-go-package: code.gitea.io/gitea/modules/structs
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreatePushMirrorOption:
+      example:
+        remote_username: remote_username
+        sync_on_commit: true
+        interval: interval
+        remote_address: remote_address
+        remote_password: remote_password
+      properties:
+        interval:
+          type: string
+          x-go-name: Interval
+        remote_address:
+          type: string
+          x-go-name: RemoteAddress
+        remote_password:
+          type: string
+          x-go-name: RemotePassword
+        remote_username:
+          type: string
+          x-go-name: RemoteUsername
+        sync_on_commit:
+          type: boolean
+          x-go-name: SyncOnCommit
+      title: CreatePushMirrorOption represents need information to create a push mirror
+        of a repository.
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateReleaseOption:
+      description: CreateReleaseOption options when creating a release
+      example:
+        prerelease: true
+        tag_name: tag_name
+        draft: true
+        target_commitish: target_commitish
+        name: name
+        body: body
+      properties:
+        body:
+          type: string
+          x-go-name: Note
+        draft:
+          type: boolean
+          x-go-name: IsDraft
+        name:
+          type: string
+          x-go-name: Title
+        prerelease:
+          type: boolean
+          x-go-name: IsPrerelease
+        tag_name:
+          type: string
+          x-go-name: TagName
+        target_commitish:
+          type: string
+          x-go-name: Target
+      required:
+      - tag_name
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateRepoOption:
+      description: CreateRepoOption options when creating repository
+      example:
+        auto_init: true
+        template: true
+        issue_labels: issue_labels
+        license: license
+        private: true
+        trust_model: default
+        gitignores: gitignores
+        name: name
+        description: description
+        default_branch: default_branch
+        readme: readme
+      properties:
+        auto_init:
+          description: Whether the repository should be auto-initialized?
+          type: boolean
+          x-go-name: AutoInit
+        default_branch:
+          description: DefaultBranch of the repository (used when initializes and
+            in template)
+          type: string
+          x-go-name: DefaultBranch
+        description:
+          description: Description of the repository to create
+          type: string
+          x-go-name: Description
+        gitignores:
+          description: Gitignores to use
+          type: string
+          x-go-name: Gitignores
+        issue_labels:
+          description: Label-Set to use
+          type: string
+          x-go-name: IssueLabels
+        license:
+          description: License to use
+          type: string
+          x-go-name: License
+        name:
+          description: Name of the repository to create
+          type: string
+          x-go-name: Name
+        private:
+          description: Whether the repository is private
+          type: boolean
+          x-go-name: Private
+        readme:
+          description: Readme of the repository to create
+          type: string
+          x-go-name: Readme
+        template:
+          description: Whether the repository is template
+          type: boolean
+          x-go-name: Template
+        trust_model:
+          description: TrustModel of the repository
+          enum:
+          - default
+          - collaborator
+          - committer
+          - collaboratorcommitter
+          type: string
+          x-go-name: TrustModel
+      required:
+      - name
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateStatusOption:
+      description: CreateStatusOption holds the information needed to create a new
+        CommitStatus for a Commit
+      example:
+        target_url: target_url
+        context: context
+        description: description
+        state: state
+      properties:
+        context:
+          type: string
+          x-go-name: Context
+        description:
+          type: string
+          x-go-name: Description
+        state:
+          description: |-
+            CommitStatusState holds the state of a CommitStatus
+            It can be "pending", "success", "error", "failure", and "warning"
+          type: string
+          x-go-package: code.gitea.io/gitea/modules/structs
+        target_url:
+          type: string
+          x-go-name: TargetURL
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateTagOption:
+      description: CreateTagOption options when creating a tag
+      example:
+        tag_name: tag_name
+        message: message
+        target: target
+      properties:
+        message:
+          type: string
+          x-go-name: Message
+        tag_name:
+          type: string
+          x-go-name: TagName
+        target:
+          type: string
+          x-go-name: Target
+      required:
+      - tag_name
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateTeamOption:
+      description: CreateTeamOption options for creating a team
+      example:
+        can_create_org_repo: true
+        units_map:
+          repo.code: read
+          repo.ext_issues: none
+          repo.ext_wiki: none
+          repo.issues: write
+          repo.projects: none
+          repo.pulls: owner
+          repo.releases: none
+          repo.wiki: admin
+        name: name
+        description: description
+        permission: read
+        includes_all_repositories: true
+        units:
+        - repo.code
+        - repo.issues
+        - repo.ext_issues
+        - repo.wiki
+        - repo.pulls
+        - repo.releases
+        - repo.projects
+        - repo.ext_wiki
+      properties:
+        can_create_org_repo:
+          type: boolean
+          x-go-name: CanCreateOrgRepo
+        description:
+          type: string
+          x-go-name: Description
+        includes_all_repositories:
+          type: boolean
+          x-go-name: IncludesAllRepositories
+        name:
+          type: string
+          x-go-name: Name
+        permission:
+          enum:
+          - read
+          - write
+          - admin
+          type: string
+          x-go-name: Permission
+        units:
+          example:
+          - repo.code
+          - repo.issues
+          - repo.ext_issues
+          - repo.wiki
+          - repo.pulls
+          - repo.releases
+          - repo.projects
+          - repo.ext_wiki
+          items:
+            type: string
+          type: array
+          x-go-name: Units
+        units_map:
+          additionalProperties:
+            type: string
+          example:
+            repo.code: read
+            repo.ext_issues: none
+            repo.ext_wiki: none
+            repo.issues: write
+            repo.projects: none
+            repo.pulls: owner
+            repo.releases: none
+            repo.wiki: admin
+          type: object
+          x-go-name: UnitsMap
+      required:
+      - name
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateUserOption:
+      description: CreateUserOption create user options
+      example:
+        must_change_password: true
+        password: password
+        full_name: full_name
+        login_name: login_name
+        visibility: visibility
+        restricted: true
+        created_at: 2000-01-23T04:56:07.000+00:00
+        send_notify: true
+        source_id: 0
+        email: email
+        username: username
+      properties:
+        created_at:
+          description: |-
+            For explicitly setting the user creation timestamp. Useful when users are
+            migrated from other systems. When omitted, the user's creation timestamp
+            will be set to "now".
+          format: date-time
+          type: string
+          x-go-name: Created
+        email:
+          format: email
+          type: string
+          x-go-name: Email
+        full_name:
+          type: string
+          x-go-name: FullName
+        login_name:
+          type: string
+          x-go-name: LoginName
+        must_change_password:
+          type: boolean
+          x-go-name: MustChangePassword
+        password:
+          type: string
+          x-go-name: Password
+        restricted:
+          type: boolean
+          x-go-name: Restricted
+        send_notify:
+          type: boolean
+          x-go-name: SendNotify
+        source_id:
+          format: int64
+          type: integer
+          x-go-name: SourceID
+        username:
+          type: string
+          x-go-name: Username
+        visibility:
+          type: string
+          x-go-name: Visibility
+      required:
+      - email
+      - password
+      - username
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    CreateWikiPageOptions:
+      description: CreateWikiPageOptions form for creating wiki
+      example:
+        content_base64: content_base64
+        message: message
+        title: title
+      properties:
+        content_base64:
+          description: content must be base64 encoded
+          type: string
+          x-go-name: ContentBase64
+        message:
+          description: optional commit message summarizing the change
+          type: string
+          x-go-name: Message
+        title:
+          description: page title. leave empty to keep unchanged
+          type: string
+          x-go-name: Title
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Cron:
+      description: Cron represents a Cron task
+      example:
+        next: 2000-01-23T04:56:07.000+00:00
+        schedule: schedule
+        exec_times: 0
+        prev: 2000-01-23T04:56:07.000+00:00
+        name: name
+      properties:
+        exec_times:
+          format: int64
+          type: integer
+          x-go-name: ExecTimes
+        name:
+          type: string
+          x-go-name: Name
+        next:
+          format: date-time
+          type: string
+          x-go-name: Next
+        prev:
+          format: date-time
+          type: string
+          x-go-name: Prev
+        schedule:
+          type: string
+          x-go-name: Schedule
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    DeleteEmailOption:
+      description: DeleteEmailOption options when deleting email addresses
+      example:
+        emails:
+        - emails
+        - emails
+      properties:
+        emails:
+          description: email addresses to delete
+          items:
+            type: string
+          type: array
+          x-go-name: Emails
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    DeleteFileOptions:
+      description: |-
+        DeleteFileOptions options for deleting files (used for other File structs below)
+        Note: `author` and `committer` are optional (if only one is given, it will be used for the other, otherwise the authenticated user will be used)
+      example:
+        committer:
+          name: name
+          email: email
+        author:
+          name: name
+          email: email
+        new_branch: new_branch
+        dates:
+          committer: 2000-01-23T04:56:07.000+00:00
+          author: 2000-01-23T04:56:07.000+00:00
+        signoff: true
+        message: message
+        branch: branch
+        sha: sha
+      properties:
+        author:
+          $ref: '#/components/schemas/Identity'
+        branch:
+          description: "branch (optional) to base this file from. if not given, the\
+            \ default branch is used"
+          type: string
+          x-go-name: BranchName
+        committer:
+          $ref: '#/components/schemas/Identity'
+        dates:
+          $ref: '#/components/schemas/CommitDateOptions'
+        message:
+          description: "message (optional) for the commit of this file. if not supplied,\
+            \ a default message will be used"
+          type: string
+          x-go-name: Message
+        new_branch:
+          description: new_branch (optional) will make a new branch from `branch`
+            before creating the file
+          type: string
+          x-go-name: NewBranchName
+        sha:
+          description: sha is the SHA for the file that already exists
+          type: string
+          x-go-name: SHA
+        signoff:
+          description: Add a Signed-off-by trailer by the committer at the end of
+            the commit log message.
+          type: boolean
+          x-go-name: Signoff
+      required:
+      - sha
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    DeployKey:
+      description: DeployKey a deploy key
+      example:
+        key_id: 6
+        read_only: true
+        fingerprint: fingerprint
+        created_at: 2000-01-23T04:56:07.000+00:00
+        id: 0
+        repository:
+          parent: null
+          open_pr_counter: 5
+          language: language
+          repo_transfer:
+            teams:
+            - can_create_org_repo: true
+              units_map:
+                repo.code: read
+                repo.ext_issues: none
+                repo.ext_wiki: none
+                repo.issues: write
+                repo.projects: none
+                repo.pulls: owner
+                repo.releases: none
+                repo.wiki: admin
+              organization:
+                website: website
+                full_name: full_name
+                repo_admin_change_team_access: true
+                avatar_url: avatar_url
+                visibility: visibility
+                name: name
+                description: description
+                location: location
+                id: 0
+                username: username
+              name: name
+              description: description
+              permission: none
+              id: 2
+              includes_all_repositories: true
+              units:
+              - repo.code
+              - repo.issues
+              - repo.ext_issues
+              - repo.wiki
+              - repo.pulls
+              - repo.releases
+              - repo.projects
+              - repo.ext_wiki
+            - can_create_org_repo: true
+              units_map:
+                repo.code: read
+                repo.ext_issues: none
+                repo.ext_wiki: none
+                repo.issues: write
+                repo.projects: none
+                repo.pulls: owner
+                repo.releases: none
+                repo.wiki: admin
+              organization:
+                website: website
+                full_name: full_name
+                repo_admin_change_team_access: true
+                avatar_url: avatar_url
+                visibility: visibility
+                name: name
+                description: description
+                location: location
+                id: 0
+                username: username
+              name: name
+              description: description
+              permission: none
+              id: 2
+              includes_all_repositories: true
+              units:
+              - repo.code
+              - repo.issues
+              - repo.ext_issues
+              - repo.wiki
+              - repo.pulls
+              - repo.releases
+              - repo.projects
+              - repo.ext_wiki
+            doer:
+              website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+            recipient:
+              website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+          has_pull_requests: true
+          empty: true
+          permissions:
+            pull: true
+            admin: true
+            push: true
+          id: 6
+          release_counter: 5
+          default_delete_branch_after_merge: true
+          ssh_url: ssh_url
+          full_name: full_name
+          size: 7
+          languages_url: languages_url
+          clone_url: clone_url
+          html_url: html_url
+          name: name
+          default_branch: default_branch
+          mirror_updated: 2000-01-23T04:56:07.000+00:00
+          ignore_whitespace_conflicts: true
+          template: true
+          internal: true
+          mirror: true
+          private: true
+          open_issues_count: 1
+          link: link
+          created_at: 2000-01-23T04:56:07.000+00:00
+          default_allow_maintainer_edit: true
+          description: description
+          allow_rebase_update: true
+          has_projects: true
+          archived: true
+          has_wiki: true
+          updated_at: 2000-01-23T04:56:07.000+00:00
+          allow_merge_commits: true
+          stars_count: 9
+          allow_rebase_explicit: true
+          external_tracker:
+            external_tracker_regexp_pattern: external_tracker_regexp_pattern
+            external_tracker_style: external_tracker_style
+            external_tracker_url: external_tracker_url
+            external_tracker_format: external_tracker_format
+          mirror_interval: mirror_interval
+          owner:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          allow_squash_merge: true
+          external_wiki:
+            external_wiki_url: external_wiki_url
+          website: website
+          internal_tracker:
+            enable_issue_dependencies: true
+            allow_only_contributors_to_track_time: true
+            enable_time_tracker: true
+          has_issues: true
+          allow_rebase: true
+          default_merge_style: default_merge_style
+          fork: true
+          avatar_url: avatar_url
+          original_url: original_url
+          watchers_count: 3
+          forks_count: 0
+        title: title
+        key: key
+        url: url
+      properties:
+        created_at:
+          format: date-time
+          type: string
+          x-go-name: Created
+        fingerprint:
+          type: string
+          x-go-name: Fingerprint
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        key:
+          type: string
+          x-go-name: Key
+        key_id:
+          format: int64
+          type: integer
+          x-go-name: KeyID
+        read_only:
+          type: boolean
+          x-go-name: ReadOnly
+        repository:
+          $ref: '#/components/schemas/Repository'
+        title:
+          type: string
+          x-go-name: Title
+        url:
+          type: string
+          x-go-name: URL
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    DismissPullReviewOptions:
+      description: DismissPullReviewOptions are options to dismiss a pull review
+      example:
+        message: message
+        priors: true
+      properties:
+        message:
+          type: string
+          x-go-name: Message
+        priors:
+          type: boolean
+          x-go-name: Priors
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    EditAttachmentOptions:
+      description: EditAttachmentOptions options for editing attachments
+      example:
+        name: name
+      properties:
+        name:
+          type: string
+          x-go-name: Name
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    EditBranchProtectionOption:
+      description: EditBranchProtectionOption options for editing a branch protection
+      example:
+        block_on_rejected_reviews: true
+        merge_whitelist_teams:
+        - merge_whitelist_teams
+        - merge_whitelist_teams
+        enable_push: true
+        require_signed_commits: true
+        enable_merge_whitelist: true
+        enable_push_whitelist: true
+        push_whitelist_teams:
+        - push_whitelist_teams
+        - push_whitelist_teams
+        block_on_outdated_branch: true
+        push_whitelist_deploy_keys: true
+        approvals_whitelist_username:
+        - approvals_whitelist_username
+        - approvals_whitelist_username
+        dismiss_stale_approvals: true
+        enable_status_check: true
+        status_check_contexts:
+        - status_check_contexts
+        - status_check_contexts
+        push_whitelist_usernames:
+        - push_whitelist_usernames
+        - push_whitelist_usernames
+        merge_whitelist_usernames:
+        - merge_whitelist_usernames
+        - merge_whitelist_usernames
+        protected_file_patterns: protected_file_patterns
+        enable_approvals_whitelist: true
+        approvals_whitelist_teams:
+        - approvals_whitelist_teams
+        - approvals_whitelist_teams
+        required_approvals: 0
+        unprotected_file_patterns: unprotected_file_patterns
+        block_on_official_review_requests: true
+      properties:
+        approvals_whitelist_teams:
+          items:
+            type: string
+          type: array
+          x-go-name: ApprovalsWhitelistTeams
+        approvals_whitelist_username:
+          items:
+            type: string
+          type: array
+          x-go-name: ApprovalsWhitelistUsernames
+        block_on_official_review_requests:
+          type: boolean
+          x-go-name: BlockOnOfficialReviewRequests
+        block_on_outdated_branch:
+          type: boolean
+          x-go-name: BlockOnOutdatedBranch
+        block_on_rejected_reviews:
+          type: boolean
+          x-go-name: BlockOnRejectedReviews
+        dismiss_stale_approvals:
+          type: boolean
+          x-go-name: DismissStaleApprovals
+        enable_approvals_whitelist:
+          type: boolean
+          x-go-name: EnableApprovalsWhitelist
+        enable_merge_whitelist:
+          type: boolean
+          x-go-name: EnableMergeWhitelist
+        enable_push:
+          type: boolean
+          x-go-name: EnablePush
+        enable_push_whitelist:
+          type: boolean
+          x-go-name: EnablePushWhitelist
+        enable_status_check:
+          type: boolean
+          x-go-name: EnableStatusCheck
+        merge_whitelist_teams:
+          items:
+            type: string
+          type: array
+          x-go-name: MergeWhitelistTeams
+        merge_whitelist_usernames:
+          items:
+            type: string
+          type: array
+          x-go-name: MergeWhitelistUsernames
+        protected_file_patterns:
+          type: string
+          x-go-name: ProtectedFilePatterns
+        push_whitelist_deploy_keys:
+          type: boolean
+          x-go-name: PushWhitelistDeployKeys
+        push_whitelist_teams:
+          items:
+            type: string
+          type: array
+          x-go-name: PushWhitelistTeams
+        push_whitelist_usernames:
+          items:
+            type: string
+          type: array
+          x-go-name: PushWhitelistUsernames
+        require_signed_commits:
+          type: boolean
+          x-go-name: RequireSignedCommits
+        required_approvals:
+          format: int64
+          type: integer
+          x-go-name: RequiredApprovals
+        status_check_contexts:
+          items:
+            type: string
+          type: array
+          x-go-name: StatusCheckContexts
+        unprotected_file_patterns:
+          type: string
+          x-go-name: UnprotectedFilePatterns
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    EditDeadlineOption:
+      description: EditDeadlineOption options for creating a deadline
+      example:
+        due_date: 2000-01-23T04:56:07.000+00:00
+      properties:
+        due_date:
+          format: date-time
+          type: string
+          x-go-name: Deadline
+      required:
+      - due_date
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    EditGitHookOption:
+      description: EditGitHookOption options when modifying one Git hook
+      example:
+        content: content
+      properties:
+        content:
+          type: string
+          x-go-name: Content
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    EditHookOption:
+      description: EditHookOption options when modify one hook
+      example:
+        branch_filter: branch_filter
+        active: true
+        config:
+          key: config
+        authorization_header: authorization_header
+        events:
+        - events
+        - events
+      properties:
+        active:
+          type: boolean
+          x-go-name: Active
+        authorization_header:
+          type: string
+          x-go-name: AuthorizationHeader
+        branch_filter:
+          type: string
+          x-go-name: BranchFilter
+        config:
+          additionalProperties:
+            type: string
+          type: object
+          x-go-name: Config
+        events:
+          items:
+            type: string
+          type: array
+          x-go-name: Events
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    EditIssueCommentOption:
+      description: EditIssueCommentOption options for editing a comment
+      example:
+        body: body
+      properties:
+        body:
+          type: string
+          x-go-name: Body
+      required:
+      - body
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    EditIssueOption:
+      description: EditIssueOption options for editing an issue
+      example:
+        unset_due_date: true
+        ref: ref
+        milestone: 0
+        due_date: 2000-01-23T04:56:07.000+00:00
+        assignees:
+        - assignees
+        - assignees
+        assignee: assignee
+        state: state
+        body: body
+        title: title
+      properties:
+        assignee:
+          description: deprecated
+          type: string
+          x-go-name: Assignee
+        assignees:
+          items:
+            type: string
+          type: array
+          x-go-name: Assignees
+        body:
+          type: string
+          x-go-name: Body
+        due_date:
+          format: date-time
+          type: string
+          x-go-name: Deadline
+        milestone:
+          format: int64
+          type: integer
+          x-go-name: Milestone
+        ref:
+          type: string
+          x-go-name: Ref
+        state:
+          type: string
+          x-go-name: State
+        title:
+          type: string
+          x-go-name: Title
+        unset_due_date:
+          type: boolean
+          x-go-name: RemoveDeadline
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    EditLabelOption:
+      description: EditLabelOption options for editing a label
+      example:
+        color: '#00aabb'
+        name: name
+        description: description
+        exclusive: false
+      properties:
+        color:
+          example: '#00aabb'
+          type: string
+          x-go-name: Color
+        description:
+          type: string
+          x-go-name: Description
+        exclusive:
+          example: false
+          type: boolean
+          x-go-name: Exclusive
+        name:
+          type: string
+          x-go-name: Name
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    EditMilestoneOption:
+      description: EditMilestoneOption options for editing a milestone
+      example:
+        description: description
+        state: state
+        title: title
+        due_on: 2000-01-23T04:56:07.000+00:00
+      properties:
+        description:
+          type: string
+          x-go-name: Description
+        due_on:
+          format: date-time
+          type: string
+          x-go-name: Deadline
+        state:
+          type: string
+          x-go-name: State
+        title:
+          type: string
+          x-go-name: Title
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    EditOrgOption:
+      description: EditOrgOption options for editing an organization
+      example:
+        website: website
+        full_name: full_name
+        repo_admin_change_team_access: true
+        visibility: public
+        description: description
+        location: location
+      properties:
+        description:
+          type: string
+          x-go-name: Description
+        full_name:
+          type: string
+          x-go-name: FullName
+        location:
+          type: string
+          x-go-name: Location
+        repo_admin_change_team_access:
+          type: boolean
+          x-go-name: RepoAdminChangeTeamAccess
+        visibility:
+          description: "possible values are `public`, `limited` or `private`"
+          enum:
+          - public
+          - limited
+          - private
+          type: string
+          x-go-name: Visibility
+        website:
+          type: string
+          x-go-name: Website
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    EditPullRequestOption:
+      description: EditPullRequestOption options when modify pull request
+      example:
+        unset_due_date: true
+        milestone: 6
+        allow_maintainer_edit: true
+        due_date: 2000-01-23T04:56:07.000+00:00
+        assignees:
+        - assignees
+        - assignees
+        assignee: assignee
+        state: state
+        body: body
+        title: title
+        base: base
+        labels:
+        - 0
+        - 0
+      properties:
+        allow_maintainer_edit:
+          type: boolean
+          x-go-name: AllowMaintainerEdit
+        assignee:
+          type: string
+          x-go-name: Assignee
+        assignees:
+          items:
+            type: string
+          type: array
+          x-go-name: Assignees
+        base:
+          type: string
+          x-go-name: Base
+        body:
+          type: string
+          x-go-name: Body
+        due_date:
+          format: date-time
+          type: string
+          x-go-name: Deadline
+        labels:
+          items:
+            format: int64
+            type: integer
+          type: array
+          x-go-name: Labels
+        milestone:
+          format: int64
+          type: integer
+          x-go-name: Milestone
+        state:
+          type: string
+          x-go-name: State
+        title:
+          type: string
+          x-go-name: Title
+        unset_due_date:
+          type: boolean
+          x-go-name: RemoveDeadline
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    EditReactionOption:
+      description: EditReactionOption contain the reaction type
+      example:
+        content: content
+      properties:
+        content:
+          type: string
+          x-go-name: Reaction
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    EditReleaseOption:
+      description: EditReleaseOption options when editing a release
+      example:
+        prerelease: true
+        tag_name: tag_name
+        draft: true
+        target_commitish: target_commitish
+        name: name
+        body: body
+      properties:
+        body:
+          type: string
+          x-go-name: Note
+        draft:
+          type: boolean
+          x-go-name: IsDraft
+        name:
+          type: string
+          x-go-name: Title
+        prerelease:
+          type: boolean
+          x-go-name: IsPrerelease
+        tag_name:
+          type: string
+          x-go-name: TagName
+        target_commitish:
+          type: string
+          x-go-name: Target
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    EditRepoOption:
+      description: EditRepoOption options when editing a repository's properties
+      example:
+        ignore_whitespace_conflicts: true
+        template: true
+        allow_manual_merge: true
+        private: true
+        default_allow_maintainer_edit: true
+        description: description
+        allow_rebase_update: true
+        has_pull_requests: true
+        has_projects: true
+        archived: true
+        autodetect_manual_merge: true
+        has_wiki: true
+        allow_merge_commits: true
+        allow_rebase_explicit: true
+        external_tracker:
+          external_tracker_regexp_pattern: external_tracker_regexp_pattern
+          external_tracker_style: external_tracker_style
+          external_tracker_url: external_tracker_url
+          external_tracker_format: external_tracker_format
+        mirror_interval: mirror_interval
+        enable_prune: true
+        allow_squash_merge: true
+        external_wiki:
+          external_wiki_url: external_wiki_url
+        website: website
+        internal_tracker:
+          enable_issue_dependencies: true
+          allow_only_contributors_to_track_time: true
+          enable_time_tracker: true
+        default_delete_branch_after_merge: true
+        has_issues: true
+        allow_rebase: true
+        default_merge_style: default_merge_style
+        name: name
+        default_branch: default_branch
+      properties:
+        allow_manual_merge:
+          description: "either `true` to allow mark pr as merged manually, or `false`\
+            \ to prevent it."
+          type: boolean
+          x-go-name: AllowManualMerge
+        allow_merge_commits:
+          description: "either `true` to allow merging pull requests with a merge\
+            \ commit, or `false` to prevent merging pull requests with merge commits."
+          type: boolean
+          x-go-name: AllowMerge
+        allow_rebase:
+          description: "either `true` to allow rebase-merging pull requests, or `false`\
+            \ to prevent rebase-merging."
+          type: boolean
+          x-go-name: AllowRebase
+        allow_rebase_explicit:
+          description: "either `true` to allow rebase with explicit merge commits\
+            \ (--no-ff), or `false` to prevent rebase with explicit merge commits."
+          type: boolean
+          x-go-name: AllowRebaseMerge
+        allow_rebase_update:
+          description: "either `true` to allow updating pull request branch by rebase,\
+            \ or `false` to prevent it."
+          type: boolean
+          x-go-name: AllowRebaseUpdate
+        allow_squash_merge:
+          description: "either `true` to allow squash-merging pull requests, or `false`\
+            \ to prevent squash-merging."
+          type: boolean
+          x-go-name: AllowSquash
+        archived:
+          description: set to `true` to archive this repository.
+          type: boolean
+          x-go-name: Archived
+        autodetect_manual_merge:
+          description: "either `true` to enable AutodetectManualMerge, or `false`\
+            \ to prevent it. Note: In some special cases, misjudgments can occur."
+          type: boolean
+          x-go-name: AutodetectManualMerge
+        default_allow_maintainer_edit:
+          description: set to `true` to allow edits from maintainers by default
+          type: boolean
+          x-go-name: DefaultAllowMaintainerEdit
+        default_branch:
+          description: sets the default branch for this repository.
+          type: string
+          x-go-name: DefaultBranch
+        default_delete_branch_after_merge:
+          description: set to `true` to delete pr branch after merge by default
+          type: boolean
+          x-go-name: DefaultDeleteBranchAfterMerge
+        default_merge_style:
+          description: "set to a merge style to be used by this repository: \"merge\"\
+            , \"rebase\", \"rebase-merge\", or \"squash\"."
+          type: string
+          x-go-name: DefaultMergeStyle
+        description:
+          description: a short description of the repository.
+          type: string
+          x-go-name: Description
+        enable_prune:
+          description: enable prune - remove obsolete remote-tracking references
+          type: boolean
+          x-go-name: EnablePrune
+        external_tracker:
+          $ref: '#/components/schemas/ExternalTracker'
+        external_wiki:
+          $ref: '#/components/schemas/ExternalWiki'
+        has_issues:
+          description: either `true` to enable issues for this repository or `false`
+            to disable them.
+          type: boolean
+          x-go-name: HasIssues
+        has_projects:
+          description: "either `true` to enable project unit, or `false` to disable\
+            \ them."
+          type: boolean
+          x-go-name: HasProjects
+        has_pull_requests:
+          description: "either `true` to allow pull requests, or `false` to prevent\
+            \ pull request."
+          type: boolean
+          x-go-name: HasPullRequests
+        has_wiki:
+          description: either `true` to enable the wiki for this repository or `false`
+            to disable it.
+          type: boolean
+          x-go-name: HasWiki
+        ignore_whitespace_conflicts:
+          description: "either `true` to ignore whitespace for conflicts, or `false`\
+            \ to not ignore whitespace."
+          type: boolean
+          x-go-name: IgnoreWhitespaceConflicts
+        internal_tracker:
+          $ref: '#/components/schemas/InternalTracker'
+        mirror_interval:
+          description: set to a string like `8h30m0s` to set the mirror interval time
+          type: string
+          x-go-name: MirrorInterval
+        name:
+          description: name of the repository
+          type: string
+          x-go-name: Name
+        private:
+          description: |-
+            either `true` to make the repository private or `false` to make it public.
+            Note: you will get a 422 error if the organization restricts changing repository visibility to organization
+            owners and a non-owner tries to change the value of private.
+          type: boolean
+          x-go-name: Private
+        template:
+          description: either `true` to make this repository a template or `false`
+            to make it a normal repository
+          type: boolean
+          x-go-name: Template
+        website:
+          description: a URL with more information about the repository.
+          type: string
+          x-go-name: Website
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    EditTeamOption:
+      description: EditTeamOption options for editing a team
+      example:
+        can_create_org_repo: true
+        units_map:
+          repo.code: read
+          repo.ext_issues: none
+          repo.ext_wiki: none
+          repo.issues: write
+          repo.projects: none
+          repo.pulls: owner
+          repo.releases: none
+          repo.wiki: admin
+        name: name
+        description: description
+        permission: read
+        includes_all_repositories: true
+        units:
+        - repo.code
+        - repo.issues
+        - repo.ext_issues
+        - repo.wiki
+        - repo.pulls
+        - repo.releases
+        - repo.projects
+        - repo.ext_wiki
+      properties:
+        can_create_org_repo:
+          type: boolean
+          x-go-name: CanCreateOrgRepo
+        description:
+          type: string
+          x-go-name: Description
+        includes_all_repositories:
+          type: boolean
+          x-go-name: IncludesAllRepositories
+        name:
+          type: string
+          x-go-name: Name
+        permission:
+          enum:
+          - read
+          - write
+          - admin
+          type: string
+          x-go-name: Permission
+        units:
+          example:
+          - repo.code
+          - repo.issues
+          - repo.ext_issues
+          - repo.wiki
+          - repo.pulls
+          - repo.releases
+          - repo.projects
+          - repo.ext_wiki
+          items:
+            type: string
+          type: array
+          x-go-name: Units
+        units_map:
+          additionalProperties:
+            type: string
+          example:
+            repo.code: read
+            repo.ext_issues: none
+            repo.ext_wiki: none
+            repo.issues: write
+            repo.projects: none
+            repo.pulls: owner
+            repo.releases: none
+            repo.wiki: admin
+          type: object
+          x-go-name: UnitsMap
+      required:
+      - name
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    EditUserOption:
+      description: EditUserOption edit user options
+      example:
+        website: website
+        visibility: visibility
+        active: true
+        admin: true
+        description: description
+        max_repo_creation: 0
+        must_change_password: true
+        password: password
+        full_name: full_name
+        login_name: login_name
+        restricted: true
+        location: location
+        allow_create_organization: true
+        prohibit_login: true
+        source_id: 6
+        allow_import_local: true
+        email: email
+        allow_git_hook: true
+      properties:
+        active:
+          type: boolean
+          x-go-name: Active
+        admin:
+          type: boolean
+          x-go-name: Admin
+        allow_create_organization:
+          type: boolean
+          x-go-name: AllowCreateOrganization
+        allow_git_hook:
+          type: boolean
+          x-go-name: AllowGitHook
+        allow_import_local:
+          type: boolean
+          x-go-name: AllowImportLocal
+        description:
+          type: string
+          x-go-name: Description
+        email:
+          format: email
+          type: string
+          x-go-name: Email
+        full_name:
+          type: string
+          x-go-name: FullName
+        location:
+          type: string
+          x-go-name: Location
+        login_name:
+          type: string
+          x-go-name: LoginName
+        max_repo_creation:
+          format: int64
+          type: integer
+          x-go-name: MaxRepoCreation
+        must_change_password:
+          type: boolean
+          x-go-name: MustChangePassword
+        password:
+          type: string
+          x-go-name: Password
+        prohibit_login:
+          type: boolean
+          x-go-name: ProhibitLogin
+        restricted:
+          type: boolean
+          x-go-name: Restricted
+        source_id:
+          format: int64
+          type: integer
+          x-go-name: SourceID
+        visibility:
+          type: string
+          x-go-name: Visibility
+        website:
+          type: string
+          x-go-name: Website
+      required:
+      - login_name
+      - source_id
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Email:
+      description: Email an email address belonging to a user
+      example:
+        verified: true
+        email: email
+        primary: true
+      properties:
+        email:
+          format: email
+          type: string
+          x-go-name: Email
+        primary:
+          type: boolean
+          x-go-name: Primary
+        verified:
+          type: boolean
+          x-go-name: Verified
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    ExternalTracker:
+      description: ExternalTracker represents settings for external tracker
+      example:
+        external_tracker_regexp_pattern: external_tracker_regexp_pattern
+        external_tracker_style: external_tracker_style
+        external_tracker_url: external_tracker_url
+        external_tracker_format: external_tracker_format
+      properties:
+        external_tracker_format:
+          description: "External Issue Tracker URL Format. Use the placeholders {user},\
+            \ {repo} and {index} for the username, repository name and issue index."
+          type: string
+          x-go-name: ExternalTrackerFormat
+        external_tracker_regexp_pattern:
+          description: External Issue Tracker issue regular expression
+          type: string
+          x-go-name: ExternalTrackerRegexpPattern
+        external_tracker_style:
+          description: "External Issue Tracker Number Format, either `numeric`, `alphanumeric`,\
+            \ or `regexp`"
+          type: string
+          x-go-name: ExternalTrackerStyle
+        external_tracker_url:
+          description: URL of external issue tracker.
+          type: string
+          x-go-name: ExternalTrackerURL
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    ExternalWiki:
+      description: ExternalWiki represents setting for external wiki
+      example:
+        external_wiki_url: external_wiki_url
+      properties:
+        external_wiki_url:
+          description: URL of external wiki.
+          type: string
+          x-go-name: ExternalWikiURL
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    FileCommitResponse:
+      example:
+        committer:
+          date: date
+          name: name
+          email: email
+        author:
+          date: date
+          name: name
+          email: email
+        created: 2000-01-23T04:56:07.000+00:00
+        html_url: html_url
+        tree:
+          created: 2000-01-23T04:56:07.000+00:00
+          sha: sha
+          url: url
+        message: message
+        sha: sha
+        url: url
+        parents:
+        - created: 2000-01-23T04:56:07.000+00:00
+          sha: sha
+          url: url
+        - created: 2000-01-23T04:56:07.000+00:00
+          sha: sha
+          url: url
+      properties:
+        author:
+          $ref: '#/components/schemas/CommitUser'
+        committer:
+          $ref: '#/components/schemas/CommitUser'
+        created:
+          format: date-time
+          type: string
+          x-go-name: Created
+        html_url:
+          type: string
+          x-go-name: HTMLURL
+        message:
+          type: string
+          x-go-name: Message
+        parents:
+          items:
+            $ref: '#/components/schemas/CommitMeta'
+          type: array
+          x-go-name: Parents
+        sha:
+          type: string
+          x-go-name: SHA
+        tree:
+          $ref: '#/components/schemas/CommitMeta'
+        url:
+          type: string
+          x-go-name: URL
+      title: FileCommitResponse contains information generated from a Git commit for
+        a repo's file.
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    FileDeleteResponse:
+      description: FileDeleteResponse contains information about a repo's file that
+        was deleted
+      example:
+        commit:
+          committer:
+            date: date
+            name: name
+            email: email
+          author:
+            date: date
+            name: name
+            email: email
+          created: 2000-01-23T04:56:07.000+00:00
+          html_url: html_url
+          tree:
+            created: 2000-01-23T04:56:07.000+00:00
+            sha: sha
+            url: url
+          message: message
+          sha: sha
+          url: url
+          parents:
+          - created: 2000-01-23T04:56:07.000+00:00
+            sha: sha
+            url: url
+          - created: 2000-01-23T04:56:07.000+00:00
+            sha: sha
+            url: url
+        content: "{}"
+        verification:
+          reason: reason
+          payload: payload
+          signature: signature
+          verified: true
+          signer:
+            name: name
+            email: email
+            username: username
+      properties:
+        commit:
+          $ref: '#/components/schemas/FileCommitResponse'
+        content:
+          type: object
+          x-go-name: Content
+        verification:
+          $ref: '#/components/schemas/PayloadCommitVerification'
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    FileLinksResponse:
+      description: FileLinksResponse contains the links for a repo's file
+      example:
+        git: git
+        self: self
+        html: html
+      properties:
+        git:
+          type: string
+          x-go-name: GitURL
+        html:
+          type: string
+          x-go-name: HTMLURL
+        self:
+          type: string
+          x-go-name: Self
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    FileResponse:
+      description: FileResponse contains information about a repo's file
+      example:
+        commit:
+          committer:
+            date: date
+            name: name
+            email: email
+          author:
+            date: date
+            name: name
+            email: email
+          created: 2000-01-23T04:56:07.000+00:00
+          html_url: html_url
+          tree:
+            created: 2000-01-23T04:56:07.000+00:00
+            sha: sha
+            url: url
+          message: message
+          sha: sha
+          url: url
+          parents:
+          - created: 2000-01-23T04:56:07.000+00:00
+            sha: sha
+            url: url
+          - created: 2000-01-23T04:56:07.000+00:00
+            sha: sha
+            url: url
+        content:
+          _links:
+            git: git
+            self: self
+            html: html
+          submodule_git_url: submodule_git_url
+          last_commit_sha: last_commit_sha
+          encoding: encoding
+          type: type
+          sha: sha
+          content: content
+          url: url
+          target: target
+          path: path
+          size: 0
+          html_url: html_url
+          download_url: download_url
+          name: name
+          git_url: git_url
+        verification:
+          reason: reason
+          payload: payload
+          signature: signature
+          verified: true
+          signer:
+            name: name
+            email: email
+            username: username
+      properties:
+        commit:
+          $ref: '#/components/schemas/FileCommitResponse'
+        content:
+          $ref: '#/components/schemas/ContentsResponse'
+        verification:
+          $ref: '#/components/schemas/PayloadCommitVerification'
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    GPGKey:
+      description: GPGKey a user GPG key to sign commit and tag in repository
+      example:
+        public_key: public_key
+        key_id: key_id
+        verified: true
+        created_at: 2000-01-23T04:56:07.000+00:00
+        emails:
+        - verified: true
+          email: email
+        - verified: true
+          email: email
+        can_certify: true
+        expires_at: 2000-01-23T04:56:07.000+00:00
+        can_encrypt_comms: true
+        can_encrypt_storage: true
+        can_sign: true
+        id: 0
+        subkeys:
+        - null
+        - null
+        primary_key_id: primary_key_id
+      properties:
+        can_certify:
+          type: boolean
+          x-go-name: CanCertify
+        can_encrypt_comms:
+          type: boolean
+          x-go-name: CanEncryptComms
+        can_encrypt_storage:
+          type: boolean
+          x-go-name: CanEncryptStorage
+        can_sign:
+          type: boolean
+          x-go-name: CanSign
+        created_at:
+          format: date-time
+          type: string
+          x-go-name: Created
+        emails:
+          items:
+            $ref: '#/components/schemas/GPGKeyEmail'
+          type: array
+          x-go-name: Emails
+        expires_at:
+          format: date-time
+          type: string
+          x-go-name: Expires
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        key_id:
+          type: string
+          x-go-name: KeyID
+        primary_key_id:
+          type: string
+          x-go-name: PrimaryKeyID
+        public_key:
+          type: string
+          x-go-name: PublicKey
+        subkeys:
+          items:
+            $ref: '#/components/schemas/GPGKey'
+          type: array
+          x-go-name: SubsKey
+        verified:
+          type: boolean
+          x-go-name: Verified
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    GPGKeyEmail:
+      description: GPGKeyEmail an email attached to a GPGKey
+      example:
+        verified: true
+        email: email
+      properties:
+        email:
+          type: string
+          x-go-name: Email
+        verified:
+          type: boolean
+          x-go-name: Verified
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    GeneralAPISettings:
+      description: GeneralAPISettings contains global api settings exposed by it
+      example:
+        max_response_items: 5
+        default_git_trees_per_page: 0
+        default_paging_num: 1
+        default_max_blob_size: 6
+      properties:
+        default_git_trees_per_page:
+          format: int64
+          type: integer
+          x-go-name: DefaultGitTreesPerPage
+        default_max_blob_size:
+          format: int64
+          type: integer
+          x-go-name: DefaultMaxBlobSize
+        default_paging_num:
+          format: int64
+          type: integer
+          x-go-name: DefaultPagingNum
+        max_response_items:
+          format: int64
+          type: integer
+          x-go-name: MaxResponseItems
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    GeneralAttachmentSettings:
+      description: GeneralAttachmentSettings contains global Attachment settings exposed
+        by API
+      example:
+        max_files: 0
+        allowed_types: allowed_types
+        enabled: true
+        max_size: 6
+      properties:
+        allowed_types:
+          type: string
+          x-go-name: AllowedTypes
+        enabled:
+          type: boolean
+          x-go-name: Enabled
+        max_files:
+          format: int64
+          type: integer
+          x-go-name: MaxFiles
+        max_size:
+          format: int64
+          type: integer
+          x-go-name: MaxSize
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    GeneralRepoSettings:
+      description: GeneralRepoSettings contains global repository settings exposed
+        by API
+      example:
+        migrations_disabled: true
+        http_git_disabled: true
+        lfs_disabled: true
+        mirrors_disabled: true
+        time_tracking_disabled: true
+        stars_disabled: true
+      properties:
+        http_git_disabled:
+          type: boolean
+          x-go-name: HTTPGitDisabled
+        lfs_disabled:
+          type: boolean
+          x-go-name: LFSDisabled
+        migrations_disabled:
+          type: boolean
+          x-go-name: MigrationsDisabled
+        mirrors_disabled:
+          type: boolean
+          x-go-name: MirrorsDisabled
+        stars_disabled:
+          type: boolean
+          x-go-name: StarsDisabled
+        time_tracking_disabled:
+          type: boolean
+          x-go-name: TimeTrackingDisabled
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    GeneralUISettings:
+      description: GeneralUISettings contains global ui settings exposed by API
+      example:
+        custom_emojis:
+        - custom_emojis
+        - custom_emojis
+        allowed_reactions:
+        - allowed_reactions
+        - allowed_reactions
+        default_theme: default_theme
+      properties:
+        allowed_reactions:
+          items:
+            type: string
+          type: array
+          x-go-name: AllowedReactions
+        custom_emojis:
+          items:
+            type: string
+          type: array
+          x-go-name: CustomEmojis
+        default_theme:
+          type: string
+          x-go-name: DefaultTheme
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    GenerateRepoOption:
+      description: GenerateRepoOption options when creating repository using a template
+      example:
+        git_content: true
+        owner: owner
+        private: true
+        git_hooks: true
+        webhooks: true
+        topics: true
+        name: name
+        description: description
+        default_branch: default_branch
+        avatar: true
+        labels: true
+      properties:
+        avatar:
+          description: include avatar of the template repo
+          type: boolean
+          x-go-name: Avatar
+        default_branch:
+          description: Default branch of the new repository
+          type: string
+          x-go-name: DefaultBranch
+        description:
+          description: Description of the repository to create
+          type: string
+          x-go-name: Description
+        git_content:
+          description: include git content of default branch in template repo
+          type: boolean
+          x-go-name: GitContent
+        git_hooks:
+          description: include git hooks in template repo
+          type: boolean
+          x-go-name: GitHooks
+        labels:
+          description: include labels in template repo
+          type: boolean
+          x-go-name: Labels
+        name:
+          description: Name of the repository to create
+          type: string
+          x-go-name: Name
+        owner:
+          description: The organization or person who will own the new repository
+          type: string
+          x-go-name: Owner
+        private:
+          description: Whether the repository is private
+          type: boolean
+          x-go-name: Private
+        topics:
+          description: include topics in template repo
+          type: boolean
+          x-go-name: Topics
+        webhooks:
+          description: include webhooks in template repo
+          type: boolean
+          x-go-name: Webhooks
+      required:
+      - name
+      - owner
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    GitBlobResponse:
+      description: GitBlobResponse represents a git blob
+      example:
+        size: 0
+        encoding: encoding
+        sha: sha
+        content: content
+        url: url
+      properties:
+        content:
+          type: string
+          x-go-name: Content
+        encoding:
+          type: string
+          x-go-name: Encoding
+        sha:
+          type: string
+          x-go-name: SHA
+        size:
+          format: int64
+          type: integer
+          x-go-name: Size
+        url:
+          type: string
+          x-go-name: URL
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    GitEntry:
+      description: GitEntry represents a git tree
+      example:
+        mode: mode
+        path: path
+        size: 1
+        type: type
+        sha: sha
+        url: url
+      properties:
+        mode:
+          type: string
+          x-go-name: Mode
+        path:
+          type: string
+          x-go-name: Path
+        sha:
+          type: string
+          x-go-name: SHA
+        size:
+          format: int64
+          type: integer
+          x-go-name: Size
+        type:
+          type: string
+          x-go-name: Type
+        url:
+          type: string
+          x-go-name: URL
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    GitHook:
+      description: GitHook represents a Git repository hook
+      example:
+        is_active: true
+        name: name
+        content: content
+      properties:
+        content:
+          type: string
+          x-go-name: Content
+        is_active:
+          type: boolean
+          x-go-name: IsActive
+        name:
+          type: string
+          x-go-name: Name
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    GitObject:
+      example:
+        type: type
+        sha: sha
+        url: url
+      properties:
+        sha:
+          type: string
+          x-go-name: SHA
+        type:
+          type: string
+          x-go-name: Type
+        url:
+          type: string
+          x-go-name: URL
+      title: GitObject represents a Git object.
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    GitTreeResponse:
+      description: GitTreeResponse returns a git tree
+      example:
+        total_count: 6
+        tree:
+        - mode: mode
+          path: path
+          size: 1
+          type: type
+          sha: sha
+          url: url
+        - mode: mode
+          path: path
+          size: 1
+          type: type
+          sha: sha
+          url: url
+        truncated: true
+        page: 0
+        sha: sha
+        url: url
+      properties:
+        page:
+          format: int64
+          type: integer
+          x-go-name: Page
+        sha:
+          type: string
+          x-go-name: SHA
+        total_count:
+          format: int64
+          type: integer
+          x-go-name: TotalCount
+        tree:
+          items:
+            $ref: '#/components/schemas/GitEntry'
+          type: array
+          x-go-name: Entries
+        truncated:
+          type: boolean
+          x-go-name: Truncated
+        url:
+          type: string
+          x-go-name: URL
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Hook:
+      description: Hook a hook is a web hook when one repository changed
+      example:
+        updated_at: 2000-01-23T04:56:07.000+00:00
+        active: true
+        created_at: 2000-01-23T04:56:07.000+00:00
+        id: 0
+        type: type
+        config:
+          key: config
+        authorization_header: authorization_header
+        events:
+        - events
+        - events
+      properties:
+        active:
+          type: boolean
+          x-go-name: Active
+        authorization_header:
+          type: string
+          x-go-name: AuthorizationHeader
+        config:
+          additionalProperties:
+            type: string
+          type: object
+          x-go-name: Config
+        created_at:
+          format: date-time
+          type: string
+          x-go-name: Created
+        events:
+          items:
+            type: string
+          type: array
+          x-go-name: Events
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        type:
+          type: string
+          x-go-name: Type
+        updated_at:
+          format: date-time
+          type: string
+          x-go-name: Updated
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Identity:
+      description: Identity for a person's identity like an author or committer
+      example:
+        name: name
+        email: email
+      properties:
+        email:
+          format: email
+          type: string
+          x-go-name: Email
+        name:
+          type: string
+          x-go-name: Name
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    InternalTracker:
+      description: InternalTracker represents settings for internal tracker
+      example:
+        enable_issue_dependencies: true
+        allow_only_contributors_to_track_time: true
+        enable_time_tracker: true
+      properties:
+        allow_only_contributors_to_track_time:
+          description: Let only contributors track time (Built-in issue tracker)
+          type: boolean
+          x-go-name: AllowOnlyContributorsToTrackTime
+        enable_issue_dependencies:
+          description: Enable dependencies for issues and pull requests (Built-in
+            issue tracker)
+          type: boolean
+          x-go-name: EnableIssueDependencies
+        enable_time_tracker:
+          description: Enable time tracking (Built-in issue tracker)
+          type: boolean
+          x-go-name: EnableTimeTracker
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Issue:
+      description: Issue represents an issue in a repository
+      example:
+        is_locked: true
+        pull_request:
+          merged_at: 2000-01-23T04:56:07.000+00:00
+          merged: true
+        closed_at: 2000-01-23T04:56:07.000+00:00
+        comments: 5
+        original_author_id: 2
+        due_date: 2000-01-23T04:56:07.000+00:00
+        assignees:
+        - website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        - website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        created_at: 2000-01-23T04:56:07.000+00:00
+        body: body
+        repository:
+          owner: owner
+          full_name: full_name
+          name: name
+          id: 4
+        title: title
+        url: url
+        labels:
+        - color: 00aabb
+          name: name
+          description: description
+          exclusive: false
+          id: 0
+          url: url
+        - color: 00aabb
+          name: name
+          description: description
+          exclusive: false
+          id: 0
+          url: url
+        number: 3
+        ref: ref
+        assets:
+        - size: 1
+          name: name
+          created_at: 2000-01-23T04:56:07.000+00:00
+          browser_download_url: browser_download_url
+          id: 6
+          uuid: uuid
+          download_count: 0
+        - size: 1
+          name: name
+          created_at: 2000-01-23T04:56:07.000+00:00
+          browser_download_url: browser_download_url
+          id: 6
+          uuid: uuid
+          download_count: 0
+        milestone:
+          closed_at: 2000-01-23T04:56:07.000+00:00
+          updated_at: 2000-01-23T04:56:07.000+00:00
+          created_at: 2000-01-23T04:56:07.000+00:00
+          description: description
+          id: 7
+          state: state
+          closed_issues: 2
+          open_issues: 9
+          title: title
+          due_on: 2000-01-23T04:56:07.000+00:00
+        updated_at: 2000-01-23T04:56:07.000+00:00
+        html_url: html_url
+        assignee:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        id: 5
+        state: state
+        original_author: original_author
+        user:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+      properties:
+        assets:
+          items:
+            $ref: '#/components/schemas/Attachment'
+          type: array
+          x-go-name: Attachments
+        assignee:
+          $ref: '#/components/schemas/User'
+        assignees:
+          items:
+            $ref: '#/components/schemas/User'
+          type: array
+          x-go-name: Assignees
+        body:
+          type: string
+          x-go-name: Body
+        closed_at:
+          format: date-time
+          type: string
+          x-go-name: Closed
+        comments:
+          format: int64
+          type: integer
+          x-go-name: Comments
+        created_at:
+          format: date-time
+          type: string
+          x-go-name: Created
+        due_date:
+          format: date-time
+          type: string
+          x-go-name: Deadline
+        html_url:
+          type: string
+          x-go-name: HTMLURL
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        is_locked:
+          type: boolean
+          x-go-name: IsLocked
+        labels:
+          items:
+            $ref: '#/components/schemas/Label'
+          type: array
+          x-go-name: Labels
+        milestone:
+          $ref: '#/components/schemas/Milestone'
+        number:
+          format: int64
+          type: integer
+          x-go-name: Index
+        original_author:
+          type: string
+          x-go-name: OriginalAuthor
+        original_author_id:
+          format: int64
+          type: integer
+          x-go-name: OriginalAuthorID
+        pull_request:
+          $ref: '#/components/schemas/PullRequestMeta'
+        ref:
+          type: string
+          x-go-name: Ref
+        repository:
+          $ref: '#/components/schemas/RepositoryMeta'
+        state:
+          description: StateType issue state type
+          type: string
+          x-go-package: code.gitea.io/gitea/modules/structs
+        title:
+          type: string
+          x-go-name: Title
+        updated_at:
+          format: date-time
+          type: string
+          x-go-name: Updated
+        url:
+          type: string
+          x-go-name: URL
+        user:
+          $ref: '#/components/schemas/User'
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    IssueDeadline:
+      description: IssueDeadline represents an issue deadline
+      example:
+        due_date: 2000-01-23T04:56:07.000+00:00
+      properties:
+        due_date:
+          format: date-time
+          type: string
+          x-go-name: Deadline
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    IssueFormField:
+      description: IssueFormField represents a form field
+      example:
+        attributes:
+          key: "{}"
+        id: id
+        validations:
+          key: "{}"
+        type: type
+      properties:
+        attributes:
+          additionalProperties:
+            type: object
+          type: object
+          x-go-name: Attributes
+        id:
+          type: string
+          x-go-name: ID
+        type:
+          title: "IssueFormFieldType defines issue form field type, can be \"markdown\"\
+            , \"textarea\", \"input\", \"dropdown\" or \"checkboxes\""
+          type: string
+          x-go-package: code.gitea.io/gitea/modules/structs
+        validations:
+          additionalProperties:
+            type: object
+          type: object
+          x-go-name: Validations
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    IssueFormFieldType:
+      title: "IssueFormFieldType defines issue form field type, can be \"markdown\"\
+        , \"textarea\", \"input\", \"dropdown\" or \"checkboxes\""
+      type: string
+      x-go-package: code.gitea.io/gitea/modules/structs
+    IssueLabelsOption:
+      description: IssueLabelsOption a collection of labels
+      example:
+        labels:
+        - 0
+        - 0
+      properties:
+        labels:
+          description: list of label IDs
+          items:
+            format: int64
+            type: integer
+          type: array
+          x-go-name: Labels
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    IssueTemplate:
+      description: IssueTemplate represents an issue template for a repository
+      example:
+        ref: ref
+        file_name: file_name
+        about: about
+        name: name
+        body:
+        - attributes:
+            key: "{}"
+          id: id
+          validations:
+            key: "{}"
+          type: type
+        - attributes:
+            key: "{}"
+          id: id
+          validations:
+            key: "{}"
+          type: type
+        title: title
+        content: content
+        labels:
+        - labels
+        - labels
+      properties:
+        about:
+          type: string
+          x-go-name: About
+        body:
+          items:
+            $ref: '#/components/schemas/IssueFormField'
+          type: array
+          x-go-name: Fields
+        content:
+          type: string
+          x-go-name: Content
+        file_name:
+          type: string
+          x-go-name: FileName
+        labels:
+          items:
+            type: string
+          type: array
+          x-go-package: code.gitea.io/gitea/modules/structs
+        name:
+          type: string
+          x-go-name: Name
+        ref:
+          type: string
+          x-go-name: Ref
+        title:
+          type: string
+          x-go-name: Title
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    IssueTemplateLabels:
+      items:
+        type: string
+      type: array
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Label:
+      description: Label a label to an issue or a pr
+      example:
+        color: 00aabb
+        name: name
+        description: description
+        exclusive: false
+        id: 0
+        url: url
+      properties:
+        color:
+          example: 00aabb
+          type: string
+          x-go-name: Color
+        description:
+          type: string
+          x-go-name: Description
+        exclusive:
+          example: false
+          type: boolean
+          x-go-name: Exclusive
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        name:
+          type: string
+          x-go-name: Name
+        url:
+          type: string
+          x-go-name: URL
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    MarkdownOption:
+      description: MarkdownOption markdown options
+      example:
+        Context: Context
+        Mode: Mode
+        Wiki: true
+        Text: Text
+      properties:
+        Context:
+          description: |-
+            Context to render
+
+            in: body
+          type: string
+        Mode:
+          description: |-
+            Mode to render
+
+            in: body
+          type: string
+        Text:
+          description: |-
+            Text markdown to render
+
+            in: body
+          type: string
+        Wiki:
+          description: |-
+            Is it a wiki page ?
+
+            in: body
+          type: boolean
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    MergePullRequestOption:
+      description: MergePullRequestForm form for merging Pull Request
+      example:
+        force_merge: true
+        head_commit_id: head_commit_id
+        delete_branch_after_merge: true
+        merge_when_checks_succeed: true
+        Do: merge
+        MergeCommitID: MergeCommitID
+        MergeMessageField: MergeMessageField
+        MergeTitleField: MergeTitleField
+      properties:
+        Do:
+          enum:
+          - merge
+          - rebase
+          - rebase-merge
+          - squash
+          - manually-merged
+          type: string
+        MergeCommitID:
+          type: string
+        MergeMessageField:
+          type: string
+        MergeTitleField:
+          type: string
+        delete_branch_after_merge:
+          type: boolean
+          x-go-name: DeleteBranchAfterMerge
+        force_merge:
+          type: boolean
+          x-go-name: ForceMerge
+        head_commit_id:
+          type: string
+          x-go-name: HeadCommitID
+        merge_when_checks_succeed:
+          type: boolean
+          x-go-name: MergeWhenChecksSucceed
+      required:
+      - Do
+      type: object
+      x-go-name: MergePullRequestForm
+      x-go-package: code.gitea.io/gitea/services/forms
+    MigrateRepoOptions:
+      description: |-
+        MigrateRepoOptions options for migrating repository's
+        this is used to interact with api v1
+      example:
+        lfs_endpoint: lfs_endpoint
+        mirror: true
+        private: true
+        clone_addr: clone_addr
+        wiki: true
+        auth_password: auth_password
+        description: description
+        issues: true
+        labels: true
+        releases: true
+        pull_requests: true
+        uid: 0
+        auth_username: auth_username
+        service: git
+        lfs: true
+        repo_name: repo_name
+        auth_token: auth_token
+        milestones: true
+        repo_owner: repo_owner
+        mirror_interval: mirror_interval
+      properties:
+        auth_password:
+          type: string
+          x-go-name: AuthPassword
+        auth_token:
+          type: string
+          x-go-name: AuthToken
+        auth_username:
+          type: string
+          x-go-name: AuthUsername
+        clone_addr:
+          type: string
+          x-go-name: CloneAddr
+        description:
+          type: string
+          x-go-name: Description
+        issues:
+          type: boolean
+          x-go-name: Issues
+        labels:
+          type: boolean
+          x-go-name: Labels
+        lfs:
+          type: boolean
+          x-go-name: LFS
+        lfs_endpoint:
+          type: string
+          x-go-name: LFSEndpoint
+        milestones:
+          type: boolean
+          x-go-name: Milestones
+        mirror:
+          type: boolean
+          x-go-name: Mirror
+        mirror_interval:
+          type: string
+          x-go-name: MirrorInterval
+        private:
+          type: boolean
+          x-go-name: Private
+        pull_requests:
+          type: boolean
+          x-go-name: PullRequests
+        releases:
+          type: boolean
+          x-go-name: Releases
+        repo_name:
+          type: string
+          x-go-name: RepoName
+        repo_owner:
+          description: Name of User or Organisation who will own Repo after migration
+          type: string
+          x-go-name: RepoOwner
+        service:
+          enum:
+          - git
+          - github
+          - gitea
+          - gitlab
+          - gogs
+          - onedev
+          - gitbucket
+          - codebase
+          type: string
+          x-go-name: Service
+        uid:
+          description: deprecated (only for backwards compatibility)
+          format: int64
+          type: integer
+          x-go-name: RepoOwnerID
+        wiki:
+          type: boolean
+          x-go-name: Wiki
+      required:
+      - clone_addr
+      - repo_name
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Milestone:
+      description: Milestone milestone is a collection of issues on one repository
+      example:
+        closed_at: 2000-01-23T04:56:07.000+00:00
+        updated_at: 2000-01-23T04:56:07.000+00:00
+        created_at: 2000-01-23T04:56:07.000+00:00
+        description: description
+        id: 7
+        state: state
+        closed_issues: 2
+        open_issues: 9
+        title: title
+        due_on: 2000-01-23T04:56:07.000+00:00
+      properties:
+        closed_at:
+          format: date-time
+          type: string
+          x-go-name: Closed
+        closed_issues:
+          format: int64
+          type: integer
+          x-go-name: ClosedIssues
+        created_at:
+          format: date-time
+          type: string
+          x-go-name: Created
+        description:
+          type: string
+          x-go-name: Description
+        due_on:
+          format: date-time
+          type: string
+          x-go-name: Deadline
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        open_issues:
+          format: int64
+          type: integer
+          x-go-name: OpenIssues
+        state:
+          description: StateType issue state type
+          type: string
+          x-go-package: code.gitea.io/gitea/modules/structs
+        title:
+          type: string
+          x-go-name: Title
+        updated_at:
+          format: date-time
+          type: string
+          x-go-name: Updated
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    NodeInfo:
+      description: NodeInfo contains standardized way of exposing metadata about a
+        server running one of the distributed social networks
+      example:
+        metadata: "{}"
+        software:
+          name: name
+          repository: repository
+          version: version
+          homepage: homepage
+        usage:
+          localPosts: 6
+          localComments: 0
+          users:
+            total: 5
+            activeHalfyear: 1
+            activeMonth: 5
+        services:
+          inbound:
+          - inbound
+          - inbound
+          outbound:
+          - outbound
+          - outbound
+        protocols:
+        - protocols
+        - protocols
+        version: version
+        openRegistrations: true
+      properties:
+        metadata:
+          properties: {}
+          type: object
+          x-go-name: Metadata
+        openRegistrations:
+          type: boolean
+          x-go-name: OpenRegistrations
+        protocols:
+          items:
+            type: string
+          type: array
+          x-go-name: Protocols
+        services:
+          $ref: '#/components/schemas/NodeInfoServices'
+        software:
+          $ref: '#/components/schemas/NodeInfoSoftware'
+        usage:
+          $ref: '#/components/schemas/NodeInfoUsage'
+        version:
+          type: string
+          x-go-name: Version
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    NodeInfoServices:
+      description: NodeInfoServices contains the third party sites this server can
+        connect to via their application API
+      example:
+        inbound:
+        - inbound
+        - inbound
+        outbound:
+        - outbound
+        - outbound
+      properties:
+        inbound:
+          items:
+            type: string
+          type: array
+          x-go-name: Inbound
+        outbound:
+          items:
+            type: string
+          type: array
+          x-go-name: Outbound
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    NodeInfoSoftware:
+      description: NodeInfoSoftware contains Metadata about server software in use
+      example:
+        name: name
+        repository: repository
+        version: version
+        homepage: homepage
+      properties:
+        homepage:
+          type: string
+          x-go-name: Homepage
+        name:
+          type: string
+          x-go-name: Name
+        repository:
+          type: string
+          x-go-name: Repository
+        version:
+          type: string
+          x-go-name: Version
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    NodeInfoUsage:
+      description: NodeInfoUsage contains usage statistics for this server
+      example:
+        localPosts: 6
+        localComments: 0
+        users:
+          total: 5
+          activeHalfyear: 1
+          activeMonth: 5
+      properties:
+        localComments:
+          format: int64
+          type: integer
+          x-go-name: LocalComments
+        localPosts:
+          format: int64
+          type: integer
+          x-go-name: LocalPosts
+        users:
+          $ref: '#/components/schemas/NodeInfoUsageUsers'
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    NodeInfoUsageUsers:
+      description: NodeInfoUsageUsers contains statistics about the users of this
+        server
+      example:
+        total: 5
+        activeHalfyear: 1
+        activeMonth: 5
+      properties:
+        activeHalfyear:
+          format: int64
+          type: integer
+          x-go-name: ActiveHalfyear
+        activeMonth:
+          format: int64
+          type: integer
+          x-go-name: ActiveMonth
+        total:
+          format: int64
+          type: integer
+          x-go-name: Total
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Note:
+      description: Note contains information related to a git note
+      example:
+        commit:
+          committer:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          stats:
+            total: 1
+            additions: 0
+            deletions: 6
+          author:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          created: 2000-01-23T04:56:07.000+00:00
+          html_url: html_url
+          commit:
+            committer:
+              date: date
+              name: name
+              email: email
+            author:
+              date: date
+              name: name
+              email: email
+            tree:
+              created: 2000-01-23T04:56:07.000+00:00
+              sha: sha
+              url: url
+            message: message
+            url: url
+            verification:
+              reason: reason
+              payload: payload
+              signature: signature
+              verified: true
+              signer:
+                name: name
+                email: email
+                username: username
+          files:
+          - filename: filename
+          - filename: filename
+          sha: sha
+          url: url
+          parents:
+          - created: 2000-01-23T04:56:07.000+00:00
+            sha: sha
+            url: url
+          - created: 2000-01-23T04:56:07.000+00:00
+            sha: sha
+            url: url
+        message: message
+      properties:
+        commit:
+          $ref: '#/components/schemas/Commit'
+        message:
+          type: string
+          x-go-name: Message
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    NotificationCount:
+      description: NotificationCount number of unread notifications
+      example:
+        new: 0
+      properties:
+        new:
+          format: int64
+          type: integer
+          x-go-name: New
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    NotificationSubject:
+      description: NotificationSubject contains the notification subject (Issue/Pull/Commit)
+      example:
+        latest_comment_url: latest_comment_url
+        latest_comment_html_url: latest_comment_html_url
+        html_url: html_url
+        state: state
+        title: title
+        type: type
+        url: url
+      properties:
+        html_url:
+          type: string
+          x-go-name: HTMLURL
+        latest_comment_html_url:
+          type: string
+          x-go-name: LatestCommentHTMLURL
+        latest_comment_url:
+          type: string
+          x-go-name: LatestCommentURL
+        state:
+          description: StateType issue state type
+          type: string
+          x-go-package: code.gitea.io/gitea/modules/structs
+        title:
+          type: string
+          x-go-name: Title
+        type:
+          description: NotifySubjectType represent type of notification subject
+          type: string
+          x-go-package: code.gitea.io/gitea/modules/structs
+        url:
+          type: string
+          x-go-name: URL
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    NotificationThread:
+      description: NotificationThread expose Notification on API
+      example:
+        pinned: true
+        updated_at: 2000-01-23T04:56:07.000+00:00
+        unread: true
+        subject:
+          latest_comment_url: latest_comment_url
+          latest_comment_html_url: latest_comment_html_url
+          html_url: html_url
+          state: state
+          title: title
+          type: type
+          url: url
+        id: 0
+        repository:
+          parent: null
+          open_pr_counter: 5
+          language: language
+          repo_transfer:
+            teams:
+            - can_create_org_repo: true
+              units_map:
+                repo.code: read
+                repo.ext_issues: none
+                repo.ext_wiki: none
+                repo.issues: write
+                repo.projects: none
+                repo.pulls: owner
+                repo.releases: none
+                repo.wiki: admin
+              organization:
+                website: website
+                full_name: full_name
+                repo_admin_change_team_access: true
+                avatar_url: avatar_url
+                visibility: visibility
+                name: name
+                description: description
+                location: location
+                id: 0
+                username: username
+              name: name
+              description: description
+              permission: none
+              id: 2
+              includes_all_repositories: true
+              units:
+              - repo.code
+              - repo.issues
+              - repo.ext_issues
+              - repo.wiki
+              - repo.pulls
+              - repo.releases
+              - repo.projects
+              - repo.ext_wiki
+            - can_create_org_repo: true
+              units_map:
+                repo.code: read
+                repo.ext_issues: none
+                repo.ext_wiki: none
+                repo.issues: write
+                repo.projects: none
+                repo.pulls: owner
+                repo.releases: none
+                repo.wiki: admin
+              organization:
+                website: website
+                full_name: full_name
+                repo_admin_change_team_access: true
+                avatar_url: avatar_url
+                visibility: visibility
+                name: name
+                description: description
+                location: location
+                id: 0
+                username: username
+              name: name
+              description: description
+              permission: none
+              id: 2
+              includes_all_repositories: true
+              units:
+              - repo.code
+              - repo.issues
+              - repo.ext_issues
+              - repo.wiki
+              - repo.pulls
+              - repo.releases
+              - repo.projects
+              - repo.ext_wiki
+            doer:
+              website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+            recipient:
+              website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+          has_pull_requests: true
+          empty: true
+          permissions:
+            pull: true
+            admin: true
+            push: true
+          id: 6
+          release_counter: 5
+          default_delete_branch_after_merge: true
+          ssh_url: ssh_url
+          full_name: full_name
+          size: 7
+          languages_url: languages_url
+          clone_url: clone_url
+          html_url: html_url
+          name: name
+          default_branch: default_branch
+          mirror_updated: 2000-01-23T04:56:07.000+00:00
+          ignore_whitespace_conflicts: true
+          template: true
+          internal: true
+          mirror: true
+          private: true
+          open_issues_count: 1
+          link: link
+          created_at: 2000-01-23T04:56:07.000+00:00
+          default_allow_maintainer_edit: true
+          description: description
+          allow_rebase_update: true
+          has_projects: true
+          archived: true
+          has_wiki: true
+          updated_at: 2000-01-23T04:56:07.000+00:00
+          allow_merge_commits: true
+          stars_count: 9
+          allow_rebase_explicit: true
+          external_tracker:
+            external_tracker_regexp_pattern: external_tracker_regexp_pattern
+            external_tracker_style: external_tracker_style
+            external_tracker_url: external_tracker_url
+            external_tracker_format: external_tracker_format
+          mirror_interval: mirror_interval
+          owner:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          allow_squash_merge: true
+          external_wiki:
+            external_wiki_url: external_wiki_url
+          website: website
+          internal_tracker:
+            enable_issue_dependencies: true
+            allow_only_contributors_to_track_time: true
+            enable_time_tracker: true
+          has_issues: true
+          allow_rebase: true
+          default_merge_style: default_merge_style
+          fork: true
+          avatar_url: avatar_url
+          original_url: original_url
+          watchers_count: 3
+          forks_count: 0
+        url: url
+      properties:
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        pinned:
+          type: boolean
+          x-go-name: Pinned
+        repository:
+          $ref: '#/components/schemas/Repository'
+        subject:
+          $ref: '#/components/schemas/NotificationSubject'
+        unread:
+          type: boolean
+          x-go-name: Unread
+        updated_at:
+          format: date-time
+          type: string
+          x-go-name: UpdatedAt
+        url:
+          type: string
+          x-go-name: URL
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    NotifySubjectType:
+      description: NotifySubjectType represent type of notification subject
+      type: string
+      x-go-package: code.gitea.io/gitea/modules/structs
+    OAuth2Application:
+      example:
+        created: 2000-01-23T04:56:07.000+00:00
+        name: name
+        confidential_client: true
+        client_secret: client_secret
+        id: 0
+        redirect_uris:
+        - redirect_uris
+        - redirect_uris
+        client_id: client_id
+      properties:
+        client_id:
+          type: string
+          x-go-name: ClientID
+        client_secret:
+          type: string
+          x-go-name: ClientSecret
+        confidential_client:
+          type: boolean
+          x-go-name: ConfidentialClient
+        created:
+          format: date-time
+          type: string
+          x-go-name: Created
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        name:
+          type: string
+          x-go-name: Name
+        redirect_uris:
+          items:
+            type: string
+          type: array
+          x-go-name: RedirectURIs
+      title: OAuth2Application represents an OAuth2 application.
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Organization:
+      description: Organization represents an organization
+      example:
+        website: website
+        full_name: full_name
+        repo_admin_change_team_access: true
+        avatar_url: avatar_url
+        visibility: visibility
+        name: name
+        description: description
+        location: location
+        id: 0
+        username: username
+      properties:
+        avatar_url:
+          type: string
+          x-go-name: AvatarURL
+        description:
+          type: string
+          x-go-name: Description
+        full_name:
+          type: string
+          x-go-name: FullName
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        location:
+          type: string
+          x-go-name: Location
+        name:
+          type: string
+          x-go-name: Name
+        repo_admin_change_team_access:
+          type: boolean
+          x-go-name: RepoAdminChangeTeamAccess
+        username:
+          description: deprecated
+          type: string
+          x-go-name: UserName
+        visibility:
+          type: string
+          x-go-name: Visibility
+        website:
+          type: string
+          x-go-name: Website
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    OrganizationPermissions:
+      description: OrganizationPermissions list different users permissions on an
+        organization
+      example:
+        can_read: true
+        is_admin: true
+        can_create_repository: true
+        can_write: true
+        is_owner: true
+      properties:
+        can_create_repository:
+          type: boolean
+          x-go-name: CanCreateRepository
+        can_read:
+          type: boolean
+          x-go-name: CanRead
+        can_write:
+          type: boolean
+          x-go-name: CanWrite
+        is_admin:
+          type: boolean
+          x-go-name: IsAdmin
+        is_owner:
+          type: boolean
+          x-go-name: IsOwner
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    PRBranchInfo:
+      description: PRBranchInfo information about a branch
+      example:
+        ref: ref
+        repo_id: 0
+        repo:
+          parent: null
+          open_pr_counter: 5
+          language: language
+          repo_transfer:
+            teams:
+            - can_create_org_repo: true
+              units_map:
+                repo.code: read
+                repo.ext_issues: none
+                repo.ext_wiki: none
+                repo.issues: write
+                repo.projects: none
+                repo.pulls: owner
+                repo.releases: none
+                repo.wiki: admin
+              organization:
+                website: website
+                full_name: full_name
+                repo_admin_change_team_access: true
+                avatar_url: avatar_url
+                visibility: visibility
+                name: name
+                description: description
+                location: location
+                id: 0
+                username: username
+              name: name
+              description: description
+              permission: none
+              id: 2
+              includes_all_repositories: true
+              units:
+              - repo.code
+              - repo.issues
+              - repo.ext_issues
+              - repo.wiki
+              - repo.pulls
+              - repo.releases
+              - repo.projects
+              - repo.ext_wiki
+            - can_create_org_repo: true
+              units_map:
+                repo.code: read
+                repo.ext_issues: none
+                repo.ext_wiki: none
+                repo.issues: write
+                repo.projects: none
+                repo.pulls: owner
+                repo.releases: none
+                repo.wiki: admin
+              organization:
+                website: website
+                full_name: full_name
+                repo_admin_change_team_access: true
+                avatar_url: avatar_url
+                visibility: visibility
+                name: name
+                description: description
+                location: location
+                id: 0
+                username: username
+              name: name
+              description: description
+              permission: none
+              id: 2
+              includes_all_repositories: true
+              units:
+              - repo.code
+              - repo.issues
+              - repo.ext_issues
+              - repo.wiki
+              - repo.pulls
+              - repo.releases
+              - repo.projects
+              - repo.ext_wiki
+            doer:
+              website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+            recipient:
+              website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+          has_pull_requests: true
+          empty: true
+          permissions:
+            pull: true
+            admin: true
+            push: true
+          id: 6
+          release_counter: 5
+          default_delete_branch_after_merge: true
+          ssh_url: ssh_url
+          full_name: full_name
+          size: 7
+          languages_url: languages_url
+          clone_url: clone_url
+          html_url: html_url
+          name: name
+          default_branch: default_branch
+          mirror_updated: 2000-01-23T04:56:07.000+00:00
+          ignore_whitespace_conflicts: true
+          template: true
+          internal: true
+          mirror: true
+          private: true
+          open_issues_count: 1
+          link: link
+          created_at: 2000-01-23T04:56:07.000+00:00
+          default_allow_maintainer_edit: true
+          description: description
+          allow_rebase_update: true
+          has_projects: true
+          archived: true
+          has_wiki: true
+          updated_at: 2000-01-23T04:56:07.000+00:00
+          allow_merge_commits: true
+          stars_count: 9
+          allow_rebase_explicit: true
+          external_tracker:
+            external_tracker_regexp_pattern: external_tracker_regexp_pattern
+            external_tracker_style: external_tracker_style
+            external_tracker_url: external_tracker_url
+            external_tracker_format: external_tracker_format
+          mirror_interval: mirror_interval
+          owner:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          allow_squash_merge: true
+          external_wiki:
+            external_wiki_url: external_wiki_url
+          website: website
+          internal_tracker:
+            enable_issue_dependencies: true
+            allow_only_contributors_to_track_time: true
+            enable_time_tracker: true
+          has_issues: true
+          allow_rebase: true
+          default_merge_style: default_merge_style
+          fork: true
+          avatar_url: avatar_url
+          original_url: original_url
+          watchers_count: 3
+          forks_count: 0
+        label: label
+        sha: sha
+      properties:
+        label:
+          type: string
+          x-go-name: Name
+        ref:
+          type: string
+          x-go-name: Ref
+        repo:
+          $ref: '#/components/schemas/Repository'
+        repo_id:
+          format: int64
+          type: integer
+          x-go-name: RepoID
+        sha:
+          type: string
+          x-go-name: Sha
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Package:
+      description: Package represents a package
+      example:
+        owner:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        creator:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        name: name
+        created_at: 2000-01-23T04:56:07.000+00:00
+        id: 0
+        repository:
+          parent: null
+          open_pr_counter: 5
+          language: language
+          repo_transfer:
+            teams:
+            - can_create_org_repo: true
+              units_map:
+                repo.code: read
+                repo.ext_issues: none
+                repo.ext_wiki: none
+                repo.issues: write
+                repo.projects: none
+                repo.pulls: owner
+                repo.releases: none
+                repo.wiki: admin
+              organization:
+                website: website
+                full_name: full_name
+                repo_admin_change_team_access: true
+                avatar_url: avatar_url
+                visibility: visibility
+                name: name
+                description: description
+                location: location
+                id: 0
+                username: username
+              name: name
+              description: description
+              permission: none
+              id: 2
+              includes_all_repositories: true
+              units:
+              - repo.code
+              - repo.issues
+              - repo.ext_issues
+              - repo.wiki
+              - repo.pulls
+              - repo.releases
+              - repo.projects
+              - repo.ext_wiki
+            - can_create_org_repo: true
+              units_map:
+                repo.code: read
+                repo.ext_issues: none
+                repo.ext_wiki: none
+                repo.issues: write
+                repo.projects: none
+                repo.pulls: owner
+                repo.releases: none
+                repo.wiki: admin
+              organization:
+                website: website
+                full_name: full_name
+                repo_admin_change_team_access: true
+                avatar_url: avatar_url
+                visibility: visibility
+                name: name
+                description: description
+                location: location
+                id: 0
+                username: username
+              name: name
+              description: description
+              permission: none
+              id: 2
+              includes_all_repositories: true
+              units:
+              - repo.code
+              - repo.issues
+              - repo.ext_issues
+              - repo.wiki
+              - repo.pulls
+              - repo.releases
+              - repo.projects
+              - repo.ext_wiki
+            doer:
+              website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+            recipient:
+              website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+          has_pull_requests: true
+          empty: true
+          permissions:
+            pull: true
+            admin: true
+            push: true
+          id: 6
+          release_counter: 5
+          default_delete_branch_after_merge: true
+          ssh_url: ssh_url
+          full_name: full_name
+          size: 7
+          languages_url: languages_url
+          clone_url: clone_url
+          html_url: html_url
+          name: name
+          default_branch: default_branch
+          mirror_updated: 2000-01-23T04:56:07.000+00:00
+          ignore_whitespace_conflicts: true
+          template: true
+          internal: true
+          mirror: true
+          private: true
+          open_issues_count: 1
+          link: link
+          created_at: 2000-01-23T04:56:07.000+00:00
+          default_allow_maintainer_edit: true
+          description: description
+          allow_rebase_update: true
+          has_projects: true
+          archived: true
+          has_wiki: true
+          updated_at: 2000-01-23T04:56:07.000+00:00
+          allow_merge_commits: true
+          stars_count: 9
+          allow_rebase_explicit: true
+          external_tracker:
+            external_tracker_regexp_pattern: external_tracker_regexp_pattern
+            external_tracker_style: external_tracker_style
+            external_tracker_url: external_tracker_url
+            external_tracker_format: external_tracker_format
+          mirror_interval: mirror_interval
+          owner:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          allow_squash_merge: true
+          external_wiki:
+            external_wiki_url: external_wiki_url
+          website: website
+          internal_tracker:
+            enable_issue_dependencies: true
+            allow_only_contributors_to_track_time: true
+            enable_time_tracker: true
+          has_issues: true
+          allow_rebase: true
+          default_merge_style: default_merge_style
+          fork: true
+          avatar_url: avatar_url
+          original_url: original_url
+          watchers_count: 3
+          forks_count: 0
+        type: type
+        version: version
+      properties:
+        created_at:
+          format: date-time
+          type: string
+          x-go-name: CreatedAt
+        creator:
+          $ref: '#/components/schemas/User'
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        name:
+          type: string
+          x-go-name: Name
+        owner:
+          $ref: '#/components/schemas/User'
+        repository:
+          $ref: '#/components/schemas/Repository'
+        type:
+          type: string
+          x-go-name: Type
+        version:
+          type: string
+          x-go-name: Version
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    PackageFile:
+      description: PackageFile represents a package file
+      example:
+        sha1: sha1
+        sha256: sha256
+        Size: 0
+        name: name
+        sha512: sha512
+        id: 6
+        md5: md5
+      properties:
+        Size:
+          format: int64
+          type: integer
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        md5:
+          type: string
+          x-go-name: HashMD5
+        name:
+          type: string
+          x-go-name: Name
+        sha1:
+          type: string
+          x-go-name: HashSHA1
+        sha256:
+          type: string
+          x-go-name: HashSHA256
+        sha512:
+          type: string
+          x-go-name: HashSHA512
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    PayloadCommit:
+      description: PayloadCommit represents a commit
+      example:
+        committer:
+          name: name
+          email: email
+          username: username
+        removed:
+        - removed
+        - removed
+        added:
+        - added
+        - added
+        author:
+          name: name
+          email: email
+          username: username
+        modified:
+        - modified
+        - modified
+        id: id
+        message: message
+        url: url
+        verification:
+          reason: reason
+          payload: payload
+          signature: signature
+          verified: true
+          signer:
+            name: name
+            email: email
+            username: username
+        timestamp: 2000-01-23T04:56:07.000+00:00
+      properties:
+        added:
+          items:
+            type: string
+          type: array
+          x-go-name: Added
+        author:
+          $ref: '#/components/schemas/PayloadUser'
+        committer:
+          $ref: '#/components/schemas/PayloadUser'
+        id:
+          description: sha1 hash of the commit
+          type: string
+          x-go-name: ID
+        message:
+          type: string
+          x-go-name: Message
+        modified:
+          items:
+            type: string
+          type: array
+          x-go-name: Modified
+        removed:
+          items:
+            type: string
+          type: array
+          x-go-name: Removed
+        timestamp:
+          format: date-time
+          type: string
+          x-go-name: Timestamp
+        url:
+          type: string
+          x-go-name: URL
+        verification:
+          $ref: '#/components/schemas/PayloadCommitVerification'
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    PayloadCommitVerification:
+      description: PayloadCommitVerification represents the GPG verification of a
+        commit
+      example:
+        reason: reason
+        payload: payload
+        signature: signature
+        verified: true
+        signer:
+          name: name
+          email: email
+          username: username
+      properties:
+        payload:
+          type: string
+          x-go-name: Payload
+        reason:
+          type: string
+          x-go-name: Reason
+        signature:
+          type: string
+          x-go-name: Signature
+        signer:
+          $ref: '#/components/schemas/PayloadUser'
+        verified:
+          type: boolean
+          x-go-name: Verified
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    PayloadUser:
+      description: PayloadUser represents the author or committer of a commit
+      example:
+        name: name
+        email: email
+        username: username
+      properties:
+        email:
+          format: email
+          type: string
+          x-go-name: Email
+        name:
+          description: Full name of the commit author
+          type: string
+          x-go-name: Name
+        username:
+          type: string
+          x-go-name: UserName
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Permission:
+      description: Permission represents a set of permissions
+      example:
+        pull: true
+        admin: true
+        push: true
+      properties:
+        admin:
+          type: boolean
+          x-go-name: Admin
+        pull:
+          type: boolean
+          x-go-name: Pull
+        push:
+          type: boolean
+          x-go-name: Push
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    PublicKey:
+      description: PublicKey publickey is a user key to push code to repository
+      example:
+        key_type: key_type
+        read_only: true
+        fingerprint: fingerprint
+        created_at: 2000-01-23T04:56:07.000+00:00
+        id: 0
+        title: title
+        user:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        key: key
+        url: url
+      properties:
+        created_at:
+          format: date-time
+          type: string
+          x-go-name: Created
+        fingerprint:
+          type: string
+          x-go-name: Fingerprint
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        key:
+          type: string
+          x-go-name: Key
+        key_type:
+          type: string
+          x-go-name: KeyType
+        read_only:
+          type: boolean
+          x-go-name: ReadOnly
+        title:
+          type: string
+          x-go-name: Title
+        url:
+          type: string
+          x-go-name: URL
+        user:
+          $ref: '#/components/schemas/User'
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    PullRequest:
+      description: PullRequest represents a pull request
+      example:
+        is_locked: true
+        assignees:
+        - website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        - website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        created_at: 2000-01-23T04:56:07.000+00:00
+        diff_url: diff_url
+        merged_by:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        body: body
+        title: title
+        head:
+          ref: ref
+          repo_id: 0
+          repo:
+            parent: null
+            open_pr_counter: 5
+            language: language
+            repo_transfer:
+              teams:
+              - can_create_org_repo: true
+                units_map:
+                  repo.code: read
+                  repo.ext_issues: none
+                  repo.ext_wiki: none
+                  repo.issues: write
+                  repo.projects: none
+                  repo.pulls: owner
+                  repo.releases: none
+                  repo.wiki: admin
+                organization:
+                  website: website
+                  full_name: full_name
+                  repo_admin_change_team_access: true
+                  avatar_url: avatar_url
+                  visibility: visibility
+                  name: name
+                  description: description
+                  location: location
+                  id: 0
+                  username: username
+                name: name
+                description: description
+                permission: none
+                id: 2
+                includes_all_repositories: true
+                units:
+                - repo.code
+                - repo.issues
+                - repo.ext_issues
+                - repo.wiki
+                - repo.pulls
+                - repo.releases
+                - repo.projects
+                - repo.ext_wiki
+              - can_create_org_repo: true
+                units_map:
+                  repo.code: read
+                  repo.ext_issues: none
+                  repo.ext_wiki: none
+                  repo.issues: write
+                  repo.projects: none
+                  repo.pulls: owner
+                  repo.releases: none
+                  repo.wiki: admin
+                organization:
+                  website: website
+                  full_name: full_name
+                  repo_admin_change_team_access: true
+                  avatar_url: avatar_url
+                  visibility: visibility
+                  name: name
+                  description: description
+                  location: location
+                  id: 0
+                  username: username
+                name: name
+                description: description
+                permission: none
+                id: 2
+                includes_all_repositories: true
+                units:
+                - repo.code
+                - repo.issues
+                - repo.ext_issues
+                - repo.wiki
+                - repo.pulls
+                - repo.releases
+                - repo.projects
+                - repo.ext_wiki
+              doer:
+                website: website
+                visibility: visibility
+                created: 2000-01-23T04:56:07.000+00:00
+                last_login: 2000-01-23T04:56:07.000+00:00
+                active: true
+                description: description
+                language: language
+                starred_repos_count: 5
+                login: login
+                is_admin: true
+                full_name: full_name
+                login_name: empty
+                avatar_url: avatar_url
+                following_count: 6
+                restricted: true
+                followers_count: 0
+                location: location
+                id: 1
+                prohibit_login: true
+                email: email
+              recipient:
+                website: website
+                visibility: visibility
+                created: 2000-01-23T04:56:07.000+00:00
+                last_login: 2000-01-23T04:56:07.000+00:00
+                active: true
+                description: description
+                language: language
+                starred_repos_count: 5
+                login: login
+                is_admin: true
+                full_name: full_name
+                login_name: empty
+                avatar_url: avatar_url
+                following_count: 6
+                restricted: true
+                followers_count: 0
+                location: location
+                id: 1
+                prohibit_login: true
+                email: email
+            has_pull_requests: true
+            empty: true
+            permissions:
+              pull: true
+              admin: true
+              push: true
+            id: 6
+            release_counter: 5
+            default_delete_branch_after_merge: true
+            ssh_url: ssh_url
+            full_name: full_name
+            size: 7
+            languages_url: languages_url
+            clone_url: clone_url
+            html_url: html_url
+            name: name
+            default_branch: default_branch
+            mirror_updated: 2000-01-23T04:56:07.000+00:00
+            ignore_whitespace_conflicts: true
+            template: true
+            internal: true
+            mirror: true
+            private: true
+            open_issues_count: 1
+            link: link
+            created_at: 2000-01-23T04:56:07.000+00:00
+            default_allow_maintainer_edit: true
+            description: description
+            allow_rebase_update: true
+            has_projects: true
+            archived: true
+            has_wiki: true
+            updated_at: 2000-01-23T04:56:07.000+00:00
+            allow_merge_commits: true
+            stars_count: 9
+            allow_rebase_explicit: true
+            external_tracker:
+              external_tracker_regexp_pattern: external_tracker_regexp_pattern
+              external_tracker_style: external_tracker_style
+              external_tracker_url: external_tracker_url
+              external_tracker_format: external_tracker_format
+            mirror_interval: mirror_interval
+            owner:
+              website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+            allow_squash_merge: true
+            external_wiki:
+              external_wiki_url: external_wiki_url
+            website: website
+            internal_tracker:
+              enable_issue_dependencies: true
+              allow_only_contributors_to_track_time: true
+              enable_time_tracker: true
+            has_issues: true
+            allow_rebase: true
+            default_merge_style: default_merge_style
+            fork: true
+            avatar_url: avatar_url
+            original_url: original_url
+            watchers_count: 3
+            forks_count: 0
+          label: label
+          sha: sha
+        number: 5
+        mergeable: true
+        patch_url: patch_url
+        updated_at: 2000-01-23T04:56:07.000+00:00
+        merge_base: merge_base
+        merge_commit_sha: merge_commit_sha
+        id: 1
+        state: state
+        closed_at: 2000-01-23T04:56:07.000+00:00
+        comments: 6
+        merged_at: 2000-01-23T04:56:07.000+00:00
+        due_date: 2000-01-23T04:56:07.000+00:00
+        merged: true
+        url: url
+        labels:
+        - color: 00aabb
+          name: name
+          description: description
+          exclusive: false
+          id: 0
+          url: url
+        - color: 00aabb
+          name: name
+          description: description
+          exclusive: false
+          id: 0
+          url: url
+        milestone:
+          closed_at: 2000-01-23T04:56:07.000+00:00
+          updated_at: 2000-01-23T04:56:07.000+00:00
+          created_at: 2000-01-23T04:56:07.000+00:00
+          description: description
+          id: 7
+          state: state
+          closed_issues: 2
+          open_issues: 9
+          title: title
+          due_on: 2000-01-23T04:56:07.000+00:00
+        allow_maintainer_edit: true
+        html_url: html_url
+        assignee:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        user:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        base:
+          ref: ref
+          repo_id: 0
+          repo:
+            parent: null
+            open_pr_counter: 5
+            language: language
+            repo_transfer:
+              teams:
+              - can_create_org_repo: true
+                units_map:
+                  repo.code: read
+                  repo.ext_issues: none
+                  repo.ext_wiki: none
+                  repo.issues: write
+                  repo.projects: none
+                  repo.pulls: owner
+                  repo.releases: none
+                  repo.wiki: admin
+                organization:
+                  website: website
+                  full_name: full_name
+                  repo_admin_change_team_access: true
+                  avatar_url: avatar_url
+                  visibility: visibility
+                  name: name
+                  description: description
+                  location: location
+                  id: 0
+                  username: username
+                name: name
+                description: description
+                permission: none
+                id: 2
+                includes_all_repositories: true
+                units:
+                - repo.code
+                - repo.issues
+                - repo.ext_issues
+                - repo.wiki
+                - repo.pulls
+                - repo.releases
+                - repo.projects
+                - repo.ext_wiki
+              - can_create_org_repo: true
+                units_map:
+                  repo.code: read
+                  repo.ext_issues: none
+                  repo.ext_wiki: none
+                  repo.issues: write
+                  repo.projects: none
+                  repo.pulls: owner
+                  repo.releases: none
+                  repo.wiki: admin
+                organization:
+                  website: website
+                  full_name: full_name
+                  repo_admin_change_team_access: true
+                  avatar_url: avatar_url
+                  visibility: visibility
+                  name: name
+                  description: description
+                  location: location
+                  id: 0
+                  username: username
+                name: name
+                description: description
+                permission: none
+                id: 2
+                includes_all_repositories: true
+                units:
+                - repo.code
+                - repo.issues
+                - repo.ext_issues
+                - repo.wiki
+                - repo.pulls
+                - repo.releases
+                - repo.projects
+                - repo.ext_wiki
+              doer:
+                website: website
+                visibility: visibility
+                created: 2000-01-23T04:56:07.000+00:00
+                last_login: 2000-01-23T04:56:07.000+00:00
+                active: true
+                description: description
+                language: language
+                starred_repos_count: 5
+                login: login
+                is_admin: true
+                full_name: full_name
+                login_name: empty
+                avatar_url: avatar_url
+                following_count: 6
+                restricted: true
+                followers_count: 0
+                location: location
+                id: 1
+                prohibit_login: true
+                email: email
+              recipient:
+                website: website
+                visibility: visibility
+                created: 2000-01-23T04:56:07.000+00:00
+                last_login: 2000-01-23T04:56:07.000+00:00
+                active: true
+                description: description
+                language: language
+                starred_repos_count: 5
+                login: login
+                is_admin: true
+                full_name: full_name
+                login_name: empty
+                avatar_url: avatar_url
+                following_count: 6
+                restricted: true
+                followers_count: 0
+                location: location
+                id: 1
+                prohibit_login: true
+                email: email
+            has_pull_requests: true
+            empty: true
+            permissions:
+              pull: true
+              admin: true
+              push: true
+            id: 6
+            release_counter: 5
+            default_delete_branch_after_merge: true
+            ssh_url: ssh_url
+            full_name: full_name
+            size: 7
+            languages_url: languages_url
+            clone_url: clone_url
+            html_url: html_url
+            name: name
+            default_branch: default_branch
+            mirror_updated: 2000-01-23T04:56:07.000+00:00
+            ignore_whitespace_conflicts: true
+            template: true
+            internal: true
+            mirror: true
+            private: true
+            open_issues_count: 1
+            link: link
+            created_at: 2000-01-23T04:56:07.000+00:00
+            default_allow_maintainer_edit: true
+            description: description
+            allow_rebase_update: true
+            has_projects: true
+            archived: true
+            has_wiki: true
+            updated_at: 2000-01-23T04:56:07.000+00:00
+            allow_merge_commits: true
+            stars_count: 9
+            allow_rebase_explicit: true
+            external_tracker:
+              external_tracker_regexp_pattern: external_tracker_regexp_pattern
+              external_tracker_style: external_tracker_style
+              external_tracker_url: external_tracker_url
+              external_tracker_format: external_tracker_format
+            mirror_interval: mirror_interval
+            owner:
+              website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+            allow_squash_merge: true
+            external_wiki:
+              external_wiki_url: external_wiki_url
+            website: website
+            internal_tracker:
+              enable_issue_dependencies: true
+              allow_only_contributors_to_track_time: true
+              enable_time_tracker: true
+            has_issues: true
+            allow_rebase: true
+            default_merge_style: default_merge_style
+            fork: true
+            avatar_url: avatar_url
+            original_url: original_url
+            watchers_count: 3
+            forks_count: 0
+          label: label
+          sha: sha
+      properties:
+        allow_maintainer_edit:
+          type: boolean
+          x-go-name: AllowMaintainerEdit
+        assignee:
+          $ref: '#/components/schemas/User'
+        assignees:
+          items:
+            $ref: '#/components/schemas/User'
+          type: array
+          x-go-name: Assignees
+        base:
+          $ref: '#/components/schemas/PRBranchInfo'
+        body:
+          type: string
+          x-go-name: Body
+        closed_at:
+          format: date-time
+          type: string
+          x-go-name: Closed
+        comments:
+          format: int64
+          type: integer
+          x-go-name: Comments
+        created_at:
+          format: date-time
+          type: string
+          x-go-name: Created
+        diff_url:
+          type: string
+          x-go-name: DiffURL
+        due_date:
+          format: date-time
+          type: string
+          x-go-name: Deadline
+        head:
+          $ref: '#/components/schemas/PRBranchInfo'
+        html_url:
+          type: string
+          x-go-name: HTMLURL
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        is_locked:
+          type: boolean
+          x-go-name: IsLocked
+        labels:
+          items:
+            $ref: '#/components/schemas/Label'
+          type: array
+          x-go-name: Labels
+        merge_base:
+          type: string
+          x-go-name: MergeBase
+        merge_commit_sha:
+          type: string
+          x-go-name: MergedCommitID
+        mergeable:
+          type: boolean
+          x-go-name: Mergeable
+        merged:
+          type: boolean
+          x-go-name: HasMerged
+        merged_at:
+          format: date-time
+          type: string
+          x-go-name: Merged
+        merged_by:
+          $ref: '#/components/schemas/User'
+        milestone:
+          $ref: '#/components/schemas/Milestone'
+        number:
+          format: int64
+          type: integer
+          x-go-name: Index
+        patch_url:
+          type: string
+          x-go-name: PatchURL
+        state:
+          description: StateType issue state type
+          type: string
+          x-go-package: code.gitea.io/gitea/modules/structs
+        title:
+          type: string
+          x-go-name: Title
+        updated_at:
+          format: date-time
+          type: string
+          x-go-name: Updated
+        url:
+          type: string
+          x-go-name: URL
+        user:
+          $ref: '#/components/schemas/User'
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    PullRequestMeta:
+      description: PullRequestMeta PR info if an issue is a PR
+      example:
+        merged_at: 2000-01-23T04:56:07.000+00:00
+        merged: true
+      properties:
+        merged:
+          type: boolean
+          x-go-name: HasMerged
+        merged_at:
+          format: date-time
+          type: string
+          x-go-name: Merged
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    PullReview:
+      description: PullReview represents a pull request review
+      example:
+        submitted_at: 2000-01-23T04:56:07.000+00:00
+        dismissed: true
+        official: true
+        pull_request_url: pull_request_url
+        team:
+          can_create_org_repo: true
+          units_map:
+            repo.code: read
+            repo.ext_issues: none
+            repo.ext_wiki: none
+            repo.issues: write
+            repo.projects: none
+            repo.pulls: owner
+            repo.releases: none
+            repo.wiki: admin
+          organization:
+            website: website
+            full_name: full_name
+            repo_admin_change_team_access: true
+            avatar_url: avatar_url
+            visibility: visibility
+            name: name
+            description: description
+            location: location
+            id: 0
+            username: username
+          name: name
+          description: description
+          permission: none
+          id: 2
+          includes_all_repositories: true
+          units:
+          - repo.code
+          - repo.issues
+          - repo.ext_issues
+          - repo.wiki
+          - repo.pulls
+          - repo.releases
+          - repo.projects
+          - repo.ext_wiki
+        body: body
+        stale: true
+        updated_at: 2000-01-23T04:56:07.000+00:00
+        comments_count: 0
+        html_url: html_url
+        id: 6
+        state: state
+        commit_id: commit_id
+        user:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+      properties:
+        body:
+          type: string
+          x-go-name: Body
+        comments_count:
+          format: int64
+          type: integer
+          x-go-name: CodeCommentsCount
+        commit_id:
+          type: string
+          x-go-name: CommitID
+        dismissed:
+          type: boolean
+          x-go-name: Dismissed
+        html_url:
+          type: string
+          x-go-name: HTMLURL
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        official:
+          type: boolean
+          x-go-name: Official
+        pull_request_url:
+          type: string
+          x-go-name: HTMLPullURL
+        stale:
+          type: boolean
+          x-go-name: Stale
+        state:
+          description: ReviewStateType review state type
+          type: string
+          x-go-package: code.gitea.io/gitea/modules/structs
+        submitted_at:
+          format: date-time
+          type: string
+          x-go-name: Submitted
+        team:
+          $ref: '#/components/schemas/Team'
+        updated_at:
+          format: date-time
+          type: string
+          x-go-name: Updated
+        user:
+          $ref: '#/components/schemas/User'
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    PullReviewComment:
+      description: PullReviewComment represents a comment on a pull request review
+      example:
+        resolver:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        original_commit_id: original_commit_id
+        diff_hunk: diff_hunk
+        created_at: 2000-01-23T04:56:07.000+00:00
+        pull_request_url: pull_request_url
+        body: body
+        path: path
+        original_position: 6
+        updated_at: 2000-01-23T04:56:07.000+00:00
+        html_url: html_url
+        pull_request_review_id: 5
+        id: 0
+        position: 1
+        commit_id: commit_id
+        user:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+      properties:
+        body:
+          type: string
+          x-go-name: Body
+        commit_id:
+          type: string
+          x-go-name: CommitID
+        created_at:
+          format: date-time
+          type: string
+          x-go-name: Created
+        diff_hunk:
+          type: string
+          x-go-name: DiffHunk
+        html_url:
+          type: string
+          x-go-name: HTMLURL
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        original_commit_id:
+          type: string
+          x-go-name: OrigCommitID
+        original_position:
+          format: uint64
+          type: integer
+          x-go-name: OldLineNum
+        path:
+          type: string
+          x-go-name: Path
+        position:
+          format: uint64
+          type: integer
+          x-go-name: LineNum
+        pull_request_review_id:
+          format: int64
+          type: integer
+          x-go-name: ReviewID
+        pull_request_url:
+          type: string
+          x-go-name: HTMLPullURL
+        resolver:
+          $ref: '#/components/schemas/User'
+        updated_at:
+          format: date-time
+          type: string
+          x-go-name: Updated
+        user:
+          $ref: '#/components/schemas/User'
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    PullReviewRequestOptions:
+      description: PullReviewRequestOptions are options to add or remove pull review
+        requests
+      example:
+        team_reviewers:
+        - team_reviewers
+        - team_reviewers
+        reviewers:
+        - reviewers
+        - reviewers
+      properties:
+        reviewers:
+          items:
+            type: string
+          type: array
+          x-go-name: Reviewers
+        team_reviewers:
+          items:
+            type: string
+          type: array
+          x-go-name: TeamReviewers
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    PushMirror:
+      description: PushMirror represents information of a push mirror
+      example:
+        sync_on_commit: true
+        remote_name: remote_name
+        created: created
+        last_update: last_update
+        interval: interval
+        repo_name: repo_name
+        last_error: last_error
+        remote_address: remote_address
+      properties:
+        created:
+          type: string
+          x-go-name: CreatedUnix
+        interval:
+          type: string
+          x-go-name: Interval
+        last_error:
+          type: string
+          x-go-name: LastError
+        last_update:
+          type: string
+          x-go-name: LastUpdateUnix
+        remote_address:
+          type: string
+          x-go-name: RemoteAddress
+        remote_name:
+          type: string
+          x-go-name: RemoteName
+        repo_name:
+          type: string
+          x-go-name: RepoName
+        sync_on_commit:
+          type: boolean
+          x-go-name: SyncOnCommit
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Reaction:
+      description: Reaction contain one reaction
+      example:
+        created_at: 2000-01-23T04:56:07.000+00:00
+        user:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        content: content
+      properties:
+        content:
+          type: string
+          x-go-name: Reaction
+        created_at:
+          format: date-time
+          type: string
+          x-go-name: Created
+        user:
+          $ref: '#/components/schemas/User'
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Reference:
+      example:
+        ref: ref
+        url: url
+        object:
+          type: type
+          sha: sha
+          url: url
+      properties:
+        object:
+          $ref: '#/components/schemas/GitObject'
+        ref:
+          type: string
+          x-go-name: Ref
+        url:
+          type: string
+          x-go-name: URL
+      title: Reference represents a Git reference.
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Release:
+      description: Release represents a repository release
+      example:
+        author:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        tag_name: tag_name
+        created_at: 2000-01-23T04:56:07.000+00:00
+        body: body
+        url: url
+        assets:
+        - size: 1
+          name: name
+          created_at: 2000-01-23T04:56:07.000+00:00
+          browser_download_url: browser_download_url
+          id: 6
+          uuid: uuid
+          download_count: 0
+        - size: 1
+          name: name
+          created_at: 2000-01-23T04:56:07.000+00:00
+          browser_download_url: browser_download_url
+          id: 6
+          uuid: uuid
+          download_count: 0
+        prerelease: true
+        draft: true
+        html_url: html_url
+        target_commitish: target_commitish
+        zipball_url: zipball_url
+        name: name
+        id: 0
+        published_at: 2000-01-23T04:56:07.000+00:00
+        tarball_url: tarball_url
+      properties:
+        assets:
+          items:
+            $ref: '#/components/schemas/Attachment'
+          type: array
+          x-go-name: Attachments
+        author:
+          $ref: '#/components/schemas/User'
+        body:
+          type: string
+          x-go-name: Note
+        created_at:
+          format: date-time
+          type: string
+          x-go-name: CreatedAt
+        draft:
+          type: boolean
+          x-go-name: IsDraft
+        html_url:
+          type: string
+          x-go-name: HTMLURL
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        name:
+          type: string
+          x-go-name: Title
+        prerelease:
+          type: boolean
+          x-go-name: IsPrerelease
+        published_at:
+          format: date-time
+          type: string
+          x-go-name: PublishedAt
+        tag_name:
+          type: string
+          x-go-name: TagName
+        tarball_url:
+          type: string
+          x-go-name: TarURL
+        target_commitish:
+          type: string
+          x-go-name: Target
+        url:
+          type: string
+          x-go-name: URL
+        zipball_url:
+          type: string
+          x-go-name: ZipURL
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    RepoCollaboratorPermission:
+      description: RepoCollaboratorPermission to get repository permission for a collaborator
+      example:
+        role_name: role_name
+        permission: permission
+        user:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+      properties:
+        permission:
+          type: string
+          x-go-name: Permission
+        role_name:
+          type: string
+          x-go-name: RoleName
+        user:
+          $ref: '#/components/schemas/User'
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    RepoCommit:
+      example:
+        committer:
+          date: date
+          name: name
+          email: email
+        author:
+          date: date
+          name: name
+          email: email
+        tree:
+          created: 2000-01-23T04:56:07.000+00:00
+          sha: sha
+          url: url
+        message: message
+        url: url
+        verification:
+          reason: reason
+          payload: payload
+          signature: signature
+          verified: true
+          signer:
+            name: name
+            email: email
+            username: username
+      properties:
+        author:
+          $ref: '#/components/schemas/CommitUser'
+        committer:
+          $ref: '#/components/schemas/CommitUser'
+        message:
+          type: string
+          x-go-name: Message
+        tree:
+          $ref: '#/components/schemas/CommitMeta'
+        url:
+          type: string
+          x-go-name: URL
+        verification:
+          $ref: '#/components/schemas/PayloadCommitVerification'
+      title: RepoCommit contains information of a commit in the context of a repository.
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    RepoTopicOptions:
+      description: RepoTopicOptions a collection of repo topic names
+      example:
+        topics:
+        - topics
+        - topics
+      properties:
+        topics:
+          description: list of topic names
+          items:
+            type: string
+          type: array
+          x-go-name: Topics
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    RepoTransfer:
+      description: RepoTransfer represents a pending repo transfer
+      example:
+        teams:
+        - can_create_org_repo: true
+          units_map:
+            repo.code: read
+            repo.ext_issues: none
+            repo.ext_wiki: none
+            repo.issues: write
+            repo.projects: none
+            repo.pulls: owner
+            repo.releases: none
+            repo.wiki: admin
+          organization:
+            website: website
+            full_name: full_name
+            repo_admin_change_team_access: true
+            avatar_url: avatar_url
+            visibility: visibility
+            name: name
+            description: description
+            location: location
+            id: 0
+            username: username
+          name: name
+          description: description
+          permission: none
+          id: 2
+          includes_all_repositories: true
+          units:
+          - repo.code
+          - repo.issues
+          - repo.ext_issues
+          - repo.wiki
+          - repo.pulls
+          - repo.releases
+          - repo.projects
+          - repo.ext_wiki
+        - can_create_org_repo: true
+          units_map:
+            repo.code: read
+            repo.ext_issues: none
+            repo.ext_wiki: none
+            repo.issues: write
+            repo.projects: none
+            repo.pulls: owner
+            repo.releases: none
+            repo.wiki: admin
+          organization:
+            website: website
+            full_name: full_name
+            repo_admin_change_team_access: true
+            avatar_url: avatar_url
+            visibility: visibility
+            name: name
+            description: description
+            location: location
+            id: 0
+            username: username
+          name: name
+          description: description
+          permission: none
+          id: 2
+          includes_all_repositories: true
+          units:
+          - repo.code
+          - repo.issues
+          - repo.ext_issues
+          - repo.wiki
+          - repo.pulls
+          - repo.releases
+          - repo.projects
+          - repo.ext_wiki
+        doer:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        recipient:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+      properties:
+        doer:
+          $ref: '#/components/schemas/User'
+        recipient:
+          $ref: '#/components/schemas/User'
+        teams:
+          items:
+            $ref: '#/components/schemas/Team'
+          type: array
+          x-go-name: Teams
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Repository:
+      description: Repository represents a repository
+      example:
+        parent: null
+        open_pr_counter: 5
+        language: language
+        repo_transfer:
+          teams:
+          - can_create_org_repo: true
+            units_map:
+              repo.code: read
+              repo.ext_issues: none
+              repo.ext_wiki: none
+              repo.issues: write
+              repo.projects: none
+              repo.pulls: owner
+              repo.releases: none
+              repo.wiki: admin
+            organization:
+              website: website
+              full_name: full_name
+              repo_admin_change_team_access: true
+              avatar_url: avatar_url
+              visibility: visibility
+              name: name
+              description: description
+              location: location
+              id: 0
+              username: username
+            name: name
+            description: description
+            permission: none
+            id: 2
+            includes_all_repositories: true
+            units:
+            - repo.code
+            - repo.issues
+            - repo.ext_issues
+            - repo.wiki
+            - repo.pulls
+            - repo.releases
+            - repo.projects
+            - repo.ext_wiki
+          - can_create_org_repo: true
+            units_map:
+              repo.code: read
+              repo.ext_issues: none
+              repo.ext_wiki: none
+              repo.issues: write
+              repo.projects: none
+              repo.pulls: owner
+              repo.releases: none
+              repo.wiki: admin
+            organization:
+              website: website
+              full_name: full_name
+              repo_admin_change_team_access: true
+              avatar_url: avatar_url
+              visibility: visibility
+              name: name
+              description: description
+              location: location
+              id: 0
+              username: username
+            name: name
+            description: description
+            permission: none
+            id: 2
+            includes_all_repositories: true
+            units:
+            - repo.code
+            - repo.issues
+            - repo.ext_issues
+            - repo.wiki
+            - repo.pulls
+            - repo.releases
+            - repo.projects
+            - repo.ext_wiki
+          doer:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          recipient:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+        has_pull_requests: true
+        empty: true
+        permissions:
+          pull: true
+          admin: true
+          push: true
+        id: 6
+        release_counter: 5
+        default_delete_branch_after_merge: true
+        ssh_url: ssh_url
+        full_name: full_name
+        size: 7
+        languages_url: languages_url
+        clone_url: clone_url
+        html_url: html_url
+        name: name
+        default_branch: default_branch
+        mirror_updated: 2000-01-23T04:56:07.000+00:00
+        ignore_whitespace_conflicts: true
+        template: true
+        internal: true
+        mirror: true
+        private: true
+        open_issues_count: 1
+        link: link
+        created_at: 2000-01-23T04:56:07.000+00:00
+        default_allow_maintainer_edit: true
+        description: description
+        allow_rebase_update: true
+        has_projects: true
+        archived: true
+        has_wiki: true
+        updated_at: 2000-01-23T04:56:07.000+00:00
+        allow_merge_commits: true
+        stars_count: 9
+        allow_rebase_explicit: true
+        external_tracker:
+          external_tracker_regexp_pattern: external_tracker_regexp_pattern
+          external_tracker_style: external_tracker_style
+          external_tracker_url: external_tracker_url
+          external_tracker_format: external_tracker_format
+        mirror_interval: mirror_interval
+        owner:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        allow_squash_merge: true
+        external_wiki:
+          external_wiki_url: external_wiki_url
+        website: website
+        internal_tracker:
+          enable_issue_dependencies: true
+          allow_only_contributors_to_track_time: true
+          enable_time_tracker: true
+        has_issues: true
+        allow_rebase: true
+        default_merge_style: default_merge_style
+        fork: true
+        avatar_url: avatar_url
+        original_url: original_url
+        watchers_count: 3
+        forks_count: 0
+      properties:
+        allow_merge_commits:
+          type: boolean
+          x-go-name: AllowMerge
+        allow_rebase:
+          type: boolean
+          x-go-name: AllowRebase
+        allow_rebase_explicit:
+          type: boolean
+          x-go-name: AllowRebaseMerge
+        allow_rebase_update:
+          type: boolean
+          x-go-name: AllowRebaseUpdate
+        allow_squash_merge:
+          type: boolean
+          x-go-name: AllowSquash
+        archived:
+          type: boolean
+          x-go-name: Archived
+        avatar_url:
+          type: string
+          x-go-name: AvatarURL
+        clone_url:
+          type: string
+          x-go-name: CloneURL
+        created_at:
+          format: date-time
+          type: string
+          x-go-name: Created
+        default_allow_maintainer_edit:
+          type: boolean
+          x-go-name: DefaultAllowMaintainerEdit
+        default_branch:
+          type: string
+          x-go-name: DefaultBranch
+        default_delete_branch_after_merge:
+          type: boolean
+          x-go-name: DefaultDeleteBranchAfterMerge
+        default_merge_style:
+          type: string
+          x-go-name: DefaultMergeStyle
+        description:
+          type: string
+          x-go-name: Description
+        empty:
+          type: boolean
+          x-go-name: Empty
+        external_tracker:
+          $ref: '#/components/schemas/ExternalTracker'
+        external_wiki:
+          $ref: '#/components/schemas/ExternalWiki'
+        fork:
+          type: boolean
+          x-go-name: Fork
+        forks_count:
+          format: int64
+          type: integer
+          x-go-name: Forks
+        full_name:
+          type: string
+          x-go-name: FullName
+        has_issues:
+          type: boolean
+          x-go-name: HasIssues
+        has_projects:
+          type: boolean
+          x-go-name: HasProjects
+        has_pull_requests:
+          type: boolean
+          x-go-name: HasPullRequests
+        has_wiki:
+          type: boolean
+          x-go-name: HasWiki
+        html_url:
+          type: string
+          x-go-name: HTMLURL
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        ignore_whitespace_conflicts:
+          type: boolean
+          x-go-name: IgnoreWhitespaceConflicts
+        internal:
+          type: boolean
+          x-go-name: Internal
+        internal_tracker:
+          $ref: '#/components/schemas/InternalTracker'
+        language:
+          type: string
+          x-go-name: Language
+        languages_url:
+          type: string
+          x-go-name: LanguagesURL
+        link:
+          type: string
+          x-go-name: Link
+        mirror:
+          type: boolean
+          x-go-name: Mirror
+        mirror_interval:
+          type: string
+          x-go-name: MirrorInterval
+        mirror_updated:
+          format: date-time
+          type: string
+          x-go-name: MirrorUpdated
+        name:
+          type: string
+          x-go-name: Name
+        open_issues_count:
+          format: int64
+          type: integer
+          x-go-name: OpenIssues
+        open_pr_counter:
+          format: int64
+          type: integer
+          x-go-name: OpenPulls
+        original_url:
+          type: string
+          x-go-name: OriginalURL
+        owner:
+          $ref: '#/components/schemas/User'
+        parent:
+          $ref: '#/components/schemas/Repository'
+        permissions:
+          $ref: '#/components/schemas/Permission'
+        private:
+          type: boolean
+          x-go-name: Private
+        release_counter:
+          format: int64
+          type: integer
+          x-go-name: Releases
+        repo_transfer:
+          $ref: '#/components/schemas/RepoTransfer'
+        size:
+          format: int64
+          type: integer
+          x-go-name: Size
+        ssh_url:
+          type: string
+          x-go-name: SSHURL
+        stars_count:
+          format: int64
+          type: integer
+          x-go-name: Stars
+        template:
+          type: boolean
+          x-go-name: Template
+        updated_at:
+          format: date-time
+          type: string
+          x-go-name: Updated
+        watchers_count:
+          format: int64
+          type: integer
+          x-go-name: Watchers
+        website:
+          type: string
+          x-go-name: Website
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    RepositoryMeta:
+      description: RepositoryMeta basic repository information
+      example:
+        owner: owner
+        full_name: full_name
+        name: name
+        id: 4
+      properties:
+        full_name:
+          type: string
+          x-go-name: FullName
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        name:
+          type: string
+          x-go-name: Name
+        owner:
+          type: string
+          x-go-name: Owner
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    ReviewStateType:
+      description: ReviewStateType review state type
+      type: string
+      x-go-package: code.gitea.io/gitea/modules/structs
+    SearchResults:
+      description: SearchResults results of a successful search
+      example:
+        data:
+        - parent: null
+          open_pr_counter: 5
+          language: language
+          repo_transfer:
+            teams:
+            - can_create_org_repo: true
+              units_map:
+                repo.code: read
+                repo.ext_issues: none
+                repo.ext_wiki: none
+                repo.issues: write
+                repo.projects: none
+                repo.pulls: owner
+                repo.releases: none
+                repo.wiki: admin
+              organization:
+                website: website
+                full_name: full_name
+                repo_admin_change_team_access: true
+                avatar_url: avatar_url
+                visibility: visibility
+                name: name
+                description: description
+                location: location
+                id: 0
+                username: username
+              name: name
+              description: description
+              permission: none
+              id: 2
+              includes_all_repositories: true
+              units:
+              - repo.code
+              - repo.issues
+              - repo.ext_issues
+              - repo.wiki
+              - repo.pulls
+              - repo.releases
+              - repo.projects
+              - repo.ext_wiki
+            - can_create_org_repo: true
+              units_map:
+                repo.code: read
+                repo.ext_issues: none
+                repo.ext_wiki: none
+                repo.issues: write
+                repo.projects: none
+                repo.pulls: owner
+                repo.releases: none
+                repo.wiki: admin
+              organization:
+                website: website
+                full_name: full_name
+                repo_admin_change_team_access: true
+                avatar_url: avatar_url
+                visibility: visibility
+                name: name
+                description: description
+                location: location
+                id: 0
+                username: username
+              name: name
+              description: description
+              permission: none
+              id: 2
+              includes_all_repositories: true
+              units:
+              - repo.code
+              - repo.issues
+              - repo.ext_issues
+              - repo.wiki
+              - repo.pulls
+              - repo.releases
+              - repo.projects
+              - repo.ext_wiki
+            doer:
+              website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+            recipient:
+              website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+          has_pull_requests: true
+          empty: true
+          permissions:
+            pull: true
+            admin: true
+            push: true
+          id: 6
+          release_counter: 5
+          default_delete_branch_after_merge: true
+          ssh_url: ssh_url
+          full_name: full_name
+          size: 7
+          languages_url: languages_url
+          clone_url: clone_url
+          html_url: html_url
+          name: name
+          default_branch: default_branch
+          mirror_updated: 2000-01-23T04:56:07.000+00:00
+          ignore_whitespace_conflicts: true
+          template: true
+          internal: true
+          mirror: true
+          private: true
+          open_issues_count: 1
+          link: link
+          created_at: 2000-01-23T04:56:07.000+00:00
+          default_allow_maintainer_edit: true
+          description: description
+          allow_rebase_update: true
+          has_projects: true
+          archived: true
+          has_wiki: true
+          updated_at: 2000-01-23T04:56:07.000+00:00
+          allow_merge_commits: true
+          stars_count: 9
+          allow_rebase_explicit: true
+          external_tracker:
+            external_tracker_regexp_pattern: external_tracker_regexp_pattern
+            external_tracker_style: external_tracker_style
+            external_tracker_url: external_tracker_url
+            external_tracker_format: external_tracker_format
+          mirror_interval: mirror_interval
+          owner:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          allow_squash_merge: true
+          external_wiki:
+            external_wiki_url: external_wiki_url
+          website: website
+          internal_tracker:
+            enable_issue_dependencies: true
+            allow_only_contributors_to_track_time: true
+            enable_time_tracker: true
+          has_issues: true
+          allow_rebase: true
+          default_merge_style: default_merge_style
+          fork: true
+          avatar_url: avatar_url
+          original_url: original_url
+          watchers_count: 3
+          forks_count: 0
+        - parent: null
+          open_pr_counter: 5
+          language: language
+          repo_transfer:
+            teams:
+            - can_create_org_repo: true
+              units_map:
+                repo.code: read
+                repo.ext_issues: none
+                repo.ext_wiki: none
+                repo.issues: write
+                repo.projects: none
+                repo.pulls: owner
+                repo.releases: none
+                repo.wiki: admin
+              organization:
+                website: website
+                full_name: full_name
+                repo_admin_change_team_access: true
+                avatar_url: avatar_url
+                visibility: visibility
+                name: name
+                description: description
+                location: location
+                id: 0
+                username: username
+              name: name
+              description: description
+              permission: none
+              id: 2
+              includes_all_repositories: true
+              units:
+              - repo.code
+              - repo.issues
+              - repo.ext_issues
+              - repo.wiki
+              - repo.pulls
+              - repo.releases
+              - repo.projects
+              - repo.ext_wiki
+            - can_create_org_repo: true
+              units_map:
+                repo.code: read
+                repo.ext_issues: none
+                repo.ext_wiki: none
+                repo.issues: write
+                repo.projects: none
+                repo.pulls: owner
+                repo.releases: none
+                repo.wiki: admin
+              organization:
+                website: website
+                full_name: full_name
+                repo_admin_change_team_access: true
+                avatar_url: avatar_url
+                visibility: visibility
+                name: name
+                description: description
+                location: location
+                id: 0
+                username: username
+              name: name
+              description: description
+              permission: none
+              id: 2
+              includes_all_repositories: true
+              units:
+              - repo.code
+              - repo.issues
+              - repo.ext_issues
+              - repo.wiki
+              - repo.pulls
+              - repo.releases
+              - repo.projects
+              - repo.ext_wiki
+            doer:
+              website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+            recipient:
+              website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+          has_pull_requests: true
+          empty: true
+          permissions:
+            pull: true
+            admin: true
+            push: true
+          id: 6
+          release_counter: 5
+          default_delete_branch_after_merge: true
+          ssh_url: ssh_url
+          full_name: full_name
+          size: 7
+          languages_url: languages_url
+          clone_url: clone_url
+          html_url: html_url
+          name: name
+          default_branch: default_branch
+          mirror_updated: 2000-01-23T04:56:07.000+00:00
+          ignore_whitespace_conflicts: true
+          template: true
+          internal: true
+          mirror: true
+          private: true
+          open_issues_count: 1
+          link: link
+          created_at: 2000-01-23T04:56:07.000+00:00
+          default_allow_maintainer_edit: true
+          description: description
+          allow_rebase_update: true
+          has_projects: true
+          archived: true
+          has_wiki: true
+          updated_at: 2000-01-23T04:56:07.000+00:00
+          allow_merge_commits: true
+          stars_count: 9
+          allow_rebase_explicit: true
+          external_tracker:
+            external_tracker_regexp_pattern: external_tracker_regexp_pattern
+            external_tracker_style: external_tracker_style
+            external_tracker_url: external_tracker_url
+            external_tracker_format: external_tracker_format
+          mirror_interval: mirror_interval
+          owner:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          allow_squash_merge: true
+          external_wiki:
+            external_wiki_url: external_wiki_url
+          website: website
+          internal_tracker:
+            enable_issue_dependencies: true
+            allow_only_contributors_to_track_time: true
+            enable_time_tracker: true
+          has_issues: true
+          allow_rebase: true
+          default_merge_style: default_merge_style
+          fork: true
+          avatar_url: avatar_url
+          original_url: original_url
+          watchers_count: 3
+          forks_count: 0
+        ok: true
+      properties:
+        data:
+          items:
+            $ref: '#/components/schemas/Repository'
+          type: array
+          x-go-name: Data
+        ok:
+          type: boolean
+          x-go-name: OK
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    ServerVersion:
+      description: ServerVersion wraps the version of the server
+      example:
+        version: version
+      properties:
+        version:
+          type: string
+          x-go-name: Version
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    StateType:
+      description: StateType issue state type
+      type: string
+      x-go-package: code.gitea.io/gitea/modules/structs
+    StopWatch:
+      description: StopWatch represent a running stopwatch
+      example:
+        duration: duration
+        seconds: 6
+        issue_index: 0
+        created: 2000-01-23T04:56:07.000+00:00
+        repo_owner_name: repo_owner_name
+        issue_title: issue_title
+        repo_name: repo_name
+      properties:
+        created:
+          format: date-time
+          type: string
+          x-go-name: Created
+        duration:
+          type: string
+          x-go-name: Duration
+        issue_index:
+          format: int64
+          type: integer
+          x-go-name: IssueIndex
+        issue_title:
+          type: string
+          x-go-name: IssueTitle
+        repo_name:
+          type: string
+          x-go-name: RepoName
+        repo_owner_name:
+          type: string
+          x-go-name: RepoOwnerName
+        seconds:
+          format: int64
+          type: integer
+          x-go-name: Seconds
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    SubmitPullReviewOptions:
+      description: SubmitPullReviewOptions are options to submit a pending pull review
+      example:
+        body: body
+        event: event
+      properties:
+        body:
+          type: string
+          x-go-name: Body
+        event:
+          description: ReviewStateType review state type
+          type: string
+          x-go-package: code.gitea.io/gitea/modules/structs
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Tag:
+      description: Tag represents a repository tag
+      example:
+        zipball_url: zipball_url
+        commit:
+          created: 2000-01-23T04:56:07.000+00:00
+          sha: sha
+          url: url
+        name: name
+        id: id
+        message: message
+        tarball_url: tarball_url
+      properties:
+        commit:
+          $ref: '#/components/schemas/CommitMeta'
+        id:
+          type: string
+          x-go-name: ID
+        message:
+          type: string
+          x-go-name: Message
+        name:
+          type: string
+          x-go-name: Name
+        tarball_url:
+          type: string
+          x-go-name: TarballURL
+        zipball_url:
+          type: string
+          x-go-name: ZipballURL
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    Team:
+      description: Team represents a team in an organization
+      example:
+        can_create_org_repo: true
+        units_map:
+          repo.code: read
+          repo.ext_issues: none
+          repo.ext_wiki: none
+          repo.issues: write
+          repo.projects: none
+          repo.pulls: owner
+          repo.releases: none
+          repo.wiki: admin
+        organization:
+          website: website
+          full_name: full_name
+          repo_admin_change_team_access: true
+          avatar_url: avatar_url
+          visibility: visibility
+          name: name
+          description: description
+          location: location
+          id: 0
+          username: username
+        name: name
+        description: description
+        permission: none
+        id: 2
+        includes_all_repositories: true
+        units:
+        - repo.code
+        - repo.issues
+        - repo.ext_issues
+        - repo.wiki
+        - repo.pulls
+        - repo.releases
+        - repo.projects
+        - repo.ext_wiki
+      properties:
+        can_create_org_repo:
+          type: boolean
+          x-go-name: CanCreateOrgRepo
+        description:
+          type: string
+          x-go-name: Description
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        includes_all_repositories:
+          type: boolean
+          x-go-name: IncludesAllRepositories
+        name:
+          type: string
+          x-go-name: Name
+        organization:
+          $ref: '#/components/schemas/Organization'
+        permission:
+          enum:
+          - none
+          - read
+          - write
+          - admin
+          - owner
+          type: string
+          x-go-name: Permission
+        units:
+          example:
+          - repo.code
+          - repo.issues
+          - repo.ext_issues
+          - repo.wiki
+          - repo.pulls
+          - repo.releases
+          - repo.projects
+          - repo.ext_wiki
+          items:
+            type: string
+          type: array
+          x-go-name: Units
+        units_map:
+          additionalProperties:
+            type: string
+          example:
+            repo.code: read
+            repo.ext_issues: none
+            repo.ext_wiki: none
+            repo.issues: write
+            repo.projects: none
+            repo.pulls: owner
+            repo.releases: none
+            repo.wiki: admin
+          type: object
+          x-go-name: UnitsMap
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    TimeStamp:
+      description: TimeStamp defines a timestamp
+      format: int64
+      type: integer
+      x-go-package: code.gitea.io/gitea/modules/timeutil
+    TimelineComment:
+      description: TimelineComment represents a timeline comment (comment of any type)
+        on a commit or issue
+      example:
+        issue_url: issue_url
+        review_id: 5
+        ref_commit_sha: ref_commit_sha
+        old_milestone:
+          closed_at: 2000-01-23T04:56:07.000+00:00
+          updated_at: 2000-01-23T04:56:07.000+00:00
+          created_at: 2000-01-23T04:56:07.000+00:00
+          description: description
+          id: 7
+          state: state
+          closed_issues: 2
+          open_issues: 9
+          title: title
+          due_on: 2000-01-23T04:56:07.000+00:00
+        ref_issue:
+          is_locked: true
+          pull_request:
+            merged_at: 2000-01-23T04:56:07.000+00:00
+            merged: true
+          closed_at: 2000-01-23T04:56:07.000+00:00
+          comments: 5
+          original_author_id: 2
+          due_date: 2000-01-23T04:56:07.000+00:00
+          assignees:
+          - website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          - website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          created_at: 2000-01-23T04:56:07.000+00:00
+          body: body
+          repository:
+            owner: owner
+            full_name: full_name
+            name: name
+            id: 4
+          title: title
+          url: url
+          labels:
+          - color: 00aabb
+            name: name
+            description: description
+            exclusive: false
+            id: 0
+            url: url
+          - color: 00aabb
+            name: name
+            description: description
+            exclusive: false
+            id: 0
+            url: url
+          number: 3
+          ref: ref
+          assets:
+          - size: 1
+            name: name
+            created_at: 2000-01-23T04:56:07.000+00:00
+            browser_download_url: browser_download_url
+            id: 6
+            uuid: uuid
+            download_count: 0
+          - size: 1
+            name: name
+            created_at: 2000-01-23T04:56:07.000+00:00
+            browser_download_url: browser_download_url
+            id: 6
+            uuid: uuid
+            download_count: 0
+          milestone:
+            closed_at: 2000-01-23T04:56:07.000+00:00
+            updated_at: 2000-01-23T04:56:07.000+00:00
+            created_at: 2000-01-23T04:56:07.000+00:00
+            description: description
+            id: 7
+            state: state
+            closed_issues: 2
+            open_issues: 9
+            title: title
+            due_on: 2000-01-23T04:56:07.000+00:00
+          updated_at: 2000-01-23T04:56:07.000+00:00
+          html_url: html_url
+          assignee:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          id: 5
+          state: state
+          original_author: original_author
+          user:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+        created_at: 2000-01-23T04:56:07.000+00:00
+        old_title: old_title
+        resolve_doer:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        body: body
+        type: type
+        new_title: new_title
+        old_project_id: 6
+        updated_at: 2000-01-23T04:56:07.000+00:00
+        project_id: 1
+        dependent_issue:
+          is_locked: true
+          pull_request:
+            merged_at: 2000-01-23T04:56:07.000+00:00
+            merged: true
+          closed_at: 2000-01-23T04:56:07.000+00:00
+          comments: 5
+          original_author_id: 2
+          due_date: 2000-01-23T04:56:07.000+00:00
+          assignees:
+          - website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          - website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          created_at: 2000-01-23T04:56:07.000+00:00
+          body: body
+          repository:
+            owner: owner
+            full_name: full_name
+            name: name
+            id: 4
+          title: title
+          url: url
+          labels:
+          - color: 00aabb
+            name: name
+            description: description
+            exclusive: false
+            id: 0
+            url: url
+          - color: 00aabb
+            name: name
+            description: description
+            exclusive: false
+            id: 0
+            url: url
+          number: 3
+          ref: ref
+          assets:
+          - size: 1
+            name: name
+            created_at: 2000-01-23T04:56:07.000+00:00
+            browser_download_url: browser_download_url
+            id: 6
+            uuid: uuid
+            download_count: 0
+          - size: 1
+            name: name
+            created_at: 2000-01-23T04:56:07.000+00:00
+            browser_download_url: browser_download_url
+            id: 6
+            uuid: uuid
+            download_count: 0
+          milestone:
+            closed_at: 2000-01-23T04:56:07.000+00:00
+            updated_at: 2000-01-23T04:56:07.000+00:00
+            created_at: 2000-01-23T04:56:07.000+00:00
+            description: description
+            id: 7
+            state: state
+            closed_issues: 2
+            open_issues: 9
+            title: title
+            due_on: 2000-01-23T04:56:07.000+00:00
+          updated_at: 2000-01-23T04:56:07.000+00:00
+          html_url: html_url
+          assignee:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          id: 5
+          state: state
+          original_author: original_author
+          user:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+        id: 0
+        removed_assignee: true
+        tracked_time:
+          issue:
+            is_locked: true
+            pull_request:
+              merged_at: 2000-01-23T04:56:07.000+00:00
+              merged: true
+            closed_at: 2000-01-23T04:56:07.000+00:00
+            comments: 5
+            original_author_id: 2
+            due_date: 2000-01-23T04:56:07.000+00:00
+            assignees:
+            - website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+            - website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+            created_at: 2000-01-23T04:56:07.000+00:00
+            body: body
+            repository:
+              owner: owner
+              full_name: full_name
+              name: name
+              id: 4
+            title: title
+            url: url
+            labels:
+            - color: 00aabb
+              name: name
+              description: description
+              exclusive: false
+              id: 0
+              url: url
+            - color: 00aabb
+              name: name
+              description: description
+              exclusive: false
+              id: 0
+              url: url
+            number: 3
+            ref: ref
+            assets:
+            - size: 1
+              name: name
+              created_at: 2000-01-23T04:56:07.000+00:00
+              browser_download_url: browser_download_url
+              id: 6
+              uuid: uuid
+              download_count: 0
+            - size: 1
+              name: name
+              created_at: 2000-01-23T04:56:07.000+00:00
+              browser_download_url: browser_download_url
+              id: 6
+              uuid: uuid
+              download_count: 0
+            milestone:
+              closed_at: 2000-01-23T04:56:07.000+00:00
+              updated_at: 2000-01-23T04:56:07.000+00:00
+              created_at: 2000-01-23T04:56:07.000+00:00
+              description: description
+              id: 7
+              state: state
+              closed_issues: 2
+              open_issues: 9
+              title: title
+              due_on: 2000-01-23T04:56:07.000+00:00
+            updated_at: 2000-01-23T04:56:07.000+00:00
+            html_url: html_url
+            assignee:
+              website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+            id: 5
+            state: state
+            original_author: original_author
+            user:
+              website: website
+              visibility: visibility
+              created: 2000-01-23T04:56:07.000+00:00
+              last_login: 2000-01-23T04:56:07.000+00:00
+              active: true
+              description: description
+              language: language
+              starred_repos_count: 5
+              login: login
+              is_admin: true
+              full_name: full_name
+              login_name: empty
+              avatar_url: avatar_url
+              following_count: 6
+              restricted: true
+              followers_count: 0
+              location: location
+              id: 1
+              prohibit_login: true
+              email: email
+          issue_id: 2
+          user_id: 9
+          created: 2000-01-23T04:56:07.000+00:00
+          user_name: user_name
+          id: 5
+          time: 7
+        ref_action: ref_action
+        label:
+          color: 00aabb
+          name: name
+          description: description
+          exclusive: false
+          id: 0
+          url: url
+        pull_request_url: pull_request_url
+        milestone:
+          closed_at: 2000-01-23T04:56:07.000+00:00
+          updated_at: 2000-01-23T04:56:07.000+00:00
+          created_at: 2000-01-23T04:56:07.000+00:00
+          description: description
+          id: 7
+          state: state
+          closed_issues: 2
+          open_issues: 9
+          title: title
+          due_on: 2000-01-23T04:56:07.000+00:00
+        new_ref: new_ref
+        assignee_team:
+          can_create_org_repo: true
+          units_map:
+            repo.code: read
+            repo.ext_issues: none
+            repo.ext_wiki: none
+            repo.issues: write
+            repo.projects: none
+            repo.pulls: owner
+            repo.releases: none
+            repo.wiki: admin
+          organization:
+            website: website
+            full_name: full_name
+            repo_admin_change_team_access: true
+            avatar_url: avatar_url
+            visibility: visibility
+            name: name
+            description: description
+            location: location
+            id: 0
+            username: username
+          name: name
+          description: description
+          permission: none
+          id: 2
+          includes_all_repositories: true
+          units:
+          - repo.code
+          - repo.issues
+          - repo.ext_issues
+          - repo.wiki
+          - repo.pulls
+          - repo.releases
+          - repo.projects
+          - repo.ext_wiki
+        old_ref: old_ref
+        html_url: html_url
+        ref_comment:
+          issue_url: issue_url
+          assets:
+          - size: 1
+            name: name
+            created_at: 2000-01-23T04:56:07.000+00:00
+            browser_download_url: browser_download_url
+            id: 6
+            uuid: uuid
+            download_count: 0
+          - size: 1
+            name: name
+            created_at: 2000-01-23T04:56:07.000+00:00
+            browser_download_url: browser_download_url
+            id: 6
+            uuid: uuid
+            download_count: 0
+          updated_at: 2000-01-23T04:56:07.000+00:00
+          html_url: html_url
+          original_author_id: 6
+          created_at: 2000-01-23T04:56:07.000+00:00
+          id: 0
+          pull_request_url: pull_request_url
+          body: body
+          original_author: original_author
+          user:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+        assignee:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        user:
+          website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+      properties:
+        assignee:
+          $ref: '#/components/schemas/User'
+        assignee_team:
+          $ref: '#/components/schemas/Team'
+        body:
+          type: string
+          x-go-name: Body
+        created_at:
+          format: date-time
+          type: string
+          x-go-name: Created
+        dependent_issue:
+          $ref: '#/components/schemas/Issue'
+        html_url:
+          type: string
+          x-go-name: HTMLURL
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        issue_url:
+          type: string
+          x-go-name: IssueURL
+        label:
+          $ref: '#/components/schemas/Label'
+        milestone:
+          $ref: '#/components/schemas/Milestone'
+        new_ref:
+          type: string
+          x-go-name: NewRef
+        new_title:
+          type: string
+          x-go-name: NewTitle
+        old_milestone:
+          $ref: '#/components/schemas/Milestone'
+        old_project_id:
+          format: int64
+          type: integer
+          x-go-name: OldProjectID
+        old_ref:
+          type: string
+          x-go-name: OldRef
+        old_title:
+          type: string
+          x-go-name: OldTitle
+        project_id:
+          format: int64
+          type: integer
+          x-go-name: ProjectID
+        pull_request_url:
+          type: string
+          x-go-name: PRURL
+        ref_action:
+          type: string
+          x-go-name: RefAction
+        ref_comment:
+          $ref: '#/components/schemas/Comment'
+        ref_commit_sha:
+          description: commit SHA where issue/PR was referenced
+          type: string
+          x-go-name: RefCommitSHA
+        ref_issue:
+          $ref: '#/components/schemas/Issue'
+        removed_assignee:
+          description: whether the assignees were removed or added
+          type: boolean
+          x-go-name: RemovedAssignee
+        resolve_doer:
+          $ref: '#/components/schemas/User'
+        review_id:
+          format: int64
+          type: integer
+          x-go-name: ReviewID
+        tracked_time:
+          $ref: '#/components/schemas/TrackedTime'
+        type:
+          type: string
+          x-go-name: Type
+        updated_at:
+          format: date-time
+          type: string
+          x-go-name: Updated
+        user:
+          $ref: '#/components/schemas/User'
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    TopicName:
+      description: TopicName a list of repo topic names
+      example:
+        topics:
+        - topics
+        - topics
+      properties:
+        topics:
+          items:
+            type: string
+          type: array
+          x-go-name: TopicNames
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    TopicResponse:
+      description: TopicResponse for returning topics
+      example:
+        created: 2000-01-23T04:56:07.000+00:00
+        topic_name: topic_name
+        id: 0
+        repo_count: 6
+        updated: 2000-01-23T04:56:07.000+00:00
+      properties:
+        created:
+          format: date-time
+          type: string
+          x-go-name: Created
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        repo_count:
+          format: int64
+          type: integer
+          x-go-name: RepoCount
+        topic_name:
+          type: string
+          x-go-name: Name
+        updated:
+          format: date-time
+          type: string
+          x-go-name: Updated
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    TrackedTime:
+      description: TrackedTime worked time for an issue / pr
+      example:
+        issue:
+          is_locked: true
+          pull_request:
+            merged_at: 2000-01-23T04:56:07.000+00:00
+            merged: true
+          closed_at: 2000-01-23T04:56:07.000+00:00
+          comments: 5
+          original_author_id: 2
+          due_date: 2000-01-23T04:56:07.000+00:00
+          assignees:
+          - website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          - website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          created_at: 2000-01-23T04:56:07.000+00:00
+          body: body
+          repository:
+            owner: owner
+            full_name: full_name
+            name: name
+            id: 4
+          title: title
+          url: url
+          labels:
+          - color: 00aabb
+            name: name
+            description: description
+            exclusive: false
+            id: 0
+            url: url
+          - color: 00aabb
+            name: name
+            description: description
+            exclusive: false
+            id: 0
+            url: url
+          number: 3
+          ref: ref
+          assets:
+          - size: 1
+            name: name
+            created_at: 2000-01-23T04:56:07.000+00:00
+            browser_download_url: browser_download_url
+            id: 6
+            uuid: uuid
+            download_count: 0
+          - size: 1
+            name: name
+            created_at: 2000-01-23T04:56:07.000+00:00
+            browser_download_url: browser_download_url
+            id: 6
+            uuid: uuid
+            download_count: 0
+          milestone:
+            closed_at: 2000-01-23T04:56:07.000+00:00
+            updated_at: 2000-01-23T04:56:07.000+00:00
+            created_at: 2000-01-23T04:56:07.000+00:00
+            description: description
+            id: 7
+            state: state
+            closed_issues: 2
+            open_issues: 9
+            title: title
+            due_on: 2000-01-23T04:56:07.000+00:00
+          updated_at: 2000-01-23T04:56:07.000+00:00
+          html_url: html_url
+          assignee:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+          id: 5
+          state: state
+          original_author: original_author
+          user:
+            website: website
+            visibility: visibility
+            created: 2000-01-23T04:56:07.000+00:00
+            last_login: 2000-01-23T04:56:07.000+00:00
+            active: true
+            description: description
+            language: language
+            starred_repos_count: 5
+            login: login
+            is_admin: true
+            full_name: full_name
+            login_name: empty
+            avatar_url: avatar_url
+            following_count: 6
+            restricted: true
+            followers_count: 0
+            location: location
+            id: 1
+            prohibit_login: true
+            email: email
+        issue_id: 2
+        user_id: 9
+        created: 2000-01-23T04:56:07.000+00:00
+        user_name: user_name
+        id: 5
+        time: 7
+      properties:
+        created:
+          format: date-time
+          type: string
+          x-go-name: Created
+        id:
+          format: int64
+          type: integer
+          x-go-name: ID
+        issue:
+          $ref: '#/components/schemas/Issue'
+        issue_id:
+          description: deprecated (only for backwards compatibility)
+          format: int64
+          type: integer
+          x-go-name: IssueID
+        time:
+          description: Time in seconds
+          format: int64
+          type: integer
+          x-go-name: Time
+        user_id:
+          description: deprecated (only for backwards compatibility)
+          format: int64
+          type: integer
+          x-go-name: UserID
+        user_name:
+          type: string
+          x-go-name: UserName
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    TransferRepoOption:
+      description: TransferRepoOption options when transfer a repository's ownership
+      example:
+        new_owner: new_owner
+        team_ids:
+        - 0
+        - 0
+      properties:
+        new_owner:
+          type: string
+          x-go-name: NewOwner
+        team_ids:
+          description: ID of the team or teams to add to the repository. Teams can
+            only be added to organization-owned repositories.
+          items:
+            format: int64
+            type: integer
+          type: array
+          x-go-name: TeamIDs
+      required:
+      - new_owner
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    UpdateFileOptions:
+      description: |-
+        UpdateFileOptions options for updating files
+        Note: `author` and `committer` are optional (if only one is given, it will be used for the other, otherwise the authenticated user will be used)
+      example:
+        committer:
+          name: name
+          email: email
+        author:
+          name: name
+          email: email
+        from_path: from_path
+        new_branch: new_branch
+        dates:
+          committer: 2000-01-23T04:56:07.000+00:00
+          author: 2000-01-23T04:56:07.000+00:00
+        signoff: true
+        message: message
+        branch: branch
+        sha: sha
+        content: content
+      properties:
+        author:
+          $ref: '#/components/schemas/Identity'
+        branch:
+          description: "branch (optional) to base this file from. if not given, the\
+            \ default branch is used"
+          type: string
+          x-go-name: BranchName
+        committer:
+          $ref: '#/components/schemas/Identity'
+        content:
+          description: content must be base64 encoded
+          type: string
+          x-go-name: Content
+        dates:
+          $ref: '#/components/schemas/CommitDateOptions'
+        from_path:
+          description: from_path (optional) is the path of the original file which
+            will be moved/renamed to the path in the URL
+          type: string
+          x-go-name: FromPath
+        message:
+          description: "message (optional) for the commit of this file. if not supplied,\
+            \ a default message will be used"
+          type: string
+          x-go-name: Message
+        new_branch:
+          description: new_branch (optional) will make a new branch from `branch`
+            before creating the file
+          type: string
+          x-go-name: NewBranchName
+        sha:
+          description: sha is the SHA for the file that already exists
+          type: string
+          x-go-name: SHA
+        signoff:
+          description: Add a Signed-off-by trailer by the committer at the end of
+            the commit log message.
+          type: boolean
+          x-go-name: Signoff
+      required:
+      - content
+      - sha
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    User:
+      description: User represents a user
+      example:
+        website: website
+        visibility: visibility
+        created: 2000-01-23T04:56:07.000+00:00
+        last_login: 2000-01-23T04:56:07.000+00:00
+        active: true
+        description: description
+        language: language
+        starred_repos_count: 5
+        login: login
+        is_admin: true
+        full_name: full_name
+        login_name: empty
+        avatar_url: avatar_url
+        following_count: 6
+        restricted: true
+        followers_count: 0
+        location: location
+        id: 1
+        prohibit_login: true
+        email: email
+      properties:
+        active:
+          description: Is user active
+          type: boolean
+          x-go-name: IsActive
+        avatar_url:
+          description: URL to the user's avatar
+          type: string
+          x-go-name: AvatarURL
+        created:
+          format: date-time
+          type: string
+          x-go-name: Created
+        description:
+          description: the user's description
+          type: string
+          x-go-name: Description
+        email:
+          format: email
+          type: string
+          x-go-name: Email
+        followers_count:
+          description: user counts
+          format: int64
+          type: integer
+          x-go-name: Followers
+        following_count:
+          format: int64
+          type: integer
+          x-go-name: Following
+        full_name:
+          description: the user's full name
+          type: string
+          x-go-name: FullName
+        id:
+          description: the user's id
+          format: int64
+          type: integer
+          x-go-name: ID
+        is_admin:
+          description: Is the user an administrator
+          type: boolean
+          x-go-name: IsAdmin
+        language:
+          description: User locale
+          type: string
+          x-go-name: Language
+        last_login:
+          format: date-time
+          type: string
+          x-go-name: LastLogin
+        location:
+          description: the user's location
+          type: string
+          x-go-name: Location
+        login:
+          description: the user's username
+          type: string
+          x-go-name: UserName
+        login_name:
+          default: empty
+          description: the user's authentication sign-in name.
+          type: string
+          x-go-name: LoginName
+        prohibit_login:
+          description: Is user login prohibited
+          type: boolean
+          x-go-name: ProhibitLogin
+        restricted:
+          description: Is user restricted
+          type: boolean
+          x-go-name: Restricted
+        starred_repos_count:
+          format: int64
+          type: integer
+          x-go-name: StarredRepos
+        visibility:
+          description: "User visibility level option: public, limited, private"
+          type: string
+          x-go-name: Visibility
+        website:
+          description: the user's website
+          type: string
+          x-go-name: Website
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    UserHeatmapData:
+      description: UserHeatmapData represents the data needed to create a heatmap
+      example:
+        contributions: 0
+        timestamp: 6
+      properties:
+        contributions:
+          format: int64
+          type: integer
+          x-go-name: Contributions
+        timestamp:
+          description: TimeStamp defines a timestamp
+          format: int64
+          type: integer
+          x-go-package: code.gitea.io/gitea/modules/timeutil
+      type: object
+      x-go-package: code.gitea.io/gitea/models/activities
+    UserSettings:
+      description: UserSettings represents user settings
+      example:
+        website: website
+        full_name: full_name
+        hide_activity: true
+        diff_view_style: diff_view_style
+        description: description
+        language: language
+        location: location
+        theme: theme
+        hide_email: true
+      properties:
+        description:
+          type: string
+          x-go-name: Description
+        diff_view_style:
+          type: string
+          x-go-name: DiffViewStyle
+        full_name:
+          type: string
+          x-go-name: FullName
+        hide_activity:
+          type: boolean
+          x-go-name: HideActivity
+        hide_email:
+          description: Privacy
+          type: boolean
+          x-go-name: HideEmail
+        language:
+          type: string
+          x-go-name: Language
+        location:
+          type: string
+          x-go-name: Location
+        theme:
+          type: string
+          x-go-name: Theme
+        website:
+          type: string
+          x-go-name: Website
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    UserSettingsOptions:
+      description: UserSettingsOptions represents options to change user settings
+      example:
+        website: website
+        full_name: full_name
+        hide_activity: true
+        diff_view_style: diff_view_style
+        description: description
+        language: language
+        location: location
+        theme: theme
+        hide_email: true
+      properties:
+        description:
+          type: string
+          x-go-name: Description
+        diff_view_style:
+          type: string
+          x-go-name: DiffViewStyle
+        full_name:
+          type: string
+          x-go-name: FullName
+        hide_activity:
+          type: boolean
+          x-go-name: HideActivity
+        hide_email:
+          description: Privacy
+          type: boolean
+          x-go-name: HideEmail
+        language:
+          type: string
+          x-go-name: Language
+        location:
+          type: string
+          x-go-name: Location
+        theme:
+          type: string
+          x-go-name: Theme
+        website:
+          type: string
+          x-go-name: Website
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    WatchInfo:
+      description: WatchInfo represents an API watch status of one repository
+      example:
+        ignored: true
+        reason: "{}"
+        subscribed: true
+        created_at: 2000-01-23T04:56:07.000+00:00
+        repository_url: repository_url
+        url: url
+      properties:
+        created_at:
+          format: date-time
+          type: string
+          x-go-name: CreatedAt
+        ignored:
+          type: boolean
+          x-go-name: Ignored
+        reason:
+          type: object
+          x-go-name: Reason
+        repository_url:
+          type: string
+          x-go-name: RepositoryURL
+        subscribed:
+          type: boolean
+          x-go-name: Subscribed
+        url:
+          type: string
+          x-go-name: URL
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    WikiCommit:
+      description: WikiCommit page commit/revision
+      example:
+        author:
+          date: date
+          name: name
+          email: email
+        message: message
+        commiter:
+          date: date
+          name: name
+          email: email
+        sha: sha
+      properties:
+        author:
+          $ref: '#/components/schemas/CommitUser'
+        commiter:
+          $ref: '#/components/schemas/CommitUser'
+        message:
+          type: string
+          x-go-name: Message
+        sha:
+          type: string
+          x-go-name: ID
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    WikiCommitList:
+      description: WikiCommitList commit/revision list
+      example:
+        count: 0
+        commits:
+        - author:
+            date: date
+            name: name
+            email: email
+          message: message
+          commiter:
+            date: date
+            name: name
+            email: email
+          sha: sha
+        - author:
+            date: date
+            name: name
+            email: email
+          message: message
+          commiter:
+            date: date
+            name: name
+            email: email
+          sha: sha
+      properties:
+        commits:
+          items:
+            $ref: '#/components/schemas/WikiCommit'
+          type: array
+          x-go-name: WikiCommits
+        count:
+          format: int64
+          type: integer
+          x-go-name: Count
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    WikiPage:
+      description: WikiPage a wiki page
+      example:
+        commit_count: 0
+        last_commit:
+          author:
+            date: date
+            name: name
+            email: email
+          message: message
+          commiter:
+            date: date
+            name: name
+            email: email
+          sha: sha
+        footer: footer
+        sub_url: sub_url
+        sidebar: sidebar
+        html_url: html_url
+        content_base64: content_base64
+        title: title
+      properties:
+        commit_count:
+          format: int64
+          type: integer
+          x-go-name: CommitCount
+        content_base64:
+          description: "Page content, base64 encoded"
+          type: string
+          x-go-name: ContentBase64
+        footer:
+          type: string
+          x-go-name: Footer
+        html_url:
+          type: string
+          x-go-name: HTMLURL
+        last_commit:
+          $ref: '#/components/schemas/WikiCommit'
+        sidebar:
+          type: string
+          x-go-name: Sidebar
+        sub_url:
+          type: string
+          x-go-name: SubURL
+        title:
+          type: string
+          x-go-name: Title
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    WikiPageMetaData:
+      description: WikiPageMetaData wiki page meta information
+      example:
+        last_commit:
+          author:
+            date: date
+            name: name
+            email: email
+          message: message
+          commiter:
+            date: date
+            name: name
+            email: email
+          sha: sha
+        sub_url: sub_url
+        html_url: html_url
+        title: title
+      properties:
+        html_url:
+          type: string
+          x-go-name: HTMLURL
+        last_commit:
+          $ref: '#/components/schemas/WikiCommit'
+        sub_url:
+          type: string
+          x-go-name: SubURL
+        title:
+          type: string
+          x-go-name: Title
+      type: object
+      x-go-package: code.gitea.io/gitea/modules/structs
+    teamSearch_200_response:
+      example:
+        data:
+        - can_create_org_repo: true
+          units_map:
+            repo.code: read
+            repo.ext_issues: none
+            repo.ext_wiki: none
+            repo.issues: write
+            repo.projects: none
+            repo.pulls: owner
+            repo.releases: none
+            repo.wiki: admin
+          organization:
+            website: website
+            full_name: full_name
+            repo_admin_change_team_access: true
+            avatar_url: avatar_url
+            visibility: visibility
+            name: name
+            description: description
+            location: location
+            id: 0
+            username: username
+          name: name
+          description: description
+          permission: none
+          id: 2
+          includes_all_repositories: true
+          units:
+          - repo.code
+          - repo.issues
+          - repo.ext_issues
+          - repo.wiki
+          - repo.pulls
+          - repo.releases
+          - repo.projects
+          - repo.ext_wiki
+        - can_create_org_repo: true
+          units_map:
+            repo.code: read
+            repo.ext_issues: none
+            repo.ext_wiki: none
+            repo.issues: write
+            repo.projects: none
+            repo.pulls: owner
+            repo.releases: none
+            repo.wiki: admin
+          organization:
+            website: website
+            full_name: full_name
+            repo_admin_change_team_access: true
+            avatar_url: avatar_url
+            visibility: visibility
+            name: name
+            description: description
+            location: location
+            id: 0
+            username: username
+          name: name
+          description: description
+          permission: none
+          id: 2
+          includes_all_repositories: true
+          units:
+          - repo.code
+          - repo.issues
+          - repo.ext_issues
+          - repo.wiki
+          - repo.pulls
+          - repo.releases
+          - repo.projects
+          - repo.ext_wiki
+        ok: true
+      properties:
+        data:
+          items:
+            $ref: '#/components/schemas/Team'
+          type: array
+        ok:
+          type: boolean
+      type: object
+    issueCreateIssueCommentAttachment_request:
+      properties:
+        attachment:
+          description: attachment to upload
+          format: binary
+          type: string
+      required:
+      - attachment
+      type: object
+    userSearch_200_response:
+      example:
+        data:
+        - website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        - website: website
+          visibility: visibility
+          created: 2000-01-23T04:56:07.000+00:00
+          last_login: 2000-01-23T04:56:07.000+00:00
+          active: true
+          description: description
+          language: language
+          starred_repos_count: 5
+          login: login
+          is_admin: true
+          full_name: full_name
+          login_name: empty
+          avatar_url: avatar_url
+          following_count: 6
+          restricted: true
+          followers_count: 0
+          location: location
+          id: 1
+          prohibit_login: true
+          email: email
+        ok: true
+      properties:
+        data:
+          items:
+            $ref: '#/components/schemas/User'
+          type: array
+        ok:
+          type: boolean
+      type: object
+  securitySchemes:
+    AccessToken:
+      in: query
+      name: access_token
+      type: apiKey
+    AuthorizationHeaderToken:
+      description: API tokens must be prepended with "token" followed by a space.
+      in: header
+      name: Authorization
+      type: apiKey
+    BasicAuth:
+      scheme: basic
+      type: http
+    SudoHeader:
+      description: Sudo API request as the user provided as the key. Admin privileges
+        are required.
+      in: header
+      name: Sudo
+      type: apiKey
+    SudoParam:
+      description: Sudo API request as the user provided as the key. Admin privileges
+        are required.
+      in: query
+      name: sudo
+      type: apiKey
+    TOTPHeader:
+      description: Must be used in combination with BasicAuth if two-factor authentication
+        is enabled.
+      in: header
+      name: X-GITEA-OTP
+      type: apiKey
+    Token:
+      in: query
+      name: token
+      type: apiKey
+x-original-swagger-version: "2.0"
diff --git a/tests/ApproxEq.hs b/tests/ApproxEq.hs
new file mode 100644
--- /dev/null
+++ b/tests/ApproxEq.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DefaultSignatures #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeOperators #-}
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+
+module ApproxEq where
+
+import Data.Text (Text)
+import Data.Time.Clock
+import Test.QuickCheck
+import GHC.Generics as G
+
+(==~)
+  :: (ApproxEq a, Show a)
+  => a -> a -> Property
+a ==~ b = counterexample (show a ++ " !=~ " ++ show b) (a =~ b)
+
+class GApproxEq f  where
+  gApproxEq :: f a -> f a -> Bool
+
+instance GApproxEq U1 where
+  gApproxEq U1 U1 = True
+
+instance (GApproxEq a, GApproxEq b) =>
+         GApproxEq (a :+: b) where
+  gApproxEq (L1 a) (L1 b) = gApproxEq a b
+  gApproxEq (R1 a) (R1 b) = gApproxEq a b
+  gApproxEq _ _ = False
+
+instance (GApproxEq a, GApproxEq b) =>
+         GApproxEq (a :*: b) where
+  gApproxEq (a1 :*: b1) (a2 :*: b2) = gApproxEq a1 a2 && gApproxEq b1 b2
+
+instance (ApproxEq a) =>
+         GApproxEq (K1 i a) where
+  gApproxEq (K1 a) (K1 b) = a =~ b
+
+instance (GApproxEq f) =>
+         GApproxEq (M1 i t f) where
+  gApproxEq (M1 a) (M1 b) = gApproxEq a b
+
+class ApproxEq a  where
+  (=~) :: a -> a -> Bool
+  default (=~) :: (Generic a, GApproxEq (Rep a)) => a -> a -> Bool
+  a =~ b = gApproxEq (G.from a) (G.from b)
+
+instance ApproxEq Text where
+  (=~) = (==)
+
+instance ApproxEq Char where
+  (=~) = (==)
+
+instance ApproxEq Bool where
+  (=~) = (==)
+
+instance ApproxEq Int where
+  (=~) = (==)
+
+instance ApproxEq Double where
+  (=~) = (==)
+
+instance ApproxEq a =>
+         ApproxEq (Maybe a)
+
+instance ApproxEq UTCTime where
+  (=~) = (==)
+
+instance ApproxEq a =>
+         ApproxEq [a] where
+  as =~ bs = and (zipWith (=~) as bs)
+
+instance (ApproxEq l, ApproxEq r) =>
+         ApproxEq (Either l r) where
+  Left a =~ Left b = a =~ b
+  Right a =~ Right b = a =~ b
+  _ =~ _ = False
+
+instance (ApproxEq l, ApproxEq r) =>
+         ApproxEq (l, r) where
+  (=~) (l1, r1) (l2, r2) = l1 =~ l2 && r1 =~ r2
diff --git a/tests/Instances.hs b/tests/Instances.hs
new file mode 100644
--- /dev/null
+++ b/tests/Instances.hs
@@ -0,0 +1,2314 @@
+{-# LANGUAGE CPP #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports -fno-warn-unused-matches #-}
+
+module Instances where
+
+import Gitea.Model
+import Gitea.Core
+
+import qualified Data.Aeson as A
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.HashMap.Strict as HM
+import qualified Data.Set as Set
+import qualified Data.Text as T
+import qualified Data.Time as TI
+import qualified Data.Vector as V
+import Data.String (fromString)
+
+import Control.Monad
+import Data.Char (isSpace)
+import Data.List (sort)
+import Test.QuickCheck
+
+import ApproxEq
+
+instance Arbitrary T.Text where
+  arbitrary = T.pack <$> arbitrary
+
+instance Arbitrary TI.Day where
+  arbitrary = TI.ModifiedJulianDay . (2000 +) <$> arbitrary
+  shrink = (TI.ModifiedJulianDay <$>) . shrink . TI.toModifiedJulianDay
+
+instance Arbitrary TI.UTCTime where
+  arbitrary =
+    TI.UTCTime <$> arbitrary <*> (TI.secondsToDiffTime <$> choose (0, 86401))
+
+instance Arbitrary BL.ByteString where
+    arbitrary = BL.pack <$> arbitrary
+    shrink xs = BL.pack <$> shrink (BL.unpack xs)
+
+instance Arbitrary ByteArray where
+    arbitrary = ByteArray <$> arbitrary
+    shrink (ByteArray xs) = ByteArray <$> shrink xs
+
+instance Arbitrary Binary where
+    arbitrary = Binary <$> arbitrary
+    shrink (Binary xs) = Binary <$> shrink xs
+
+instance Arbitrary DateTime where
+    arbitrary = DateTime <$> arbitrary
+    shrink (DateTime xs) = DateTime <$> shrink xs
+
+instance Arbitrary Date where
+    arbitrary = Date <$> arbitrary
+    shrink (Date xs) = Date <$> shrink xs
+
+#if MIN_VERSION_aeson(2,0,0)
+#else
+-- | A naive Arbitrary instance for A.Value:
+instance Arbitrary A.Value where
+  arbitrary = arbitraryValue
+#endif
+
+arbitraryValue :: Gen A.Value
+arbitraryValue =
+  frequency [(3, simpleTypes), (1, arrayTypes), (1, objectTypes)]
+    where
+      simpleTypes :: Gen A.Value
+      simpleTypes =
+        frequency
+          [ (1, return A.Null)
+          , (2, liftM A.Bool (arbitrary :: Gen Bool))
+          , (2, liftM (A.Number . fromIntegral) (arbitrary :: Gen Int))
+          , (2, liftM (A.String . T.pack) (arbitrary :: Gen String))
+          ]
+      mapF (k, v) = (fromString k, v)
+      simpleAndArrays = frequency [(1, sized sizedArray), (4, simpleTypes)]
+      arrayTypes = sized sizedArray
+      objectTypes = sized sizedObject
+      sizedArray n = liftM (A.Array . V.fromList) $ replicateM n simpleTypes
+      sizedObject n =
+        liftM (A.object . map mapF) $
+        replicateM n $ (,) <$> (arbitrary :: Gen String) <*> simpleAndArrays
+
+-- | Checks if a given list has no duplicates in _O(n log n)_.
+hasNoDups
+  :: (Ord a)
+  => [a] -> Bool
+hasNoDups = go Set.empty
+  where
+    go _ [] = True
+    go s (x:xs)
+      | s' <- Set.insert x s
+      , Set.size s' > Set.size s = go s' xs
+      | otherwise = False
+
+instance ApproxEq TI.Day where
+  (=~) = (==)
+
+arbitraryReduced :: Arbitrary a => Int -> Gen a
+arbitraryReduced n = resize (n `div` 2) arbitrary
+
+arbitraryReducedMaybe :: Arbitrary a => Int -> Gen (Maybe a)
+arbitraryReducedMaybe 0 = elements [Nothing]
+arbitraryReducedMaybe n = arbitraryReduced n
+
+arbitraryReducedMaybeValue :: Int -> Gen (Maybe A.Value)
+arbitraryReducedMaybeValue 0 = elements [Nothing]
+arbitraryReducedMaybeValue n = do
+  generated <- arbitraryReduced n
+  if generated == Just A.Null
+    then return Nothing
+    else return generated
+
+-- * Models
+
+instance Arbitrary APIError where
+  arbitrary = sized genAPIError
+
+genAPIError :: Int -> Gen APIError
+genAPIError n =
+  APIError
+    <$> arbitraryReducedMaybe n -- aPIErrorMessage :: Maybe Text
+    <*> arbitraryReducedMaybe n -- aPIErrorUrl :: Maybe Text
+  
+instance Arbitrary AccessToken where
+  arbitrary = sized genAccessToken
+
+genAccessToken :: Int -> Gen AccessToken
+genAccessToken n =
+  AccessToken
+    <$> arbitraryReducedMaybe n -- accessTokenId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- accessTokenName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- accessTokenScopes :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- accessTokenSha1 :: Maybe Text
+    <*> arbitraryReducedMaybe n -- accessTokenTokenLastEight :: Maybe Text
+  
+instance Arbitrary ActivityPub where
+  arbitrary = sized genActivityPub
+
+genActivityPub :: Int -> Gen ActivityPub
+genActivityPub n =
+  ActivityPub
+    <$> arbitraryReducedMaybe n -- activityPubContext :: Maybe Text
+  
+instance Arbitrary AddCollaboratorOption where
+  arbitrary = sized genAddCollaboratorOption
+
+genAddCollaboratorOption :: Int -> Gen AddCollaboratorOption
+genAddCollaboratorOption n =
+  AddCollaboratorOption
+    <$> arbitraryReducedMaybe n -- addCollaboratorOptionPermission :: Maybe Text
+  
+instance Arbitrary AddTimeOption where
+  arbitrary = sized genAddTimeOption
+
+genAddTimeOption :: Int -> Gen AddTimeOption
+genAddTimeOption n =
+  AddTimeOption
+    <$> arbitraryReducedMaybe n -- addTimeOptionCreated :: Maybe DateTime
+    <*> arbitrary -- addTimeOptionTime :: Integer
+    <*> arbitraryReducedMaybe n -- addTimeOptionUserName :: Maybe Text
+  
+instance Arbitrary AnnotatedTag where
+  arbitrary = sized genAnnotatedTag
+
+genAnnotatedTag :: Int -> Gen AnnotatedTag
+genAnnotatedTag n =
+  AnnotatedTag
+    <$> arbitraryReducedMaybe n -- annotatedTagMessage :: Maybe Text
+    <*> arbitraryReducedMaybe n -- annotatedTagObject :: Maybe AnnotatedTagObject
+    <*> arbitraryReducedMaybe n -- annotatedTagSha :: Maybe Text
+    <*> arbitraryReducedMaybe n -- annotatedTagTag :: Maybe Text
+    <*> arbitraryReducedMaybe n -- annotatedTagTagger :: Maybe CommitUser
+    <*> arbitraryReducedMaybe n -- annotatedTagUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- annotatedTagVerification :: Maybe PayloadCommitVerification
+  
+instance Arbitrary AnnotatedTagObject where
+  arbitrary = sized genAnnotatedTagObject
+
+genAnnotatedTagObject :: Int -> Gen AnnotatedTagObject
+genAnnotatedTagObject n =
+  AnnotatedTagObject
+    <$> arbitraryReducedMaybe n -- annotatedTagObjectSha :: Maybe Text
+    <*> arbitraryReducedMaybe n -- annotatedTagObjectType :: Maybe Text
+    <*> arbitraryReducedMaybe n -- annotatedTagObjectUrl :: Maybe Text
+  
+instance Arbitrary Attachment where
+  arbitrary = sized genAttachment
+
+genAttachment :: Int -> Gen Attachment
+genAttachment n =
+  Attachment
+    <$> arbitraryReducedMaybe n -- attachmentBrowserDownloadUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- attachmentCreatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- attachmentDownloadCount :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- attachmentId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- attachmentName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- attachmentSize :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- attachmentUuid :: Maybe Text
+  
+instance Arbitrary Branch where
+  arbitrary = sized genBranch
+
+genBranch :: Int -> Gen Branch
+genBranch n =
+  Branch
+    <$> arbitraryReducedMaybe n -- branchCommit :: Maybe PayloadCommit
+    <*> arbitraryReducedMaybe n -- branchEffectiveBranchProtectionName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- branchEnableStatusCheck :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- branchName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- branchProtected :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- branchRequiredApprovals :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- branchStatusCheckContexts :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- branchUserCanMerge :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- branchUserCanPush :: Maybe Bool
+  
+instance Arbitrary BranchProtection where
+  arbitrary = sized genBranchProtection
+
+genBranchProtection :: Int -> Gen BranchProtection
+genBranchProtection n =
+  BranchProtection
+    <$> arbitraryReducedMaybe n -- branchProtectionApprovalsWhitelistTeams :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- branchProtectionApprovalsWhitelistUsername :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- branchProtectionBlockOnOfficialReviewRequests :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- branchProtectionBlockOnOutdatedBranch :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- branchProtectionBlockOnRejectedReviews :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- branchProtectionBranchName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- branchProtectionCreatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- branchProtectionDismissStaleApprovals :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- branchProtectionEnableApprovalsWhitelist :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- branchProtectionEnableMergeWhitelist :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- branchProtectionEnablePush :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- branchProtectionEnablePushWhitelist :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- branchProtectionEnableStatusCheck :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- branchProtectionMergeWhitelistTeams :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- branchProtectionMergeWhitelistUsernames :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- branchProtectionProtectedFilePatterns :: Maybe Text
+    <*> arbitraryReducedMaybe n -- branchProtectionPushWhitelistDeployKeys :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- branchProtectionPushWhitelistTeams :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- branchProtectionPushWhitelistUsernames :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- branchProtectionRequireSignedCommits :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- branchProtectionRequiredApprovals :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- branchProtectionRuleName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- branchProtectionStatusCheckContexts :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- branchProtectionUnprotectedFilePatterns :: Maybe Text
+    <*> arbitraryReducedMaybe n -- branchProtectionUpdatedAt :: Maybe DateTime
+  
+instance Arbitrary ChangedFile where
+  arbitrary = sized genChangedFile
+
+genChangedFile :: Int -> Gen ChangedFile
+genChangedFile n =
+  ChangedFile
+    <$> arbitraryReducedMaybe n -- changedFileAdditions :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- changedFileChanges :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- changedFileContentsUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- changedFileDeletions :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- changedFileFilename :: Maybe Text
+    <*> arbitraryReducedMaybe n -- changedFileHtmlUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- changedFilePreviousFilename :: Maybe Text
+    <*> arbitraryReducedMaybe n -- changedFileRawUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- changedFileStatus :: Maybe Text
+  
+instance Arbitrary CombinedStatus where
+  arbitrary = sized genCombinedStatus
+
+genCombinedStatus :: Int -> Gen CombinedStatus
+genCombinedStatus n =
+  CombinedStatus
+    <$> arbitraryReducedMaybe n -- combinedStatusCommitUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- combinedStatusRepository :: Maybe Repository
+    <*> arbitraryReducedMaybe n -- combinedStatusSha :: Maybe Text
+    <*> arbitraryReducedMaybe n -- combinedStatusState :: Maybe Text
+    <*> arbitraryReducedMaybe n -- combinedStatusStatuses :: Maybe [CommitStatus]
+    <*> arbitraryReducedMaybe n -- combinedStatusTotalCount :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- combinedStatusUrl :: Maybe Text
+  
+instance Arbitrary Comment where
+  arbitrary = sized genComment
+
+genComment :: Int -> Gen Comment
+genComment n =
+  Comment
+    <$> arbitraryReducedMaybe n -- commentAssets :: Maybe [Attachment]
+    <*> arbitraryReducedMaybe n -- commentBody :: Maybe Text
+    <*> arbitraryReducedMaybe n -- commentCreatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- commentHtmlUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- commentId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- commentIssueUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- commentOriginalAuthor :: Maybe Text
+    <*> arbitraryReducedMaybe n -- commentOriginalAuthorId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- commentPullRequestUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- commentUpdatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- commentUser :: Maybe User
+  
+instance Arbitrary Commit where
+  arbitrary = sized genCommit
+
+genCommit :: Int -> Gen Commit
+genCommit n =
+  Commit
+    <$> arbitraryReducedMaybe n -- commitAuthor :: Maybe User
+    <*> arbitraryReducedMaybe n -- commitCommit :: Maybe RepoCommit
+    <*> arbitraryReducedMaybe n -- commitCommitter :: Maybe User
+    <*> arbitraryReducedMaybe n -- commitCreated :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- commitFiles :: Maybe [CommitAffectedFiles]
+    <*> arbitraryReducedMaybe n -- commitHtmlUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- commitParents :: Maybe [CommitMeta]
+    <*> arbitraryReducedMaybe n -- commitSha :: Maybe Text
+    <*> arbitraryReducedMaybe n -- commitStats :: Maybe CommitStats
+    <*> arbitraryReducedMaybe n -- commitUrl :: Maybe Text
+  
+instance Arbitrary CommitAffectedFiles where
+  arbitrary = sized genCommitAffectedFiles
+
+genCommitAffectedFiles :: Int -> Gen CommitAffectedFiles
+genCommitAffectedFiles n =
+  CommitAffectedFiles
+    <$> arbitraryReducedMaybe n -- commitAffectedFilesFilename :: Maybe Text
+  
+instance Arbitrary CommitDateOptions where
+  arbitrary = sized genCommitDateOptions
+
+genCommitDateOptions :: Int -> Gen CommitDateOptions
+genCommitDateOptions n =
+  CommitDateOptions
+    <$> arbitraryReducedMaybe n -- commitDateOptionsAuthor :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- commitDateOptionsCommitter :: Maybe DateTime
+  
+instance Arbitrary CommitMeta where
+  arbitrary = sized genCommitMeta
+
+genCommitMeta :: Int -> Gen CommitMeta
+genCommitMeta n =
+  CommitMeta
+    <$> arbitraryReducedMaybe n -- commitMetaCreated :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- commitMetaSha :: Maybe Text
+    <*> arbitraryReducedMaybe n -- commitMetaUrl :: Maybe Text
+  
+instance Arbitrary CommitStats where
+  arbitrary = sized genCommitStats
+
+genCommitStats :: Int -> Gen CommitStats
+genCommitStats n =
+  CommitStats
+    <$> arbitraryReducedMaybe n -- commitStatsAdditions :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- commitStatsDeletions :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- commitStatsTotal :: Maybe Integer
+  
+instance Arbitrary CommitStatus where
+  arbitrary = sized genCommitStatus
+
+genCommitStatus :: Int -> Gen CommitStatus
+genCommitStatus n =
+  CommitStatus
+    <$> arbitraryReducedMaybe n -- commitStatusContext :: Maybe Text
+    <*> arbitraryReducedMaybe n -- commitStatusCreatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- commitStatusCreator :: Maybe User
+    <*> arbitraryReducedMaybe n -- commitStatusDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- commitStatusId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- commitStatusStatus :: Maybe Text
+    <*> arbitraryReducedMaybe n -- commitStatusTargetUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- commitStatusUpdatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- commitStatusUrl :: Maybe Text
+  
+instance Arbitrary CommitUser where
+  arbitrary = sized genCommitUser
+
+genCommitUser :: Int -> Gen CommitUser
+genCommitUser n =
+  CommitUser
+    <$> arbitraryReducedMaybe n -- commitUserDate :: Maybe Text
+    <*> arbitraryReducedMaybe n -- commitUserEmail :: Maybe Text
+    <*> arbitraryReducedMaybe n -- commitUserName :: Maybe Text
+  
+instance Arbitrary ContentsResponse where
+  arbitrary = sized genContentsResponse
+
+genContentsResponse :: Int -> Gen ContentsResponse
+genContentsResponse n =
+  ContentsResponse
+    <$> arbitraryReducedMaybe n -- contentsResponseLinks :: Maybe FileLinksResponse
+    <*> arbitraryReducedMaybe n -- contentsResponseContent :: Maybe Text
+    <*> arbitraryReducedMaybe n -- contentsResponseDownloadUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- contentsResponseEncoding :: Maybe Text
+    <*> arbitraryReducedMaybe n -- contentsResponseGitUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- contentsResponseHtmlUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- contentsResponseLastCommitSha :: Maybe Text
+    <*> arbitraryReducedMaybe n -- contentsResponseName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- contentsResponsePath :: Maybe Text
+    <*> arbitraryReducedMaybe n -- contentsResponseSha :: Maybe Text
+    <*> arbitraryReducedMaybe n -- contentsResponseSize :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- contentsResponseSubmoduleGitUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- contentsResponseTarget :: Maybe Text
+    <*> arbitraryReducedMaybe n -- contentsResponseType :: Maybe Text
+    <*> arbitraryReducedMaybe n -- contentsResponseUrl :: Maybe Text
+  
+instance Arbitrary CreateAccessTokenOption where
+  arbitrary = sized genCreateAccessTokenOption
+
+genCreateAccessTokenOption :: Int -> Gen CreateAccessTokenOption
+genCreateAccessTokenOption n =
+  CreateAccessTokenOption
+    <$> arbitrary -- createAccessTokenOptionName :: Text
+    <*> arbitraryReducedMaybe n -- createAccessTokenOptionScopes :: Maybe [Text]
+  
+instance Arbitrary CreateBranchProtectionOption where
+  arbitrary = sized genCreateBranchProtectionOption
+
+genCreateBranchProtectionOption :: Int -> Gen CreateBranchProtectionOption
+genCreateBranchProtectionOption n =
+  CreateBranchProtectionOption
+    <$> arbitraryReducedMaybe n -- createBranchProtectionOptionApprovalsWhitelistTeams :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionApprovalsWhitelistUsername :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionBlockOnOfficialReviewRequests :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionBlockOnOutdatedBranch :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionBlockOnRejectedReviews :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionBranchName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionDismissStaleApprovals :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionEnableApprovalsWhitelist :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionEnableMergeWhitelist :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionEnablePush :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionEnablePushWhitelist :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionEnableStatusCheck :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionMergeWhitelistTeams :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionMergeWhitelistUsernames :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionProtectedFilePatterns :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionPushWhitelistDeployKeys :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionPushWhitelistTeams :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionPushWhitelistUsernames :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionRequireSignedCommits :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionRequiredApprovals :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionRuleName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionStatusCheckContexts :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- createBranchProtectionOptionUnprotectedFilePatterns :: Maybe Text
+  
+instance Arbitrary CreateBranchRepoOption where
+  arbitrary = sized genCreateBranchRepoOption
+
+genCreateBranchRepoOption :: Int -> Gen CreateBranchRepoOption
+genCreateBranchRepoOption n =
+  CreateBranchRepoOption
+    <$> arbitrary -- createBranchRepoOptionNewBranchName :: Text
+    <*> arbitraryReducedMaybe n -- createBranchRepoOptionOldBranchName :: Maybe Text
+  
+instance Arbitrary CreateEmailOption where
+  arbitrary = sized genCreateEmailOption
+
+genCreateEmailOption :: Int -> Gen CreateEmailOption
+genCreateEmailOption n =
+  CreateEmailOption
+    <$> arbitraryReducedMaybe n -- createEmailOptionEmails :: Maybe [Text]
+  
+instance Arbitrary CreateFileOptions where
+  arbitrary = sized genCreateFileOptions
+
+genCreateFileOptions :: Int -> Gen CreateFileOptions
+genCreateFileOptions n =
+  CreateFileOptions
+    <$> arbitraryReducedMaybe n -- createFileOptionsAuthor :: Maybe Identity
+    <*> arbitraryReducedMaybe n -- createFileOptionsBranch :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createFileOptionsCommitter :: Maybe Identity
+    <*> arbitrary -- createFileOptionsContent :: Text
+    <*> arbitraryReducedMaybe n -- createFileOptionsDates :: Maybe CommitDateOptions
+    <*> arbitraryReducedMaybe n -- createFileOptionsMessage :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createFileOptionsNewBranch :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createFileOptionsSignoff :: Maybe Bool
+  
+instance Arbitrary CreateForkOption where
+  arbitrary = sized genCreateForkOption
+
+genCreateForkOption :: Int -> Gen CreateForkOption
+genCreateForkOption n =
+  CreateForkOption
+    <$> arbitraryReducedMaybe n -- createForkOptionName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createForkOptionOrganization :: Maybe Text
+  
+instance Arbitrary CreateGPGKeyOption where
+  arbitrary = sized genCreateGPGKeyOption
+
+genCreateGPGKeyOption :: Int -> Gen CreateGPGKeyOption
+genCreateGPGKeyOption n =
+  CreateGPGKeyOption
+    <$> arbitrary -- createGPGKeyOptionArmoredPublicKey :: Text
+    <*> arbitraryReducedMaybe n -- createGPGKeyOptionArmoredSignature :: Maybe Text
+  
+instance Arbitrary CreateHookOption where
+  arbitrary = sized genCreateHookOption
+
+genCreateHookOption :: Int -> Gen CreateHookOption
+genCreateHookOption n =
+  CreateHookOption
+    <$> arbitraryReducedMaybe n -- createHookOptionActive :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createHookOptionAuthorizationHeader :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createHookOptionBranchFilter :: Maybe Text
+    <*> arbitrary -- createHookOptionConfig :: (Map.Map String Text)
+    <*> arbitraryReducedMaybe n -- createHookOptionEvents :: Maybe [Text]
+    <*> arbitrary -- createHookOptionType :: E'Type
+  
+instance Arbitrary CreateIssueCommentOption where
+  arbitrary = sized genCreateIssueCommentOption
+
+genCreateIssueCommentOption :: Int -> Gen CreateIssueCommentOption
+genCreateIssueCommentOption n =
+  CreateIssueCommentOption
+    <$> arbitrary -- createIssueCommentOptionBody :: Text
+  
+instance Arbitrary CreateIssueOption where
+  arbitrary = sized genCreateIssueOption
+
+genCreateIssueOption :: Int -> Gen CreateIssueOption
+genCreateIssueOption n =
+  CreateIssueOption
+    <$> arbitraryReducedMaybe n -- createIssueOptionAssignee :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createIssueOptionAssignees :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- createIssueOptionBody :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createIssueOptionClosed :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createIssueOptionDueDate :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- createIssueOptionLabels :: Maybe [Integer]
+    <*> arbitraryReducedMaybe n -- createIssueOptionMilestone :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- createIssueOptionRef :: Maybe Text
+    <*> arbitrary -- createIssueOptionTitle :: Text
+  
+instance Arbitrary CreateKeyOption where
+  arbitrary = sized genCreateKeyOption
+
+genCreateKeyOption :: Int -> Gen CreateKeyOption
+genCreateKeyOption n =
+  CreateKeyOption
+    <$> arbitrary -- createKeyOptionKey :: Text
+    <*> arbitraryReducedMaybe n -- createKeyOptionReadOnly :: Maybe Bool
+    <*> arbitrary -- createKeyOptionTitle :: Text
+  
+instance Arbitrary CreateLabelOption where
+  arbitrary = sized genCreateLabelOption
+
+genCreateLabelOption :: Int -> Gen CreateLabelOption
+genCreateLabelOption n =
+  CreateLabelOption
+    <$> arbitrary -- createLabelOptionColor :: Text
+    <*> arbitraryReducedMaybe n -- createLabelOptionDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createLabelOptionExclusive :: Maybe Bool
+    <*> arbitrary -- createLabelOptionName :: Text
+  
+instance Arbitrary CreateMilestoneOption where
+  arbitrary = sized genCreateMilestoneOption
+
+genCreateMilestoneOption :: Int -> Gen CreateMilestoneOption
+genCreateMilestoneOption n =
+  CreateMilestoneOption
+    <$> arbitraryReducedMaybe n -- createMilestoneOptionDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createMilestoneOptionDueOn :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- createMilestoneOptionState :: Maybe E'State
+    <*> arbitraryReducedMaybe n -- createMilestoneOptionTitle :: Maybe Text
+  
+instance Arbitrary CreateOAuth2ApplicationOptions where
+  arbitrary = sized genCreateOAuth2ApplicationOptions
+
+genCreateOAuth2ApplicationOptions :: Int -> Gen CreateOAuth2ApplicationOptions
+genCreateOAuth2ApplicationOptions n =
+  CreateOAuth2ApplicationOptions
+    <$> arbitraryReducedMaybe n -- createOAuth2ApplicationOptionsConfidentialClient :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createOAuth2ApplicationOptionsName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createOAuth2ApplicationOptionsRedirectUris :: Maybe [Text]
+  
+instance Arbitrary CreateOrgOption where
+  arbitrary = sized genCreateOrgOption
+
+genCreateOrgOption :: Int -> Gen CreateOrgOption
+genCreateOrgOption n =
+  CreateOrgOption
+    <$> arbitraryReducedMaybe n -- createOrgOptionDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createOrgOptionFullName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createOrgOptionLocation :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createOrgOptionRepoAdminChangeTeamAccess :: Maybe Bool
+    <*> arbitrary -- createOrgOptionUsername :: Text
+    <*> arbitraryReducedMaybe n -- createOrgOptionVisibility :: Maybe E'Visibility
+    <*> arbitraryReducedMaybe n -- createOrgOptionWebsite :: Maybe Text
+  
+instance Arbitrary CreatePullRequestOption where
+  arbitrary = sized genCreatePullRequestOption
+
+genCreatePullRequestOption :: Int -> Gen CreatePullRequestOption
+genCreatePullRequestOption n =
+  CreatePullRequestOption
+    <$> arbitraryReducedMaybe n -- createPullRequestOptionAssignee :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createPullRequestOptionAssignees :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- createPullRequestOptionBase :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createPullRequestOptionBody :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createPullRequestOptionDueDate :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- createPullRequestOptionHead :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createPullRequestOptionLabels :: Maybe [Integer]
+    <*> arbitraryReducedMaybe n -- createPullRequestOptionMilestone :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- createPullRequestOptionTitle :: Maybe Text
+  
+instance Arbitrary CreatePullReviewComment where
+  arbitrary = sized genCreatePullReviewComment
+
+genCreatePullReviewComment :: Int -> Gen CreatePullReviewComment
+genCreatePullReviewComment n =
+  CreatePullReviewComment
+    <$> arbitraryReducedMaybe n -- createPullReviewCommentBody :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createPullReviewCommentNewPosition :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- createPullReviewCommentOldPosition :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- createPullReviewCommentPath :: Maybe Text
+  
+instance Arbitrary CreatePullReviewOptions where
+  arbitrary = sized genCreatePullReviewOptions
+
+genCreatePullReviewOptions :: Int -> Gen CreatePullReviewOptions
+genCreatePullReviewOptions n =
+  CreatePullReviewOptions
+    <$> arbitraryReducedMaybe n -- createPullReviewOptionsBody :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createPullReviewOptionsComments :: Maybe [CreatePullReviewComment]
+    <*> arbitraryReducedMaybe n -- createPullReviewOptionsCommitId :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createPullReviewOptionsEvent :: Maybe Text
+  
+instance Arbitrary CreatePushMirrorOption where
+  arbitrary = sized genCreatePushMirrorOption
+
+genCreatePushMirrorOption :: Int -> Gen CreatePushMirrorOption
+genCreatePushMirrorOption n =
+  CreatePushMirrorOption
+    <$> arbitraryReducedMaybe n -- createPushMirrorOptionInterval :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createPushMirrorOptionRemoteAddress :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createPushMirrorOptionRemotePassword :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createPushMirrorOptionRemoteUsername :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createPushMirrorOptionSyncOnCommit :: Maybe Bool
+  
+instance Arbitrary CreateReleaseOption where
+  arbitrary = sized genCreateReleaseOption
+
+genCreateReleaseOption :: Int -> Gen CreateReleaseOption
+genCreateReleaseOption n =
+  CreateReleaseOption
+    <$> arbitraryReducedMaybe n -- createReleaseOptionBody :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createReleaseOptionDraft :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createReleaseOptionName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createReleaseOptionPrerelease :: Maybe Bool
+    <*> arbitrary -- createReleaseOptionTagName :: Text
+    <*> arbitraryReducedMaybe n -- createReleaseOptionTargetCommitish :: Maybe Text
+  
+instance Arbitrary CreateRepoOption where
+  arbitrary = sized genCreateRepoOption
+
+genCreateRepoOption :: Int -> Gen CreateRepoOption
+genCreateRepoOption n =
+  CreateRepoOption
+    <$> arbitraryReducedMaybe n -- createRepoOptionAutoInit :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createRepoOptionDefaultBranch :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createRepoOptionDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createRepoOptionGitignores :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createRepoOptionIssueLabels :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createRepoOptionLicense :: Maybe Text
+    <*> arbitrary -- createRepoOptionName :: Text
+    <*> arbitraryReducedMaybe n -- createRepoOptionPrivate :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createRepoOptionReadme :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createRepoOptionTemplate :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createRepoOptionTrustModel :: Maybe E'TrustModel
+  
+instance Arbitrary CreateStatusOption where
+  arbitrary = sized genCreateStatusOption
+
+genCreateStatusOption :: Int -> Gen CreateStatusOption
+genCreateStatusOption n =
+  CreateStatusOption
+    <$> arbitraryReducedMaybe n -- createStatusOptionContext :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createStatusOptionDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createStatusOptionState :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createStatusOptionTargetUrl :: Maybe Text
+  
+instance Arbitrary CreateTagOption where
+  arbitrary = sized genCreateTagOption
+
+genCreateTagOption :: Int -> Gen CreateTagOption
+genCreateTagOption n =
+  CreateTagOption
+    <$> arbitraryReducedMaybe n -- createTagOptionMessage :: Maybe Text
+    <*> arbitrary -- createTagOptionTagName :: Text
+    <*> arbitraryReducedMaybe n -- createTagOptionTarget :: Maybe Text
+  
+instance Arbitrary CreateTeamOption where
+  arbitrary = sized genCreateTeamOption
+
+genCreateTeamOption :: Int -> Gen CreateTeamOption
+genCreateTeamOption n =
+  CreateTeamOption
+    <$> arbitraryReducedMaybe n -- createTeamOptionCanCreateOrgRepo :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createTeamOptionDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createTeamOptionIncludesAllRepositories :: Maybe Bool
+    <*> arbitrary -- createTeamOptionName :: Text
+    <*> arbitraryReducedMaybe n -- createTeamOptionPermission :: Maybe E'Permission
+    <*> arbitraryReducedMaybe n -- createTeamOptionUnits :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- createTeamOptionUnitsMap :: Maybe (Map.Map String Text)
+  
+instance Arbitrary CreateUserOption where
+  arbitrary = sized genCreateUserOption
+
+genCreateUserOption :: Int -> Gen CreateUserOption
+genCreateUserOption n =
+  CreateUserOption
+    <$> arbitraryReducedMaybe n -- createUserOptionCreatedAt :: Maybe DateTime
+    <*> arbitrary -- createUserOptionEmail :: Text
+    <*> arbitraryReducedMaybe n -- createUserOptionFullName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createUserOptionLoginName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createUserOptionMustChangePassword :: Maybe Bool
+    <*> arbitrary -- createUserOptionPassword :: Text
+    <*> arbitraryReducedMaybe n -- createUserOptionRestricted :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createUserOptionSendNotify :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- createUserOptionSourceId :: Maybe Integer
+    <*> arbitrary -- createUserOptionUsername :: Text
+    <*> arbitraryReducedMaybe n -- createUserOptionVisibility :: Maybe Text
+  
+instance Arbitrary CreateWikiPageOptions where
+  arbitrary = sized genCreateWikiPageOptions
+
+genCreateWikiPageOptions :: Int -> Gen CreateWikiPageOptions
+genCreateWikiPageOptions n =
+  CreateWikiPageOptions
+    <$> arbitraryReducedMaybe n -- createWikiPageOptionsContentBase64 :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createWikiPageOptionsMessage :: Maybe Text
+    <*> arbitraryReducedMaybe n -- createWikiPageOptionsTitle :: Maybe Text
+  
+instance Arbitrary Cron where
+  arbitrary = sized genCron
+
+genCron :: Int -> Gen Cron
+genCron n =
+  Cron
+    <$> arbitraryReducedMaybe n -- cronExecTimes :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- cronName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- cronNext :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- cronPrev :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- cronSchedule :: Maybe Text
+  
+instance Arbitrary DeleteEmailOption where
+  arbitrary = sized genDeleteEmailOption
+
+genDeleteEmailOption :: Int -> Gen DeleteEmailOption
+genDeleteEmailOption n =
+  DeleteEmailOption
+    <$> arbitraryReducedMaybe n -- deleteEmailOptionEmails :: Maybe [Text]
+  
+instance Arbitrary DeleteFileOptions where
+  arbitrary = sized genDeleteFileOptions
+
+genDeleteFileOptions :: Int -> Gen DeleteFileOptions
+genDeleteFileOptions n =
+  DeleteFileOptions
+    <$> arbitraryReducedMaybe n -- deleteFileOptionsAuthor :: Maybe Identity
+    <*> arbitraryReducedMaybe n -- deleteFileOptionsBranch :: Maybe Text
+    <*> arbitraryReducedMaybe n -- deleteFileOptionsCommitter :: Maybe Identity
+    <*> arbitraryReducedMaybe n -- deleteFileOptionsDates :: Maybe CommitDateOptions
+    <*> arbitraryReducedMaybe n -- deleteFileOptionsMessage :: Maybe Text
+    <*> arbitraryReducedMaybe n -- deleteFileOptionsNewBranch :: Maybe Text
+    <*> arbitrary -- deleteFileOptionsSha :: Text
+    <*> arbitraryReducedMaybe n -- deleteFileOptionsSignoff :: Maybe Bool
+  
+instance Arbitrary DeployKey where
+  arbitrary = sized genDeployKey
+
+genDeployKey :: Int -> Gen DeployKey
+genDeployKey n =
+  DeployKey
+    <$> arbitraryReducedMaybe n -- deployKeyCreatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- deployKeyFingerprint :: Maybe Text
+    <*> arbitraryReducedMaybe n -- deployKeyId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- deployKeyKey :: Maybe Text
+    <*> arbitraryReducedMaybe n -- deployKeyKeyId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- deployKeyReadOnly :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- deployKeyRepository :: Maybe Repository
+    <*> arbitraryReducedMaybe n -- deployKeyTitle :: Maybe Text
+    <*> arbitraryReducedMaybe n -- deployKeyUrl :: Maybe Text
+  
+instance Arbitrary DismissPullReviewOptions where
+  arbitrary = sized genDismissPullReviewOptions
+
+genDismissPullReviewOptions :: Int -> Gen DismissPullReviewOptions
+genDismissPullReviewOptions n =
+  DismissPullReviewOptions
+    <$> arbitraryReducedMaybe n -- dismissPullReviewOptionsMessage :: Maybe Text
+    <*> arbitraryReducedMaybe n -- dismissPullReviewOptionsPriors :: Maybe Bool
+  
+instance Arbitrary EditAttachmentOptions where
+  arbitrary = sized genEditAttachmentOptions
+
+genEditAttachmentOptions :: Int -> Gen EditAttachmentOptions
+genEditAttachmentOptions n =
+  EditAttachmentOptions
+    <$> arbitraryReducedMaybe n -- editAttachmentOptionsName :: Maybe Text
+  
+instance Arbitrary EditBranchProtectionOption where
+  arbitrary = sized genEditBranchProtectionOption
+
+genEditBranchProtectionOption :: Int -> Gen EditBranchProtectionOption
+genEditBranchProtectionOption n =
+  EditBranchProtectionOption
+    <$> arbitraryReducedMaybe n -- editBranchProtectionOptionApprovalsWhitelistTeams :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionApprovalsWhitelistUsername :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionBlockOnOfficialReviewRequests :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionBlockOnOutdatedBranch :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionBlockOnRejectedReviews :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionDismissStaleApprovals :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionEnableApprovalsWhitelist :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionEnableMergeWhitelist :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionEnablePush :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionEnablePushWhitelist :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionEnableStatusCheck :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionMergeWhitelistTeams :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionMergeWhitelistUsernames :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionProtectedFilePatterns :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionPushWhitelistDeployKeys :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionPushWhitelistTeams :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionPushWhitelistUsernames :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionRequireSignedCommits :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionRequiredApprovals :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionStatusCheckContexts :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- editBranchProtectionOptionUnprotectedFilePatterns :: Maybe Text
+  
+instance Arbitrary EditDeadlineOption where
+  arbitrary = sized genEditDeadlineOption
+
+genEditDeadlineOption :: Int -> Gen EditDeadlineOption
+genEditDeadlineOption n =
+  EditDeadlineOption
+    <$> arbitraryReduced n -- editDeadlineOptionDueDate :: DateTime
+  
+instance Arbitrary EditGitHookOption where
+  arbitrary = sized genEditGitHookOption
+
+genEditGitHookOption :: Int -> Gen EditGitHookOption
+genEditGitHookOption n =
+  EditGitHookOption
+    <$> arbitraryReducedMaybe n -- editGitHookOptionContent :: Maybe Text
+  
+instance Arbitrary EditHookOption where
+  arbitrary = sized genEditHookOption
+
+genEditHookOption :: Int -> Gen EditHookOption
+genEditHookOption n =
+  EditHookOption
+    <$> arbitraryReducedMaybe n -- editHookOptionActive :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editHookOptionAuthorizationHeader :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editHookOptionBranchFilter :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editHookOptionConfig :: Maybe (Map.Map String Text)
+    <*> arbitraryReducedMaybe n -- editHookOptionEvents :: Maybe [Text]
+  
+instance Arbitrary EditIssueCommentOption where
+  arbitrary = sized genEditIssueCommentOption
+
+genEditIssueCommentOption :: Int -> Gen EditIssueCommentOption
+genEditIssueCommentOption n =
+  EditIssueCommentOption
+    <$> arbitrary -- editIssueCommentOptionBody :: Text
+  
+instance Arbitrary EditIssueOption where
+  arbitrary = sized genEditIssueOption
+
+genEditIssueOption :: Int -> Gen EditIssueOption
+genEditIssueOption n =
+  EditIssueOption
+    <$> arbitraryReducedMaybe n -- editIssueOptionAssignee :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editIssueOptionAssignees :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- editIssueOptionBody :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editIssueOptionDueDate :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- editIssueOptionMilestone :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- editIssueOptionRef :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editIssueOptionState :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editIssueOptionTitle :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editIssueOptionUnsetDueDate :: Maybe Bool
+  
+instance Arbitrary EditLabelOption where
+  arbitrary = sized genEditLabelOption
+
+genEditLabelOption :: Int -> Gen EditLabelOption
+genEditLabelOption n =
+  EditLabelOption
+    <$> arbitraryReducedMaybe n -- editLabelOptionColor :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editLabelOptionDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editLabelOptionExclusive :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editLabelOptionName :: Maybe Text
+  
+instance Arbitrary EditMilestoneOption where
+  arbitrary = sized genEditMilestoneOption
+
+genEditMilestoneOption :: Int -> Gen EditMilestoneOption
+genEditMilestoneOption n =
+  EditMilestoneOption
+    <$> arbitraryReducedMaybe n -- editMilestoneOptionDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editMilestoneOptionDueOn :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- editMilestoneOptionState :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editMilestoneOptionTitle :: Maybe Text
+  
+instance Arbitrary EditOrgOption where
+  arbitrary = sized genEditOrgOption
+
+genEditOrgOption :: Int -> Gen EditOrgOption
+genEditOrgOption n =
+  EditOrgOption
+    <$> arbitraryReducedMaybe n -- editOrgOptionDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editOrgOptionFullName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editOrgOptionLocation :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editOrgOptionRepoAdminChangeTeamAccess :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editOrgOptionVisibility :: Maybe E'Visibility
+    <*> arbitraryReducedMaybe n -- editOrgOptionWebsite :: Maybe Text
+  
+instance Arbitrary EditPullRequestOption where
+  arbitrary = sized genEditPullRequestOption
+
+genEditPullRequestOption :: Int -> Gen EditPullRequestOption
+genEditPullRequestOption n =
+  EditPullRequestOption
+    <$> arbitraryReducedMaybe n -- editPullRequestOptionAllowMaintainerEdit :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editPullRequestOptionAssignee :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editPullRequestOptionAssignees :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- editPullRequestOptionBase :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editPullRequestOptionBody :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editPullRequestOptionDueDate :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- editPullRequestOptionLabels :: Maybe [Integer]
+    <*> arbitraryReducedMaybe n -- editPullRequestOptionMilestone :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- editPullRequestOptionState :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editPullRequestOptionTitle :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editPullRequestOptionUnsetDueDate :: Maybe Bool
+  
+instance Arbitrary EditReactionOption where
+  arbitrary = sized genEditReactionOption
+
+genEditReactionOption :: Int -> Gen EditReactionOption
+genEditReactionOption n =
+  EditReactionOption
+    <$> arbitraryReducedMaybe n -- editReactionOptionContent :: Maybe Text
+  
+instance Arbitrary EditReleaseOption where
+  arbitrary = sized genEditReleaseOption
+
+genEditReleaseOption :: Int -> Gen EditReleaseOption
+genEditReleaseOption n =
+  EditReleaseOption
+    <$> arbitraryReducedMaybe n -- editReleaseOptionBody :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editReleaseOptionDraft :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editReleaseOptionName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editReleaseOptionPrerelease :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editReleaseOptionTagName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editReleaseOptionTargetCommitish :: Maybe Text
+  
+instance Arbitrary EditRepoOption where
+  arbitrary = sized genEditRepoOption
+
+genEditRepoOption :: Int -> Gen EditRepoOption
+genEditRepoOption n =
+  EditRepoOption
+    <$> arbitraryReducedMaybe n -- editRepoOptionAllowManualMerge :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editRepoOptionAllowMergeCommits :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editRepoOptionAllowRebase :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editRepoOptionAllowRebaseExplicit :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editRepoOptionAllowRebaseUpdate :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editRepoOptionAllowSquashMerge :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editRepoOptionArchived :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editRepoOptionAutodetectManualMerge :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editRepoOptionDefaultAllowMaintainerEdit :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editRepoOptionDefaultBranch :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editRepoOptionDefaultDeleteBranchAfterMerge :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editRepoOptionDefaultMergeStyle :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editRepoOptionDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editRepoOptionEnablePrune :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editRepoOptionExternalTracker :: Maybe ExternalTracker
+    <*> arbitraryReducedMaybe n -- editRepoOptionExternalWiki :: Maybe ExternalWiki
+    <*> arbitraryReducedMaybe n -- editRepoOptionHasIssues :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editRepoOptionHasProjects :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editRepoOptionHasPullRequests :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editRepoOptionHasWiki :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editRepoOptionIgnoreWhitespaceConflicts :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editRepoOptionInternalTracker :: Maybe InternalTracker
+    <*> arbitraryReducedMaybe n -- editRepoOptionMirrorInterval :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editRepoOptionName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editRepoOptionPrivate :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editRepoOptionTemplate :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editRepoOptionWebsite :: Maybe Text
+  
+instance Arbitrary EditTeamOption where
+  arbitrary = sized genEditTeamOption
+
+genEditTeamOption :: Int -> Gen EditTeamOption
+genEditTeamOption n =
+  EditTeamOption
+    <$> arbitraryReducedMaybe n -- editTeamOptionCanCreateOrgRepo :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editTeamOptionDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editTeamOptionIncludesAllRepositories :: Maybe Bool
+    <*> arbitrary -- editTeamOptionName :: Text
+    <*> arbitraryReducedMaybe n -- editTeamOptionPermission :: Maybe E'Permission
+    <*> arbitraryReducedMaybe n -- editTeamOptionUnits :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- editTeamOptionUnitsMap :: Maybe (Map.Map String Text)
+  
+instance Arbitrary EditUserOption where
+  arbitrary = sized genEditUserOption
+
+genEditUserOption :: Int -> Gen EditUserOption
+genEditUserOption n =
+  EditUserOption
+    <$> arbitraryReducedMaybe n -- editUserOptionActive :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editUserOptionAdmin :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editUserOptionAllowCreateOrganization :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editUserOptionAllowGitHook :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editUserOptionAllowImportLocal :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editUserOptionDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editUserOptionEmail :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editUserOptionFullName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editUserOptionLocation :: Maybe Text
+    <*> arbitrary -- editUserOptionLoginName :: Text
+    <*> arbitraryReducedMaybe n -- editUserOptionMaxRepoCreation :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- editUserOptionMustChangePassword :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editUserOptionPassword :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editUserOptionProhibitLogin :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- editUserOptionRestricted :: Maybe Bool
+    <*> arbitrary -- editUserOptionSourceId :: Integer
+    <*> arbitraryReducedMaybe n -- editUserOptionVisibility :: Maybe Text
+    <*> arbitraryReducedMaybe n -- editUserOptionWebsite :: Maybe Text
+  
+instance Arbitrary Email where
+  arbitrary = sized genEmail
+
+genEmail :: Int -> Gen Email
+genEmail n =
+  Email
+    <$> arbitraryReducedMaybe n -- emailEmail :: Maybe Text
+    <*> arbitraryReducedMaybe n -- emailPrimary :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- emailVerified :: Maybe Bool
+  
+instance Arbitrary ExternalTracker where
+  arbitrary = sized genExternalTracker
+
+genExternalTracker :: Int -> Gen ExternalTracker
+genExternalTracker n =
+  ExternalTracker
+    <$> arbitraryReducedMaybe n -- externalTrackerExternalTrackerFormat :: Maybe Text
+    <*> arbitraryReducedMaybe n -- externalTrackerExternalTrackerRegexpPattern :: Maybe Text
+    <*> arbitraryReducedMaybe n -- externalTrackerExternalTrackerStyle :: Maybe Text
+    <*> arbitraryReducedMaybe n -- externalTrackerExternalTrackerUrl :: Maybe Text
+  
+instance Arbitrary ExternalWiki where
+  arbitrary = sized genExternalWiki
+
+genExternalWiki :: Int -> Gen ExternalWiki
+genExternalWiki n =
+  ExternalWiki
+    <$> arbitraryReducedMaybe n -- externalWikiExternalWikiUrl :: Maybe Text
+  
+instance Arbitrary FileCommitResponse where
+  arbitrary = sized genFileCommitResponse
+
+genFileCommitResponse :: Int -> Gen FileCommitResponse
+genFileCommitResponse n =
+  FileCommitResponse
+    <$> arbitraryReducedMaybe n -- fileCommitResponseAuthor :: Maybe CommitUser
+    <*> arbitraryReducedMaybe n -- fileCommitResponseCommitter :: Maybe CommitUser
+    <*> arbitraryReducedMaybe n -- fileCommitResponseCreated :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- fileCommitResponseHtmlUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- fileCommitResponseMessage :: Maybe Text
+    <*> arbitraryReducedMaybe n -- fileCommitResponseParents :: Maybe [CommitMeta]
+    <*> arbitraryReducedMaybe n -- fileCommitResponseSha :: Maybe Text
+    <*> arbitraryReducedMaybe n -- fileCommitResponseTree :: Maybe CommitMeta
+    <*> arbitraryReducedMaybe n -- fileCommitResponseUrl :: Maybe Text
+  
+instance Arbitrary FileDeleteResponse where
+  arbitrary = sized genFileDeleteResponse
+
+genFileDeleteResponse :: Int -> Gen FileDeleteResponse
+genFileDeleteResponse n =
+  FileDeleteResponse
+    <$> arbitraryReducedMaybe n -- fileDeleteResponseCommit :: Maybe FileCommitResponse
+    <*> arbitraryReducedMaybeValue n -- fileDeleteResponseContent :: Maybe A.Value
+    <*> arbitraryReducedMaybe n -- fileDeleteResponseVerification :: Maybe PayloadCommitVerification
+  
+instance Arbitrary FileLinksResponse where
+  arbitrary = sized genFileLinksResponse
+
+genFileLinksResponse :: Int -> Gen FileLinksResponse
+genFileLinksResponse n =
+  FileLinksResponse
+    <$> arbitraryReducedMaybe n -- fileLinksResponseGit :: Maybe Text
+    <*> arbitraryReducedMaybe n -- fileLinksResponseHtml :: Maybe Text
+    <*> arbitraryReducedMaybe n -- fileLinksResponseSelf :: Maybe Text
+  
+instance Arbitrary FileResponse where
+  arbitrary = sized genFileResponse
+
+genFileResponse :: Int -> Gen FileResponse
+genFileResponse n =
+  FileResponse
+    <$> arbitraryReducedMaybe n -- fileResponseCommit :: Maybe FileCommitResponse
+    <*> arbitraryReducedMaybe n -- fileResponseContent :: Maybe ContentsResponse
+    <*> arbitraryReducedMaybe n -- fileResponseVerification :: Maybe PayloadCommitVerification
+  
+instance Arbitrary GPGKey where
+  arbitrary = sized genGPGKey
+
+genGPGKey :: Int -> Gen GPGKey
+genGPGKey n =
+  GPGKey
+    <$> arbitraryReducedMaybe n -- gPGKeyCanCertify :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- gPGKeyCanEncryptComms :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- gPGKeyCanEncryptStorage :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- gPGKeyCanSign :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- gPGKeyCreatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- gPGKeyEmails :: Maybe [GPGKeyEmail]
+    <*> arbitraryReducedMaybe n -- gPGKeyExpiresAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- gPGKeyId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- gPGKeyKeyId :: Maybe Text
+    <*> arbitraryReducedMaybe n -- gPGKeyPrimaryKeyId :: Maybe Text
+    <*> arbitraryReducedMaybe n -- gPGKeyPublicKey :: Maybe Text
+    <*> arbitraryReducedMaybe n -- gPGKeySubkeys :: Maybe [GPGKey]
+    <*> arbitraryReducedMaybe n -- gPGKeyVerified :: Maybe Bool
+  
+instance Arbitrary GPGKeyEmail where
+  arbitrary = sized genGPGKeyEmail
+
+genGPGKeyEmail :: Int -> Gen GPGKeyEmail
+genGPGKeyEmail n =
+  GPGKeyEmail
+    <$> arbitraryReducedMaybe n -- gPGKeyEmailEmail :: Maybe Text
+    <*> arbitraryReducedMaybe n -- gPGKeyEmailVerified :: Maybe Bool
+  
+instance Arbitrary GeneralAPISettings where
+  arbitrary = sized genGeneralAPISettings
+
+genGeneralAPISettings :: Int -> Gen GeneralAPISettings
+genGeneralAPISettings n =
+  GeneralAPISettings
+    <$> arbitraryReducedMaybe n -- generalAPISettingsDefaultGitTreesPerPage :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- generalAPISettingsDefaultMaxBlobSize :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- generalAPISettingsDefaultPagingNum :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- generalAPISettingsMaxResponseItems :: Maybe Integer
+  
+instance Arbitrary GeneralAttachmentSettings where
+  arbitrary = sized genGeneralAttachmentSettings
+
+genGeneralAttachmentSettings :: Int -> Gen GeneralAttachmentSettings
+genGeneralAttachmentSettings n =
+  GeneralAttachmentSettings
+    <$> arbitraryReducedMaybe n -- generalAttachmentSettingsAllowedTypes :: Maybe Text
+    <*> arbitraryReducedMaybe n -- generalAttachmentSettingsEnabled :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- generalAttachmentSettingsMaxFiles :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- generalAttachmentSettingsMaxSize :: Maybe Integer
+  
+instance Arbitrary GeneralRepoSettings where
+  arbitrary = sized genGeneralRepoSettings
+
+genGeneralRepoSettings :: Int -> Gen GeneralRepoSettings
+genGeneralRepoSettings n =
+  GeneralRepoSettings
+    <$> arbitraryReducedMaybe n -- generalRepoSettingsHttpGitDisabled :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- generalRepoSettingsLfsDisabled :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- generalRepoSettingsMigrationsDisabled :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- generalRepoSettingsMirrorsDisabled :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- generalRepoSettingsStarsDisabled :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- generalRepoSettingsTimeTrackingDisabled :: Maybe Bool
+  
+instance Arbitrary GeneralUISettings where
+  arbitrary = sized genGeneralUISettings
+
+genGeneralUISettings :: Int -> Gen GeneralUISettings
+genGeneralUISettings n =
+  GeneralUISettings
+    <$> arbitraryReducedMaybe n -- generalUISettingsAllowedReactions :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- generalUISettingsCustomEmojis :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- generalUISettingsDefaultTheme :: Maybe Text
+  
+instance Arbitrary GenerateRepoOption where
+  arbitrary = sized genGenerateRepoOption
+
+genGenerateRepoOption :: Int -> Gen GenerateRepoOption
+genGenerateRepoOption n =
+  GenerateRepoOption
+    <$> arbitraryReducedMaybe n -- generateRepoOptionAvatar :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- generateRepoOptionDefaultBranch :: Maybe Text
+    <*> arbitraryReducedMaybe n -- generateRepoOptionDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- generateRepoOptionGitContent :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- generateRepoOptionGitHooks :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- generateRepoOptionLabels :: Maybe Bool
+    <*> arbitrary -- generateRepoOptionName :: Text
+    <*> arbitrary -- generateRepoOptionOwner :: Text
+    <*> arbitraryReducedMaybe n -- generateRepoOptionPrivate :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- generateRepoOptionTopics :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- generateRepoOptionWebhooks :: Maybe Bool
+  
+instance Arbitrary GitBlobResponse where
+  arbitrary = sized genGitBlobResponse
+
+genGitBlobResponse :: Int -> Gen GitBlobResponse
+genGitBlobResponse n =
+  GitBlobResponse
+    <$> arbitraryReducedMaybe n -- gitBlobResponseContent :: Maybe Text
+    <*> arbitraryReducedMaybe n -- gitBlobResponseEncoding :: Maybe Text
+    <*> arbitraryReducedMaybe n -- gitBlobResponseSha :: Maybe Text
+    <*> arbitraryReducedMaybe n -- gitBlobResponseSize :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- gitBlobResponseUrl :: Maybe Text
+  
+instance Arbitrary GitEntry where
+  arbitrary = sized genGitEntry
+
+genGitEntry :: Int -> Gen GitEntry
+genGitEntry n =
+  GitEntry
+    <$> arbitraryReducedMaybe n -- gitEntryMode :: Maybe Text
+    <*> arbitraryReducedMaybe n -- gitEntryPath :: Maybe Text
+    <*> arbitraryReducedMaybe n -- gitEntrySha :: Maybe Text
+    <*> arbitraryReducedMaybe n -- gitEntrySize :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- gitEntryType :: Maybe Text
+    <*> arbitraryReducedMaybe n -- gitEntryUrl :: Maybe Text
+  
+instance Arbitrary GitHook where
+  arbitrary = sized genGitHook
+
+genGitHook :: Int -> Gen GitHook
+genGitHook n =
+  GitHook
+    <$> arbitraryReducedMaybe n -- gitHookContent :: Maybe Text
+    <*> arbitraryReducedMaybe n -- gitHookIsActive :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- gitHookName :: Maybe Text
+  
+instance Arbitrary GitObject where
+  arbitrary = sized genGitObject
+
+genGitObject :: Int -> Gen GitObject
+genGitObject n =
+  GitObject
+    <$> arbitraryReducedMaybe n -- gitObjectSha :: Maybe Text
+    <*> arbitraryReducedMaybe n -- gitObjectType :: Maybe Text
+    <*> arbitraryReducedMaybe n -- gitObjectUrl :: Maybe Text
+  
+instance Arbitrary GitTreeResponse where
+  arbitrary = sized genGitTreeResponse
+
+genGitTreeResponse :: Int -> Gen GitTreeResponse
+genGitTreeResponse n =
+  GitTreeResponse
+    <$> arbitraryReducedMaybe n -- gitTreeResponsePage :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- gitTreeResponseSha :: Maybe Text
+    <*> arbitraryReducedMaybe n -- gitTreeResponseTotalCount :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- gitTreeResponseTree :: Maybe [GitEntry]
+    <*> arbitraryReducedMaybe n -- gitTreeResponseTruncated :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- gitTreeResponseUrl :: Maybe Text
+  
+instance Arbitrary Hook where
+  arbitrary = sized genHook
+
+genHook :: Int -> Gen Hook
+genHook n =
+  Hook
+    <$> arbitraryReducedMaybe n -- hookActive :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- hookAuthorizationHeader :: Maybe Text
+    <*> arbitraryReducedMaybe n -- hookConfig :: Maybe (Map.Map String Text)
+    <*> arbitraryReducedMaybe n -- hookCreatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- hookEvents :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- hookId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- hookType :: Maybe Text
+    <*> arbitraryReducedMaybe n -- hookUpdatedAt :: Maybe DateTime
+  
+instance Arbitrary Identity where
+  arbitrary = sized genIdentity
+
+genIdentity :: Int -> Gen Identity
+genIdentity n =
+  Identity
+    <$> arbitraryReducedMaybe n -- identityEmail :: Maybe Text
+    <*> arbitraryReducedMaybe n -- identityName :: Maybe Text
+  
+instance Arbitrary InternalTracker where
+  arbitrary = sized genInternalTracker
+
+genInternalTracker :: Int -> Gen InternalTracker
+genInternalTracker n =
+  InternalTracker
+    <$> arbitraryReducedMaybe n -- internalTrackerAllowOnlyContributorsToTrackTime :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- internalTrackerEnableIssueDependencies :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- internalTrackerEnableTimeTracker :: Maybe Bool
+  
+instance Arbitrary Issue where
+  arbitrary = sized genIssue
+
+genIssue :: Int -> Gen Issue
+genIssue n =
+  Issue
+    <$> arbitraryReducedMaybe n -- issueAssets :: Maybe [Attachment]
+    <*> arbitraryReducedMaybe n -- issueAssignee :: Maybe User
+    <*> arbitraryReducedMaybe n -- issueAssignees :: Maybe [User]
+    <*> arbitraryReducedMaybe n -- issueBody :: Maybe Text
+    <*> arbitraryReducedMaybe n -- issueClosedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- issueComments :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- issueCreatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- issueDueDate :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- issueHtmlUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- issueId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- issueIsLocked :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- issueLabels :: Maybe [Label]
+    <*> arbitraryReducedMaybe n -- issueMilestone :: Maybe Milestone
+    <*> arbitraryReducedMaybe n -- issueNumber :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- issueOriginalAuthor :: Maybe Text
+    <*> arbitraryReducedMaybe n -- issueOriginalAuthorId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- issuePullRequest :: Maybe PullRequestMeta
+    <*> arbitraryReducedMaybe n -- issueRef :: Maybe Text
+    <*> arbitraryReducedMaybe n -- issueRepository :: Maybe RepositoryMeta
+    <*> arbitraryReducedMaybe n -- issueState :: Maybe Text
+    <*> arbitraryReducedMaybe n -- issueTitle :: Maybe Text
+    <*> arbitraryReducedMaybe n -- issueUpdatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- issueUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- issueUser :: Maybe User
+  
+instance Arbitrary IssueDeadline where
+  arbitrary = sized genIssueDeadline
+
+genIssueDeadline :: Int -> Gen IssueDeadline
+genIssueDeadline n =
+  IssueDeadline
+    <$> arbitraryReducedMaybe n -- issueDeadlineDueDate :: Maybe DateTime
+  
+instance Arbitrary IssueFormField where
+  arbitrary = sized genIssueFormField
+
+genIssueFormField :: Int -> Gen IssueFormField
+genIssueFormField n =
+  IssueFormField
+    <$> arbitraryReducedMaybe n -- issueFormFieldAttributes :: Maybe (Map.Map String A.Value)
+    <*> arbitraryReducedMaybe n -- issueFormFieldId :: Maybe Text
+    <*> arbitraryReducedMaybe n -- issueFormFieldType :: Maybe Text
+    <*> arbitraryReducedMaybe n -- issueFormFieldValidations :: Maybe (Map.Map String A.Value)
+  
+instance Arbitrary IssueLabelsOption where
+  arbitrary = sized genIssueLabelsOption
+
+genIssueLabelsOption :: Int -> Gen IssueLabelsOption
+genIssueLabelsOption n =
+  IssueLabelsOption
+    <$> arbitraryReducedMaybe n -- issueLabelsOptionLabels :: Maybe [Integer]
+  
+instance Arbitrary IssueTemplate where
+  arbitrary = sized genIssueTemplate
+
+genIssueTemplate :: Int -> Gen IssueTemplate
+genIssueTemplate n =
+  IssueTemplate
+    <$> arbitraryReducedMaybe n -- issueTemplateAbout :: Maybe Text
+    <*> arbitraryReducedMaybe n -- issueTemplateBody :: Maybe [IssueFormField]
+    <*> arbitraryReducedMaybe n -- issueTemplateContent :: Maybe Text
+    <*> arbitraryReducedMaybe n -- issueTemplateFileName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- issueTemplateLabels :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- issueTemplateName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- issueTemplateRef :: Maybe Text
+    <*> arbitraryReducedMaybe n -- issueTemplateTitle :: Maybe Text
+  
+instance Arbitrary Label where
+  arbitrary = sized genLabel
+
+genLabel :: Int -> Gen Label
+genLabel n =
+  Label
+    <$> arbitraryReducedMaybe n -- labelColor :: Maybe Text
+    <*> arbitraryReducedMaybe n -- labelDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- labelExclusive :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- labelId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- labelName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- labelUrl :: Maybe Text
+  
+instance Arbitrary MarkdownOption where
+  arbitrary = sized genMarkdownOption
+
+genMarkdownOption :: Int -> Gen MarkdownOption
+genMarkdownOption n =
+  MarkdownOption
+    <$> arbitraryReducedMaybe n -- markdownOptionContext :: Maybe Text
+    <*> arbitraryReducedMaybe n -- markdownOptionMode :: Maybe Text
+    <*> arbitraryReducedMaybe n -- markdownOptionText :: Maybe Text
+    <*> arbitraryReducedMaybe n -- markdownOptionWiki :: Maybe Bool
+  
+instance Arbitrary MergePullRequestOption where
+  arbitrary = sized genMergePullRequestOption
+
+genMergePullRequestOption :: Int -> Gen MergePullRequestOption
+genMergePullRequestOption n =
+  MergePullRequestOption
+    <$> arbitrary -- mergePullRequestOptionDo :: E'Do
+    <*> arbitraryReducedMaybe n -- mergePullRequestOptionMergeCommitId :: Maybe Text
+    <*> arbitraryReducedMaybe n -- mergePullRequestOptionMergeMessageField :: Maybe Text
+    <*> arbitraryReducedMaybe n -- mergePullRequestOptionMergeTitleField :: Maybe Text
+    <*> arbitraryReducedMaybe n -- mergePullRequestOptionDeleteBranchAfterMerge :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- mergePullRequestOptionForceMerge :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- mergePullRequestOptionHeadCommitId :: Maybe Text
+    <*> arbitraryReducedMaybe n -- mergePullRequestOptionMergeWhenChecksSucceed :: Maybe Bool
+  
+instance Arbitrary MigrateRepoOptions where
+  arbitrary = sized genMigrateRepoOptions
+
+genMigrateRepoOptions :: Int -> Gen MigrateRepoOptions
+genMigrateRepoOptions n =
+  MigrateRepoOptions
+    <$> arbitraryReducedMaybe n -- migrateRepoOptionsAuthPassword :: Maybe Text
+    <*> arbitraryReducedMaybe n -- migrateRepoOptionsAuthToken :: Maybe Text
+    <*> arbitraryReducedMaybe n -- migrateRepoOptionsAuthUsername :: Maybe Text
+    <*> arbitrary -- migrateRepoOptionsCloneAddr :: Text
+    <*> arbitraryReducedMaybe n -- migrateRepoOptionsDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- migrateRepoOptionsIssues :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- migrateRepoOptionsLabels :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- migrateRepoOptionsLfs :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- migrateRepoOptionsLfsEndpoint :: Maybe Text
+    <*> arbitraryReducedMaybe n -- migrateRepoOptionsMilestones :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- migrateRepoOptionsMirror :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- migrateRepoOptionsMirrorInterval :: Maybe Text
+    <*> arbitraryReducedMaybe n -- migrateRepoOptionsPrivate :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- migrateRepoOptionsPullRequests :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- migrateRepoOptionsReleases :: Maybe Bool
+    <*> arbitrary -- migrateRepoOptionsRepoName :: Text
+    <*> arbitraryReducedMaybe n -- migrateRepoOptionsRepoOwner :: Maybe Text
+    <*> arbitraryReducedMaybe n -- migrateRepoOptionsService :: Maybe E'Service
+    <*> arbitraryReducedMaybe n -- migrateRepoOptionsUid :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- migrateRepoOptionsWiki :: Maybe Bool
+  
+instance Arbitrary Milestone where
+  arbitrary = sized genMilestone
+
+genMilestone :: Int -> Gen Milestone
+genMilestone n =
+  Milestone
+    <$> arbitraryReducedMaybe n -- milestoneClosedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- milestoneClosedIssues :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- milestoneCreatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- milestoneDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- milestoneDueOn :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- milestoneId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- milestoneOpenIssues :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- milestoneState :: Maybe Text
+    <*> arbitraryReducedMaybe n -- milestoneTitle :: Maybe Text
+    <*> arbitraryReducedMaybe n -- milestoneUpdatedAt :: Maybe DateTime
+  
+instance Arbitrary NodeInfo where
+  arbitrary = sized genNodeInfo
+
+genNodeInfo :: Int -> Gen NodeInfo
+genNodeInfo n =
+  NodeInfo
+    <$> arbitraryReducedMaybeValue n -- nodeInfoMetadata :: Maybe A.Value
+    <*> arbitraryReducedMaybe n -- nodeInfoOpenRegistrations :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- nodeInfoProtocols :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- nodeInfoServices :: Maybe NodeInfoServices
+    <*> arbitraryReducedMaybe n -- nodeInfoSoftware :: Maybe NodeInfoSoftware
+    <*> arbitraryReducedMaybe n -- nodeInfoUsage :: Maybe NodeInfoUsage
+    <*> arbitraryReducedMaybe n -- nodeInfoVersion :: Maybe Text
+  
+instance Arbitrary NodeInfoServices where
+  arbitrary = sized genNodeInfoServices
+
+genNodeInfoServices :: Int -> Gen NodeInfoServices
+genNodeInfoServices n =
+  NodeInfoServices
+    <$> arbitraryReducedMaybe n -- nodeInfoServicesInbound :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- nodeInfoServicesOutbound :: Maybe [Text]
+  
+instance Arbitrary NodeInfoSoftware where
+  arbitrary = sized genNodeInfoSoftware
+
+genNodeInfoSoftware :: Int -> Gen NodeInfoSoftware
+genNodeInfoSoftware n =
+  NodeInfoSoftware
+    <$> arbitraryReducedMaybe n -- nodeInfoSoftwareHomepage :: Maybe Text
+    <*> arbitraryReducedMaybe n -- nodeInfoSoftwareName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- nodeInfoSoftwareRepository :: Maybe Text
+    <*> arbitraryReducedMaybe n -- nodeInfoSoftwareVersion :: Maybe Text
+  
+instance Arbitrary NodeInfoUsage where
+  arbitrary = sized genNodeInfoUsage
+
+genNodeInfoUsage :: Int -> Gen NodeInfoUsage
+genNodeInfoUsage n =
+  NodeInfoUsage
+    <$> arbitraryReducedMaybe n -- nodeInfoUsageLocalComments :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- nodeInfoUsageLocalPosts :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- nodeInfoUsageUsers :: Maybe NodeInfoUsageUsers
+  
+instance Arbitrary NodeInfoUsageUsers where
+  arbitrary = sized genNodeInfoUsageUsers
+
+genNodeInfoUsageUsers :: Int -> Gen NodeInfoUsageUsers
+genNodeInfoUsageUsers n =
+  NodeInfoUsageUsers
+    <$> arbitraryReducedMaybe n -- nodeInfoUsageUsersActiveHalfyear :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- nodeInfoUsageUsersActiveMonth :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- nodeInfoUsageUsersTotal :: Maybe Integer
+  
+instance Arbitrary Note where
+  arbitrary = sized genNote
+
+genNote :: Int -> Gen Note
+genNote n =
+  Note
+    <$> arbitraryReducedMaybe n -- noteCommit :: Maybe Commit
+    <*> arbitraryReducedMaybe n -- noteMessage :: Maybe Text
+  
+instance Arbitrary NotificationCount where
+  arbitrary = sized genNotificationCount
+
+genNotificationCount :: Int -> Gen NotificationCount
+genNotificationCount n =
+  NotificationCount
+    <$> arbitraryReducedMaybe n -- notificationCountNew :: Maybe Integer
+  
+instance Arbitrary NotificationSubject where
+  arbitrary = sized genNotificationSubject
+
+genNotificationSubject :: Int -> Gen NotificationSubject
+genNotificationSubject n =
+  NotificationSubject
+    <$> arbitraryReducedMaybe n -- notificationSubjectHtmlUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- notificationSubjectLatestCommentHtmlUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- notificationSubjectLatestCommentUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- notificationSubjectState :: Maybe Text
+    <*> arbitraryReducedMaybe n -- notificationSubjectTitle :: Maybe Text
+    <*> arbitraryReducedMaybe n -- notificationSubjectType :: Maybe Text
+    <*> arbitraryReducedMaybe n -- notificationSubjectUrl :: Maybe Text
+  
+instance Arbitrary NotificationThread where
+  arbitrary = sized genNotificationThread
+
+genNotificationThread :: Int -> Gen NotificationThread
+genNotificationThread n =
+  NotificationThread
+    <$> arbitraryReducedMaybe n -- notificationThreadId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- notificationThreadPinned :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- notificationThreadRepository :: Maybe Repository
+    <*> arbitraryReducedMaybe n -- notificationThreadSubject :: Maybe NotificationSubject
+    <*> arbitraryReducedMaybe n -- notificationThreadUnread :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- notificationThreadUpdatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- notificationThreadUrl :: Maybe Text
+  
+instance Arbitrary OAuth2Application where
+  arbitrary = sized genOAuth2Application
+
+genOAuth2Application :: Int -> Gen OAuth2Application
+genOAuth2Application n =
+  OAuth2Application
+    <$> arbitraryReducedMaybe n -- oAuth2ApplicationClientId :: Maybe Text
+    <*> arbitraryReducedMaybe n -- oAuth2ApplicationClientSecret :: Maybe Text
+    <*> arbitraryReducedMaybe n -- oAuth2ApplicationConfidentialClient :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- oAuth2ApplicationCreated :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- oAuth2ApplicationId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- oAuth2ApplicationName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- oAuth2ApplicationRedirectUris :: Maybe [Text]
+  
+instance Arbitrary Organization where
+  arbitrary = sized genOrganization
+
+genOrganization :: Int -> Gen Organization
+genOrganization n =
+  Organization
+    <$> arbitraryReducedMaybe n -- organizationAvatarUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- organizationDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- organizationFullName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- organizationId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- organizationLocation :: Maybe Text
+    <*> arbitraryReducedMaybe n -- organizationName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- organizationRepoAdminChangeTeamAccess :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- organizationUsername :: Maybe Text
+    <*> arbitraryReducedMaybe n -- organizationVisibility :: Maybe Text
+    <*> arbitraryReducedMaybe n -- organizationWebsite :: Maybe Text
+  
+instance Arbitrary OrganizationPermissions where
+  arbitrary = sized genOrganizationPermissions
+
+genOrganizationPermissions :: Int -> Gen OrganizationPermissions
+genOrganizationPermissions n =
+  OrganizationPermissions
+    <$> arbitraryReducedMaybe n -- organizationPermissionsCanCreateRepository :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- organizationPermissionsCanRead :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- organizationPermissionsCanWrite :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- organizationPermissionsIsAdmin :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- organizationPermissionsIsOwner :: Maybe Bool
+  
+instance Arbitrary PRBranchInfo where
+  arbitrary = sized genPRBranchInfo
+
+genPRBranchInfo :: Int -> Gen PRBranchInfo
+genPRBranchInfo n =
+  PRBranchInfo
+    <$> arbitraryReducedMaybe n -- pRBranchInfoLabel :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pRBranchInfoRef :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pRBranchInfoRepo :: Maybe Repository
+    <*> arbitraryReducedMaybe n -- pRBranchInfoRepoId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- pRBranchInfoSha :: Maybe Text
+  
+instance Arbitrary Package where
+  arbitrary = sized genPackage
+
+genPackage :: Int -> Gen Package
+genPackage n =
+  Package
+    <$> arbitraryReducedMaybe n -- packageCreatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- packageCreator :: Maybe User
+    <*> arbitraryReducedMaybe n -- packageId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- packageName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- packageOwner :: Maybe User
+    <*> arbitraryReducedMaybe n -- packageRepository :: Maybe Repository
+    <*> arbitraryReducedMaybe n -- packageType :: Maybe Text
+    <*> arbitraryReducedMaybe n -- packageVersion :: Maybe Text
+  
+instance Arbitrary PackageFile where
+  arbitrary = sized genPackageFile
+
+genPackageFile :: Int -> Gen PackageFile
+genPackageFile n =
+  PackageFile
+    <$> arbitraryReducedMaybe n -- packageFileSize :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- packageFileId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- packageFileMd5 :: Maybe Text
+    <*> arbitraryReducedMaybe n -- packageFileName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- packageFileSha1 :: Maybe Text
+    <*> arbitraryReducedMaybe n -- packageFileSha256 :: Maybe Text
+    <*> arbitraryReducedMaybe n -- packageFileSha512 :: Maybe Text
+  
+instance Arbitrary PayloadCommit where
+  arbitrary = sized genPayloadCommit
+
+genPayloadCommit :: Int -> Gen PayloadCommit
+genPayloadCommit n =
+  PayloadCommit
+    <$> arbitraryReducedMaybe n -- payloadCommitAdded :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- payloadCommitAuthor :: Maybe PayloadUser
+    <*> arbitraryReducedMaybe n -- payloadCommitCommitter :: Maybe PayloadUser
+    <*> arbitraryReducedMaybe n -- payloadCommitId :: Maybe Text
+    <*> arbitraryReducedMaybe n -- payloadCommitMessage :: Maybe Text
+    <*> arbitraryReducedMaybe n -- payloadCommitModified :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- payloadCommitRemoved :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- payloadCommitTimestamp :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- payloadCommitUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- payloadCommitVerification :: Maybe PayloadCommitVerification
+  
+instance Arbitrary PayloadCommitVerification where
+  arbitrary = sized genPayloadCommitVerification
+
+genPayloadCommitVerification :: Int -> Gen PayloadCommitVerification
+genPayloadCommitVerification n =
+  PayloadCommitVerification
+    <$> arbitraryReducedMaybe n -- payloadCommitVerificationPayload :: Maybe Text
+    <*> arbitraryReducedMaybe n -- payloadCommitVerificationReason :: Maybe Text
+    <*> arbitraryReducedMaybe n -- payloadCommitVerificationSignature :: Maybe Text
+    <*> arbitraryReducedMaybe n -- payloadCommitVerificationSigner :: Maybe PayloadUser
+    <*> arbitraryReducedMaybe n -- payloadCommitVerificationVerified :: Maybe Bool
+  
+instance Arbitrary PayloadUser where
+  arbitrary = sized genPayloadUser
+
+genPayloadUser :: Int -> Gen PayloadUser
+genPayloadUser n =
+  PayloadUser
+    <$> arbitraryReducedMaybe n -- payloadUserEmail :: Maybe Text
+    <*> arbitraryReducedMaybe n -- payloadUserName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- payloadUserUsername :: Maybe Text
+  
+instance Arbitrary Permission where
+  arbitrary = sized genPermission
+
+genPermission :: Int -> Gen Permission
+genPermission n =
+  Permission
+    <$> arbitraryReducedMaybe n -- permissionAdmin :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- permissionPull :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- permissionPush :: Maybe Bool
+  
+instance Arbitrary PublicKey where
+  arbitrary = sized genPublicKey
+
+genPublicKey :: Int -> Gen PublicKey
+genPublicKey n =
+  PublicKey
+    <$> arbitraryReducedMaybe n -- publicKeyCreatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- publicKeyFingerprint :: Maybe Text
+    <*> arbitraryReducedMaybe n -- publicKeyId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- publicKeyKey :: Maybe Text
+    <*> arbitraryReducedMaybe n -- publicKeyKeyType :: Maybe Text
+    <*> arbitraryReducedMaybe n -- publicKeyReadOnly :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- publicKeyTitle :: Maybe Text
+    <*> arbitraryReducedMaybe n -- publicKeyUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- publicKeyUser :: Maybe User
+  
+instance Arbitrary PullRequest where
+  arbitrary = sized genPullRequest
+
+genPullRequest :: Int -> Gen PullRequest
+genPullRequest n =
+  PullRequest
+    <$> arbitraryReducedMaybe n -- pullRequestAllowMaintainerEdit :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- pullRequestAssignee :: Maybe User
+    <*> arbitraryReducedMaybe n -- pullRequestAssignees :: Maybe [User]
+    <*> arbitraryReducedMaybe n -- pullRequestBase :: Maybe PRBranchInfo
+    <*> arbitraryReducedMaybe n -- pullRequestBody :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullRequestClosedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- pullRequestComments :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- pullRequestCreatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- pullRequestDiffUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullRequestDueDate :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- pullRequestHead :: Maybe PRBranchInfo
+    <*> arbitraryReducedMaybe n -- pullRequestHtmlUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullRequestId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- pullRequestIsLocked :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- pullRequestLabels :: Maybe [Label]
+    <*> arbitraryReducedMaybe n -- pullRequestMergeBase :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullRequestMergeCommitSha :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullRequestMergeable :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- pullRequestMerged :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- pullRequestMergedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- pullRequestMergedBy :: Maybe User
+    <*> arbitraryReducedMaybe n -- pullRequestMilestone :: Maybe Milestone
+    <*> arbitraryReducedMaybe n -- pullRequestNumber :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- pullRequestPatchUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullRequestState :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullRequestTitle :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullRequestUpdatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- pullRequestUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullRequestUser :: Maybe User
+  
+instance Arbitrary PullRequestMeta where
+  arbitrary = sized genPullRequestMeta
+
+genPullRequestMeta :: Int -> Gen PullRequestMeta
+genPullRequestMeta n =
+  PullRequestMeta
+    <$> arbitraryReducedMaybe n -- pullRequestMetaMerged :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- pullRequestMetaMergedAt :: Maybe DateTime
+  
+instance Arbitrary PullReview where
+  arbitrary = sized genPullReview
+
+genPullReview :: Int -> Gen PullReview
+genPullReview n =
+  PullReview
+    <$> arbitraryReducedMaybe n -- pullReviewBody :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullReviewCommentsCount :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- pullReviewCommitId :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullReviewDismissed :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- pullReviewHtmlUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullReviewId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- pullReviewOfficial :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- pullReviewPullRequestUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullReviewStale :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- pullReviewState :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullReviewSubmittedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- pullReviewTeam :: Maybe Team
+    <*> arbitraryReducedMaybe n -- pullReviewUpdatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- pullReviewUser :: Maybe User
+  
+instance Arbitrary PullReviewComment where
+  arbitrary = sized genPullReviewComment
+
+genPullReviewComment :: Int -> Gen PullReviewComment
+genPullReviewComment n =
+  PullReviewComment
+    <$> arbitraryReducedMaybe n -- pullReviewCommentBody :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullReviewCommentCommitId :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullReviewCommentCreatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- pullReviewCommentDiffHunk :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullReviewCommentHtmlUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullReviewCommentId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- pullReviewCommentOriginalCommitId :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullReviewCommentOriginalPosition :: Maybe Int
+    <*> arbitraryReducedMaybe n -- pullReviewCommentPath :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullReviewCommentPosition :: Maybe Int
+    <*> arbitraryReducedMaybe n -- pullReviewCommentPullRequestReviewId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- pullReviewCommentPullRequestUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pullReviewCommentResolver :: Maybe User
+    <*> arbitraryReducedMaybe n -- pullReviewCommentUpdatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- pullReviewCommentUser :: Maybe User
+  
+instance Arbitrary PullReviewRequestOptions where
+  arbitrary = sized genPullReviewRequestOptions
+
+genPullReviewRequestOptions :: Int -> Gen PullReviewRequestOptions
+genPullReviewRequestOptions n =
+  PullReviewRequestOptions
+    <$> arbitraryReducedMaybe n -- pullReviewRequestOptionsReviewers :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- pullReviewRequestOptionsTeamReviewers :: Maybe [Text]
+  
+instance Arbitrary PushMirror where
+  arbitrary = sized genPushMirror
+
+genPushMirror :: Int -> Gen PushMirror
+genPushMirror n =
+  PushMirror
+    <$> arbitraryReducedMaybe n -- pushMirrorCreated :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pushMirrorInterval :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pushMirrorLastError :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pushMirrorLastUpdate :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pushMirrorRemoteAddress :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pushMirrorRemoteName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pushMirrorRepoName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- pushMirrorSyncOnCommit :: Maybe Bool
+  
+instance Arbitrary Reaction where
+  arbitrary = sized genReaction
+
+genReaction :: Int -> Gen Reaction
+genReaction n =
+  Reaction
+    <$> arbitraryReducedMaybe n -- reactionContent :: Maybe Text
+    <*> arbitraryReducedMaybe n -- reactionCreatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- reactionUser :: Maybe User
+  
+instance Arbitrary Reference where
+  arbitrary = sized genReference
+
+genReference :: Int -> Gen Reference
+genReference n =
+  Reference
+    <$> arbitraryReducedMaybe n -- referenceObject :: Maybe GitObject
+    <*> arbitraryReducedMaybe n -- referenceRef :: Maybe Text
+    <*> arbitraryReducedMaybe n -- referenceUrl :: Maybe Text
+  
+instance Arbitrary Release where
+  arbitrary = sized genRelease
+
+genRelease :: Int -> Gen Release
+genRelease n =
+  Release
+    <$> arbitraryReducedMaybe n -- releaseAssets :: Maybe [Attachment]
+    <*> arbitraryReducedMaybe n -- releaseAuthor :: Maybe User
+    <*> arbitraryReducedMaybe n -- releaseBody :: Maybe Text
+    <*> arbitraryReducedMaybe n -- releaseCreatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- releaseDraft :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- releaseHtmlUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- releaseId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- releaseName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- releasePrerelease :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- releasePublishedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- releaseTagName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- releaseTarballUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- releaseTargetCommitish :: Maybe Text
+    <*> arbitraryReducedMaybe n -- releaseUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- releaseZipballUrl :: Maybe Text
+  
+instance Arbitrary RepoCollaboratorPermission where
+  arbitrary = sized genRepoCollaboratorPermission
+
+genRepoCollaboratorPermission :: Int -> Gen RepoCollaboratorPermission
+genRepoCollaboratorPermission n =
+  RepoCollaboratorPermission
+    <$> arbitraryReducedMaybe n -- repoCollaboratorPermissionPermission :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repoCollaboratorPermissionRoleName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repoCollaboratorPermissionUser :: Maybe User
+  
+instance Arbitrary RepoCommit where
+  arbitrary = sized genRepoCommit
+
+genRepoCommit :: Int -> Gen RepoCommit
+genRepoCommit n =
+  RepoCommit
+    <$> arbitraryReducedMaybe n -- repoCommitAuthor :: Maybe CommitUser
+    <*> arbitraryReducedMaybe n -- repoCommitCommitter :: Maybe CommitUser
+    <*> arbitraryReducedMaybe n -- repoCommitMessage :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repoCommitTree :: Maybe CommitMeta
+    <*> arbitraryReducedMaybe n -- repoCommitUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repoCommitVerification :: Maybe PayloadCommitVerification
+  
+instance Arbitrary RepoTopicOptions where
+  arbitrary = sized genRepoTopicOptions
+
+genRepoTopicOptions :: Int -> Gen RepoTopicOptions
+genRepoTopicOptions n =
+  RepoTopicOptions
+    <$> arbitraryReducedMaybe n -- repoTopicOptionsTopics :: Maybe [Text]
+  
+instance Arbitrary RepoTransfer where
+  arbitrary = sized genRepoTransfer
+
+genRepoTransfer :: Int -> Gen RepoTransfer
+genRepoTransfer n =
+  RepoTransfer
+    <$> arbitraryReducedMaybe n -- repoTransferDoer :: Maybe User
+    <*> arbitraryReducedMaybe n -- repoTransferRecipient :: Maybe User
+    <*> arbitraryReducedMaybe n -- repoTransferTeams :: Maybe [Team]
+  
+instance Arbitrary Repository where
+  arbitrary = sized genRepository
+
+genRepository :: Int -> Gen Repository
+genRepository n =
+  Repository
+    <$> arbitraryReducedMaybe n -- repositoryAllowMergeCommits :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryAllowRebase :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryAllowRebaseExplicit :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryAllowRebaseUpdate :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryAllowSquashMerge :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryArchived :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryAvatarUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repositoryCloneUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repositoryCreatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- repositoryDefaultAllowMaintainerEdit :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryDefaultBranch :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repositoryDefaultDeleteBranchAfterMerge :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryDefaultMergeStyle :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repositoryDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repositoryEmpty :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryExternalTracker :: Maybe ExternalTracker
+    <*> arbitraryReducedMaybe n -- repositoryExternalWiki :: Maybe ExternalWiki
+    <*> arbitraryReducedMaybe n -- repositoryFork :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryForksCount :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- repositoryFullName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repositoryHasIssues :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryHasProjects :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryHasPullRequests :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryHasWiki :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryHtmlUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repositoryId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- repositoryIgnoreWhitespaceConflicts :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryInternal :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryInternalTracker :: Maybe InternalTracker
+    <*> arbitraryReducedMaybe n -- repositoryLanguage :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repositoryLanguagesUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repositoryLink :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repositoryMirror :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryMirrorInterval :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repositoryMirrorUpdated :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- repositoryName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repositoryOpenIssuesCount :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- repositoryOpenPrCounter :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- repositoryOriginalUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repositoryOwner :: Maybe User
+    <*> arbitraryReducedMaybe n -- repositoryParent :: Maybe Repository
+    <*> arbitraryReducedMaybe n -- repositoryPermissions :: Maybe Permission
+    <*> arbitraryReducedMaybe n -- repositoryPrivate :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryReleaseCounter :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- repositoryRepoTransfer :: Maybe RepoTransfer
+    <*> arbitraryReducedMaybe n -- repositorySize :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- repositorySshUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repositoryStarsCount :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- repositoryTemplate :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- repositoryUpdatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- repositoryWatchersCount :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- repositoryWebsite :: Maybe Text
+  
+instance Arbitrary RepositoryMeta where
+  arbitrary = sized genRepositoryMeta
+
+genRepositoryMeta :: Int -> Gen RepositoryMeta
+genRepositoryMeta n =
+  RepositoryMeta
+    <$> arbitraryReducedMaybe n -- repositoryMetaFullName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repositoryMetaId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- repositoryMetaName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- repositoryMetaOwner :: Maybe Text
+  
+instance Arbitrary SearchResults where
+  arbitrary = sized genSearchResults
+
+genSearchResults :: Int -> Gen SearchResults
+genSearchResults n =
+  SearchResults
+    <$> arbitraryReducedMaybe n -- searchResultsData :: Maybe [Repository]
+    <*> arbitraryReducedMaybe n -- searchResultsOk :: Maybe Bool
+  
+instance Arbitrary ServerVersion where
+  arbitrary = sized genServerVersion
+
+genServerVersion :: Int -> Gen ServerVersion
+genServerVersion n =
+  ServerVersion
+    <$> arbitraryReducedMaybe n -- serverVersionVersion :: Maybe Text
+  
+instance Arbitrary StopWatch where
+  arbitrary = sized genStopWatch
+
+genStopWatch :: Int -> Gen StopWatch
+genStopWatch n =
+  StopWatch
+    <$> arbitraryReducedMaybe n -- stopWatchCreated :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- stopWatchDuration :: Maybe Text
+    <*> arbitraryReducedMaybe n -- stopWatchIssueIndex :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- stopWatchIssueTitle :: Maybe Text
+    <*> arbitraryReducedMaybe n -- stopWatchRepoName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- stopWatchRepoOwnerName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- stopWatchSeconds :: Maybe Integer
+  
+instance Arbitrary SubmitPullReviewOptions where
+  arbitrary = sized genSubmitPullReviewOptions
+
+genSubmitPullReviewOptions :: Int -> Gen SubmitPullReviewOptions
+genSubmitPullReviewOptions n =
+  SubmitPullReviewOptions
+    <$> arbitraryReducedMaybe n -- submitPullReviewOptionsBody :: Maybe Text
+    <*> arbitraryReducedMaybe n -- submitPullReviewOptionsEvent :: Maybe Text
+  
+instance Arbitrary Tag where
+  arbitrary = sized genTag
+
+genTag :: Int -> Gen Tag
+genTag n =
+  Tag
+    <$> arbitraryReducedMaybe n -- tagCommit :: Maybe CommitMeta
+    <*> arbitraryReducedMaybe n -- tagId :: Maybe Text
+    <*> arbitraryReducedMaybe n -- tagMessage :: Maybe Text
+    <*> arbitraryReducedMaybe n -- tagName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- tagTarballUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- tagZipballUrl :: Maybe Text
+  
+instance Arbitrary Team where
+  arbitrary = sized genTeam
+
+genTeam :: Int -> Gen Team
+genTeam n =
+  Team
+    <$> arbitraryReducedMaybe n -- teamCanCreateOrgRepo :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- teamDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- teamId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- teamIncludesAllRepositories :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- teamName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- teamOrganization :: Maybe Organization
+    <*> arbitraryReducedMaybe n -- teamPermission :: Maybe E'Permission2
+    <*> arbitraryReducedMaybe n -- teamUnits :: Maybe [Text]
+    <*> arbitraryReducedMaybe n -- teamUnitsMap :: Maybe (Map.Map String Text)
+  
+instance Arbitrary TeamSearch200Response where
+  arbitrary = sized genTeamSearch200Response
+
+genTeamSearch200Response :: Int -> Gen TeamSearch200Response
+genTeamSearch200Response n =
+  TeamSearch200Response
+    <$> arbitraryReducedMaybe n -- teamSearch200ResponseData :: Maybe [Team]
+    <*> arbitraryReducedMaybe n -- teamSearch200ResponseOk :: Maybe Bool
+  
+instance Arbitrary TimelineComment where
+  arbitrary = sized genTimelineComment
+
+genTimelineComment :: Int -> Gen TimelineComment
+genTimelineComment n =
+  TimelineComment
+    <$> arbitraryReducedMaybe n -- timelineCommentAssignee :: Maybe User
+    <*> arbitraryReducedMaybe n -- timelineCommentAssigneeTeam :: Maybe Team
+    <*> arbitraryReducedMaybe n -- timelineCommentBody :: Maybe Text
+    <*> arbitraryReducedMaybe n -- timelineCommentCreatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- timelineCommentDependentIssue :: Maybe Issue
+    <*> arbitraryReducedMaybe n -- timelineCommentHtmlUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- timelineCommentId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- timelineCommentIssueUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- timelineCommentLabel :: Maybe Label
+    <*> arbitraryReducedMaybe n -- timelineCommentMilestone :: Maybe Milestone
+    <*> arbitraryReducedMaybe n -- timelineCommentNewRef :: Maybe Text
+    <*> arbitraryReducedMaybe n -- timelineCommentNewTitle :: Maybe Text
+    <*> arbitraryReducedMaybe n -- timelineCommentOldMilestone :: Maybe Milestone
+    <*> arbitraryReducedMaybe n -- timelineCommentOldProjectId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- timelineCommentOldRef :: Maybe Text
+    <*> arbitraryReducedMaybe n -- timelineCommentOldTitle :: Maybe Text
+    <*> arbitraryReducedMaybe n -- timelineCommentProjectId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- timelineCommentPullRequestUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- timelineCommentRefAction :: Maybe Text
+    <*> arbitraryReducedMaybe n -- timelineCommentRefComment :: Maybe Comment
+    <*> arbitraryReducedMaybe n -- timelineCommentRefCommitSha :: Maybe Text
+    <*> arbitraryReducedMaybe n -- timelineCommentRefIssue :: Maybe Issue
+    <*> arbitraryReducedMaybe n -- timelineCommentRemovedAssignee :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- timelineCommentResolveDoer :: Maybe User
+    <*> arbitraryReducedMaybe n -- timelineCommentReviewId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- timelineCommentTrackedTime :: Maybe TrackedTime
+    <*> arbitraryReducedMaybe n -- timelineCommentType :: Maybe Text
+    <*> arbitraryReducedMaybe n -- timelineCommentUpdatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- timelineCommentUser :: Maybe User
+  
+instance Arbitrary TopicName where
+  arbitrary = sized genTopicName
+
+genTopicName :: Int -> Gen TopicName
+genTopicName n =
+  TopicName
+    <$> arbitraryReducedMaybe n -- topicNameTopics :: Maybe [Text]
+  
+instance Arbitrary TopicResponse where
+  arbitrary = sized genTopicResponse
+
+genTopicResponse :: Int -> Gen TopicResponse
+genTopicResponse n =
+  TopicResponse
+    <$> arbitraryReducedMaybe n -- topicResponseCreated :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- topicResponseId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- topicResponseRepoCount :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- topicResponseTopicName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- topicResponseUpdated :: Maybe DateTime
+  
+instance Arbitrary TrackedTime where
+  arbitrary = sized genTrackedTime
+
+genTrackedTime :: Int -> Gen TrackedTime
+genTrackedTime n =
+  TrackedTime
+    <$> arbitraryReducedMaybe n -- trackedTimeCreated :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- trackedTimeId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- trackedTimeIssue :: Maybe Issue
+    <*> arbitraryReducedMaybe n -- trackedTimeIssueId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- trackedTimeTime :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- trackedTimeUserId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- trackedTimeUserName :: Maybe Text
+  
+instance Arbitrary TransferRepoOption where
+  arbitrary = sized genTransferRepoOption
+
+genTransferRepoOption :: Int -> Gen TransferRepoOption
+genTransferRepoOption n =
+  TransferRepoOption
+    <$> arbitrary -- transferRepoOptionNewOwner :: Text
+    <*> arbitraryReducedMaybe n -- transferRepoOptionTeamIds :: Maybe [Integer]
+  
+instance Arbitrary UpdateFileOptions where
+  arbitrary = sized genUpdateFileOptions
+
+genUpdateFileOptions :: Int -> Gen UpdateFileOptions
+genUpdateFileOptions n =
+  UpdateFileOptions
+    <$> arbitraryReducedMaybe n -- updateFileOptionsAuthor :: Maybe Identity
+    <*> arbitraryReducedMaybe n -- updateFileOptionsBranch :: Maybe Text
+    <*> arbitraryReducedMaybe n -- updateFileOptionsCommitter :: Maybe Identity
+    <*> arbitrary -- updateFileOptionsContent :: Text
+    <*> arbitraryReducedMaybe n -- updateFileOptionsDates :: Maybe CommitDateOptions
+    <*> arbitraryReducedMaybe n -- updateFileOptionsFromPath :: Maybe Text
+    <*> arbitraryReducedMaybe n -- updateFileOptionsMessage :: Maybe Text
+    <*> arbitraryReducedMaybe n -- updateFileOptionsNewBranch :: Maybe Text
+    <*> arbitrary -- updateFileOptionsSha :: Text
+    <*> arbitraryReducedMaybe n -- updateFileOptionsSignoff :: Maybe Bool
+  
+instance Arbitrary User where
+  arbitrary = sized genUser
+
+genUser :: Int -> Gen User
+genUser n =
+  User
+    <$> arbitraryReducedMaybe n -- userActive :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- userAvatarUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userCreated :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- userDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userEmail :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userFollowersCount :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- userFollowingCount :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- userFullName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userId :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- userIsAdmin :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- userLanguage :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userLastLogin :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- userLocation :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userLogin :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userLoginName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userProhibitLogin :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- userRestricted :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- userStarredReposCount :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- userVisibility :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userWebsite :: Maybe Text
+  
+instance Arbitrary UserHeatmapData where
+  arbitrary = sized genUserHeatmapData
+
+genUserHeatmapData :: Int -> Gen UserHeatmapData
+genUserHeatmapData n =
+  UserHeatmapData
+    <$> arbitraryReducedMaybe n -- userHeatmapDataContributions :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- userHeatmapDataTimestamp :: Maybe Integer
+  
+instance Arbitrary UserSearch200Response where
+  arbitrary = sized genUserSearch200Response
+
+genUserSearch200Response :: Int -> Gen UserSearch200Response
+genUserSearch200Response n =
+  UserSearch200Response
+    <$> arbitraryReducedMaybe n -- userSearch200ResponseData :: Maybe [User]
+    <*> arbitraryReducedMaybe n -- userSearch200ResponseOk :: Maybe Bool
+  
+instance Arbitrary UserSettings where
+  arbitrary = sized genUserSettings
+
+genUserSettings :: Int -> Gen UserSettings
+genUserSettings n =
+  UserSettings
+    <$> arbitraryReducedMaybe n -- userSettingsDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userSettingsDiffViewStyle :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userSettingsFullName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userSettingsHideActivity :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- userSettingsHideEmail :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- userSettingsLanguage :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userSettingsLocation :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userSettingsTheme :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userSettingsWebsite :: Maybe Text
+  
+instance Arbitrary UserSettingsOptions where
+  arbitrary = sized genUserSettingsOptions
+
+genUserSettingsOptions :: Int -> Gen UserSettingsOptions
+genUserSettingsOptions n =
+  UserSettingsOptions
+    <$> arbitraryReducedMaybe n -- userSettingsOptionsDescription :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userSettingsOptionsDiffViewStyle :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userSettingsOptionsFullName :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userSettingsOptionsHideActivity :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- userSettingsOptionsHideEmail :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- userSettingsOptionsLanguage :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userSettingsOptionsLocation :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userSettingsOptionsTheme :: Maybe Text
+    <*> arbitraryReducedMaybe n -- userSettingsOptionsWebsite :: Maybe Text
+  
+instance Arbitrary WatchInfo where
+  arbitrary = sized genWatchInfo
+
+genWatchInfo :: Int -> Gen WatchInfo
+genWatchInfo n =
+  WatchInfo
+    <$> arbitraryReducedMaybe n -- watchInfoCreatedAt :: Maybe DateTime
+    <*> arbitraryReducedMaybe n -- watchInfoIgnored :: Maybe Bool
+    <*> arbitraryReducedMaybeValue n -- watchInfoReason :: Maybe A.Value
+    <*> arbitraryReducedMaybe n -- watchInfoRepositoryUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- watchInfoSubscribed :: Maybe Bool
+    <*> arbitraryReducedMaybe n -- watchInfoUrl :: Maybe Text
+  
+instance Arbitrary WikiCommit where
+  arbitrary = sized genWikiCommit
+
+genWikiCommit :: Int -> Gen WikiCommit
+genWikiCommit n =
+  WikiCommit
+    <$> arbitraryReducedMaybe n -- wikiCommitAuthor :: Maybe CommitUser
+    <*> arbitraryReducedMaybe n -- wikiCommitCommiter :: Maybe CommitUser
+    <*> arbitraryReducedMaybe n -- wikiCommitMessage :: Maybe Text
+    <*> arbitraryReducedMaybe n -- wikiCommitSha :: Maybe Text
+  
+instance Arbitrary WikiCommitList where
+  arbitrary = sized genWikiCommitList
+
+genWikiCommitList :: Int -> Gen WikiCommitList
+genWikiCommitList n =
+  WikiCommitList
+    <$> arbitraryReducedMaybe n -- wikiCommitListCommits :: Maybe [WikiCommit]
+    <*> arbitraryReducedMaybe n -- wikiCommitListCount :: Maybe Integer
+  
+instance Arbitrary WikiPage where
+  arbitrary = sized genWikiPage
+
+genWikiPage :: Int -> Gen WikiPage
+genWikiPage n =
+  WikiPage
+    <$> arbitraryReducedMaybe n -- wikiPageCommitCount :: Maybe Integer
+    <*> arbitraryReducedMaybe n -- wikiPageContentBase64 :: Maybe Text
+    <*> arbitraryReducedMaybe n -- wikiPageFooter :: Maybe Text
+    <*> arbitraryReducedMaybe n -- wikiPageHtmlUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- wikiPageLastCommit :: Maybe WikiCommit
+    <*> arbitraryReducedMaybe n -- wikiPageSidebar :: Maybe Text
+    <*> arbitraryReducedMaybe n -- wikiPageSubUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- wikiPageTitle :: Maybe Text
+  
+instance Arbitrary WikiPageMetaData where
+  arbitrary = sized genWikiPageMetaData
+
+genWikiPageMetaData :: Int -> Gen WikiPageMetaData
+genWikiPageMetaData n =
+  WikiPageMetaData
+    <$> arbitraryReducedMaybe n -- wikiPageMetaDataHtmlUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- wikiPageMetaDataLastCommit :: Maybe WikiCommit
+    <*> arbitraryReducedMaybe n -- wikiPageMetaDataSubUrl :: Maybe Text
+    <*> arbitraryReducedMaybe n -- wikiPageMetaDataTitle :: Maybe Text
+  
+
+
+
+instance Arbitrary E'DiffType where
+  arbitrary = arbitraryBoundedEnum
+
+instance Arbitrary E'Do where
+  arbitrary = arbitraryBoundedEnum
+
+instance Arbitrary E'Permission where
+  arbitrary = arbitraryBoundedEnum
+
+instance Arbitrary E'Permission2 where
+  arbitrary = arbitraryBoundedEnum
+
+instance Arbitrary E'Service where
+  arbitrary = arbitraryBoundedEnum
+
+instance Arbitrary E'Sort where
+  arbitrary = arbitraryBoundedEnum
+
+instance Arbitrary E'Sort2 where
+  arbitrary = arbitraryBoundedEnum
+
+instance Arbitrary E'State where
+  arbitrary = arbitraryBoundedEnum
+
+instance Arbitrary E'State2 where
+  arbitrary = arbitraryBoundedEnum
+
+instance Arbitrary E'State3 where
+  arbitrary = arbitraryBoundedEnum
+
+instance Arbitrary E'Style where
+  arbitrary = arbitraryBoundedEnum
+
+instance Arbitrary E'SubjectType where
+  arbitrary = arbitraryBoundedEnum
+
+instance Arbitrary E'TrustModel where
+  arbitrary = arbitraryBoundedEnum
+
+instance Arbitrary E'Type where
+  arbitrary = arbitraryBoundedEnum
+
+instance Arbitrary E'Type2 where
+  arbitrary = arbitraryBoundedEnum
+
+instance Arbitrary E'Type3 where
+  arbitrary = arbitraryBoundedEnum
+
+instance Arbitrary E'Visibility where
+  arbitrary = arbitraryBoundedEnum
+
+instance Arbitrary E'Whitespace where
+  arbitrary = arbitraryBoundedEnum
+
diff --git a/tests/PropMime.hs b/tests/PropMime.hs
new file mode 100644
--- /dev/null
+++ b/tests/PropMime.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE ConstraintKinds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+module PropMime where
+
+import Data.Aeson
+import Data.Aeson.Types (parseEither)
+import Data.Monoid ((<>))
+import Data.Typeable (Proxy(..), typeOf, Typeable)
+import qualified Data.ByteString.Lazy.Char8 as BL8
+import Test.Hspec
+import Test.QuickCheck
+import Test.QuickCheck.Property
+import Test.Hspec.QuickCheck (prop)
+
+import Gitea.MimeTypes
+
+import ApproxEq
+
+-- * Type Aliases
+
+type ArbitraryMime mime a = ArbitraryRoundtrip (MimeUnrender mime) (MimeRender mime) a
+
+type ArbitraryRoundtrip from to a = (from a, to a, Arbitrary' a)
+
+type Arbitrary' a = (Arbitrary a, Show a, Typeable a)
+
+-- * Mime
+
+propMime
+  :: forall a b mime.
+     (ArbitraryMime mime a, Testable b)
+  => String -> (a -> a -> b) -> mime -> Proxy a -> Spec
+propMime eqDescr eq m _ =
+  prop
+    (show (typeOf (undefined :: a)) <> " " <> show (typeOf (undefined :: mime)) <> " roundtrip " <> eqDescr) $
+  \(x :: a) ->
+     let rendered = mimeRender' m x
+         actual = mimeUnrender' m rendered
+         expected = Right x
+         failMsg =
+           "ACTUAL: " <> show actual <> "\nRENDERED: " <> BL8.unpack rendered
+     in counterexample failMsg $
+        either reject property (eq <$> actual <*> expected)
+  where
+    reject = property . const rejected
+
+propMimeEq :: (ArbitraryMime mime a, Eq a) => mime -> Proxy a -> Spec
+propMimeEq = propMime "(EQ)" (==)
diff --git a/tests/Test.hs b/tests/Test.hs
new file mode 100644
--- /dev/null
+++ b/tests/Test.hs
@@ -0,0 +1,181 @@
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE PartialTypeSignatures #-}
+
+module Main where
+
+import Data.Typeable (Proxy(..))
+import Test.Hspec
+import Test.Hspec.QuickCheck
+
+import PropMime
+import Instances ()
+
+import Gitea.Model
+import Gitea.MimeTypes
+
+main :: IO ()
+main =
+  hspec $ modifyMaxSize (const 10) $ do
+    describe "JSON instances" $ do
+      pure ()
+      propMimeEq MimeJSON (Proxy :: Proxy APIError)
+      propMimeEq MimeJSON (Proxy :: Proxy AccessToken)
+      propMimeEq MimeJSON (Proxy :: Proxy ActivityPub)
+      propMimeEq MimeJSON (Proxy :: Proxy AddCollaboratorOption)
+      propMimeEq MimeJSON (Proxy :: Proxy AddTimeOption)
+      propMimeEq MimeJSON (Proxy :: Proxy AnnotatedTag)
+      propMimeEq MimeJSON (Proxy :: Proxy AnnotatedTagObject)
+      propMimeEq MimeJSON (Proxy :: Proxy Attachment)
+      propMimeEq MimeJSON (Proxy :: Proxy Branch)
+      propMimeEq MimeJSON (Proxy :: Proxy BranchProtection)
+      propMimeEq MimeJSON (Proxy :: Proxy ChangedFile)
+      propMimeEq MimeJSON (Proxy :: Proxy CombinedStatus)
+      propMimeEq MimeJSON (Proxy :: Proxy Comment)
+      propMimeEq MimeJSON (Proxy :: Proxy Commit)
+      propMimeEq MimeJSON (Proxy :: Proxy CommitAffectedFiles)
+      propMimeEq MimeJSON (Proxy :: Proxy CommitDateOptions)
+      propMimeEq MimeJSON (Proxy :: Proxy CommitMeta)
+      propMimeEq MimeJSON (Proxy :: Proxy CommitStats)
+      propMimeEq MimeJSON (Proxy :: Proxy CommitStatus)
+      propMimeEq MimeJSON (Proxy :: Proxy CommitUser)
+      propMimeEq MimeJSON (Proxy :: Proxy ContentsResponse)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateAccessTokenOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateBranchProtectionOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateBranchRepoOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateEmailOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateFileOptions)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateForkOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateGPGKeyOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateHookOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateIssueCommentOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateIssueOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateKeyOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateLabelOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateMilestoneOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateOAuth2ApplicationOptions)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateOrgOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreatePullRequestOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreatePullReviewComment)
+      propMimeEq MimeJSON (Proxy :: Proxy CreatePullReviewOptions)
+      propMimeEq MimeJSON (Proxy :: Proxy CreatePushMirrorOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateReleaseOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateRepoOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateStatusOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateTagOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateTeamOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateUserOption)
+      propMimeEq MimeJSON (Proxy :: Proxy CreateWikiPageOptions)
+      propMimeEq MimeJSON (Proxy :: Proxy Cron)
+      propMimeEq MimeJSON (Proxy :: Proxy DeleteEmailOption)
+      propMimeEq MimeJSON (Proxy :: Proxy DeleteFileOptions)
+      propMimeEq MimeJSON (Proxy :: Proxy DeployKey)
+      propMimeEq MimeJSON (Proxy :: Proxy DismissPullReviewOptions)
+      propMimeEq MimeJSON (Proxy :: Proxy EditAttachmentOptions)
+      propMimeEq MimeJSON (Proxy :: Proxy EditBranchProtectionOption)
+      propMimeEq MimeJSON (Proxy :: Proxy EditDeadlineOption)
+      propMimeEq MimeJSON (Proxy :: Proxy EditGitHookOption)
+      propMimeEq MimeJSON (Proxy :: Proxy EditHookOption)
+      propMimeEq MimeJSON (Proxy :: Proxy EditIssueCommentOption)
+      propMimeEq MimeJSON (Proxy :: Proxy EditIssueOption)
+      propMimeEq MimeJSON (Proxy :: Proxy EditLabelOption)
+      propMimeEq MimeJSON (Proxy :: Proxy EditMilestoneOption)
+      propMimeEq MimeJSON (Proxy :: Proxy EditOrgOption)
+      propMimeEq MimeJSON (Proxy :: Proxy EditPullRequestOption)
+      propMimeEq MimeJSON (Proxy :: Proxy EditReactionOption)
+      propMimeEq MimeJSON (Proxy :: Proxy EditReleaseOption)
+      propMimeEq MimeJSON (Proxy :: Proxy EditRepoOption)
+      propMimeEq MimeJSON (Proxy :: Proxy EditTeamOption)
+      propMimeEq MimeJSON (Proxy :: Proxy EditUserOption)
+      propMimeEq MimeJSON (Proxy :: Proxy Email)
+      propMimeEq MimeJSON (Proxy :: Proxy ExternalTracker)
+      propMimeEq MimeJSON (Proxy :: Proxy ExternalWiki)
+      propMimeEq MimeJSON (Proxy :: Proxy FileCommitResponse)
+      propMimeEq MimeJSON (Proxy :: Proxy FileDeleteResponse)
+      propMimeEq MimeJSON (Proxy :: Proxy FileLinksResponse)
+      propMimeEq MimeJSON (Proxy :: Proxy FileResponse)
+      propMimeEq MimeJSON (Proxy :: Proxy GPGKey)
+      propMimeEq MimeJSON (Proxy :: Proxy GPGKeyEmail)
+      propMimeEq MimeJSON (Proxy :: Proxy GeneralAPISettings)
+      propMimeEq MimeJSON (Proxy :: Proxy GeneralAttachmentSettings)
+      propMimeEq MimeJSON (Proxy :: Proxy GeneralRepoSettings)
+      propMimeEq MimeJSON (Proxy :: Proxy GeneralUISettings)
+      propMimeEq MimeJSON (Proxy :: Proxy GenerateRepoOption)
+      propMimeEq MimeJSON (Proxy :: Proxy GitBlobResponse)
+      propMimeEq MimeJSON (Proxy :: Proxy GitEntry)
+      propMimeEq MimeJSON (Proxy :: Proxy GitHook)
+      propMimeEq MimeJSON (Proxy :: Proxy GitObject)
+      propMimeEq MimeJSON (Proxy :: Proxy GitTreeResponse)
+      propMimeEq MimeJSON (Proxy :: Proxy Hook)
+      propMimeEq MimeJSON (Proxy :: Proxy Identity)
+      propMimeEq MimeJSON (Proxy :: Proxy InternalTracker)
+      propMimeEq MimeJSON (Proxy :: Proxy Issue)
+      propMimeEq MimeJSON (Proxy :: Proxy IssueDeadline)
+      propMimeEq MimeJSON (Proxy :: Proxy IssueFormField)
+      propMimeEq MimeJSON (Proxy :: Proxy IssueLabelsOption)
+      propMimeEq MimeJSON (Proxy :: Proxy IssueTemplate)
+      propMimeEq MimeJSON (Proxy :: Proxy Label)
+      propMimeEq MimeJSON (Proxy :: Proxy MarkdownOption)
+      propMimeEq MimeJSON (Proxy :: Proxy MergePullRequestOption)
+      propMimeEq MimeJSON (Proxy :: Proxy MigrateRepoOptions)
+      propMimeEq MimeJSON (Proxy :: Proxy Milestone)
+      propMimeEq MimeJSON (Proxy :: Proxy NodeInfo)
+      propMimeEq MimeJSON (Proxy :: Proxy NodeInfoServices)
+      propMimeEq MimeJSON (Proxy :: Proxy NodeInfoSoftware)
+      propMimeEq MimeJSON (Proxy :: Proxy NodeInfoUsage)
+      propMimeEq MimeJSON (Proxy :: Proxy NodeInfoUsageUsers)
+      propMimeEq MimeJSON (Proxy :: Proxy Note)
+      propMimeEq MimeJSON (Proxy :: Proxy NotificationCount)
+      propMimeEq MimeJSON (Proxy :: Proxy NotificationSubject)
+      propMimeEq MimeJSON (Proxy :: Proxy NotificationThread)
+      propMimeEq MimeJSON (Proxy :: Proxy OAuth2Application)
+      propMimeEq MimeJSON (Proxy :: Proxy Organization)
+      propMimeEq MimeJSON (Proxy :: Proxy OrganizationPermissions)
+      propMimeEq MimeJSON (Proxy :: Proxy PRBranchInfo)
+      propMimeEq MimeJSON (Proxy :: Proxy Package)
+      propMimeEq MimeJSON (Proxy :: Proxy PackageFile)
+      propMimeEq MimeJSON (Proxy :: Proxy PayloadCommit)
+      propMimeEq MimeJSON (Proxy :: Proxy PayloadCommitVerification)
+      propMimeEq MimeJSON (Proxy :: Proxy PayloadUser)
+      propMimeEq MimeJSON (Proxy :: Proxy Permission)
+      propMimeEq MimeJSON (Proxy :: Proxy PublicKey)
+      propMimeEq MimeJSON (Proxy :: Proxy PullRequest)
+      propMimeEq MimeJSON (Proxy :: Proxy PullRequestMeta)
+      propMimeEq MimeJSON (Proxy :: Proxy PullReview)
+      propMimeEq MimeJSON (Proxy :: Proxy PullReviewComment)
+      propMimeEq MimeJSON (Proxy :: Proxy PullReviewRequestOptions)
+      propMimeEq MimeJSON (Proxy :: Proxy PushMirror)
+      propMimeEq MimeJSON (Proxy :: Proxy Reaction)
+      propMimeEq MimeJSON (Proxy :: Proxy Reference)
+      propMimeEq MimeJSON (Proxy :: Proxy Release)
+      propMimeEq MimeJSON (Proxy :: Proxy RepoCollaboratorPermission)
+      propMimeEq MimeJSON (Proxy :: Proxy RepoCommit)
+      propMimeEq MimeJSON (Proxy :: Proxy RepoTopicOptions)
+      propMimeEq MimeJSON (Proxy :: Proxy RepoTransfer)
+      propMimeEq MimeJSON (Proxy :: Proxy Repository)
+      propMimeEq MimeJSON (Proxy :: Proxy RepositoryMeta)
+      propMimeEq MimeJSON (Proxy :: Proxy SearchResults)
+      propMimeEq MimeJSON (Proxy :: Proxy ServerVersion)
+      propMimeEq MimeJSON (Proxy :: Proxy StopWatch)
+      propMimeEq MimeJSON (Proxy :: Proxy SubmitPullReviewOptions)
+      propMimeEq MimeJSON (Proxy :: Proxy Tag)
+      propMimeEq MimeJSON (Proxy :: Proxy Team)
+      propMimeEq MimeJSON (Proxy :: Proxy TeamSearch200Response)
+      propMimeEq MimeJSON (Proxy :: Proxy TimelineComment)
+      propMimeEq MimeJSON (Proxy :: Proxy TopicName)
+      propMimeEq MimeJSON (Proxy :: Proxy TopicResponse)
+      propMimeEq MimeJSON (Proxy :: Proxy TrackedTime)
+      propMimeEq MimeJSON (Proxy :: Proxy TransferRepoOption)
+      propMimeEq MimeJSON (Proxy :: Proxy UpdateFileOptions)
+      propMimeEq MimeJSON (Proxy :: Proxy User)
+      propMimeEq MimeJSON (Proxy :: Proxy UserHeatmapData)
+      propMimeEq MimeJSON (Proxy :: Proxy UserSearch200Response)
+      propMimeEq MimeJSON (Proxy :: Proxy UserSettings)
+      propMimeEq MimeJSON (Proxy :: Proxy UserSettingsOptions)
+      propMimeEq MimeJSON (Proxy :: Proxy WatchInfo)
+      propMimeEq MimeJSON (Proxy :: Proxy WikiCommit)
+      propMimeEq MimeJSON (Proxy :: Proxy WikiCommitList)
+      propMimeEq MimeJSON (Proxy :: Proxy WikiPage)
+      propMimeEq MimeJSON (Proxy :: Proxy WikiPageMetaData)
+      
