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


-- | Google Firebase Rules SDK.
--   
--   Creates and manages rules that determine when a Firebase Rules-enabled
--   service should permit a request.
--   
--   <i>Warning:</i> This is an experimental prototype/preview release
--   which is still under exploratory development and not intended for
--   public use, caveat emptor!
--   
--   This library is compatible with version <tt>v1</tt> of the API.
@package gogol-firebase-rules
@version 0.3.0


module Network.Google.FirebaseRules.Types

-- | Default request referring to version <tt>v1</tt> of the Firebase Rules
--   API. This contains the host and root path used as a starting point for
--   constructing service requests.
firebaseRulesService :: ServiceConfig

-- | View and administer all your Firebase data and settings
firebaseScope :: Proxy '["https://www.googleapis.com/auth/firebase"]

-- | View and manage your data across Google Cloud Platform services
cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]

-- | View all your Firebase data and settings
firebaseReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/firebase.readonly"]

-- | Position in the `Source` content including its line, column number,
--   and an index of the `File` in the `Source` message. Used for debug
--   purposes.
--   
--   <i>See:</i> <a>sourcePosition</a> smart constructor.
data SourcePosition

-- | Creates a value of <a>SourcePosition</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>spLine</a></li>
--   <li><a>spColumn</a></li>
--   <li><a>spFileName</a></li>
--   </ul>
sourcePosition :: SourcePosition

-- | Line number of the source fragment. 1-based.
spLine :: Lens' SourcePosition (Maybe Int32)

-- | First column on the source line associated with the source fragment.
spColumn :: Lens' SourcePosition (Maybe Int32)

-- | Name of the `File`.
spFileName :: Lens' SourcePosition (Maybe Text)

-- | A generic empty message that you can re-use to avoid defining
--   duplicated empty messages in your APIs. A typical example is to use it
--   as the request or the response type of an API method. For instance:
--   service Foo { rpc Bar(google.protobuf.Empty) returns
--   (google.protobuf.Empty); } The JSON representation for `Empty` is
--   empty JSON object `{}`.
--   
--   <i>See:</i> <a>empty</a> smart constructor.
data Empty

-- | Creates a value of <a>Empty</a> with the minimum fields required to
--   make a request.
empty :: Empty

-- | The response for FirebaseRulesService.ListReleases.
--   
--   <i>See:</i> <a>listReleasesResponse</a> smart constructor.
data ListReleasesResponse

-- | Creates a value of <a>ListReleasesResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lrrNextPageToken</a></li>
--   <li><a>lrrReleases</a></li>
--   </ul>
listReleasesResponse :: ListReleasesResponse

-- | The pagination token to retrieve the next page of results. If the
--   value is empty, no further results remain.
lrrNextPageToken :: Lens' ListReleasesResponse (Maybe Text)

-- | List of `Release` instances.
lrrReleases :: Lens' ListReleasesResponse [Release]

-- | The response for FirebaseRulesService.TestRuleset.
--   
--   <i>See:</i> <a>testRulesetResponse</a> smart constructor.
data TestRulesetResponse

-- | Creates a value of <a>TestRulesetResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>trrIssues</a></li>
--   </ul>
testRulesetResponse :: TestRulesetResponse

-- | Syntactic and semantic `Source` issues of varying severity. Issues of
--   `ERROR` severity will prevent tests from executing.
trrIssues :: Lens' TestRulesetResponse [Issue]

-- | `Release` is a named reference to a `Ruleset`. Once a `Release` refers
--   to a `Ruleset`, rules-enabled services will be able to enforce the
--   `Ruleset`.
--   
--   <i>See:</i> <a>release</a> smart constructor.
data Release

-- | Creates a value of <a>Release</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rRulesetName</a></li>
--   <li><a>rUpdateTime</a></li>
--   <li><a>rName</a></li>
--   <li><a>rCreateTime</a></li>
--   </ul>
release :: Release

-- | Name of the `Ruleset` referred to by this `Release`. The `Ruleset`
--   must exist the `Release` to be created.
rRulesetName :: Lens' Release (Maybe Text)

-- | Time the release was updated. 'OutputOnly
rUpdateTime :: Lens' Release (Maybe UTCTime)

-- | Resource name for the `Release`. `Release` names may be structured
--   `app1/prod/v2` or flat `app1_prod_v2` which affords developers a great
--   deal of flexibility in mapping the name to the style that best fits
--   their existing development practices. For example, a name could refer
--   to an environment, an app, a version, or some combination of three. In
--   the table below, for the project name `projects/foo`, the following
--   relative release paths show how flat and structured names might be
--   chosen to match a desired development / deployment strategy. Use Case
--   | Flat Name | Structured Name
--   -------------|---------------------|---------------- Environments |
--   releases/qa | releases/qa Apps | releases/app1_qa | releases/app1/qa
--   Versions | releases/app1_v2_qa | releases/app1/v2/qa The delimiter
--   between the release name path elements can be almost anything and it
--   should work equally well with the release name list filter, but in
--   many ways the structured paths provide a clearer picture of the
--   relationship between `Release` instances. Format:
--   `projects/{project_id}/releases/{release_id}`
rName :: Lens' Release (Maybe Text)

-- | Time the release was created. 'OutputOnly
rCreateTime :: Lens' Release (Maybe UTCTime)

-- | `Ruleset` is an immutable copy of `Source` with a globally unique
--   identifier and a creation time.
--   
--   <i>See:</i> <a>ruleset</a> smart constructor.
data Ruleset

-- | Creates a value of <a>Ruleset</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rulName</a></li>
--   <li><a>rulSource</a></li>
--   <li><a>rulCreateTime</a></li>
--   </ul>
ruleset :: Ruleset

-- | Name of the `Ruleset`. The ruleset_id is auto generated by the
--   service. Format: `projects/{project_id}/rulesets/{ruleset_id}`
--   'OutputOnly
rulName :: Lens' Ruleset (Maybe Text)

-- | `Source` for the `Ruleset`.
rulSource :: Lens' Ruleset (Maybe Source)

-- | Time the `Ruleset` was created. 'OutputOnly
rulCreateTime :: Lens' Ruleset (Maybe UTCTime)

-- | V1 error format.
data Xgafv

-- | <tt>1</tt> v1 error format
X1 :: Xgafv

-- | <tt>2</tt> v2 error format
X2 :: Xgafv

-- | The severity of the issue.
data IssueSeverity

-- | <tt>SEVERITY_UNSPECIFIED</tt> An unspecified severity.
SeverityUnspecified :: IssueSeverity

-- | <tt>DEPRECATION</tt> Deprecation issue for statements and method that
--   may no longer be supported or maintained.
Deprecation :: IssueSeverity

-- | <tt>WARNING</tt> Warnings such as: unused variables.
Warning :: IssueSeverity

