Overview
Stay organized with collections
Save and categorize content based on your preferences.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2020-06-04 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2020-06-04 UTC."],[],[],null,["# Overview\n\nrules\n-----\n\n\n[rules](/docs/reference/rules/rules) \n\nrules.Boolean\n-------------\n\n\n[rules.Boolean](/docs/reference/rules/rules.Boolean) \n\nrules.Bytes\n-----------\n\n\n[rules.Bytes](/docs/reference/rules/rules.Bytes)\n\n\n[rules.Bytes#size()](/docs/reference/rules/rules.Bytes#size) \n\n[rules.Bytes#toBase64()](/docs/reference/rules/rules.Bytes#toBase64)\n\n\n[rules.Bytes#toHexString()](/docs/reference/rules/rules.Bytes#toHexString) \n\nrules.Duration\n--------------\n\n\n[rules.Duration](/docs/reference/rules/rules.Duration) \n\n[rules.Duration#nanos()](/docs/reference/rules/rules.Duration#nanos) \n\n[rules.Duration#seconds()](/docs/reference/rules/rules.Duration#seconds)\n\nrules.Float\n-----------\n\n\n[rules.Float](/docs/reference/rules/rules.Float) \n\nrules.Integer\n-------------\n\n\n[rules.Integer](/docs/reference/rules/rules.Integer) \n\nrules.LatLng\n------------\n\n\n[rules.LatLng](/docs/reference/rules/rules.LatLng)\n\n\n[rules.LatLng#distance(other)](/docs/reference/rules/rules.LatLng#distance) \n\n[rules.LatLng#latitude()](/docs/reference/rules/rules.LatLng#latitude)\n\n\n[rules.LatLng#longitude()](/docs/reference/rules/rules.LatLng#longitude) \n\nrules.List\n----------\n\n\n[rules.List](/docs/reference/rules/rules.List)\n\n\n[rules.List#concat(list)](/docs/reference/rules/rules.List#concat)\n\n\n[rules.List#hasAll(list)](/docs/reference/rules/rules.List#hasAll) \n\n[rules.List#hasAny(list)](/docs/reference/rules/rules.List#hasAny)\n\n\n[rules.List#hasOnly(list)](/docs/reference/rules/rules.List#hasOnly)\n\n\n[rules.List#join(separator)](/docs/reference/rules/rules.List#join) \n\n[rules.List#removeAll(list)](/docs/reference/rules/rules.List#removeAll)\n\n\n[rules.List#size()](/docs/reference/rules/rules.List#size)\n\n\n[rules.List#toSet()](/docs/reference/rules/rules.List#toSet)\n\nrules.Map\n---------\n\n\n[rules.Map](/docs/reference/rules/rules.Map)\n\n\n[rules.Map#diff(map_to_compare)](/docs/reference/rules/rules.Map#diff) \n\n[rules.Map#get(key, default_value)](/docs/reference/rules/rules.Map#get)\n\n\n[rules.Map#keys()](/docs/reference/rules/rules.Map#keys) \n\n[rules.Map#size()](/docs/reference/rules/rules.Map#size)\n\n\n[rules.Map#values()](/docs/reference/rules/rules.Map#values)\n\nrules.MapDiff\n-------------\n\n\n[rules.MapDiff](/docs/reference/rules/rules.MapDiff)\n\n\n[rules.MapDiff#addedKeys()](/docs/reference/rules/rules.MapDiff#addedKeys) \n\n[rules.MapDiff#affectedKeys()](/docs/reference/rules/rules.MapDiff#affectedKeys)\n\n\n[rules.MapDiff#changedKeys()](/docs/reference/rules/rules.MapDiff#changedKeys) \n\n[rules.MapDiff#removedKeys()](/docs/reference/rules/rules.MapDiff#removedKeys)\n\n\n[rules.MapDiff#unchangedKeys()](/docs/reference/rules/rules.MapDiff#unchangedKeys)\n\nrules.Number\n------------\n\n\n[rules.Number](/docs/reference/rules/rules.Number) \n\nrules.Path\n----------\n\n\n[rules.Path](/docs/reference/rules/rules.Path) \n\n[rules.Path#bind(map)](/docs/reference/rules/rules.Path#bind) \n\nrules.Set\n---------\n\n\n[rules.Set](/docs/reference/rules/rules.Set)\n\n\n[rules.Set#difference()](/docs/reference/rules/rules.Set#difference)\n\n\n[rules.Set#hasAll()](/docs/reference/rules/rules.Set#hasAll) \n\n[rules.Set#hasAny()](/docs/reference/rules/rules.Set#hasAny)\n\n\n[rules.Set#hasOnly()](/docs/reference/rules/rules.Set#hasOnly)\n\n\n[rules.Set#intersection()](/docs/reference/rules/rules.Set#intersection) \n\n[rules.Set#size()](/docs/reference/rules/rules.Set#size)\n\n\n[rules.Set#union()](/docs/reference/rules/rules.Set#union)\n\nrules.String\n------------\n\n\n[rules.String](/docs/reference/rules/rules.String)\n\n\n[rules.String#lower()](/docs/reference/rules/rules.String#lower)\n\n\n[rules.String#matches(re)](/docs/reference/rules/rules.String#matches) \n\n[rules.String#replace(re, sub)](/docs/reference/rules/rules.String#replace)\n\n\n[rules.String#size()](/docs/reference/rules/rules.String#size)\n\n\n[rules.String#split(re)](/docs/reference/rules/rules.String#split) \n\n[rules.String#toUtf8()](/docs/reference/rules/rules.String#toUtf8)\n\n\n[rules.String#trim()](/docs/reference/rules/rules.String#trim)\n\n\n[rules.String#upper()](/docs/reference/rules/rules.String#upper)\n\nrules.Timestamp\n---------------\n\n\n[rules.Timestamp](/docs/reference/rules/rules.Timestamp)\n\n\n[rules.Timestamp#date()](/docs/reference/rules/rules.Timestamp#date)\n\n\n[rules.Timestamp#day()](/docs/reference/rules/rules.Timestamp#day)\n\n\n[rules.Timestamp#dayOfWeek()](/docs/reference/rules/rules.Timestamp#dayOfWeek)\n\n\n[rules.Timestamp#dayOfYear()](/docs/reference/rules/rules.Timestamp#dayOfYear) \n\n[rules.Timestamp#hours()](/docs/reference/rules/rules.Timestamp#hours)\n\n\n[rules.Timestamp#minutes()](/docs/reference/rules/rules.Timestamp#minutes)\n\n\n[rules.Timestamp#month()](/docs/reference/rules/rules.Timestamp#month)\n\n\n[rules.Timestamp#nanos()](/docs/reference/rules/rules.Timestamp#nanos)\n\n\n[rules.Timestamp#seconds()](/docs/reference/rules/rules.Timestamp#seconds) \n\n[rules.Timestamp#time()](/docs/reference/rules/rules.Timestamp#time)\n\n\n[rules.Timestamp#toMillis()](/docs/reference/rules/rules.Timestamp#toMillis)\n\n\n[rules.Timestamp#year()](/docs/reference/rules/rules.Timestamp#year)\n\nrules.debug\n-----------\n\n\n[rules.debug()](/docs/reference/rules/rules.debug) \n\nrules.duration\n--------------\n\n\n[rules.duration](/docs/reference/rules/rules.duration_)\n\n\n[rules.duration.abs(duration)](/docs/reference/rules/rules.duration_#.abs) \n\n[rules.duration.time(hours, mins, secs, nanos)](/docs/reference/rules/rules.duration_#.time)\n\n\n[rules.duration.value(magnitude, unit)](/docs/reference/rules/rules.duration_#.value) \n\nrules.firestore\n---------------\n\n\n[rules.firestore](/docs/reference/rules/rules.firestore)\n\n\n[rules.firestore.exists(path)](/docs/reference/rules/rules.firestore#.exists)\n\n\n[rules.firestore.existsAfter(path)](/docs/reference/rules/rules.firestore#.existsAfter) \n\n[rules.firestore.get(path)](/docs/reference/rules/rules.firestore#.get)\n\n\n[rules.firestore.getAfter(path)](/docs/reference/rules/rules.firestore#.getAfter)\n\n\n[rules.firestore.request](/docs/reference/rules/rules.firestore#.request) \n\n[rules.firestore.resource](/docs/reference/rules/rules.firestore#.resource)\n\nrules.firestore.Request\n-----------------------\n\n\n[rules.firestore.Request](/docs/reference/rules/rules.firestore.Request)\n\n\n[rules.firestore.Request#auth](/docs/reference/rules/rules.firestore.Request#auth)\n\n\n[rules.firestore.Request#method](/docs/reference/rules/rules.firestore.Request#method) \n\n[rules.firestore.Request#path](/docs/reference/rules/rules.firestore.Request#path)\n\n\n[rules.firestore.Request#query](/docs/reference/rules/rules.firestore.Request#query)\n\n\n[rules.firestore.Request#resource](/docs/reference/rules/rules.firestore.Request#resource) \n\n[rules.firestore.Request#time](/docs/reference/rules/rules.firestore.Request#time)\n\nrules.firestore.Resource\n------------------------\n\n\n[rules.firestore.Resource](/docs/reference/rules/rules.firestore.Resource)\n\n\n[rules.firestore.Resource#__name__](/docs/reference/rules/rules.firestore.Resource#__name__) \n\n[rules.firestore.Resource#data](/docs/reference/rules/rules.firestore.Resource#data)\n\n\n[rules.firestore.Resource#id](/docs/reference/rules/rules.firestore.Resource#id) \n\nrules.hashing\n-------------\n\n\n[rules.hashing](/docs/reference/rules/rules.hashing)\n\n\n[rules.hashing.crc32(bytes_or_string)](/docs/reference/rules/rules.hashing#.crc32) \n\n[rules.hashing.crc32c(bytes_or_string)](/docs/reference/rules/rules.hashing#.crc32c)\n\n\n[rules.hashing.md5(bytes_or_string)](/static/docs/reference/rules/rules.hashing#.md5) \n\n[rules.hashing.sha256(bytes_or_string)](/docs/reference/rules/rules.hashing#.sha256)\n\nrules.latlng\n------------\n\n\n[rules.latlng](/docs/reference/rules/rules.latlng_) \n\n[rules.latlng.value(lat, lng)](/docs/reference/rules/rules.latlng_#.value) \n\nrules.math\n----------\n\n\n[rules.math](/docs/reference/rules/rules.math)\n\n\n[rules.math.abs(num)](/docs/reference/rules/rules.math#.abs)\n\n\n[rules.math.ceil(num)](/docs/reference/rules/rules.math#.ceil) \n\n[rules.math.floor(num)](/docs/reference/rules/rules.math#.floor)\n\n\n[rules.math.isInfinite(num)](/docs/reference/rules/rules.math#.isInfinite)\n\n\n[rules.math.isNaN(num)](/docs/reference/rules/rules.math#.isNaN) \n\n[rules.math.pow(base, exponent)](/docs/reference/rules/rules.math#.pow)\n\n\n[rules.math.round(num)](/docs/reference/rules/rules.math#.round)\n\n\n[rules.math.sqrt(num)](/docs/reference/rules/rules.math#.sqrt)\n\nrules.timestamp\n---------------\n\n\n[rules.timestamp](/docs/reference/rules/rules.timestamp_) \n\n[rules.timestamp.date(year, month, day)](/docs/reference/rules/rules.timestamp_#.date) \n\n[rules.timestamp.value(epochMillis)](/docs/reference/rules/rules.timestamp_#.value)"]]