summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim St. Clair <stclair@google.com>2015-11-23 18:06:23 -0800
committerTim St. Clair <stclair@google.com>2015-11-23 18:06:23 -0800
commite1ded93ff37ab654682ff38c0e77e47c6a7681e6 (patch)
tree3833cf0770afa05c01d77e0d9ac809b9a32cb6e5
parentccd0d84dc966dfe49553fcc88efd5c4c7c0fbac6 (diff)
Clarify when pointers are used for optional types
-rw-r--r--api-conventions.md6
1 files changed, 4 insertions, 2 deletions
diff --git a/api-conventions.md b/api-conventions.md
index 6628e998..43550903 100644
--- a/api-conventions.md
+++ b/api-conventions.md
@@ -387,7 +387,8 @@ Fields must be either optional or required.
Optional fields have the following properties:
- They have `omitempty` struct tag in Go.
-- They are a pointer type in the Go definition (e.g. `bool *awesomeFlag`).
+- They are a pointer type in the Go definition (e.g. `bool *awesomeFlag`) or have a built-in `nil`
+ value (e.g. maps and slices).
- The API server should allow POSTing and PUTing a resource with this field unset.
Required fields have the opposite properties, namely:
@@ -409,7 +410,8 @@ codebase. However:
- having a pointer consistently imply optional is clearer for users of the Go language client, and any
other clients that use corresponding types
-Therefore, we ask that pointers always be used with optional fields.
+Therefore, we ask that pointers always be used with optional fields that do not have a built-in
+`nil` value.
## Defaulting