-- | <tt>ERROR</tt> Errors such as: unmatched curly braces or variable
--   redefinition.
Error' :: IssueSeverity

-- | `Source` is one or more `File` messages comprising a logical set of
--   rules.
--   
--   <i>See:</i> <a>source</a> smart constructor.
data Source

-- | Creates a value of <a>Source</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sFiles</a></li>
--   </ul>
source :: Source

-- | `File` set constituting the `Source` bundle.
sFiles :: Lens' Source [File]

-- | The request for FirebaseRulesService.TestRuleset.
--   
--   <i>See:</i> <a>testRulesetRequest</a> smart constructor.
data TestRulesetRequest

-- | Creates a value of <a>TestRulesetRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>trrSource</a></li>
--   </ul>
testRulesetRequest :: TestRulesetRequest

-- | `Source` to be checked for correctness.
trrSource :: Lens' TestRulesetRequest (Maybe Source)

-- | `File` containing source content.
--   
--   <i>See:</i> <a>file</a> smart constructor.
data File

-- | Creates a value of <a>File</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fFingerprint</a></li>
--   <li><a>fContent</a></li>
--   <li><a>fName</a></li>
--   </ul>
file :: File

-- | Fingerprint (e.g. github sha) associated with the `File`.
fFingerprint :: Lens' File (Maybe ByteString)

-- | Textual Content.
fContent :: Lens' File (Maybe Text)

-- | File name.
fName :: Lens' File (Maybe Text)

-- | The response for FirebaseRulesService.ListRulesets
--   
--   <i>See:</i> <a>listRulesetsResponse</a> smart constructor.
data ListRulesetsResponse

-- | Creates a value of <a>ListRulesetsResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lRulesets</a></li>
--   <li><a>lNextPageToken</a></li>
--   </ul>
listRulesetsResponse :: ListRulesetsResponse

-- | List of `Ruleset` instances.
lRulesets :: Lens' ListRulesetsResponse [Ruleset]

-- | The pagination token to retrieve the next page of results. If the
--   value is empty, no further results remain.
lNextPageToken :: Lens' ListRulesetsResponse (Maybe Text)

-- | Issues include warnings, errors, and deprecation notices.
--   
--   <i>See:</i> <a>issue</a> smart constructor.
data Issue

-- | Creates a value of <a>Issue</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iSourcePosition</a></li>
--   <li><a>iSeverity</a></li>
--   <li><a>iDescription</a></li>
--   </ul>
issue :: Issue

-- | Position of the issue in the `Source`.
iSourcePosition :: Lens' Issue (Maybe SourcePosition)

-- | The severity of the issue.
iSeverity :: Lens' Issue (Maybe IssueSeverity)

-- | Short error description.
iDescription :: Lens' Issue (Maybe Text)


-- | Create a `Release`. Release names should reflect the developer's
--   deployment practices. For example, the release name may include the
--   environment name, application name, application version, or any other
--   name meaningful to the developer. Once a `Release` refers to a
--   `Ruleset`, the rules can be enforced by Firebase Rules-enabled
--   services. More than one `Release` may be 'live' concurrently. Consider
--   the following three `Release` names for `projects/foo` and the
--   `Ruleset` to which they refer. Release Name | Ruleset Name
--   --------------------------------|-------------
--   projects/foo/releases/prod | projects/foo/rulesets/uuid123
--   projects/foo/releases/prod/beta | projects/foo/rulesets/uuid123
--   projects/foo/releases/prod/v23 | projects/foo/rulesets/uuid456 The
--   table reflects the `Ruleset` rollout in progress. The `prod` and
--   `prod/beta` releases refer to the same `Ruleset`. However, `prod/v23`
--   refers to a new `Ruleset`. The `Ruleset` reference for a `Release` may
--   be updated using the UpdateRelease method, and the custom `Release`
--   name may be referenced by specifying the
--   `X-Firebase-Rules-Release-Name` header.
--   
--   <i>See:</i> <a>Firebase Rules API Reference</a> for
--   <tt>firebaserules.projects.releases.create</tt>.
module Network.Google.Resource.FirebaseRules.Projects.Releases.Create

-- | A resource alias for <tt>firebaserules.projects.releases.create</tt>
--   method which the <a>ProjectsReleasesCreate</a> request conforms to.
type ProjectsReleasesCreateResource = "v1" :> (Capture "name" Text :> ("releases" :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Release :> Post '[JSON] Release)))))))))))

-- | Creates a value of <a>ProjectsReleasesCreate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prcrXgafv</a></li>
--   <li><a>prcrUploadProtocol</a></li>
--   <li><a>prcrPp</a></li>
--   <li><a>prcrAccessToken</a></li>
--   <li><a>prcrUploadType</a></li>
--   <li><a>prcrPayload</a></li>
--   <li><a>prcrBearerToken</a></li>
--   <li><a>prcrName</a></li>
--   <li><a>prcrCallback</a></li>
--   </ul>
projectsReleasesCreate :: Release -> Text -> ProjectsReleasesCreate

-- | Create a `Release`. Release names should reflect the developer's
--   deployment practices. For example, the release name may include the
--   environment name, application name, application version, or any other
--   name meaningful to the developer. Once a `Release` refers to a
--   `Ruleset`, the rules can be enforced by Firebase Rules-enabled
--   services. More than one `Release` may be 'live' concurrently. Consider
--   the following three `Release` names for `projects/foo` and the
--   `Ruleset` to which they refer. Release Name | Ruleset Name
--   --------------------------------|-------------
--   projects/foo/releases/prod | projects/foo/rulesets/uuid123
--   projects/foo/releases/prod/beta | projects/foo/rulesets/uuid123
--   projects/foo/releases/prod/v23 | projects/foo/rulesets/uuid456 The
--   table reflects the `Ruleset` rollout in progress. The `prod` and
--   `prod/beta` releases refer to the same `Ruleset`. However, `prod/v23`
--   refers to a new `Ruleset`. The `Ruleset` reference for a `Release` may
--   be updated using the UpdateRelease method, and the custom `Release`
--   name may be referenced by specifying the
--   `X-Firebase-Rules-Release-Name` header.
--   
--   <i>See:</i> <a>projectsReleasesCreate</a> smart constructor.
data ProjectsReleasesCreate

-- | V1 error format.
prcrXgafv :: Lens' ProjectsReleasesCreate (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
prcrUploadProtocol :: Lens' ProjectsReleasesCreate (Maybe Text)

-- | Pretty-print response.
prcrPp :: Lens' ProjectsReleasesCreate Bool

-- | OAuth access token.
prcrAccessToken :: Lens' ProjectsReleasesCreate (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
prcrUploadType :: Lens' ProjectsReleasesCreate (Maybe Text)

-- | Multipart request metadata.
prcrPayload :: Lens' ProjectsReleasesCreate Release

-- | OAuth bearer token.
prcrBearerToken :: Lens' ProjectsReleasesCreate (Maybe Text)

-- | Resource name for the project which owns this `Release`. Format:
--   `projects/{project_id}`
prcrName :: Lens' ProjectsReleasesCreate Text

-- | JSONP
prcrCallback :: Lens' ProjectsReleasesCreate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.FirebaseRules.Projects.Releases.Create.ProjectsReleasesCreate
instance Data.Data.Data Network.Google.Resource.FirebaseRules.Projects.Releases.Create.ProjectsReleasesCreate
instance GHC.Show.Show Network.Google.Resource.FirebaseRules.Projects.Releases.Create.ProjectsReleasesCreate
instance GHC.Classes.Eq Network.Google.Resource.FirebaseRules.Projects.Releases.Create.ProjectsReleasesCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.FirebaseRules.Projects.Releases.Create.ProjectsReleasesCreate


-- | Delete a `Release` by resource name.
--   
--   <i>See:</i> <a>Firebase Rules API Reference</a> for
--   <tt>firebaserules.projects.releases.delete</tt>.
module Network.Google.Resource.FirebaseRules.Projects.Releases.Delete

-- | A resource alias for <tt>firebaserules.projects.releases.delete</tt>
--   method which the <a>ProjectsReleasesDelete</a> request conforms to.
type ProjectsReleasesDeleteResource = "v1" :> (Capture "name" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Empty)))))))))

-- | Creates a value of <a>ProjectsReleasesDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prdXgafv</a></li>
--   <li><a>prdUploadProtocol</a></li>
--   <li><a>prdPp</a></li>
--   <li><a>prdAccessToken</a></li>
--   <li><a>prdUploadType</a></li>
--   <li><a>prdBearerToken</a></li>
--   <li><a>prdName</a></li>
--   <li><a>prdCallback</a></li>
--   </ul>
projectsReleasesDelete :: Text -> ProjectsReleasesDelete

-- | Delete a `Release` by resource name.
--   
--   <i>See:</i> <a>projectsReleasesDelete</a> smart constructor.
data ProjectsReleasesDelete

-- | V1 error format.
prdXgafv :: Lens' ProjectsReleasesDelete (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
prdUploadProtocol :: Lens' ProjectsReleasesDelete (Maybe Text)

-- | Pretty-print response.
prdPp :: Lens' ProjectsReleasesDelete Bool

-- | OAuth access token.
prdAccessToken :: Lens' ProjectsReleasesDelete (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
prdUploadType :: Lens' ProjectsReleasesDelete (Maybe Text)

-- | OAuth bearer token.
prdBearerToken :: Lens' ProjectsReleasesDelete (Maybe Text)

-- | Resource name for the `Release` to delete. Format:
--   `projects/{project_id}/releases/{release_id}`
prdName :: Lens' ProjectsReleasesDelete Text

-- | JSONP
prdCallback :: Lens' ProjectsReleasesDelete (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.FirebaseRules.Projects.Releases.Delete.ProjectsReleasesDelete
instance Data.Data.Data Network.Google.Resource.FirebaseRules.Projects.Releases.Delete.ProjectsReleasesDelete
instance GHC.Show.Show Network.Google.Resource.FirebaseRules.Projects.Releases.Delete.ProjectsReleasesDelete
instance GHC.Classes.Eq Network.Google.Resource.FirebaseRules.Projects.Releases.Delete.ProjectsReleasesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.FirebaseRules.Projects.Releases.Delete.ProjectsReleasesDelete


-- | Get a `Release` by name.
--   
--   <i>See:</i> <a>Firebase Rules API Reference</a> for
--   <tt>firebaserules.projects.releases.get</tt>.
module Network.Google.Resource.FirebaseRules.Projects.Releases.Get

-- | A resource alias for <tt>firebaserules.projects.releases.get</tt>
--   method which the <a>ProjectsReleasesGet</a> request conforms to.
type ProjectsReleasesGetResource = "v1" :> (Capture "name" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Release)))))))))

-- | Creates a value of <a>ProjectsReleasesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pXgafv</a></li>
--   <li><a>pUploadProtocol</a></li>
--   <li><a>pPp</a></li>
--   <li><a>pAccessToken</a></li>
--   <li><a>pUploadType</a></li>
--   <li><a>pBearerToken</a></li>
--   <li><a>pName</a></li>
--   <li><a>pCallback</a></li>
--   </ul>
projectsReleasesGet :: Text -> ProjectsReleasesGet

-- | Get a `Release` by name.
--   
--   <i>See:</i> <a>projectsReleasesGet</a> smart constructor.
data ProjectsReleasesGet

-- | V1 error format.
pXgafv :: Lens' ProjectsReleasesGet (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
pUploadProtocol :: Lens' ProjectsReleasesGet (Maybe Text)

-- | Pretty-print response.
pPp :: Lens' ProjectsReleasesGet Bool

-- | OAuth access token.
pAccessToken :: Lens' ProjectsReleasesGet (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
pUploadType :: Lens' ProjectsReleasesGet (Maybe Text)

-- | OAuth bearer token.
pBearerToken :: Lens' ProjectsReleasesGet (Maybe Text)

-- | Resource name of the `Release`. Format:
--   `projects/{project_id}/releases/{release_id}`
pName :: Lens' ProjectsReleasesGet Text

-- | JSONP
pCallback :: Lens' ProjectsReleasesGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.FirebaseRules.Projects.Releases.Get.ProjectsReleasesGet
instance Data.Data.Data Network.Google.Resource.FirebaseRules.Projects.Releases.Get.ProjectsReleasesGet
instance GHC.Show.Show Network.Google.Resource.FirebaseRules.Projects.Releases.Get.ProjectsReleasesGet
instance GHC.Classes.Eq Network.Google.Resource.FirebaseRules.Projects.Releases.Get.ProjectsReleasesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.FirebaseRules.Projects.Releases.Get.ProjectsReleasesGet


-- | List the `Release` values for a project. This list may optionally be
--   filtered by `Release` name or `Ruleset` id or both.
--   
--   <i>See:</i> <a>Firebase Rules API Reference</a> for
--   <tt>firebaserules.projects.releases.list</tt>.
module Network.Google.Resource.FirebaseRules.Projects.Releases.List

-- | A resource alias for <tt>firebaserules.projects.releases.list</tt>
--   method which the <a>ProjectsReleasesList</a> request conforms to.
type ProjectsReleasesListResource = "v1" :> (Capture "name" Text :> ("releases" :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "pageSize" (Textual Int32) :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ListReleasesResponse)))))))))))))

-- | Creates a value of <a>ProjectsReleasesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prlrXgafv</a></li>
--   <li><a>prlrUploadProtocol</a></li>
--   <li><a>prlrPp</a></li>
--   <li><a>prlrAccessToken</a></li>
--   <li><a>prlrUploadType</a></li>
--   <li><a>prlrBearerToken</a></li>
--   <li><a>prlrName</a></li>
--   <li><a>prlrFilter</a></li>
--   <li><a>prlrPageToken</a></li>
--   <li><a>prlrPageSize</a></li>
--   <li><a>prlrCallback</a></li>
--   </ul>
projectsReleasesList :: Text -> ProjectsReleasesList

-- | List the `Release` values for a project. This list may optionally be
--   filtered by `Release` name or `Ruleset` id or both.
--   
--   <i>See:</i> <a>projectsReleasesList</a> smart constructor.
data ProjectsReleasesList

-- | V1 error format.
prlrXgafv :: Lens' ProjectsReleasesList (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
prlrUploadProtocol :: Lens' ProjectsReleasesList (Maybe Text)

-- | Pretty-print response.
prlrPp :: Lens' ProjectsReleasesList Bool

-- | OAuth access token.
prlrAccessToken :: Lens' ProjectsReleasesList (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
prlrUploadType :: Lens' ProjectsReleasesList (Maybe Text)

-- | OAuth bearer token.
prlrBearerToken :: Lens' ProjectsReleasesList (Maybe Text)

-- | Resource name for the project. Format: `projects/{project_id}`
prlrName :: Lens' ProjectsReleasesList Text

-- | `Release` filter. The list method supports filters with restrictions
--   on the `Release` `name` and also on the `Ruleset` `ruleset_name`.
--   Example 1) A filter of 'name=prod*' might return `Release`s with names
--   within 'projects/foo' prefixed with 'prod': Name | Ruleset Name
--   ------------------------------|-------------
--   projects/foo/releases/prod | projects/foo/rulesets/uuid1234
--   projects/foo/releases/prod/v1 | projects/foo/rulesets/uuid1234
--   projects/foo/releases/prod/v2 | projects/foo/rulesets/uuid8888 Example
--   2) A filter of `name=prod* ruleset_name=uuid1234` would return only
--   `Release` instances for 'projects/foo' with names prefixed with 'prod'
--   referring to the same `Ruleset` name of 'uuid1234': Name | Ruleset
--   Name ------------------------------|-------------
--   projects/foo/releases/prod | projects/foo/rulesets/1234
--   projects/foo/releases/prod/v1 | projects/foo/rulesets/1234 In the
--   examples, the filter parameters refer to the search filters for
--   release and ruleset names are relative to the project releases and
--   rulesets collections. Fully qualified prefixed may also be used. e.g.
--   `name=projects/foo/releases/prod*
--   ruleset_name=projects/foo/rulesets/uuid1`
prlrFilter :: Lens' ProjectsReleasesList (Maybe Text)

-- | Next page token for the next batch of `Release` instances.
prlrPageToken :: Lens' ProjectsReleasesList (Maybe Text)

-- | Page size to load. Maximum of 100. Defaults to 10. Note: `page_size`
--   is just a hint and the service may choose to load less than
--   `page_size` due to the size of the output. To traverse all of the
--   releases, caller should iterate until the `page_token` is empty.
prlrPageSize :: Lens' ProjectsReleasesList (Maybe Int32)

-- | JSONP
prlrCallback :: Lens' ProjectsReleasesList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.FirebaseRules.Projects.Releases.List.ProjectsReleasesList
instance Data.Data.Data Network.Google.Resource.FirebaseRules.Projects.Releases.List.ProjectsReleasesList
instance GHC.Show.Show Network.Google.Resource.FirebaseRules.Projects.Releases.List.ProjectsReleasesList
instance GHC.Classes.Eq Network.Google.Resource.FirebaseRules.Projects.Releases.List.ProjectsReleasesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.FirebaseRules.Projects.Releases.List.ProjectsReleasesList


-- | Update a `Release`. Only updates to the `ruleset_name` field will be
--   honored. `Release` rename is not supported. To create a `Release` use
--   the CreateRelease method instead.
--   
--   <i>See:</i> <a>Firebase Rules API Reference</a> for
--   <tt>firebaserules.projects.releases.update</tt>.
module Network.Google.Resource.FirebaseRules.Projects.Releases.Update

-- | A resource alias for <tt>firebaserules.projects.releases.update</tt>
--   method which the <a>ProjectsReleasesUpdate</a> request conforms to.
type ProjectsReleasesUpdateResource = "v1" :> (Capture "name" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Release :> Put '[JSON] Release))))))))))

-- | Creates a value of <a>ProjectsReleasesUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pruXgafv</a></li>
--   <li><a>pruUploadProtocol</a></li>
--   <li><a>pruPp</a></li>
--   <li><a>pruAccessToken</a></li>
--   <li><a>pruUploadType</a></li>
--   <li><a>pruPayload</a></li>
--   <li><a>pruBearerToken</a></li>
--   <li><a>pruName</a></li>
--   <li><a>pruCallback</a></li>
--   </ul>
projectsReleasesUpdate :: Release -> Text -> ProjectsReleasesUpdate

-- | Update a `Release`. Only updates to the `ruleset_name` field will be
--   honored. `Release` rename is not supported. To create a `Release` use
--   the CreateRelease method instead.
--   
--   <i>See:</i> <a>projectsReleasesUpdate</a> smart constructor.
data ProjectsReleasesUpdate

-- | V1 error format.
pruXgafv :: Lens' ProjectsReleasesUpdate (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
pruUploadProtocol :: Lens' ProjectsReleasesUpdate (Maybe Text)

-- | Pretty-print response.
pruPp :: Lens' ProjectsReleasesUpdate Bool

-- | OAuth access token.
pruAccessToken :: Lens' ProjectsReleasesUpdate (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
pruUploadType :: Lens' ProjectsReleasesUpdate (Maybe Text)

-- | Multipart request metadata.
pruPayload :: Lens' ProjectsReleasesUpdate Release

-- | OAuth bearer token.
pruBearerToken :: Lens' ProjectsReleasesUpdate (Maybe Text)

-- | Resource name for the `Release`. `Release` names may be structured
--   `app1/prod/v2` or flat `app1_prod_v2` which affords developers a great
--   deal of flexibility in mapping the name to the style that best fits
--   their existing development practices. For example, a name could refer
--   to an environment, an app, a version, or some combination of three. In
--   the table below, for the project name `projects/foo`, the following
--   relative release paths show how flat and structured names might be
--   chosen to match a desired development / deployment strategy. Use Case
--   | Flat Name | Structured Name
--   -------------|---------------------|---------------- Environments |
--   releases/qa | releases/qa Apps | releases/app1_qa | releases/app1/qa
--   Versions | releases/app1_v2_qa | releases/app1/v2/qa The delimiter
--   between the release name path elements can be almost anything and it
--   should work equally well with the release name list filter, but in
--   many ways the structured paths provide a clearer picture of the
--   relationship between `Release` instances. Format:
--   `projects/{project_id}/releases/{release_id}`
pruName :: Lens' ProjectsReleasesUpdate Text

-- | JSONP
pruCallback :: Lens' ProjectsReleasesUpdate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.FirebaseRules.Projects.Releases.Update.ProjectsReleasesUpdate
instance Data.Data.Data Network.Google.Resource.FirebaseRules.Projects.Releases.Update.ProjectsReleasesUpdate
instance GHC.Show.Show Network.Google.Resource.FirebaseRules.Projects.Releases.Update.ProjectsReleasesUpdate
instance GHC.Classes.Eq Network.Google.Resource.FirebaseRules.Projects.Releases.Update.ProjectsReleasesUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.FirebaseRules.Projects.Releases.Update.ProjectsReleasesUpdate


-- | Create a `Ruleset` from `Source`. The `Ruleset` is given a unique
--   generated name which is returned to the caller. `Source` containing
--   syntactic or semantics errors will result in an error response
--   indicating the first error encountered. For a detailed view of
--   `Source` issues, use TestRuleset.
--   
--   <i>See:</i> <a>Firebase Rules API Reference</a> for
--   <tt>firebaserules.projects.rulesets.create</tt>.
module Network.Google.Resource.FirebaseRules.Projects.Rulesets.Create

-- | A resource alias for <tt>firebaserules.projects.rulesets.create</tt>
--   method which the <a>ProjectsRulesetsCreate</a> request conforms to.
type ProjectsRulesetsCreateResource = "v1" :> (Capture "name" Text :> ("rulesets" :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Ruleset :> Post '[JSON] Ruleset)))))))))))

-- | Creates a value of <a>ProjectsRulesetsCreate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prcXgafv</a></li>
--   <li><a>prcUploadProtocol</a></li>
--   <li><a>prcPp</a></li>
--   <li><a>prcAccessToken</a></li>
--   <li><a>prcUploadType</a></li>
--   <li><a>prcPayload</a></li>
--   <li><a>prcBearerToken</a></li>
--   <li><a>prcName</a></li>
--   <li><a>prcCallback</a></li>
--   </ul>
projectsRulesetsCreate :: Ruleset -> Text -> ProjectsRulesetsCreate

-- | Create a `Ruleset` from `Source`. The `Ruleset` is given a unique
--   generated name which is returned to the caller. `Source` containing
--   syntactic or semantics errors will result in an error response
--   indicating the first error encountered. For a detailed view of
--   `Source` issues, use TestRuleset.
--   
--   <i>See:</i> <a>projectsRulesetsCreate</a> smart constructor.
data ProjectsRulesetsCreate

-- | V1 error format.
prcXgafv :: Lens' ProjectsRulesetsCreate (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
prcUploadProtocol :: Lens' ProjectsRulesetsCreate (Maybe Text)

-- | Pretty-print response.
prcPp :: Lens' ProjectsRulesetsCreate Bool

-- | OAuth access token.
prcAccessToken :: Lens' ProjectsRulesetsCreate (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
prcUploadType :: Lens' ProjectsRulesetsCreate (Maybe Text)

-- | Multipart request metadata.
prcPayload :: Lens' ProjectsRulesetsCreate Ruleset

-- | OAuth bearer token.
prcBearerToken :: Lens' ProjectsRulesetsCreate (Maybe Text)

-- | Resource name for Project which owns this `Ruleset`. Format:
--   `projects/{project_id}`
prcName :: Lens' ProjectsRulesetsCreate Text

-- | JSONP
prcCallback :: Lens' ProjectsRulesetsCreate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.FirebaseRules.Projects.Rulesets.Create.ProjectsRulesetsCreate
instance Data.Data.Data Network.Google.Resource.FirebaseRules.Projects.Rulesets.Create.ProjectsRulesetsCreate
instance GHC.Show.Show Network.Google.Resource.FirebaseRules.Projects.Rulesets.Create.ProjectsRulesetsCreate
instance GHC.Classes.Eq Network.Google.Resource.FirebaseRules.Projects.Rulesets.Create.ProjectsRulesetsCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.FirebaseRules.Projects.Rulesets.Create.ProjectsRulesetsCreate


-- | Delete a `Ruleset` by resource name. If the `Ruleset` is referenced by
--   a `Release` the operation will fail.
--   
--   <i>See:</i> <a>Firebase Rules API Reference</a> for
--   <tt>firebaserules.projects.rulesets.delete</tt>.
module Network.Google.Resource.FirebaseRules.Projects.Rulesets.Delete

-- | A resource alias for <tt>firebaserules.projects.rulesets.delete</tt>
--   method which the <a>ProjectsRulesetsDelete</a> request conforms to.
type ProjectsRulesetsDeleteResource = "v1" :> (Capture "name" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Empty)))))))))

-- | Creates a value of <a>ProjectsRulesetsDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>proXgafv</a></li>
--   <li><a>proUploadProtocol</a></li>
--   <li><a>proPp</a></li>
--   <li><a>proAccessToken</a></li>
--   <li><a>proUploadType</a></li>
--   <li><a>proBearerToken</a></li>
--   <li><a>proName</a></li>
--   <li><a>proCallback</a></li>
--   </ul>
projectsRulesetsDelete :: Text -> ProjectsRulesetsDelete

-- | Delete a `Ruleset` by resource name. If the `Ruleset` is referenced by
--   a `Release` the operation will fail.
--   
--   <i>See:</i> <a>projectsRulesetsDelete</a> smart constructor.
data ProjectsRulesetsDelete

-- | V1 error format.
proXgafv :: Lens' ProjectsRulesetsDelete (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
proUploadProtocol :: Lens' ProjectsRulesetsDelete (Maybe Text)

-- | Pretty-print response.
proPp :: Lens' ProjectsRulesetsDelete Bool

-- | OAuth access token.
proAccessToken :: Lens' ProjectsRulesetsDelete (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
proUploadType :: Lens' ProjectsRulesetsDelete (Maybe Text)

-- | OAuth bearer token.
proBearerToken :: Lens' ProjectsRulesetsDelete (Maybe Text)

-- | Resource name for the ruleset to delete. Format:
--   `projects/{project_id}/rulesets/{ruleset_id}`
proName :: Lens' ProjectsRulesetsDelete Text

-- | JSONP
proCallback :: Lens' ProjectsRulesetsDelete (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.FirebaseRules.Projects.Rulesets.Delete.ProjectsRulesetsDelete
instance Data.Data.Data Network.Google.Resource.FirebaseRules.Projects.Rulesets.Delete.ProjectsRulesetsDelete
instance GHC.Show.Show Network.Google.Resource.FirebaseRules.Projects.Rulesets.Delete.ProjectsRulesetsDelete
instance GHC.Classes.Eq Network.Google.Resource.FirebaseRules.Projects.Rulesets.Delete.ProjectsRulesetsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.FirebaseRules.Projects.Rulesets.Delete.ProjectsRulesetsDelete


-- | Get a `Ruleset` by name including the full `Source` contents.
--   
--   <i>See:</i> <a>Firebase Rules API Reference</a> for
--   <tt>firebaserules.projects.rulesets.get</tt>.
module Network.Google.Resource.FirebaseRules.Projects.Rulesets.Get

-- | A resource alias for <tt>firebaserules.projects.rulesets.get</tt>
--   method which the <a>ProjectsRulesetsGet</a> request conforms to.
type ProjectsRulesetsGetResource = "v1" :> (Capture "name" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Ruleset)))))))))

-- | Creates a value of <a>ProjectsRulesetsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prgXgafv</a></li>
--   <li><a>prgUploadProtocol</a></li>
--   <li><a>prgPp</a></li>
--   <li><a>prgAccessToken</a></li>
--   <li><a>prgUploadType</a></li>
--   <li><a>prgBearerToken</a></li>
--   <li><a>prgName</a></li>
--   <li><a>prgCallback</a></li>
--   </ul>
projectsRulesetsGet :: Text -> ProjectsRulesetsGet

-- | Get a `Ruleset` by name including the full `Source` contents.
--   
--   <i>See:</i> <a>projectsRulesetsGet</a> smart constructor.
data ProjectsRulesetsGet

-- | V1 error format.
prgXgafv :: Lens' ProjectsRulesetsGet (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
prgUploadProtocol :: Lens' ProjectsRulesetsGet (Maybe Text)

-- | Pretty-print response.
prgPp :: Lens' ProjectsRulesetsGet Bool

-- | OAuth access token.
prgAccessToken :: Lens' ProjectsRulesetsGet (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
prgUploadType :: Lens' ProjectsRulesetsGet (Maybe Text)

-- | OAuth bearer token.
prgBearerToken :: Lens' ProjectsRulesetsGet (Maybe Text)

-- | Resource name for the ruleset to get. Format:
--   `projects/{project_id}/rulesets/{ruleset_id}`
prgName :: Lens' ProjectsRulesetsGet Text

-- | JSONP
prgCallback :: Lens' ProjectsRulesetsGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.FirebaseRules.Projects.Rulesets.Get.ProjectsRulesetsGet
instance Data.Data.Data Network.Google.Resource.FirebaseRules.Projects.Rulesets.Get.ProjectsRulesetsGet
instance GHC.Show.Show Network.Google.Resource.FirebaseRules.Projects.Rulesets.Get.ProjectsRulesetsGet
instance GHC.Classes.Eq Network.Google.Resource.FirebaseRules.Projects.Rulesets.Get.ProjectsRulesetsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.FirebaseRules.Projects.Rulesets.Get.ProjectsRulesetsGet


-- | List `Ruleset` metadata only and optionally filter the results by
--   Ruleset name. The full `Source` contents of a `Ruleset` may be
--   retrieved with GetRuleset.
--   
--   <i>See:</i> <a>Firebase Rules API Reference</a> for
--   <tt>firebaserules.projects.rulesets.list</tt>.
module Network.Google.Resource.FirebaseRules.Projects.Rulesets.List

-- | A resource alias for <tt>firebaserules.projects.rulesets.list</tt>
--   method which the <a>ProjectsRulesetsList</a> request conforms to.
type ProjectsRulesetsListResource = "v1" :> (Capture "name" Text :> ("rulesets" :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "pageToken" Text :> (QueryParam "pageSize" (Textual Int32) :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ListRulesetsResponse))))))))))))

-- | Creates a value of <a>ProjectsRulesetsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prlXgafv</a></li>
--   <li><a>prlUploadProtocol</a></li>
--   <li><a>prlPp</a></li>
--   <li><a>prlAccessToken</a></li>
--   <li><a>prlUploadType</a></li>
--   <li><a>prlBearerToken</a></li>
--   <li><a>prlName</a></li>
--   <li><a>prlPageToken</a></li>
--   <li><a>prlPageSize</a></li>
--   <li><a>prlCallback</a></li>
--   </ul>
projectsRulesetsList :: Text -> ProjectsRulesetsList

-- | List `Ruleset` metadata only and optionally filter the results by
--   Ruleset name. The full `Source` contents of a `Ruleset` may be
--   retrieved with GetRuleset.
--   
--   <i>See:</i> <a>projectsRulesetsList</a> smart constructor.
data ProjectsRulesetsList

-- | V1 error format.
prlXgafv :: Lens' ProjectsRulesetsList (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
prlUploadProtocol :: Lens' ProjectsRulesetsList (Maybe Text)

-- | Pretty-print response.
prlPp :: Lens' ProjectsRulesetsList Bool

-- | OAuth access token.
prlAccessToken :: Lens' ProjectsRulesetsList (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
prlUploadType :: Lens' ProjectsRulesetsList (Maybe Text)

-- | OAuth bearer token.
prlBearerToken :: Lens' ProjectsRulesetsList (Maybe Text)

-- | Resource name for the project. Format: `projects/{project_id}`
prlName :: Lens' ProjectsRulesetsList Text

-- | Next page token for loading the next batch of `Ruleset` instances.
prlPageToken :: Lens' ProjectsRulesetsList (Maybe Text)

-- | Page size to load. Maximum of 100. Defaults to 10. Note: `page_size`
--   is just a hint and the service may choose to load less than
--   `page_size` due to the size of the output. To traverse all of the
--   releases, caller should iterate until the `page_token` is empty.
prlPageSize :: Lens' ProjectsRulesetsList (Maybe Int32)

-- | JSONP
prlCallback :: Lens' ProjectsRulesetsList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.FirebaseRules.Projects.Rulesets.List.ProjectsRulesetsList
instance Data.Data.Data Network.Google.Resource.FirebaseRules.Projects.Rulesets.List.ProjectsRulesetsList
instance GHC.Show.Show Network.Google.Resource.FirebaseRules.Projects.Rulesets.List.ProjectsRulesetsList
instance GHC.Classes.Eq Network.Google.Resource.FirebaseRules.Projects.Rulesets.List.ProjectsRulesetsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.FirebaseRules.Projects.Rulesets.List.ProjectsRulesetsList


-- | Test `Source` for syntactic and semantic correctness. Issues present
--   in the rules, if any, will be returned to the caller with a
--   description, severity, and source location. The test method will
--   typically be executed with a developer provided `Source`, but if
--   regression testing is desired, this method may be executed against a
--   `Ruleset` resource name and the `Source` will be retrieved from the
--   persisted `Ruleset`. The following is an example of `Source` that
--   permits users to upload images to a bucket bearing their user id and
--   matching the correct metadata: _*Example*_ // Users are allowed to
--   subscribe and unsubscribe to the blog. service firebase.storage {
--   match /users/{userId}/images/{imageName} { allow write: if userId ==
--   request.userId &amp;&amp; (imageName.endsWith('.png') ||
--   imageName.endsWith('.jpg')) &amp;&amp;
--   resource.mimeType.startsWith('image/') } }
--   
--   <i>See:</i> <a>Firebase Rules API Reference</a> for
--   <tt>firebaserules.projects.test</tt>.
module Network.Google.Resource.FirebaseRules.Projects.Test

-- | A resource alias for <tt>firebaserules.projects.test</tt> method which
--   the <a>ProjectsTest</a> request conforms to.
type ProjectsTestResource = "v1" :> (CaptureMode "name" "test" Text :> (QueryParam "$.xgafv" Xgafv :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TestRulesetRequest :> Post '[JSON] TestRulesetResponse))))))))))

-- | Creates a value of <a>ProjectsTest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ptXgafv</a></li>
--   <li><a>ptUploadProtocol</a></li>
--   <li><a>ptPp</a></li>
--   <li><a>ptAccessToken</a></li>
--   <li><a>ptUploadType</a></li>
--   <li><a>ptPayload</a></li>
--   <li><a>ptBearerToken</a></li>
--   <li><a>ptName</a></li>
--   <li><a>ptCallback</a></li>
--   </ul>
projectsTest :: TestRulesetRequest -> Text -> ProjectsTest

-- | Test `Source` for syntactic and semantic correctness. Issues present
--   in the rules, if any, will be returned to the caller with a
--   description, severity, and source location. The test method will
--   typically be executed with a developer provided `Source`, but if
--   regression testing is desired, this method may be executed against a
--   `Ruleset` resource name and the `Source` will be retrieved from the
--   persisted `Ruleset`. The following is an example of `Source` that
--   permits users to upload images to a bucket bearing their user id and
--   matching the correct metadata: _*Example*_ // Users are allowed to
--   subscribe and unsubscribe to the blog. service firebase.storage {
--   match /users/{userId}/images/{imageName} { allow write: if userId ==
--   request.userId &amp;&amp; (imageName.endsWith('.png') ||
--   imageName.endsWith('.jpg')) &amp;&amp;
--   resource.mimeType.startsWith('image/') } }
--   
--   <i>See:</i> <a>projectsTest</a> smart constructor.
data ProjectsTest

-- | V1 error format.
ptXgafv :: Lens' ProjectsTest (Maybe Xgafv)

-- | Upload protocol for media (e.g. "raw", "multipart").
ptUploadProtocol :: Lens' ProjectsTest (Maybe Text)

-- | Pretty-print response.
ptPp :: Lens' ProjectsTest Bool

-- | OAuth access token.
ptAccessToken :: Lens' ProjectsTest (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ptUploadType :: Lens' ProjectsTest (Maybe Text)

-- | Multipart request metadata.
ptPayload :: Lens' ProjectsTest TestRulesetRequest

-- | OAuth bearer token.
ptBearerToken :: Lens' ProjectsTest (Maybe Text)

-- | Name of the project. Format: `projects/{project_id}`
ptName :: Lens' ProjectsTest Text

-- | JSONP
ptCallback :: Lens' ProjectsTest (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.FirebaseRules.Projects.Test.ProjectsTest
instance Data.Data.Data Network.Google.Resource.FirebaseRules.Projects.Test.ProjectsTest
instance GHC.Show.Show Network.Google.Resource.FirebaseRules.Projects.Test.ProjectsTest
instance GHC.Classes.Eq Network.Google.Resource.FirebaseRules.Projects.Test.ProjectsTest
instance Network.Google.Types.GoogleRequest Network.Google.Resource.FirebaseRules.Projects.Test.ProjectsTest


-- | Creates and manages rules that determine when a Firebase Rules-enabled
--   service should permit a request.
--   
--   <i>See:</i> <a>Firebase Rules API Reference</a>
module Network.Google.FirebaseRules

-- | Default request referring to version <tt>v1</tt> of the Firebase Rules
--   API. This contains the host and root path used as a starting point for
--   constructing service requests.
firebaseRulesService :: ServiceConfig

-- | View and administer all your Firebase data and settings
firebaseScope :: Proxy '["https://www.googleapis.com/auth/firebase"]

-- | View and manage your data across Google Cloud Platform services
cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]

-- | View all your Firebase data and settings
firebaseReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/firebase.readonly"]

-- | Represents the entirety of the methods and resources available for the
--   Firebase Rules API service.
type FirebaseRulesAPI = ProjectsRulesetsListResource :<|> (ProjectsRulesetsGetResource :<|> (ProjectsRulesetsCreateResource :<|> (ProjectsRulesetsDeleteResource :<|> (ProjectsReleasesListResource :<|> (ProjectsReleasesGetResource :<|> (ProjectsReleasesCreateResource :<|> (ProjectsReleasesDeleteResource :<|> (ProjectsReleasesUpdateResource :<|> ProjectsTestResource))))))))

-- | Position in the `Source` content including its line, column number,
--   and an index of the `File` in the `Source` message. Used for debug
--   purposes.
--   
--   <i>See:</i> <a>sourcePosition</a> smart constructor.
data SourcePosition

-- | Creates a value of <a>SourcePosition</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>spLine</a></li>
--   <li><a>spColumn</a></li>
--   <li><a>spFileName</a></li>
--   </ul>
sourcePosition :: SourcePosition

-- | Line number of the source fragment. 1-based.
spLine :: Lens' SourcePosition (Maybe Int32)

-- | First column on the source line associated with the source fragment.
spColumn :: Lens' SourcePosition (Maybe Int32)

-- | Name of the `File`.
spFileName :: Lens' SourcePosition (Maybe Text)

-- | A generic empty message that you can re-use to avoid defining
--   duplicated empty messages in your APIs. A typical example is to use it
--   as the request or the response type of an API method. For instance:
--   service Foo { rpc Bar(google.protobuf.Empty) returns
--   (google.protobuf.Empty); } The JSON representation for `Empty` is
--   empty JSON object `{}`.
--   
--   <i>See:</i> <a>empty</a> smart constructor.
data Empty

-- | Creates a value of <a>Empty</a> with the minimum fields required to
--   make a request.
empty :: Empty

-- | The response for FirebaseRulesService.ListReleases.
--   
--   <i>See:</i> <a>listReleasesResponse</a> smart constructor.
data ListReleasesResponse

-- | Creates a value of <a>ListReleasesResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lrrNextPageToken</a></li>
--   <li><a>lrrReleases</a></li>
--   </ul>
listReleasesResponse :: ListReleasesResponse

-- | The pagination token to retrieve the next page of results. If the
--   value is empty, no further results remain.
lrrNextPageToken :: Lens' ListReleasesResponse (Maybe Text)

-- | List of `Release` instances.
lrrReleases :: Lens' ListReleasesResponse [Release]

-- | The response for FirebaseRulesService.TestRuleset.
--   
--   <i>See:</i> <a>testRulesetResponse</a> smart constructor.
data TestRulesetResponse

-- | Creates a value of <a>TestRulesetResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>trrIssues</a></li>
--   </ul>
testRulesetResponse :: TestRulesetResponse

-- | Syntactic and semantic `Source` issues of varying severity. Issues of
--   `ERROR` severity will prevent tests from executing.
trrIssues :: Lens' TestRulesetResponse [Issue]

-- | `Release` is a named reference to a `Ruleset`. Once a `Release` refers
--   to a `Ruleset`, rules-enabled services will be able to enforce the
--   `Ruleset`.
--   
--   <i>See:</i> <a>release</a> smart constructor.
data Release

-- | Creates a value of <a>Release</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rRulesetName</a></li>
--   <li><a>rUpdateTime</a></li>
--   <li><a>rName</a></li>
--   <li><a>rCreateTime</a></li>
--   </ul>
release :: Release

-- | Name of the `Ruleset` referred to by this `Release`. The `Ruleset`
--   must exist the `Release` to be created.
rRulesetName :: Lens' Release (Maybe Text)

-- | Time the release was updated. 'OutputOnly
rUpdateTime :: Lens' Release (Maybe UTCTime)

-- | Resource name for the `Release`. `Release` names may be structured
--   `app1/prod/v2` or flat `app1_prod_v2` which affords developers a great
--   deal of flexibility in mapping the name to the style that best fits
--   their existing development practices. For example, a name could refer
--   to an environment, an app, a version, or some combination of three. In
--   the table below, for the project name `projects/foo`, the following
--   relative release paths show how flat and structured names might be
--   chosen to match a desired development / deployment strategy. Use Case
--   | Flat Name | Structured Name
--   -------------|---------------------|---------------- Environments |
--   releases/qa | releases/qa Apps | releases/app1_qa | releases/app1/qa
--   Versions | releases/app1_v2_qa | releases/app1/v2/qa The delimiter
--   between the release name path elements can be almost anything and it
--   should work equally well with the release name list filter, but in
--   many ways the structured paths provide a clearer picture of the
--   relationship between `Release` instances. Format:
--   `projects/{project_id}/releases/{release_id}`
rName :: Lens' Release (Maybe Text)

-- | Time the release was created. 'OutputOnly
rCreateTime :: Lens' Release (Maybe UTCTime)

-- | `Ruleset` is an immutable copy of `Source` with a globally unique
--   identifier and a creation time.
--   
--   <i>See:</i> <a>ruleset</a> smart constructor.
data Ruleset

-- | Creates a value of <a>Ruleset</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rulName</a></li>
--   <li><a>rulSource</a></li>
--   <li><a>rulCreateTime</a></li>
--   </ul>
ruleset :: Ruleset

-- | Name of the `Ruleset`. The ruleset_id is auto generated by the
--   service. Format: `projects/{project_id}/rulesets/{ruleset_id}`
--   'OutputOnly
rulName :: Lens' Ruleset (Maybe Text)

-- | `Source` for the `Ruleset`.
rulSource :: Lens' Ruleset (Maybe Source)

-- | Time the `Ruleset` was created. 'OutputOnly
rulCreateTime :: Lens' Ruleset (Maybe UTCTime)

-- | V1 error format.
data Xgafv

-- | <tt>1</tt> v1 error format
X1 :: Xgafv

-- | <tt>2</tt> v2 error format
X2 :: Xgafv

-- | The severity of the issue.
data IssueSeverity

-- | <tt>SEVERITY_UNSPECIFIED</tt> An unspecified severity.
SeverityUnspecified :: IssueSeverity

-- | <tt>DEPRECATION</tt> Deprecation issue for statements and method that
--   may no longer be supported or maintained.
Deprecation :: IssueSeverity

-- | <tt>WARNING</tt> Warnings such as: unused variables.
Warning :: IssueSeverity

-- | <tt>ERROR</tt> Errors such as: unmatched curly braces or variable
--   redefinition.
Error' :: IssueSeverity

-- | `Source` is one or more `File` messages comprising a logical set of
--   rules.
--   
--   <i>See:</i> <a>source</a> smart constructor.
data Source

-- | Creates a value of <a>Source</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sFiles</a></li>
--   </ul>
source :: Source

-- | `File` set constituting the `Source` bundle.
sFiles :: Lens' Source [File]

-- | The request for FirebaseRulesService.TestRuleset.
--   
--   <i>See:</i> <a>testRulesetRequest</a> smart constructor.
data TestRulesetRequest

-- | Creates a value of <a>TestRulesetRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>trrSource</a></li>
--   </ul>
testRulesetRequest :: TestRulesetRequest

-- | `Source` to be checked for correctness.
trrSource :: Lens' TestRulesetRequest (Maybe Source)

-- | `File` containing source content.
--   
--   <i>See:</i> <a>file</a> smart constructor.
data File

-- | Creates a value of <a>File</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fFingerprint</a></li>
--   <li><a>fContent</a></li>
--   <li><a>fName</a></li>
--   </ul>
file :: File

-- | Fingerprint (e.g. github sha) associated with the `File`.
fFingerprint :: Lens' File (Maybe ByteString)

-- | Textual Content.
fContent :: Lens' File (Maybe Text)

-- | File name.
fName :: Lens' File (Maybe Text)

-- | The response for FirebaseRulesService.ListRulesets
--   
--   <i>See:</i> <a>listRulesetsResponse</a> smart constructor.
data ListRulesetsResponse

-- | Creates a value of <a>ListRulesetsResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lRulesets</a></li>
--   <li><a>lNextPageToken</a></li>
--   </ul>
listRulesetsResponse :: ListRulesetsResponse

-- | List of `Ruleset` instances.
lRulesets :: Lens' ListRulesetsResponse [Ruleset]

-- | The pagination token to retrieve the next page of results. If the
--   value is empty, no further results remain.
lNextPageToken :: Lens' ListRulesetsResponse (Maybe Text)

-- | Issues include warnings, errors, and deprecation notices.
--   
--   <i>See:</i> <a>issue</a> smart constructor.
data Issue

-- | Creates a value of <a>Issue</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iSourcePosition</a></li>
--   <li><a>iSeverity</a></li>
--   <li><a>iDescription</a></li>
--   </ul>
issue :: Issue

-- | Position of the issue in the `Source`.
iSourcePosition :: Lens' Issue (Maybe SourcePosition)

-- | The severity of the issue.
iSeverity :: Lens' Issue (Maybe IssueSeverity)

-- | Short error description.
iDescription :: Lens' Issue (Maybe Text)
