From b36ceb5f55c96b5a1be86d99c559b7ae6f74f17c Mon Sep 17 00:00:00 2001
From: autom8ter <colemanword@gmail.com>
Date: Thu, 24 Dec 2020 01:35:33 -0700
Subject: [PATCH] PutDoc, PutDocs, PutConnection, PutConnections for full
 create-or-replace functionality

---
 .bumpversion.cfg                             |   2 +-
 CHANGELOG.md                                 |   5 +-
 Makefile                                     |   2 +-
 README.md                                    |   4 +-
 database/graph.go                            | 220 ++++++++
 docker-compose.yml                           |   2 +-
 gen/gql/docs/aggfilter.doc.html              |  20 +
 gen/gql/docs/aggregate.doc.html              |  20 +
 gen/gql/docs/algorithm.doc.html              |  20 +
 gen/gql/docs/authorizer.doc.html             |  20 +
 gen/gql/docs/authorizerinput.doc.html        |  20 +
 gen/gql/docs/authorizers.doc.html            |  20 +
 gen/gql/docs/authorizersinput.doc.html       |  20 +
 gen/gql/docs/authtarget.doc.html             |  20 +
 gen/gql/docs/boolean.doc.html                |  22 +-
 gen/gql/docs/connectfilter.doc.html          |  20 +
 gen/gql/docs/connection.doc.html             |  20 +
 gen/gql/docs/connectionconstructor.doc.html  |  20 +
 gen/gql/docs/connectionconstructors.doc.html |  20 +
 gen/gql/docs/connections.doc.html            |  20 +
 gen/gql/docs/constraint.doc.html             |  20 +
 gen/gql/docs/constraintinput.doc.html        |  20 +
 gen/gql/docs/constraints.doc.html            |  20 +
 gen/gql/docs/constraintsinput.doc.html       |  20 +
 gen/gql/docs/deprecated.doc.html             |  20 +
 gen/gql/docs/directive.spec.html             |  20 +
 gen/gql/docs/directivelocation.spec.html     |  20 +
 gen/gql/docs/doc.doc.html                    |  20 +
 gen/gql/docs/docconstructor.doc.html         |  20 +
 gen/gql/docs/docconstructors.doc.html        |  20 +
 gen/gql/docs/docs.doc.html                   |  20 +
 gen/gql/docs/edit.doc.html                   |  20 +
 gen/gql/docs/editfilter.doc.html             |  20 +
 gen/gql/docs/empty.doc.html                  |  20 +
 gen/gql/docs/enumvalue.spec.html             |  20 +
 gen/gql/docs/existsfilter.doc.html           |  20 +
 gen/gql/docs/exprfilter.doc.html             |  20 +
 gen/gql/docs/field.spec.html                 |  20 +
 gen/gql/docs/filter.doc.html                 |  20 +
 gen/gql/docs/float.doc.html                  |  20 +
 gen/gql/docs/include.doc.html                |  20 +
 gen/gql/docs/index.doc.html                  |  20 +
 gen/gql/docs/index.html                      |  20 +
 gen/gql/docs/indexes.doc.html                |  20 +
 gen/gql/docs/indexesinput.doc.html           |  20 +
 gen/gql/docs/indexinput.doc.html             |  20 +
 gen/gql/docs/inputvalue.spec.html            |  20 +
 gen/gql/docs/int.doc.html                    |  20 +
 gen/gql/docs/map.doc.html                    |  22 +-
 gen/gql/docs/membership.doc.html             |  20 +
 gen/gql/docs/message.doc.html                |  20 +
 gen/gql/docs/mutation.doc.html               |  22 +-
 gen/gql/docs/outboundmessage.doc.html        |  20 +
 gen/gql/docs/peer.doc.html                   |  20 +
 gen/gql/docs/peerinput.doc.html              |  20 +
 gen/gql/docs/putconnection.doc.html          | 491 +++++++++++++++++
 gen/gql/docs/putconnections.doc.html         | 491 +++++++++++++++++
 gen/gql/docs/putdoc.doc.html                 | 491 +++++++++++++++++
 gen/gql/docs/putdocs.doc.html                | 491 +++++++++++++++++
 gen/gql/docs/query.doc.html                  |  20 +
 gen/gql/docs/raftstate.doc.html              |  20 +
 gen/gql/docs/ref.doc.html                    |  20 +
 gen/gql/docs/refconstructor.doc.html         |  20 +
 gen/gql/docs/refinput.doc.html               |  22 +-
 gen/gql/docs/refs.doc.html                   |  20 +
 gen/gql/docs/schema.doc.html                 |  20 +
 gen/gql/docs/schema.spec.html                |  20 +
 gen/gql/docs/searchconnectfilter.doc.html    |  20 +
 gen/gql/docs/searchconnectmefilter.doc.html  |  20 +
 gen/gql/docs/skip.doc.html                   |  20 +
 gen/gql/docs/streamfilter.doc.html           |  20 +
 gen/gql/docs/string.doc.html                 |  20 +
 gen/gql/docs/subscription.doc.html           |  20 +
 gen/gql/docs/time.doc.html                   |  20 +
 gen/gql/docs/traversal.doc.html              |  20 +
 gen/gql/docs/traversals.doc.html             |  20 +
 gen/gql/docs/traversefilter.doc.html         |  20 +
 gen/gql/docs/traversemefilter.doc.html       |  20 +
 gen/gql/docs/trigger.doc.html                |  20 +
 gen/gql/docs/triggerinput.doc.html           |  20 +
 gen/gql/docs/triggers.doc.html               |  20 +
 gen/gql/docs/triggersinput.doc.html          |  20 +
 gen/gql/docs/type.spec.html                  |  20 +
 gen/gql/docs/typekind.spec.html              |  20 +
 gen/gql/go/generated/generated.go            | 552 +++++++++++++++++++
 gen/gql/go/model/models_gen.go               |  21 +
 gen/grpc/csharp/Graphik.cs                   |  84 +--
 gen/grpc/docs/index.html                     |  28 +
 gen/grpc/go/graphik.pb.go                    | 409 ++++++++++----
 gen/grpc/java/api/Graphik.java               |  95 ++--
 gen/grpc/php/GPBMetadata/Graphik.php         | 126 +++--
 gen/grpc/python/graphik_pb2.py               | 104 ++--
 gql/schema.resolvers.go                      | 108 ++++
 graphik-client-go/example_test.go            |  26 +-
 graphik-client-go/graphik.go                 |  20 +
 graphik.proto                                |   8 +
 schema.graphql                               |  38 ++
 version/version.go                           |   2 +-
 98 files changed, 4998 insertions(+), 310 deletions(-)
 create mode 100644 gen/gql/docs/putconnection.doc.html
 create mode 100644 gen/gql/docs/putconnections.doc.html
 create mode 100644 gen/gql/docs/putdoc.doc.html
 create mode 100644 gen/gql/docs/putdocs.doc.html

diff --git a/.bumpversion.cfg b/.bumpversion.cfg
index a89de53..2a8ed1f 100644
--- a/.bumpversion.cfg
+++ b/.bumpversion.cfg
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 0.12.0
+current_version = 0.12.1
 commit = False
 tag = False
 
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e4afe83..f962c28 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -56,4 +56,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 - upgrate trigger to v0.10.0 - 20+ CEL macros added
 
 ## [0.12.0] - 2020-12-23
-- refactor every instance of `TypeValidator` to `constraint` - better naming convention
\ No newline at end of file
+- refactor every instance of `TypeValidator` to `constraint` - better naming convention
+
+## [0.12.1] - 2020-12-23
+- PutDoc, PutDocs, PutConnection, PutConnections for full create-or-replace functionality
diff --git a/Makefile b/Makefile
index 5fa8c51..061528e 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-version := "0.12.0"
+version := "0.12.1"
 
 .DEFAULT_GOAL := help
 
diff --git a/README.md b/README.md
index ee27b0b..8b6b00d 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@ https://graphikdb.github.io/graphik/
 
 `git clone git@github.com:graphikDB/graphik.git`
     
-`docker pull graphikdb/graphik:v0.12.0`
+`docker pull graphikdb/graphik:v0.12.1`
 
 Graphik is a Backend as a Service implemented as an identity-aware, permissioned, persistant document/graph database & pubsub server written in Go.
 
@@ -902,7 +902,7 @@ add this docker-compose.yml to ${pwd}:
     version: '3.7'
     services:
       graphik:
-        image: graphikdb/graphik:v0.12.0
+        image: graphikdb/graphik:v0.12.1
         env_file:
           - .env
         ports:
diff --git a/database/graph.go b/database/graph.go
index 05e6a5c..79bb1d8 100644
--- a/database/graph.go
+++ b/database/graph.go
@@ -541,6 +541,147 @@ func (g *Graph) CreateDocs(ctx context.Context, constructors *apipb.DocConstruct
 	return docs, nil
 }
 
+func (g *Graph) PutDoc(ctx context.Context, doc *apipb.Doc) (*apipb.Doc, error) {
+	if g.raft.State() != raft2.Leader {
+		client, err := g.leaderClient(ctx)
+		if err != nil {
+			return nil, err
+		}
+		return client.PutDoc(invertContext(ctx), doc)
+	}
+	docs, err := g.PutDocs(ctx, &apipb.Docs{Docs: []*apipb.Doc{doc}})
+	if err != nil {
+		return nil, err
+	}
+	if len(docs.GetDocs()) == 0 {
+		return nil, status.Error(codes.Internal, "zero docs modified")
+	}
+	return docs.GetDocs()[0], nil
+}
+
+func (g *Graph) PutDocs(ctx context.Context, docs *apipb.Docs) (*apipb.Docs, error) {
+	if err := ctx.Err(); err != nil {
+		return nil, status.Error(codes.Canceled, err.Error())
+	}
+	if g.raft.State() != raft2.Leader {
+		client, err := g.leaderClient(ctx)
+		if err != nil {
+			return nil, err
+		}
+		return client.PutDocs(invertContext(ctx), docs)
+	}
+	user := g.getIdentity(ctx)
+	if user == nil {
+		return nil, status.Error(codes.Unauthenticated, "failed to get user")
+	}
+
+	var (
+		method         = g.getMethod(ctx)
+		setDocs        []*apipb.Doc
+		setConnections []*apipb.Connection
+		err            error
+	)
+
+	if err := g.db.View(func(tx *bbolt.Tx) error {
+		for _, doc := range docs.GetDocs() {
+			if doc.GetRef().Gid == "" {
+				doc.Ref.Gid = ksuid.New().String()
+			}
+			path := &apipb.Ref{
+				Gtype: doc.GetRef().GetGtype(),
+				Gid:   doc.GetRef().GetGid(),
+			}
+			var exists = false
+			if doc, err := g.getDoc(ctx, tx, path); err == nil || doc != nil {
+				exists = true
+			}
+			g.rangeTriggers(func(a *triggerCache) bool {
+				if a.trigger.GetTargetDocs() && (doc.GetRef().GetGtype() == a.trigger.GetGtype() || a.trigger.GetGtype() == apipb.Any) {
+					data, err := a.evalTrigger.Trigger(doc.AsMap())
+					if err == nil {
+						for k, v := range data {
+							val, _ := structpb.NewValue(v)
+							doc.GetAttributes().GetFields()[k] = val
+						}
+					}
+				}
+				return true
+			})
+			setDocs = append(setDocs, doc)
+			if doc.GetRef().GetGid() != user.GetRef().GetGid() && doc.GetRef().GetGtype() != user.GetRef().GetGtype() {
+				id := helpers.Hash([]byte(fmt.Sprintf("%s-%s", user.GetRef().String(), doc.GetRef().String())))
+				if !exists {
+					createdRef := &apipb.Ref{Gid: id, Gtype: "created"}
+					if !g.hasConnectionFrom(user.GetRef(), createdRef) {
+						setConnections = append(setConnections, &apipb.Connection{
+							Ref:        createdRef,
+							Attributes: apipb.NewStruct(map[string]interface{}{}),
+							Directed:   true,
+							From:       user.GetRef(),
+							To:         doc.GetRef(),
+						})
+					}
+					createdByRef := &apipb.Ref{Gtype: "created_by", Gid: id}
+					if !g.hasConnectionFrom(doc.GetRef(), createdByRef) {
+						setConnections = append(setConnections, &apipb.Connection{
+							Ref:        createdByRef,
+							Attributes: apipb.NewStruct(map[string]interface{}{}),
+							Directed:   true,
+							From:       doc.GetRef(),
+							To:         user.GetRef(),
+						})
+						if err != nil {
+							return err
+						}
+					}
+				} else {
+					editedRef := &apipb.Ref{Gid: id, Gtype: "edited"}
+					if !g.hasConnectionFrom(user.GetRef(), editedRef) {
+						setConnections = append(setConnections, &apipb.Connection{
+							Ref:        editedRef,
+							Attributes: apipb.NewStruct(map[string]interface{}{}),
+							Directed:   true,
+							From:       user.GetRef(),
+							To:         doc.GetRef(),
+						})
+					}
+					editedByRef := &apipb.Ref{Gtype: "edited_by", Gid: id}
+					if !g.hasConnectionFrom(doc.GetRef(), editedByRef) {
+						setConnections = append(setConnections, &apipb.Connection{
+							Ref:        editedByRef,
+							Attributes: apipb.NewStruct(map[string]interface{}{}),
+							Directed:   true,
+							To:         user.GetRef(),
+							From:       doc.GetRef(),
+						})
+						if err != nil {
+							return err
+						}
+					}
+				}
+			}
+		}
+		return nil
+	}); err != nil {
+		return nil, err
+	}
+	cmd, err := g.applyCommand(&apipb.RaftCommand{
+		User:           user,
+		Method:         method,
+		SetDocs:        setDocs,
+		SetConnections: setConnections,
+	})
+	if err != nil {
+		return nil, err
+	}
+	docs = &apipb.Docs{
+		Docs:     cmd.SetDocs,
+		SeekNext: "",
+	}
+	docs.Sort("")
+	return docs, nil
+}
+
 func (g *Graph) CreateConnection(ctx context.Context, constructor *apipb.ConnectionConstructor) (*apipb.Connection, error) {
 	if g.raft.State() != raft2.Leader {
 		client, err := g.leaderClient(ctx)
@@ -631,6 +772,78 @@ func (g *Graph) CreateConnections(ctx context.Context, constructors *apipb.Conne
 	return connectionss, nil
 }
 
+func (g *Graph) PutConnection(ctx context.Context, connection *apipb.Connection) (*apipb.Connection, error) {
+	if g.raft.State() != raft2.Leader {
+		client, err := g.leaderClient(ctx)
+		if err != nil {
+			return nil, err
+		}
+		return client.PutConnection(invertContext(ctx), connection)
+	}
+	connections, err := g.PutConnections(ctx, &apipb.Connections{Connections: []*apipb.Connection{connection}})
+	if err != nil {
+		return nil, err
+	}
+	if len(connections.GetConnections()) == 0 {
+		return nil, status.Error(codes.Unknown, "zero connections modified")
+	}
+	return connections.GetConnections()[0], nil
+}
+
+func (g *Graph) PutConnections(ctx context.Context, connections *apipb.Connections) (*apipb.Connections, error) {
+	if g.raft.State() != raft2.Leader {
+		client, err := g.leaderClient(ctx)
+		if err != nil {
+			return nil, err
+		}
+		return client.PutConnections(invertContext(ctx), connections)
+	}
+	user := g.getIdentity(ctx)
+	if user == nil {
+		return nil, status.Error(codes.Unauthenticated, "failed to get user")
+	}
+	var err error
+	if err := ctx.Err(); err != nil {
+		return nil, err
+	}
+	var setConnections []*apipb.Connection
+	if err := g.db.View(func(tx *bbolt.Tx) error {
+		for _, connection := range connections.GetConnections() {
+			g.rangeTriggers(func(a *triggerCache) bool {
+				if a.trigger.GetTargetConnections() && (connection.GetRef().GetGtype() == a.trigger.GetGtype() || a.trigger.GetGtype() == apipb.Any) {
+					data, err := a.evalTrigger.Trigger(connection.AsMap())
+					if err == nil {
+						for k, v := range data {
+							val, _ := structpb.NewValue(v)
+							connection.GetAttributes().GetFields()[k] = val
+						}
+					}
+				}
+				return true
+			})
+			setConnections = append(setConnections, connection)
+		}
+		return nil
+	}); err != nil {
+		return nil, err
+	}
+
+	cmd, err := g.applyCommand(&apipb.RaftCommand{
+		SetConnections: setConnections,
+		User:           user,
+		Method:         g.getMethod(ctx),
+	})
+	if err != nil {
+		return nil, err
+	}
+	connectionss := &apipb.Connections{
+		Connections: cmd.SetConnections,
+		SeekNext:    "",
+	}
+	connectionss.Sort("")
+	return connectionss, nil
+}
+
 func (g *Graph) Broadcast(ctx context.Context, message *apipb.OutboundMessage) (*empty.Empty, error) {
 	if g.raft.State() != raft2.Leader {
 		client, err := g.leaderClient(ctx)
@@ -799,6 +1012,13 @@ func (g *Graph) GetDoc(ctx context.Context, path *apipb.Ref) (*apipb.Doc, error)
 }
 
 func (g *Graph) CreateDoc(ctx context.Context, constructor *apipb.DocConstructor) (*apipb.Doc, error) {
+	if g.raft.State() != raft2.Leader {
+		client, err := g.leaderClient(ctx)
+		if err != nil {
+			return nil, err
+		}
+		return client.CreateDoc(invertContext(ctx), constructor)
+	}
 	docs, err := g.CreateDocs(ctx, &apipb.DocConstructors{Docs: []*apipb.DocConstructor{constructor}})
 	if err != nil {
 		return nil, err
diff --git a/docker-compose.yml b/docker-compose.yml
index 3778381..445cb41 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,7 +1,7 @@
 version: '3.7'
 services:
   graphik:
-    image: graphikdb/graphik:v0.12.0
+    image: graphikdb/graphik:v0.12.1
     env_file:
       - .env
     ports:
diff --git a/gen/gql/docs/aggfilter.doc.html b/gen/gql/docs/aggfilter.doc.html
index 50e8448..2df794a 100644
--- a/gen/gql/docs/aggfilter.doc.html
+++ b/gen/gql/docs/aggfilter.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/aggregate.doc.html b/gen/gql/docs/aggregate.doc.html
index 7fc1614..b2ce9b0 100644
--- a/gen/gql/docs/aggregate.doc.html
+++ b/gen/gql/docs/aggregate.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/algorithm.doc.html b/gen/gql/docs/algorithm.doc.html
index 63801f5..79bf7b2 100644
--- a/gen/gql/docs/algorithm.doc.html
+++ b/gen/gql/docs/algorithm.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/authorizer.doc.html b/gen/gql/docs/authorizer.doc.html
index 104a932..c88b523 100644
--- a/gen/gql/docs/authorizer.doc.html
+++ b/gen/gql/docs/authorizer.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/authorizerinput.doc.html b/gen/gql/docs/authorizerinput.doc.html
index 877db6f..79a62b3 100644
--- a/gen/gql/docs/authorizerinput.doc.html
+++ b/gen/gql/docs/authorizerinput.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/authorizers.doc.html b/gen/gql/docs/authorizers.doc.html
index adeb0df..ee99447 100644
--- a/gen/gql/docs/authorizers.doc.html
+++ b/gen/gql/docs/authorizers.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/authorizersinput.doc.html b/gen/gql/docs/authorizersinput.doc.html
index a35925c..d27d9e7 100644
--- a/gen/gql/docs/authorizersinput.doc.html
+++ b/gen/gql/docs/authorizersinput.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/authtarget.doc.html b/gen/gql/docs/authtarget.doc.html
index ce5756e..e7e751f 100644
--- a/gen/gql/docs/authtarget.doc.html
+++ b/gen/gql/docs/authtarget.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/boolean.doc.html b/gen/gql/docs/boolean.doc.html
index 2148b44..4617e0a 100644
--- a/gen/gql/docs/boolean.doc.html
+++ b/gen/gql/docs/boolean.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
@@ -455,7 +475,7 @@ <h2 id="require-by" class="graphdoc-section__title slds-text-heading--medium sld
             </a>
             Require by
         </h2>
-        <ul class="require-by"><li><a href="authorizer.doc.html" title="Authorizer - Authorizer is a graph primitive used for authorizing inbound requests and/or responses(see AuthTarget)">Authorizer<em>Authorizer is a graph primitive used for authorizing inbound requests and/or responses(see AuthTarget)</em></a><li><li><a href="authorizerinput.doc.html" title="AuthorizerInput - AuthorizerInput is used to create a new Authorizer">AuthorizerInput<em>AuthorizerInput is used to create a new Authorizer</em></a><li><li><a href="connectfilter.doc.html" title="ConnectFilter - ConnectFilter is used to fetch connections related to a single noted">ConnectFilter<em>ConnectFilter is used to fetch connections related to a single noted</em></a><li><li><a href="connection.doc.html" title="Connection - Connection is a graph primitive that represents a relationship between two docs">Connection<em>Connection is a graph primitive that represents a relationship between two docs</em></a><li><li><a href="connectionconstructor.doc.html" title="ConnectionConstructor - ConnectionConstructor is used to create an Connection">ConnectionConstructor<em>ConnectionConstructor is used to create an Connection</em></a><li><li><a href="constraint.doc.html" title="Constraint - Constraint a graph primitive used to validate custom doc/connection constraints">Constraint<em>Constraint a graph primitive used to validate custom doc/connection constraints</em></a><li><li><a href="constraintinput.doc.html" title="ConstraintInput - ConstraintInput is used to construct a new constraint">ConstraintInput<em>ConstraintInput is used to construct a new constraint</em></a><li><li><a href="existsfilter.doc.html" title="ExistsFilter - Exists is a filter used to determine whether a doc/connection exists in the graph">ExistsFilter<em>Exists is a filter used to determine whether a doc/connection exists in the graph</em></a><li><li><a href="filter.doc.html" title="Filter - Filter is a generic filter using Common Expression Language">Filter<em>Filter is a generic filter using Common Expression Language</em></a><li><li><a href="index.doc.html" title="Index - Index is a graph primitive used for fast lookups of docs/connections that pass a boolean CEL expression">Index<em>Index is a graph primitive used for fast lookups of docs/connections that pass a boolean CEL expression</em></a><li><li><a href="indexinput.doc.html" title="IndexInput - IndexInput is used to construct Indexes">IndexInput<em>IndexInput is used to construct Indexes</em></a><li><li><a href="query.doc.html" title="Query - ">Query<em></em></a><li><li><a href="searchconnectfilter.doc.html" title="SearchConnectFilter - SearchConnectFilter is used for searching for documents and adding connections based on whether they pass a Filter">SearchConnectFilter<em>SearchConnectFilter is used for searching for documents and adding connections based on whether they pass a Filter</em></a><li><li><a href="searchconnectmefilter.doc.html" title="SearchConnectMeFilter - SearchConnectMeFilter is used for searching for documents and adding connections from the origin user to the document based on whether they pass a Filter">SearchConnectMeFilter<em>SearchConnectMeFilter is used for searching for documents and adding connections from the origin user to the document based on whether they pass a Filter</em></a><li><li><a href="traversefilter.doc.html" title="TraverseFilter - TraverseFilter is a filter used for graph traversals">TraverseFilter<em>TraverseFilter is a filter used for graph traversals</em></a><li><li><a href="traversemefilter.doc.html" title="TraverseMeFilter - TraverseMeFilter is a filter used for graph traversals of the origin user">TraverseMeFilter<em>TraverseMeFilter is a filter used for graph traversals of the origin user</em></a><li><li><a href="trigger.doc.html" title="Trigger - triggers may be used to automatically mutate the attributes of documents/connections before they are commited to the database">Trigger<em>triggers may be used to automatically mutate the attributes of documents/connections before they are commited to the database</em></a><li><li><a href="triggerinput.doc.html" title="TriggerInput - TriggerInput is used to construct Trigger">TriggerInput<em>TriggerInput is used to construct Trigger</em></a><li><li><a href="directive.spec.html" title="__Directive - A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.
+        <ul class="require-by"><li><a href="authorizer.doc.html" title="Authorizer - Authorizer is a graph primitive used for authorizing inbound requests and/or responses(see AuthTarget)">Authorizer<em>Authorizer is a graph primitive used for authorizing inbound requests and/or responses(see AuthTarget)</em></a><li><li><a href="authorizerinput.doc.html" title="AuthorizerInput - AuthorizerInput is used to create a new Authorizer">AuthorizerInput<em>AuthorizerInput is used to create a new Authorizer</em></a><li><li><a href="connectfilter.doc.html" title="ConnectFilter - ConnectFilter is used to fetch connections related to a single noted">ConnectFilter<em>ConnectFilter is used to fetch connections related to a single noted</em></a><li><li><a href="connection.doc.html" title="Connection - Connection is a graph primitive that represents a relationship between two docs">Connection<em>Connection is a graph primitive that represents a relationship between two docs</em></a><li><li><a href="connectionconstructor.doc.html" title="ConnectionConstructor - ConnectionConstructor is used to create an Connection">ConnectionConstructor<em>ConnectionConstructor is used to create an Connection</em></a><li><li><a href="constraint.doc.html" title="Constraint - Constraint a graph primitive used to validate custom doc/connection constraints">Constraint<em>Constraint a graph primitive used to validate custom doc/connection constraints</em></a><li><li><a href="constraintinput.doc.html" title="ConstraintInput - ConstraintInput is used to construct a new constraint">ConstraintInput<em>ConstraintInput is used to construct a new constraint</em></a><li><li><a href="existsfilter.doc.html" title="ExistsFilter - Exists is a filter used to determine whether a doc/connection exists in the graph">ExistsFilter<em>Exists is a filter used to determine whether a doc/connection exists in the graph</em></a><li><li><a href="filter.doc.html" title="Filter - Filter is a generic filter using Common Expression Language">Filter<em>Filter is a generic filter using Common Expression Language</em></a><li><li><a href="index.doc.html" title="Index - Index is a graph primitive used for fast lookups of docs/connections that pass a boolean CEL expression">Index<em>Index is a graph primitive used for fast lookups of docs/connections that pass a boolean CEL expression</em></a><li><li><a href="indexinput.doc.html" title="IndexInput - IndexInput is used to construct Indexes">IndexInput<em>IndexInput is used to construct Indexes</em></a><li><li><a href="putconnection.doc.html" title="PutConnection - ">PutConnection<em></em></a><li><li><a href="query.doc.html" title="Query - ">Query<em></em></a><li><li><a href="searchconnectfilter.doc.html" title="SearchConnectFilter - SearchConnectFilter is used for searching for documents and adding connections based on whether they pass a Filter">SearchConnectFilter<em>SearchConnectFilter is used for searching for documents and adding connections based on whether they pass a Filter</em></a><li><li><a href="searchconnectmefilter.doc.html" title="SearchConnectMeFilter - SearchConnectMeFilter is used for searching for documents and adding connections from the origin user to the document based on whether they pass a Filter">SearchConnectMeFilter<em>SearchConnectMeFilter is used for searching for documents and adding connections from the origin user to the document based on whether they pass a Filter</em></a><li><li><a href="traversefilter.doc.html" title="TraverseFilter - TraverseFilter is a filter used for graph traversals">TraverseFilter<em>TraverseFilter is a filter used for graph traversals</em></a><li><li><a href="traversemefilter.doc.html" title="TraverseMeFilter - TraverseMeFilter is a filter used for graph traversals of the origin user">TraverseMeFilter<em>TraverseMeFilter is a filter used for graph traversals of the origin user</em></a><li><li><a href="trigger.doc.html" title="Trigger - triggers may be used to automatically mutate the attributes of documents/connections before they are commited to the database">Trigger<em>triggers may be used to automatically mutate the attributes of documents/connections before they are commited to the database</em></a><li><li><a href="triggerinput.doc.html" title="TriggerInput - TriggerInput is used to construct Trigger">TriggerInput<em>TriggerInput is used to construct Trigger</em></a><li><li><a href="directive.spec.html" title="__Directive - A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.
 
 In some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.">__Directive<em>A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.
 
diff --git a/gen/gql/docs/connectfilter.doc.html b/gen/gql/docs/connectfilter.doc.html
index 3ade4ee..4d88acb 100644
--- a/gen/gql/docs/connectfilter.doc.html
+++ b/gen/gql/docs/connectfilter.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/connection.doc.html b/gen/gql/docs/connection.doc.html
index 10d1560..1cc660d 100644
--- a/gen/gql/docs/connection.doc.html
+++ b/gen/gql/docs/connection.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/connectionconstructor.doc.html b/gen/gql/docs/connectionconstructor.doc.html
index 03f0aa4..c470f4f 100644
--- a/gen/gql/docs/connectionconstructor.doc.html
+++ b/gen/gql/docs/connectionconstructor.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/connectionconstructors.doc.html b/gen/gql/docs/connectionconstructors.doc.html
index c26587b..bbff9bb 100644
--- a/gen/gql/docs/connectionconstructors.doc.html
+++ b/gen/gql/docs/connectionconstructors.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/connections.doc.html b/gen/gql/docs/connections.doc.html
index 302bee0..458f36a 100644
--- a/gen/gql/docs/connections.doc.html
+++ b/gen/gql/docs/connections.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/constraint.doc.html b/gen/gql/docs/constraint.doc.html
index 941b491..5a17d2b 100644
--- a/gen/gql/docs/constraint.doc.html
+++ b/gen/gql/docs/constraint.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/constraintinput.doc.html b/gen/gql/docs/constraintinput.doc.html
index 9a2c49c..c8bf97c 100644
--- a/gen/gql/docs/constraintinput.doc.html
+++ b/gen/gql/docs/constraintinput.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/constraints.doc.html b/gen/gql/docs/constraints.doc.html
index ecd0cbd..9a20642 100644
--- a/gen/gql/docs/constraints.doc.html
+++ b/gen/gql/docs/constraints.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/constraintsinput.doc.html b/gen/gql/docs/constraintsinput.doc.html
index f98facf..fee8ef7 100644
--- a/gen/gql/docs/constraintsinput.doc.html
+++ b/gen/gql/docs/constraintsinput.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/deprecated.doc.html b/gen/gql/docs/deprecated.doc.html
index 1a5408a..837ee7a 100644
--- a/gen/gql/docs/deprecated.doc.html
+++ b/gen/gql/docs/deprecated.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/directive.spec.html b/gen/gql/docs/directive.spec.html
index efe3570..1a6cf66 100644
--- a/gen/gql/docs/directive.spec.html
+++ b/gen/gql/docs/directive.spec.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/directivelocation.spec.html b/gen/gql/docs/directivelocation.spec.html
index 03f53b0..37a894c 100644
--- a/gen/gql/docs/directivelocation.spec.html
+++ b/gen/gql/docs/directivelocation.spec.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/doc.doc.html b/gen/gql/docs/doc.doc.html
index 3f18d94..cf3dfd2 100644
--- a/gen/gql/docs/doc.doc.html
+++ b/gen/gql/docs/doc.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/docconstructor.doc.html b/gen/gql/docs/docconstructor.doc.html
index 37e7c5a..ede2164 100644
--- a/gen/gql/docs/docconstructor.doc.html
+++ b/gen/gql/docs/docconstructor.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/docconstructors.doc.html b/gen/gql/docs/docconstructors.doc.html
index 2e3be4e..1d83362 100644
--- a/gen/gql/docs/docconstructors.doc.html
+++ b/gen/gql/docs/docconstructors.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/docs.doc.html b/gen/gql/docs/docs.doc.html
index b1ac977..ac22ca6 100644
--- a/gen/gql/docs/docs.doc.html
+++ b/gen/gql/docs/docs.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/edit.doc.html b/gen/gql/docs/edit.doc.html
index 855b198..1291e37 100644
--- a/gen/gql/docs/edit.doc.html
+++ b/gen/gql/docs/edit.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/editfilter.doc.html b/gen/gql/docs/editfilter.doc.html
index 29116f4..68f6b13 100644
--- a/gen/gql/docs/editfilter.doc.html
+++ b/gen/gql/docs/editfilter.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/empty.doc.html b/gen/gql/docs/empty.doc.html
index b7030ec..1511d41 100644
--- a/gen/gql/docs/empty.doc.html
+++ b/gen/gql/docs/empty.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/enumvalue.spec.html b/gen/gql/docs/enumvalue.spec.html
index c8d1dc9..7711c33 100644
--- a/gen/gql/docs/enumvalue.spec.html
+++ b/gen/gql/docs/enumvalue.spec.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/existsfilter.doc.html b/gen/gql/docs/existsfilter.doc.html
index 9796821..381fe0b 100644
--- a/gen/gql/docs/existsfilter.doc.html
+++ b/gen/gql/docs/existsfilter.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/exprfilter.doc.html b/gen/gql/docs/exprfilter.doc.html
index 8bc7c82..720dfa1 100644
--- a/gen/gql/docs/exprfilter.doc.html
+++ b/gen/gql/docs/exprfilter.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/field.spec.html b/gen/gql/docs/field.spec.html
index 3da6ba8..4b73e01 100644
--- a/gen/gql/docs/field.spec.html
+++ b/gen/gql/docs/field.spec.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/filter.doc.html b/gen/gql/docs/filter.doc.html
index 6e30fae..1f5579b 100644
--- a/gen/gql/docs/filter.doc.html
+++ b/gen/gql/docs/filter.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/float.doc.html b/gen/gql/docs/float.doc.html
index 3d1cd0d..a13e004 100644
--- a/gen/gql/docs/float.doc.html
+++ b/gen/gql/docs/float.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/include.doc.html b/gen/gql/docs/include.doc.html
index 7addcd8..c315eb8 100644
--- a/gen/gql/docs/include.doc.html
+++ b/gen/gql/docs/include.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/index.doc.html b/gen/gql/docs/index.doc.html
index 4817ffe..c736486 100644
--- a/gen/gql/docs/index.doc.html
+++ b/gen/gql/docs/index.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/index.html b/gen/gql/docs/index.html
index 5bd0c4d..ff9a1fd 100644
--- a/gen/gql/docs/index.html
+++ b/gen/gql/docs/index.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/indexes.doc.html b/gen/gql/docs/indexes.doc.html
index a363da7..50dd06c 100644
--- a/gen/gql/docs/indexes.doc.html
+++ b/gen/gql/docs/indexes.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/indexesinput.doc.html b/gen/gql/docs/indexesinput.doc.html
index 1602f42..57363c8 100644
--- a/gen/gql/docs/indexesinput.doc.html
+++ b/gen/gql/docs/indexesinput.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/indexinput.doc.html b/gen/gql/docs/indexinput.doc.html
index a624eee..c724a83 100644
--- a/gen/gql/docs/indexinput.doc.html
+++ b/gen/gql/docs/indexinput.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/inputvalue.spec.html b/gen/gql/docs/inputvalue.spec.html
index 899d797..630b3bc 100644
--- a/gen/gql/docs/inputvalue.spec.html
+++ b/gen/gql/docs/inputvalue.spec.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/int.doc.html b/gen/gql/docs/int.doc.html
index 0a7b5fd..2654d9f 100644
--- a/gen/gql/docs/int.doc.html
+++ b/gen/gql/docs/int.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/map.doc.html b/gen/gql/docs/map.doc.html
index af3d764..8c4f640 100644
--- a/gen/gql/docs/map.doc.html
+++ b/gen/gql/docs/map.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
@@ -455,7 +475,7 @@ <h2 id="require-by" class="graphdoc-section__title slds-text-heading--medium sld
             </a>
             Require by
         </h2>
-        <ul class="require-by"><li><a href="authtarget.doc.html" title="AuthTarget - AuthTarget is the payload/input to Authorizer expressions">AuthTarget<em>AuthTarget is the payload/input to Authorizer expressions</em></a><li><li><a href="connection.doc.html" title="Connection - Connection is a graph primitive that represents a relationship between two docs">Connection<em>Connection is a graph primitive that represents a relationship between two docs</em></a><li><li><a href="connectionconstructor.doc.html" title="ConnectionConstructor - ConnectionConstructor is used to create an Connection">ConnectionConstructor<em>ConnectionConstructor is used to create an Connection</em></a><li><li><a href="doc.doc.html" title="Doc - Doc is a Graph primitive representing a single entity/resource. It is connected to other docs via Connections">Doc<em>Doc is a Graph primitive representing a single entity/resource. It is connected to other docs via Connections</em></a><li><li><a href="docconstructor.doc.html" title="DocConstructor - DocConstructor is used to create a Doc">DocConstructor<em>DocConstructor is used to create a Doc</em></a><li><li><a href="edit.doc.html" title="Edit - Edit edites the attributes of a Doc or Connection">Edit<em>Edit edites the attributes of a Doc or Connection</em></a><li><li><a href="editfilter.doc.html" title="EditFilter - EditFilter is used to edit/patch docs/connections">EditFilter<em>EditFilter is used to edit/patch docs/connections</em></a><li><li><a href="message.doc.html" title="Message - Message is received on PubSub subscriptions">Message<em>Message is received on PubSub subscriptions</em></a><li><li><a href="outboundmessage.doc.html" title="OutboundMessage - OutboundMessage is a message to be published to a pubsub channel">OutboundMessage<em>OutboundMessage is a message to be published to a pubsub channel</em></a><li><li><a href="raftstate.doc.html" title="RaftState - RaftState returns information about the raft cluster">RaftState<em>RaftState returns information about the raft cluster</em></a><li><li><a href="searchconnectfilter.doc.html" title="SearchConnectFilter - SearchConnectFilter is used for searching for documents and adding connections based on whether they pass a Filter">SearchConnectFilter<em>SearchConnectFilter is used for searching for documents and adding connections based on whether they pass a Filter</em></a><li><li><a href="searchconnectmefilter.doc.html" title="SearchConnectMeFilter - SearchConnectMeFilter is used for searching for documents and adding connections from the origin user to the document based on whether they pass a Filter">SearchConnectMeFilter<em>SearchConnectMeFilter is used for searching for documents and adding connections from the origin user to the document based on whether they pass a Filter</em></a><li></ul>
+        <ul class="require-by"><li><a href="authtarget.doc.html" title="AuthTarget - AuthTarget is the payload/input to Authorizer expressions">AuthTarget<em>AuthTarget is the payload/input to Authorizer expressions</em></a><li><li><a href="connection.doc.html" title="Connection - Connection is a graph primitive that represents a relationship between two docs">Connection<em>Connection is a graph primitive that represents a relationship between two docs</em></a><li><li><a href="connectionconstructor.doc.html" title="ConnectionConstructor - ConnectionConstructor is used to create an Connection">ConnectionConstructor<em>ConnectionConstructor is used to create an Connection</em></a><li><li><a href="doc.doc.html" title="Doc - Doc is a Graph primitive representing a single entity/resource. It is connected to other docs via Connections">Doc<em>Doc is a Graph primitive representing a single entity/resource. It is connected to other docs via Connections</em></a><li><li><a href="docconstructor.doc.html" title="DocConstructor - DocConstructor is used to create a Doc">DocConstructor<em>DocConstructor is used to create a Doc</em></a><li><li><a href="edit.doc.html" title="Edit - Edit edites the attributes of a Doc or Connection">Edit<em>Edit edites the attributes of a Doc or Connection</em></a><li><li><a href="editfilter.doc.html" title="EditFilter - EditFilter is used to edit/patch docs/connections">EditFilter<em>EditFilter is used to edit/patch docs/connections</em></a><li><li><a href="message.doc.html" title="Message - Message is received on PubSub subscriptions">Message<em>Message is received on PubSub subscriptions</em></a><li><li><a href="outboundmessage.doc.html" title="OutboundMessage - OutboundMessage is a message to be published to a pubsub channel">OutboundMessage<em>OutboundMessage is a message to be published to a pubsub channel</em></a><li><li><a href="putconnection.doc.html" title="PutConnection - ">PutConnection<em></em></a><li><li><a href="putdoc.doc.html" title="PutDoc - ">PutDoc<em></em></a><li><li><a href="raftstate.doc.html" title="RaftState - RaftState returns information about the raft cluster">RaftState<em>RaftState returns information about the raft cluster</em></a><li><li><a href="searchconnectfilter.doc.html" title="SearchConnectFilter - SearchConnectFilter is used for searching for documents and adding connections based on whether they pass a Filter">SearchConnectFilter<em>SearchConnectFilter is used for searching for documents and adding connections based on whether they pass a Filter</em></a><li><li><a href="searchconnectmefilter.doc.html" title="SearchConnectMeFilter - SearchConnectMeFilter is used for searching for documents and adding connections from the origin user to the document based on whether they pass a Filter">SearchConnectMeFilter<em>SearchConnectMeFilter is used for searching for documents and adding connections from the origin user to the document based on whether they pass a Filter</em></a><li></ul>
     </div>
 </section>
 <footer>
diff --git a/gen/gql/docs/membership.doc.html b/gen/gql/docs/membership.doc.html
index dc3e3d5..446a2ea 100644
--- a/gen/gql/docs/membership.doc.html
+++ b/gen/gql/docs/membership.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/message.doc.html b/gen/gql/docs/message.doc.html
index 804db2e..9112e87 100644
--- a/gen/gql/docs/message.doc.html
+++ b/gen/gql/docs/message.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/mutation.doc.html b/gen/gql/docs/mutation.doc.html
index 3a3f6f0..e04a5fd 100644
--- a/gen/gql/docs/mutation.doc.html
+++ b/gen/gql/docs/mutation.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
@@ -443,7 +463,7 @@ <h2 id="graphql-schema-definition" class="graphdoc-section__title slds-text-head
             </a>
             GraphQL Schema definition
         </h2>
-        <code class="highlight"><ul class="code" style="padding-left:56px"><li><span class="keyword operator ts">type</span> <span class="identifier">Mutation</span> {</li><li></li><li><span class="tab"><span class="comment line">#   createDoc creates a single doc in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">createDoc</span>(<span class="meta">input</span>: <a class="support type" href="docconstructor.doc.html">DocConstructor</a>!): <a class="support type" href="doc.doc.html">Doc</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   createDocs creates 1-many documents in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">createDocs</span>(<span class="meta">input</span>: <a class="support type" href="docconstructors.doc.html">DocConstructors</a>!): <a class="support type" href="docs.doc.html">Docs</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   editDoc edites a single doc in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">editDoc</span>(<span class="meta">input</span>: <a class="support type" href="edit.doc.html">Edit</a>!): <a class="support type" href="doc.doc.html">Doc</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   editDocs edites 0-many docs in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">editDocs</span>(<span class="meta">input</span>: <a class="support type" href="editfilter.doc.html">EditFilter</a>!): <a class="support type" href="docs.doc.html">Docs</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   delDoc deletes a doc by reference</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">delDoc</span>(<span class="meta">input</span>: <a class="support type" href="refinput.doc.html">RefInput</a>!): <a class="support type" href="empty.doc.html">Empty</a> </span></li><li></li><li><span class="tab"><span class="comment line">#   delDocs deletes 0-many docs that pass a Filter</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">delDocs</span>(<span class="meta">input</span>: <a class="support type" href="filter.doc.html">Filter</a>!): <a class="support type" href="empty.doc.html">Empty</a> </span></li><li></li><li><span class="tab"><span class="comment line">#   createConnection creates a single connection in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">createConnection</span>(<span class="meta">input</span>: <a class="support type" href="connectionconstructor.doc.html">ConnectionConstructor</a>!): <a class="support type" href="connection.doc.html">Connection</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   createConnections creates 1-many connections in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">createConnections</span>(<span class="meta">input</span>: <a class="support type" href="connectionconstructors.doc.html">ConnectionConstructors</a>!): <a class="support type" href="connections.doc.html">Connections</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   editConnection edites a single connection in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">editConnection</span>(<span class="meta">input</span>: <a class="support type" href="edit.doc.html">Edit</a>!): <a class="support type" href="connection.doc.html">Connection</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   editConnections edites 0-many connections in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">editConnections</span>(<span class="meta">input</span>: <a class="support type" href="editfilter.doc.html">EditFilter</a>!): <a class="support type" href="connections.doc.html">Connections</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   delConnection deletes a connection by reference</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">delConnection</span>(<span class="meta">input</span>: <a class="support type" href="refinput.doc.html">RefInput</a>!): <a class="support type" href="empty.doc.html">Empty</a> </span></li><li></li><li><span class="tab"><span class="comment line">#   delConnections deletes 0-many connections that pass a Filter</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">delConnections</span>(<span class="meta">input</span>: <a class="support type" href="filter.doc.html">Filter</a>!): <a class="support type" href="empty.doc.html">Empty</a> </span></li><li></li><li><span class="tab"><span class="comment line">#   broadcast broadcasts a mesage to a pubsub/stream channel</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">broadcast</span>(<span class="meta">input</span>: <a class="support type" href="outboundmessage.doc.html">OutboundMessage</a>!): <a class="support type" href="empty.doc.html">Empty</a> </span></li><li></li><li><span class="tab"><span class="comment line">#   setIndexes sets all of the indexes in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">setIndexes</span>(<span class="meta">input</span>: <a class="support type" href="indexesinput.doc.html">IndexesInput</a>!): <a class="support type" href="empty.doc.html">Empty</a> </span></li><li></li><li><span class="tab"><span class="comment line">#   setAuthorizers sets all of the authorizers in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">setAuthorizers</span>(<span class="meta">input</span>: <a class="support type" href="authorizersinput.doc.html">AuthorizersInput</a>!): <a class="support type" href="empty.doc.html">Empty</a> </span></li><li></li><li><span class="tab"><span class="comment line">#   setConstraints sets all of the constraints in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">setConstraints</span>(<span class="meta">input</span>: <a class="support type" href="constraintsinput.doc.html">ConstraintsInput</a>!): <a class="support type" href="empty.doc.html">Empty</a> </span></li><li></li><li><span class="tab"><span class="comment line">#   v sets all of the triggers in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">setTriggers</span>(<span class="meta">input</span>: <a class="support type" href="triggersinput.doc.html">TriggersInput</a>!): <a class="support type" href="empty.doc.html">Empty</a> </span></li><li></li><li><span class="tab"><span class="comment line">#   searchAndConnect searches for documents and forms connections based on whether </span></span></li><li><span class="tab"><span class="comment line">#   they pass a filter</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">searchAndConnect</span>(<span class="meta">input</span>: <a class="support type" href="searchconnectfilter.doc.html">SearchConnectFilter</a>!): <a class="support type" href="connections.doc.html">Connections</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   searchAndConnectMe searches for documents and forms connections from the origin </span></span></li><li><span class="tab"><span class="comment line">#   user to the document based on whether they pass a filter</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">searchAndConnectMe</span>(<span class="meta">input</span>: <a class="support type" href="searchconnectmefilter.doc.html">SearchConnectMeFilter</a>!): <a class="support type" href="connections.doc.html">Connections</a>! </span></li><li>}</li></ul></code>
+        <code class="highlight"><ul class="code" style="padding-left:56px"><li><span class="keyword operator ts">type</span> <span class="identifier">Mutation</span> {</li><li></li><li><span class="tab"><span class="comment line">#   createDoc creates a single doc in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">createDoc</span>(<span class="meta">input</span>: <a class="support type" href="docconstructor.doc.html">DocConstructor</a>!): <a class="support type" href="doc.doc.html">Doc</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   createDocs creates 1-many documents in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">createDocs</span>(<span class="meta">input</span>: <a class="support type" href="docconstructors.doc.html">DocConstructors</a>!): <a class="support type" href="docs.doc.html">Docs</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   putDoc create-or-replaces a Doc in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">putDoc</span>(<span class="meta">input</span>: <a class="support type" href="putdoc.doc.html">PutDoc</a>): <a class="support type" href="doc.doc.html">Doc</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   putDocs puts a batch of docs in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">putDocs</span>(<span class="meta">input</span>: <a class="support type" href="putdocs.doc.html">PutDocs</a>): <a class="support type" href="docs.doc.html">Docs</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   editDoc edites a single doc in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">editDoc</span>(<span class="meta">input</span>: <a class="support type" href="edit.doc.html">Edit</a>!): <a class="support type" href="doc.doc.html">Doc</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   editDocs edites 0-many docs in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">editDocs</span>(<span class="meta">input</span>: <a class="support type" href="editfilter.doc.html">EditFilter</a>!): <a class="support type" href="docs.doc.html">Docs</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   delDoc deletes a doc by reference</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">delDoc</span>(<span class="meta">input</span>: <a class="support type" href="refinput.doc.html">RefInput</a>!): <a class="support type" href="empty.doc.html">Empty</a> </span></li><li></li><li><span class="tab"><span class="comment line">#   delDocs deletes 0-many docs that pass a Filter</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">delDocs</span>(<span class="meta">input</span>: <a class="support type" href="filter.doc.html">Filter</a>!): <a class="support type" href="empty.doc.html">Empty</a> </span></li><li></li><li><span class="tab"><span class="comment line">#   createConnection creates a single connection in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">createConnection</span>(<span class="meta">input</span>: <a class="support type" href="connectionconstructor.doc.html">ConnectionConstructor</a>!): <a class="support type" href="connection.doc.html">Connection</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   createConnections creates 1-many connections in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">createConnections</span>(<span class="meta">input</span>: <a class="support type" href="connectionconstructors.doc.html">ConnectionConstructors</a>!): <a class="support type" href="connections.doc.html">Connections</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   putConnection create-or-replaces a Connection in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">putConnection</span>(<span class="meta">input</span>: <a class="support type" href="putconnection.doc.html">PutConnection</a>): <a class="support type" href="connection.doc.html">Connection</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   putConnections puts a batch of connections in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">putConnections</span>(<span class="meta">input</span>: <a class="support type" href="putconnections.doc.html">PutConnections</a>): <a class="support type" href="connections.doc.html">Connections</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   editConnection edites a single connection in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">editConnection</span>(<span class="meta">input</span>: <a class="support type" href="edit.doc.html">Edit</a>!): <a class="support type" href="connection.doc.html">Connection</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   editConnections edites 0-many connections in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">editConnections</span>(<span class="meta">input</span>: <a class="support type" href="editfilter.doc.html">EditFilter</a>!): <a class="support type" href="connections.doc.html">Connections</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   delConnection deletes a connection by reference</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">delConnection</span>(<span class="meta">input</span>: <a class="support type" href="refinput.doc.html">RefInput</a>!): <a class="support type" href="empty.doc.html">Empty</a> </span></li><li></li><li><span class="tab"><span class="comment line">#   delConnections deletes 0-many connections that pass a Filter</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">delConnections</span>(<span class="meta">input</span>: <a class="support type" href="filter.doc.html">Filter</a>!): <a class="support type" href="empty.doc.html">Empty</a> </span></li><li></li><li><span class="tab"><span class="comment line">#   broadcast broadcasts a mesage to a pubsub/stream channel</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">broadcast</span>(<span class="meta">input</span>: <a class="support type" href="outboundmessage.doc.html">OutboundMessage</a>!): <a class="support type" href="empty.doc.html">Empty</a> </span></li><li></li><li><span class="tab"><span class="comment line">#   setIndexes sets all of the indexes in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">setIndexes</span>(<span class="meta">input</span>: <a class="support type" href="indexesinput.doc.html">IndexesInput</a>!): <a class="support type" href="empty.doc.html">Empty</a> </span></li><li></li><li><span class="tab"><span class="comment line">#   setAuthorizers sets all of the authorizers in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">setAuthorizers</span>(<span class="meta">input</span>: <a class="support type" href="authorizersinput.doc.html">AuthorizersInput</a>!): <a class="support type" href="empty.doc.html">Empty</a> </span></li><li></li><li><span class="tab"><span class="comment line">#   setConstraints sets all of the constraints in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">setConstraints</span>(<span class="meta">input</span>: <a class="support type" href="constraintsinput.doc.html">ConstraintsInput</a>!): <a class="support type" href="empty.doc.html">Empty</a> </span></li><li></li><li><span class="tab"><span class="comment line">#   v sets all of the triggers in the graph</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">setTriggers</span>(<span class="meta">input</span>: <a class="support type" href="triggersinput.doc.html">TriggersInput</a>!): <a class="support type" href="empty.doc.html">Empty</a> </span></li><li></li><li><span class="tab"><span class="comment line">#   searchAndConnect searches for documents and forms connections based on whether </span></span></li><li><span class="tab"><span class="comment line">#   they pass a filter</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">searchAndConnect</span>(<span class="meta">input</span>: <a class="support type" href="searchconnectfilter.doc.html">SearchConnectFilter</a>!): <a class="support type" href="connections.doc.html">Connections</a>! </span></li><li></li><li><span class="tab"><span class="comment line">#   searchAndConnectMe searches for documents and forms connections from the origin </span></span></li><li><span class="tab"><span class="comment line">#   user to the document based on whether they pass a filter</span></span></li><li><span class="tab"><span class="comment line"># </span></span></li><li><span class="tab"><span class="comment line"># Arguments</span></span></li><li><span class="tab"><span class="comment line">#   <strong>input</strong>: </span></span></li><li><span class="tab"><span class="meta">searchAndConnectMe</span>(<span class="meta">input</span>: <a class="support type" href="searchconnectmefilter.doc.html">SearchConnectMeFilter</a>!): <a class="support type" href="connections.doc.html">Connections</a>! </span></li><li>}</li></ul></code>
     </div>
 </section>
 <section>
diff --git a/gen/gql/docs/outboundmessage.doc.html b/gen/gql/docs/outboundmessage.doc.html
index be2565f..b74a700 100644
--- a/gen/gql/docs/outboundmessage.doc.html
+++ b/gen/gql/docs/outboundmessage.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/peer.doc.html b/gen/gql/docs/peer.doc.html
index cdc6128..2bd43e4 100644
--- a/gen/gql/docs/peer.doc.html
+++ b/gen/gql/docs/peer.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/peerinput.doc.html b/gen/gql/docs/peerinput.doc.html
index 08e4fed..e7a4af8 100644
--- a/gen/gql/docs/peerinput.doc.html
+++ b/gen/gql/docs/peerinput.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/putconnection.doc.html b/gen/gql/docs/putconnection.doc.html
new file mode 100644
index 0000000..1a42dca
--- /dev/null
+++ b/gen/gql/docs/putconnection.doc.html
@@ -0,0 +1,491 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8" />
+    <meta http-equiv="x-ua-compatible" content="ie=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
+    <link type="text/css" rel="stylesheet" href="./styles/graphdoc.css" />
+    <title>PutConnection</title>
+    <link href="https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700" rel="stylesheet"><link type="text/css" rel="stylesheet" href="./assets/code.css" /><link type="text/css" rel="stylesheet" href="./assets/require-by.css" />
+</head>
+<body class="slds-scrollable--y">
+    <nav class="slds-grid slds-grid--vertical slds-col--rule-right">
+        <header class="slds-p-around--medium slds-col slds-shrik slds-grow-none">
+            <button class="slds-button slds-button--icon slds-float--right js-toggle-navigation less-than-medium">
+                <i class="material-icons">close</i>
+            </button>
+                <h3 class="slds-text-heading--medium"><a href="./">GraphQL Schema</a></h3>
+            <div class="slds-p-top--small">
+                <input id="type-search" type="text" placeholder="Search a type" autofocus="" class="slds-input" />
+            </div>
+        </header>
+        <div id="navication-scroll" class="slds-scrollable--y slds-col slds-grow">
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Schema</h4>
+    <ul>
+        <li  title="Query">
+            <a href="query.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Query
+            </a>
+        </li>
+        <li  title="Mutation">
+            <a href="mutation.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Mutation
+            </a>
+        </li>
+        <li  title="Subscription">
+            <a href="subscription.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Subscription
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Scalars</h4>
+    <ul>
+        <li  title="Boolean">
+            <a href="boolean.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Boolean
+            </a>
+        </li>
+        <li  title="Empty">
+            <a href="empty.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Empty
+            </a>
+        </li>
+        <li  title="Float">
+            <a href="float.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Float
+            </a>
+        </li>
+        <li  title="Int">
+            <a href="int.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Int
+            </a>
+        </li>
+        <li  title="Map">
+            <a href="map.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Map
+            </a>
+        </li>
+        <li  title="String">
+            <a href="string.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                String
+            </a>
+        </li>
+        <li  title="Time">
+            <a href="time.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Time
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Enums</h4>
+    <ul>
+        <li  title="Aggregate">
+            <a href="aggregate.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Aggregate
+            </a>
+        </li>
+        <li  title="Algorithm">
+            <a href="algorithm.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Algorithm
+            </a>
+        </li>
+        <li  title="Membership">
+            <a href="membership.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Membership
+            </a>
+        </li>
+        <li  title="__DirectiveLocation">
+            <a href="directivelocation.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __DirectiveLocation
+            </a>
+        </li>
+        <li  title="__TypeKind">
+            <a href="typekind.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __TypeKind
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Objects</h4>
+    <ul>
+        <li  title="Authorizer">
+            <a href="authorizer.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Authorizer
+            </a>
+        </li>
+        <li  title="Authorizers">
+            <a href="authorizers.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Authorizers
+            </a>
+        </li>
+        <li  title="AuthTarget">
+            <a href="authtarget.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                AuthTarget
+            </a>
+        </li>
+        <li  title="Connection">
+            <a href="connection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Connection
+            </a>
+        </li>
+        <li  title="Connections">
+            <a href="connections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Connections
+            </a>
+        </li>
+        <li  title="Constraint">
+            <a href="constraint.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Constraint
+            </a>
+        </li>
+        <li  title="Constraints">
+            <a href="constraints.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Constraints
+            </a>
+        </li>
+        <li  title="Doc">
+            <a href="doc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Doc
+            </a>
+        </li>
+        <li  title="Docs">
+            <a href="docs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Docs
+            </a>
+        </li>
+        <li  title="Index">
+            <a href="index.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Index
+            </a>
+        </li>
+        <li  title="Indexes">
+            <a href="indexes.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Indexes
+            </a>
+        </li>
+        <li  title="Message">
+            <a href="message.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Message
+            </a>
+        </li>
+        <li  title="Peer">
+            <a href="peer.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Peer
+            </a>
+        </li>
+        <li  title="RaftState">
+            <a href="raftstate.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                RaftState
+            </a>
+        </li>
+        <li  title="Ref">
+            <a href="ref.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Ref
+            </a>
+        </li>
+        <li  title="Refs">
+            <a href="refs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Refs
+            </a>
+        </li>
+        <li  title="Schema">
+            <a href="schema.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Schema
+            </a>
+        </li>
+        <li  title="Traversal">
+            <a href="traversal.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Traversal
+            </a>
+        </li>
+        <li  title="Traversals">
+            <a href="traversals.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Traversals
+            </a>
+        </li>
+        <li  title="Trigger">
+            <a href="trigger.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Trigger
+            </a>
+        </li>
+        <li  title="Triggers">
+            <a href="triggers.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Triggers
+            </a>
+        </li>
+        <li  title="__Directive">
+            <a href="directive.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __Directive
+            </a>
+        </li>
+        <li  title="__EnumValue">
+            <a href="enumvalue.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __EnumValue
+            </a>
+        </li>
+        <li  title="__Field">
+            <a href="field.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __Field
+            </a>
+        </li>
+        <li  title="__InputValue">
+            <a href="inputvalue.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __InputValue
+            </a>
+        </li>
+        <li  title="__Schema">
+            <a href="schema.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __Schema
+            </a>
+        </li>
+        <li  title="__Type">
+            <a href="type.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __Type
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
+    <ul>
+        <li  title="AggFilter">
+            <a href="aggfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                AggFilter
+            </a>
+        </li>
+        <li  title="AuthorizerInput">
+            <a href="authorizerinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                AuthorizerInput
+            </a>
+        </li>
+        <li  title="AuthorizersInput">
+            <a href="authorizersinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                AuthorizersInput
+            </a>
+        </li>
+        <li  title="ConnectFilter">
+            <a href="connectfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConnectFilter
+            </a>
+        </li>
+        <li  title="ConnectionConstructor">
+            <a href="connectionconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConnectionConstructor
+            </a>
+        </li>
+        <li  title="ConnectionConstructors">
+            <a href="connectionconstructors.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConnectionConstructors
+            </a>
+        </li>
+        <li  title="ConstraintInput">
+            <a href="constraintinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConstraintInput
+            </a>
+        </li>
+        <li  title="ConstraintsInput">
+            <a href="constraintsinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConstraintsInput
+            </a>
+        </li>
+        <li  title="DocConstructor">
+            <a href="docconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                DocConstructor
+            </a>
+        </li>
+        <li  title="DocConstructors">
+            <a href="docconstructors.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                DocConstructors
+            </a>
+        </li>
+        <li  title="Edit">
+            <a href="edit.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Edit
+            </a>
+        </li>
+        <li  title="EditFilter">
+            <a href="editfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                EditFilter
+            </a>
+        </li>
+        <li  title="ExistsFilter">
+            <a href="existsfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ExistsFilter
+            </a>
+        </li>
+        <li  title="ExprFilter">
+            <a href="exprfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ExprFilter
+            </a>
+        </li>
+        <li  title="Filter">
+            <a href="filter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Filter
+            </a>
+        </li>
+        <li  title="IndexesInput">
+            <a href="indexesinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                IndexesInput
+            </a>
+        </li>
+        <li  title="IndexInput">
+            <a href="indexinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                IndexInput
+            </a>
+        </li>
+        <li  title="OutboundMessage">
+            <a href="outboundmessage.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                OutboundMessage
+            </a>
+        </li>
+        <li  title="PeerInput">
+            <a href="peerinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PeerInput
+            </a>
+        </li>
+        <li class="slds-is-active" title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
+        <li  title="RefConstructor">
+            <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                RefConstructor
+            </a>
+        </li>
+        <li  title="RefInput">
+            <a href="refinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                RefInput
+            </a>
+        </li>
+        <li  title="SearchConnectFilter">
+            <a href="searchconnectfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                SearchConnectFilter
+            </a>
+        </li>
+        <li  title="SearchConnectMeFilter">
+            <a href="searchconnectmefilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                SearchConnectMeFilter
+            </a>
+        </li>
+        <li  title="StreamFilter">
+            <a href="streamfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                StreamFilter
+            </a>
+        </li>
+        <li  title="TraverseFilter">
+            <a href="traversefilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                TraverseFilter
+            </a>
+        </li>
+        <li  title="TraverseMeFilter">
+            <a href="traversemefilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                TraverseMeFilter
+            </a>
+        </li>
+        <li  title="TriggerInput">
+            <a href="triggerinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                TriggerInput
+            </a>
+        </li>
+        <li  title="TriggersInput">
+            <a href="triggersinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                TriggersInput
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Directives</h4>
+    <ul>
+        <li  title="deprecated">
+            <a href="deprecated.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                deprecated
+            </a>
+        </li>
+        <li  title="include">
+            <a href="include.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                include
+            </a>
+        </li>
+        <li  title="skip">
+            <a href="skip.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                skip
+            </a>
+        </li>
+    </ul>
+</div>
+        </div>
+    </nav>
+    <main><section class="title slds-theme--inverse">
+    <div class="container slds-grid">
+        <div>
+        <button class="slds-button js-toggle-navigation less-than-medium">
+            <i class="material-icons slds-button__icon slds-button__icon--left">menu</i>
+            <span class="slds-text-title--caps">Types<span>
+        </button>
+        </div>
+        </div>
+    </div>
+    <div class="container">
+        <p class="slds-text-title--caps slds-text-color--weak">INPUT_OBJECT</p>
+        <h1 class="slds-text-heading--large">PutConnection</h1>
+        <div class="slds-text-body--regular"></div>
+    </div>
+</section>
+<section>
+    <div class="container">
+        <h2 id="graphql-schema-definition" class="graphdoc-section__title slds-text-heading--medium slds-m-top--small">
+            <a href="#graphql-schema-definition">
+                <i class="material-icons">link</i>
+            </a>
+            GraphQL Schema definition
+        </h2>
+        <code class="highlight"><ul class="code" style="padding-left:42px"><li><span class="keyword operator ts">input</span> <span class="identifier">PutConnection</span> {</li><li><span class="tab"><li><span class="tab"><span class="comment line">#   ref is the ref to the connection</span></span></li><li><span class="tab"><span class="meta">ref</span>: <a class="support type" href="refinput.doc.html">RefInput</a>!</span></li></span></li><li><span class="tab"><li><span class="tab"><span class="comment line">#   k/v pairs</span></span></li><li><span class="tab"><span class="meta">attributes</span>: <a class="support type" href="map.doc.html">Map</a></span></li></span></li><li><span class="tab"><li><span class="tab"><span class="comment line">#   directed is false if the connection is bi-directional</span></span></li><li><span class="tab"><span class="meta">directed</span>: <a class="support type" href="boolean.doc.html">Boolean</a>!</span></li></span></li><li><span class="tab"><li><span class="tab"><span class="comment line">#   from is the doc ref that is the source of the connection</span></span></li><li><span class="tab"><span class="meta">from</span>: <a class="support type" href="refinput.doc.html">RefInput</a>!</span></li></span></li><li><span class="tab"><li><span class="tab"><span class="comment line">#   to is the doc ref that is the destination of the connection</span></span></li><li><span class="tab"><span class="meta">to</span>: <a class="support type" href="refinput.doc.html">RefInput</a>!</span></li></span></li><li>}</li></ul></code>
+    </div>
+</section>
+<section>
+    <div class="container">
+        <h2 id="require-by" class="graphdoc-section__title slds-text-heading--medium slds-m-top--small">
+            <a href="#require-by">
+                <i class="material-icons">link</i>
+            </a>
+            Require by
+        </h2>
+        <ul class="require-by"><li><a href="mutation.doc.html" title="Mutation - ">Mutation<em></em></a><li><li><a href="putconnections.doc.html" title="PutConnections - ">PutConnections<em></em></a><li></ul>
+    </div>
+</section>
+<footer>
+<div class="container slds-p-around--large">
+    <p class="slds-text-align--right slds-text-title--caps">
+        Generated with <a href="https://github.com/2fd/graphdoc#readme" target="_blank">graphdoc 2.4.0</a>
+    </p>
+</div>
+</footer>
+</main>
+    <script src="./scripts/focus-active.js"></script>
+    <script src="./scripts/filter-types.js"></script>
+    <script src="./scripts/toggle-navigation.js"></script>
+</body>
\ No newline at end of file
diff --git a/gen/gql/docs/putconnections.doc.html b/gen/gql/docs/putconnections.doc.html
new file mode 100644
index 0000000..3621e15
--- /dev/null
+++ b/gen/gql/docs/putconnections.doc.html
@@ -0,0 +1,491 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8" />
+    <meta http-equiv="x-ua-compatible" content="ie=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
+    <link type="text/css" rel="stylesheet" href="./styles/graphdoc.css" />
+    <title>PutConnections</title>
+    <link href="https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700" rel="stylesheet"><link type="text/css" rel="stylesheet" href="./assets/code.css" /><link type="text/css" rel="stylesheet" href="./assets/require-by.css" />
+</head>
+<body class="slds-scrollable--y">
+    <nav class="slds-grid slds-grid--vertical slds-col--rule-right">
+        <header class="slds-p-around--medium slds-col slds-shrik slds-grow-none">
+            <button class="slds-button slds-button--icon slds-float--right js-toggle-navigation less-than-medium">
+                <i class="material-icons">close</i>
+            </button>
+                <h3 class="slds-text-heading--medium"><a href="./">GraphQL Schema</a></h3>
+            <div class="slds-p-top--small">
+                <input id="type-search" type="text" placeholder="Search a type" autofocus="" class="slds-input" />
+            </div>
+        </header>
+        <div id="navication-scroll" class="slds-scrollable--y slds-col slds-grow">
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Schema</h4>
+    <ul>
+        <li  title="Query">
+            <a href="query.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Query
+            </a>
+        </li>
+        <li  title="Mutation">
+            <a href="mutation.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Mutation
+            </a>
+        </li>
+        <li  title="Subscription">
+            <a href="subscription.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Subscription
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Scalars</h4>
+    <ul>
+        <li  title="Boolean">
+            <a href="boolean.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Boolean
+            </a>
+        </li>
+        <li  title="Empty">
+            <a href="empty.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Empty
+            </a>
+        </li>
+        <li  title="Float">
+            <a href="float.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Float
+            </a>
+        </li>
+        <li  title="Int">
+            <a href="int.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Int
+            </a>
+        </li>
+        <li  title="Map">
+            <a href="map.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Map
+            </a>
+        </li>
+        <li  title="String">
+            <a href="string.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                String
+            </a>
+        </li>
+        <li  title="Time">
+            <a href="time.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Time
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Enums</h4>
+    <ul>
+        <li  title="Aggregate">
+            <a href="aggregate.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Aggregate
+            </a>
+        </li>
+        <li  title="Algorithm">
+            <a href="algorithm.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Algorithm
+            </a>
+        </li>
+        <li  title="Membership">
+            <a href="membership.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Membership
+            </a>
+        </li>
+        <li  title="__DirectiveLocation">
+            <a href="directivelocation.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __DirectiveLocation
+            </a>
+        </li>
+        <li  title="__TypeKind">
+            <a href="typekind.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __TypeKind
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Objects</h4>
+    <ul>
+        <li  title="Authorizer">
+            <a href="authorizer.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Authorizer
+            </a>
+        </li>
+        <li  title="Authorizers">
+            <a href="authorizers.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Authorizers
+            </a>
+        </li>
+        <li  title="AuthTarget">
+            <a href="authtarget.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                AuthTarget
+            </a>
+        </li>
+        <li  title="Connection">
+            <a href="connection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Connection
+            </a>
+        </li>
+        <li  title="Connections">
+            <a href="connections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Connections
+            </a>
+        </li>
+        <li  title="Constraint">
+            <a href="constraint.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Constraint
+            </a>
+        </li>
+        <li  title="Constraints">
+            <a href="constraints.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Constraints
+            </a>
+        </li>
+        <li  title="Doc">
+            <a href="doc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Doc
+            </a>
+        </li>
+        <li  title="Docs">
+            <a href="docs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Docs
+            </a>
+        </li>
+        <li  title="Index">
+            <a href="index.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Index
+            </a>
+        </li>
+        <li  title="Indexes">
+            <a href="indexes.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Indexes
+            </a>
+        </li>
+        <li  title="Message">
+            <a href="message.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Message
+            </a>
+        </li>
+        <li  title="Peer">
+            <a href="peer.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Peer
+            </a>
+        </li>
+        <li  title="RaftState">
+            <a href="raftstate.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                RaftState
+            </a>
+        </li>
+        <li  title="Ref">
+            <a href="ref.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Ref
+            </a>
+        </li>
+        <li  title="Refs">
+            <a href="refs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Refs
+            </a>
+        </li>
+        <li  title="Schema">
+            <a href="schema.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Schema
+            </a>
+        </li>
+        <li  title="Traversal">
+            <a href="traversal.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Traversal
+            </a>
+        </li>
+        <li  title="Traversals">
+            <a href="traversals.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Traversals
+            </a>
+        </li>
+        <li  title="Trigger">
+            <a href="trigger.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Trigger
+            </a>
+        </li>
+        <li  title="Triggers">
+            <a href="triggers.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Triggers
+            </a>
+        </li>
+        <li  title="__Directive">
+            <a href="directive.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __Directive
+            </a>
+        </li>
+        <li  title="__EnumValue">
+            <a href="enumvalue.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __EnumValue
+            </a>
+        </li>
+        <li  title="__Field">
+            <a href="field.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __Field
+            </a>
+        </li>
+        <li  title="__InputValue">
+            <a href="inputvalue.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __InputValue
+            </a>
+        </li>
+        <li  title="__Schema">
+            <a href="schema.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __Schema
+            </a>
+        </li>
+        <li  title="__Type">
+            <a href="type.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __Type
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
+    <ul>
+        <li  title="AggFilter">
+            <a href="aggfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                AggFilter
+            </a>
+        </li>
+        <li  title="AuthorizerInput">
+            <a href="authorizerinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                AuthorizerInput
+            </a>
+        </li>
+        <li  title="AuthorizersInput">
+            <a href="authorizersinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                AuthorizersInput
+            </a>
+        </li>
+        <li  title="ConnectFilter">
+            <a href="connectfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConnectFilter
+            </a>
+        </li>
+        <li  title="ConnectionConstructor">
+            <a href="connectionconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConnectionConstructor
+            </a>
+        </li>
+        <li  title="ConnectionConstructors">
+            <a href="connectionconstructors.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConnectionConstructors
+            </a>
+        </li>
+        <li  title="ConstraintInput">
+            <a href="constraintinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConstraintInput
+            </a>
+        </li>
+        <li  title="ConstraintsInput">
+            <a href="constraintsinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConstraintsInput
+            </a>
+        </li>
+        <li  title="DocConstructor">
+            <a href="docconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                DocConstructor
+            </a>
+        </li>
+        <li  title="DocConstructors">
+            <a href="docconstructors.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                DocConstructors
+            </a>
+        </li>
+        <li  title="Edit">
+            <a href="edit.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Edit
+            </a>
+        </li>
+        <li  title="EditFilter">
+            <a href="editfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                EditFilter
+            </a>
+        </li>
+        <li  title="ExistsFilter">
+            <a href="existsfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ExistsFilter
+            </a>
+        </li>
+        <li  title="ExprFilter">
+            <a href="exprfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ExprFilter
+            </a>
+        </li>
+        <li  title="Filter">
+            <a href="filter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Filter
+            </a>
+        </li>
+        <li  title="IndexesInput">
+            <a href="indexesinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                IndexesInput
+            </a>
+        </li>
+        <li  title="IndexInput">
+            <a href="indexinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                IndexInput
+            </a>
+        </li>
+        <li  title="OutboundMessage">
+            <a href="outboundmessage.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                OutboundMessage
+            </a>
+        </li>
+        <li  title="PeerInput">
+            <a href="peerinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PeerInput
+            </a>
+        </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li class="slds-is-active" title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
+        <li  title="RefConstructor">
+            <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                RefConstructor
+            </a>
+        </li>
+        <li  title="RefInput">
+            <a href="refinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                RefInput
+            </a>
+        </li>
+        <li  title="SearchConnectFilter">
+            <a href="searchconnectfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                SearchConnectFilter
+            </a>
+        </li>
+        <li  title="SearchConnectMeFilter">
+            <a href="searchconnectmefilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                SearchConnectMeFilter
+            </a>
+        </li>
+        <li  title="StreamFilter">
+            <a href="streamfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                StreamFilter
+            </a>
+        </li>
+        <li  title="TraverseFilter">
+            <a href="traversefilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                TraverseFilter
+            </a>
+        </li>
+        <li  title="TraverseMeFilter">
+            <a href="traversemefilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                TraverseMeFilter
+            </a>
+        </li>
+        <li  title="TriggerInput">
+            <a href="triggerinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                TriggerInput
+            </a>
+        </li>
+        <li  title="TriggersInput">
+            <a href="triggersinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                TriggersInput
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Directives</h4>
+    <ul>
+        <li  title="deprecated">
+            <a href="deprecated.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                deprecated
+            </a>
+        </li>
+        <li  title="include">
+            <a href="include.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                include
+            </a>
+        </li>
+        <li  title="skip">
+            <a href="skip.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                skip
+            </a>
+        </li>
+    </ul>
+</div>
+        </div>
+    </nav>
+    <main><section class="title slds-theme--inverse">
+    <div class="container slds-grid">
+        <div>
+        <button class="slds-button js-toggle-navigation less-than-medium">
+            <i class="material-icons slds-button__icon slds-button__icon--left">menu</i>
+            <span class="slds-text-title--caps">Types<span>
+        </button>
+        </div>
+        </div>
+    </div>
+    <div class="container">
+        <p class="slds-text-title--caps slds-text-color--weak">INPUT_OBJECT</p>
+        <h1 class="slds-text-heading--large">PutConnections</h1>
+        <div class="slds-text-body--regular"></div>
+    </div>
+</section>
+<section>
+    <div class="container">
+        <h2 id="graphql-schema-definition" class="graphdoc-section__title slds-text-heading--medium slds-m-top--small">
+            <a href="#graphql-schema-definition">
+                <i class="material-icons">link</i>
+            </a>
+            GraphQL Schema definition
+        </h2>
+        <code class="highlight"><ul class="code" style="padding-left:28px"><li><span class="keyword operator ts">input</span> <span class="identifier">PutConnections</span> {</li><li><span class="tab"><li><span class="tab"><span class="comment line">#   connections is an array of connections</span></span></li><li><span class="tab"><span class="meta">connections</span>: [<a class="support type" href="putconnection.doc.html">PutConnection</a>!]</span></li></span></li><li>}</li></ul></code>
+    </div>
+</section>
+<section>
+    <div class="container">
+        <h2 id="require-by" class="graphdoc-section__title slds-text-heading--medium slds-m-top--small">
+            <a href="#require-by">
+                <i class="material-icons">link</i>
+            </a>
+            Require by
+        </h2>
+        <ul class="require-by"><li><a href="mutation.doc.html" title="Mutation - ">Mutation<em></em></a><li></ul>
+    </div>
+</section>
+<footer>
+<div class="container slds-p-around--large">
+    <p class="slds-text-align--right slds-text-title--caps">
+        Generated with <a href="https://github.com/2fd/graphdoc#readme" target="_blank">graphdoc 2.4.0</a>
+    </p>
+</div>
+</footer>
+</main>
+    <script src="./scripts/focus-active.js"></script>
+    <script src="./scripts/filter-types.js"></script>
+    <script src="./scripts/toggle-navigation.js"></script>
+</body>
\ No newline at end of file
diff --git a/gen/gql/docs/putdoc.doc.html b/gen/gql/docs/putdoc.doc.html
new file mode 100644
index 0000000..a33fe1e
--- /dev/null
+++ b/gen/gql/docs/putdoc.doc.html
@@ -0,0 +1,491 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8" />
+    <meta http-equiv="x-ua-compatible" content="ie=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
+    <link type="text/css" rel="stylesheet" href="./styles/graphdoc.css" />
+    <title>PutDoc</title>
+    <link href="https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700" rel="stylesheet"><link type="text/css" rel="stylesheet" href="./assets/code.css" /><link type="text/css" rel="stylesheet" href="./assets/require-by.css" />
+</head>
+<body class="slds-scrollable--y">
+    <nav class="slds-grid slds-grid--vertical slds-col--rule-right">
+        <header class="slds-p-around--medium slds-col slds-shrik slds-grow-none">
+            <button class="slds-button slds-button--icon slds-float--right js-toggle-navigation less-than-medium">
+                <i class="material-icons">close</i>
+            </button>
+                <h3 class="slds-text-heading--medium"><a href="./">GraphQL Schema</a></h3>
+            <div class="slds-p-top--small">
+                <input id="type-search" type="text" placeholder="Search a type" autofocus="" class="slds-input" />
+            </div>
+        </header>
+        <div id="navication-scroll" class="slds-scrollable--y slds-col slds-grow">
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Schema</h4>
+    <ul>
+        <li  title="Query">
+            <a href="query.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Query
+            </a>
+        </li>
+        <li  title="Mutation">
+            <a href="mutation.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Mutation
+            </a>
+        </li>
+        <li  title="Subscription">
+            <a href="subscription.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Subscription
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Scalars</h4>
+    <ul>
+        <li  title="Boolean">
+            <a href="boolean.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Boolean
+            </a>
+        </li>
+        <li  title="Empty">
+            <a href="empty.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Empty
+            </a>
+        </li>
+        <li  title="Float">
+            <a href="float.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Float
+            </a>
+        </li>
+        <li  title="Int">
+            <a href="int.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Int
+            </a>
+        </li>
+        <li  title="Map">
+            <a href="map.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Map
+            </a>
+        </li>
+        <li  title="String">
+            <a href="string.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                String
+            </a>
+        </li>
+        <li  title="Time">
+            <a href="time.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Time
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Enums</h4>
+    <ul>
+        <li  title="Aggregate">
+            <a href="aggregate.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Aggregate
+            </a>
+        </li>
+        <li  title="Algorithm">
+            <a href="algorithm.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Algorithm
+            </a>
+        </li>
+        <li  title="Membership">
+            <a href="membership.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Membership
+            </a>
+        </li>
+        <li  title="__DirectiveLocation">
+            <a href="directivelocation.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __DirectiveLocation
+            </a>
+        </li>
+        <li  title="__TypeKind">
+            <a href="typekind.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __TypeKind
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Objects</h4>
+    <ul>
+        <li  title="Authorizer">
+            <a href="authorizer.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Authorizer
+            </a>
+        </li>
+        <li  title="Authorizers">
+            <a href="authorizers.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Authorizers
+            </a>
+        </li>
+        <li  title="AuthTarget">
+            <a href="authtarget.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                AuthTarget
+            </a>
+        </li>
+        <li  title="Connection">
+            <a href="connection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Connection
+            </a>
+        </li>
+        <li  title="Connections">
+            <a href="connections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Connections
+            </a>
+        </li>
+        <li  title="Constraint">
+            <a href="constraint.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Constraint
+            </a>
+        </li>
+        <li  title="Constraints">
+            <a href="constraints.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Constraints
+            </a>
+        </li>
+        <li  title="Doc">
+            <a href="doc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Doc
+            </a>
+        </li>
+        <li  title="Docs">
+            <a href="docs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Docs
+            </a>
+        </li>
+        <li  title="Index">
+            <a href="index.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Index
+            </a>
+        </li>
+        <li  title="Indexes">
+            <a href="indexes.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Indexes
+            </a>
+        </li>
+        <li  title="Message">
+            <a href="message.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Message
+            </a>
+        </li>
+        <li  title="Peer">
+            <a href="peer.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Peer
+            </a>
+        </li>
+        <li  title="RaftState">
+            <a href="raftstate.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                RaftState
+            </a>
+        </li>
+        <li  title="Ref">
+            <a href="ref.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Ref
+            </a>
+        </li>
+        <li  title="Refs">
+            <a href="refs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Refs
+            </a>
+        </li>
+        <li  title="Schema">
+            <a href="schema.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Schema
+            </a>
+        </li>
+        <li  title="Traversal">
+            <a href="traversal.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Traversal
+            </a>
+        </li>
+        <li  title="Traversals">
+            <a href="traversals.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Traversals
+            </a>
+        </li>
+        <li  title="Trigger">
+            <a href="trigger.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Trigger
+            </a>
+        </li>
+        <li  title="Triggers">
+            <a href="triggers.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Triggers
+            </a>
+        </li>
+        <li  title="__Directive">
+            <a href="directive.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __Directive
+            </a>
+        </li>
+        <li  title="__EnumValue">
+            <a href="enumvalue.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __EnumValue
+            </a>
+        </li>
+        <li  title="__Field">
+            <a href="field.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __Field
+            </a>
+        </li>
+        <li  title="__InputValue">
+            <a href="inputvalue.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __InputValue
+            </a>
+        </li>
+        <li  title="__Schema">
+            <a href="schema.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __Schema
+            </a>
+        </li>
+        <li  title="__Type">
+            <a href="type.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __Type
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
+    <ul>
+        <li  title="AggFilter">
+            <a href="aggfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                AggFilter
+            </a>
+        </li>
+        <li  title="AuthorizerInput">
+            <a href="authorizerinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                AuthorizerInput
+            </a>
+        </li>
+        <li  title="AuthorizersInput">
+            <a href="authorizersinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                AuthorizersInput
+            </a>
+        </li>
+        <li  title="ConnectFilter">
+            <a href="connectfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConnectFilter
+            </a>
+        </li>
+        <li  title="ConnectionConstructor">
+            <a href="connectionconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConnectionConstructor
+            </a>
+        </li>
+        <li  title="ConnectionConstructors">
+            <a href="connectionconstructors.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConnectionConstructors
+            </a>
+        </li>
+        <li  title="ConstraintInput">
+            <a href="constraintinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConstraintInput
+            </a>
+        </li>
+        <li  title="ConstraintsInput">
+            <a href="constraintsinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConstraintsInput
+            </a>
+        </li>
+        <li  title="DocConstructor">
+            <a href="docconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                DocConstructor
+            </a>
+        </li>
+        <li  title="DocConstructors">
+            <a href="docconstructors.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                DocConstructors
+            </a>
+        </li>
+        <li  title="Edit">
+            <a href="edit.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Edit
+            </a>
+        </li>
+        <li  title="EditFilter">
+            <a href="editfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                EditFilter
+            </a>
+        </li>
+        <li  title="ExistsFilter">
+            <a href="existsfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ExistsFilter
+            </a>
+        </li>
+        <li  title="ExprFilter">
+            <a href="exprfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ExprFilter
+            </a>
+        </li>
+        <li  title="Filter">
+            <a href="filter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Filter
+            </a>
+        </li>
+        <li  title="IndexesInput">
+            <a href="indexesinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                IndexesInput
+            </a>
+        </li>
+        <li  title="IndexInput">
+            <a href="indexinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                IndexInput
+            </a>
+        </li>
+        <li  title="OutboundMessage">
+            <a href="outboundmessage.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                OutboundMessage
+            </a>
+        </li>
+        <li  title="PeerInput">
+            <a href="peerinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PeerInput
+            </a>
+        </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li class="slds-is-active" title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
+        <li  title="RefConstructor">
+            <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                RefConstructor
+            </a>
+        </li>
+        <li  title="RefInput">
+            <a href="refinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                RefInput
+            </a>
+        </li>
+        <li  title="SearchConnectFilter">
+            <a href="searchconnectfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                SearchConnectFilter
+            </a>
+        </li>
+        <li  title="SearchConnectMeFilter">
+            <a href="searchconnectmefilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                SearchConnectMeFilter
+            </a>
+        </li>
+        <li  title="StreamFilter">
+            <a href="streamfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                StreamFilter
+            </a>
+        </li>
+        <li  title="TraverseFilter">
+            <a href="traversefilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                TraverseFilter
+            </a>
+        </li>
+        <li  title="TraverseMeFilter">
+            <a href="traversemefilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                TraverseMeFilter
+            </a>
+        </li>
+        <li  title="TriggerInput">
+            <a href="triggerinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                TriggerInput
+            </a>
+        </li>
+        <li  title="TriggersInput">
+            <a href="triggersinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                TriggersInput
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Directives</h4>
+    <ul>
+        <li  title="deprecated">
+            <a href="deprecated.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                deprecated
+            </a>
+        </li>
+        <li  title="include">
+            <a href="include.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                include
+            </a>
+        </li>
+        <li  title="skip">
+            <a href="skip.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                skip
+            </a>
+        </li>
+    </ul>
+</div>
+        </div>
+    </nav>
+    <main><section class="title slds-theme--inverse">
+    <div class="container slds-grid">
+        <div>
+        <button class="slds-button js-toggle-navigation less-than-medium">
+            <i class="material-icons slds-button__icon slds-button__icon--left">menu</i>
+            <span class="slds-text-title--caps">Types<span>
+        </button>
+        </div>
+        </div>
+    </div>
+    <div class="container">
+        <p class="slds-text-title--caps slds-text-color--weak">INPUT_OBJECT</p>
+        <h1 class="slds-text-heading--large">PutDoc</h1>
+        <div class="slds-text-body--regular"></div>
+    </div>
+</section>
+<section>
+    <div class="container">
+        <h2 id="graphql-schema-definition" class="graphdoc-section__title slds-text-heading--medium slds-m-top--small">
+            <a href="#graphql-schema-definition">
+                <i class="material-icons">link</i>
+            </a>
+            GraphQL Schema definition
+        </h2>
+        <code class="highlight"><ul class="code" style="padding-left:28px"><li><span class="keyword operator ts">input</span> <span class="identifier">PutDoc</span> {</li><li><span class="tab"><li><span class="tab"><span class="comment line">#   ref is the ref to the doc</span></span></li><li><span class="tab"><span class="meta">ref</span>: <a class="support type" href="refinput.doc.html">RefInput</a>!</span></li></span></li><li><span class="tab"><li><span class="tab"><span class="comment line">#   k/v pairs</span></span></li><li><span class="tab"><span class="meta">attributes</span>: <a class="support type" href="map.doc.html">Map</a></span></li></span></li><li>}</li></ul></code>
+    </div>
+</section>
+<section>
+    <div class="container">
+        <h2 id="require-by" class="graphdoc-section__title slds-text-heading--medium slds-m-top--small">
+            <a href="#require-by">
+                <i class="material-icons">link</i>
+            </a>
+            Require by
+        </h2>
+        <ul class="require-by"><li><a href="mutation.doc.html" title="Mutation - ">Mutation<em></em></a><li><li><a href="putdocs.doc.html" title="PutDocs - ">PutDocs<em></em></a><li></ul>
+    </div>
+</section>
+<footer>
+<div class="container slds-p-around--large">
+    <p class="slds-text-align--right slds-text-title--caps">
+        Generated with <a href="https://github.com/2fd/graphdoc#readme" target="_blank">graphdoc 2.4.0</a>
+    </p>
+</div>
+</footer>
+</main>
+    <script src="./scripts/focus-active.js"></script>
+    <script src="./scripts/filter-types.js"></script>
+    <script src="./scripts/toggle-navigation.js"></script>
+</body>
\ No newline at end of file
diff --git a/gen/gql/docs/putdocs.doc.html b/gen/gql/docs/putdocs.doc.html
new file mode 100644
index 0000000..a237e12
--- /dev/null
+++ b/gen/gql/docs/putdocs.doc.html
@@ -0,0 +1,491 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8" />
+    <meta http-equiv="x-ua-compatible" content="ie=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
+    <link type="text/css" rel="stylesheet" href="./styles/graphdoc.css" />
+    <title>PutDocs</title>
+    <link href="https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700" rel="stylesheet"><link type="text/css" rel="stylesheet" href="./assets/code.css" /><link type="text/css" rel="stylesheet" href="./assets/require-by.css" />
+</head>
+<body class="slds-scrollable--y">
+    <nav class="slds-grid slds-grid--vertical slds-col--rule-right">
+        <header class="slds-p-around--medium slds-col slds-shrik slds-grow-none">
+            <button class="slds-button slds-button--icon slds-float--right js-toggle-navigation less-than-medium">
+                <i class="material-icons">close</i>
+            </button>
+                <h3 class="slds-text-heading--medium"><a href="./">GraphQL Schema</a></h3>
+            <div class="slds-p-top--small">
+                <input id="type-search" type="text" placeholder="Search a type" autofocus="" class="slds-input" />
+            </div>
+        </header>
+        <div id="navication-scroll" class="slds-scrollable--y slds-col slds-grow">
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Schema</h4>
+    <ul>
+        <li  title="Query">
+            <a href="query.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Query
+            </a>
+        </li>
+        <li  title="Mutation">
+            <a href="mutation.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Mutation
+            </a>
+        </li>
+        <li  title="Subscription">
+            <a href="subscription.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Subscription
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Scalars</h4>
+    <ul>
+        <li  title="Boolean">
+            <a href="boolean.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Boolean
+            </a>
+        </li>
+        <li  title="Empty">
+            <a href="empty.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Empty
+            </a>
+        </li>
+        <li  title="Float">
+            <a href="float.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Float
+            </a>
+        </li>
+        <li  title="Int">
+            <a href="int.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Int
+            </a>
+        </li>
+        <li  title="Map">
+            <a href="map.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Map
+            </a>
+        </li>
+        <li  title="String">
+            <a href="string.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                String
+            </a>
+        </li>
+        <li  title="Time">
+            <a href="time.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Time
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Enums</h4>
+    <ul>
+        <li  title="Aggregate">
+            <a href="aggregate.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Aggregate
+            </a>
+        </li>
+        <li  title="Algorithm">
+            <a href="algorithm.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Algorithm
+            </a>
+        </li>
+        <li  title="Membership">
+            <a href="membership.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Membership
+            </a>
+        </li>
+        <li  title="__DirectiveLocation">
+            <a href="directivelocation.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __DirectiveLocation
+            </a>
+        </li>
+        <li  title="__TypeKind">
+            <a href="typekind.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __TypeKind
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Objects</h4>
+    <ul>
+        <li  title="Authorizer">
+            <a href="authorizer.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Authorizer
+            </a>
+        </li>
+        <li  title="Authorizers">
+            <a href="authorizers.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Authorizers
+            </a>
+        </li>
+        <li  title="AuthTarget">
+            <a href="authtarget.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                AuthTarget
+            </a>
+        </li>
+        <li  title="Connection">
+            <a href="connection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Connection
+            </a>
+        </li>
+        <li  title="Connections">
+            <a href="connections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Connections
+            </a>
+        </li>
+        <li  title="Constraint">
+            <a href="constraint.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Constraint
+            </a>
+        </li>
+        <li  title="Constraints">
+            <a href="constraints.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Constraints
+            </a>
+        </li>
+        <li  title="Doc">
+            <a href="doc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Doc
+            </a>
+        </li>
+        <li  title="Docs">
+            <a href="docs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Docs
+            </a>
+        </li>
+        <li  title="Index">
+            <a href="index.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Index
+            </a>
+        </li>
+        <li  title="Indexes">
+            <a href="indexes.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Indexes
+            </a>
+        </li>
+        <li  title="Message">
+            <a href="message.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Message
+            </a>
+        </li>
+        <li  title="Peer">
+            <a href="peer.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Peer
+            </a>
+        </li>
+        <li  title="RaftState">
+            <a href="raftstate.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                RaftState
+            </a>
+        </li>
+        <li  title="Ref">
+            <a href="ref.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Ref
+            </a>
+        </li>
+        <li  title="Refs">
+            <a href="refs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Refs
+            </a>
+        </li>
+        <li  title="Schema">
+            <a href="schema.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Schema
+            </a>
+        </li>
+        <li  title="Traversal">
+            <a href="traversal.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Traversal
+            </a>
+        </li>
+        <li  title="Traversals">
+            <a href="traversals.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Traversals
+            </a>
+        </li>
+        <li  title="Trigger">
+            <a href="trigger.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Trigger
+            </a>
+        </li>
+        <li  title="Triggers">
+            <a href="triggers.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Triggers
+            </a>
+        </li>
+        <li  title="__Directive">
+            <a href="directive.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __Directive
+            </a>
+        </li>
+        <li  title="__EnumValue">
+            <a href="enumvalue.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __EnumValue
+            </a>
+        </li>
+        <li  title="__Field">
+            <a href="field.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __Field
+            </a>
+        </li>
+        <li  title="__InputValue">
+            <a href="inputvalue.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __InputValue
+            </a>
+        </li>
+        <li  title="__Schema">
+            <a href="schema.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __Schema
+            </a>
+        </li>
+        <li  title="__Type">
+            <a href="type.spec.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                __Type
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
+    <ul>
+        <li  title="AggFilter">
+            <a href="aggfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                AggFilter
+            </a>
+        </li>
+        <li  title="AuthorizerInput">
+            <a href="authorizerinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                AuthorizerInput
+            </a>
+        </li>
+        <li  title="AuthorizersInput">
+            <a href="authorizersinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                AuthorizersInput
+            </a>
+        </li>
+        <li  title="ConnectFilter">
+            <a href="connectfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConnectFilter
+            </a>
+        </li>
+        <li  title="ConnectionConstructor">
+            <a href="connectionconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConnectionConstructor
+            </a>
+        </li>
+        <li  title="ConnectionConstructors">
+            <a href="connectionconstructors.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConnectionConstructors
+            </a>
+        </li>
+        <li  title="ConstraintInput">
+            <a href="constraintinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConstraintInput
+            </a>
+        </li>
+        <li  title="ConstraintsInput">
+            <a href="constraintsinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ConstraintsInput
+            </a>
+        </li>
+        <li  title="DocConstructor">
+            <a href="docconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                DocConstructor
+            </a>
+        </li>
+        <li  title="DocConstructors">
+            <a href="docconstructors.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                DocConstructors
+            </a>
+        </li>
+        <li  title="Edit">
+            <a href="edit.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Edit
+            </a>
+        </li>
+        <li  title="EditFilter">
+            <a href="editfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                EditFilter
+            </a>
+        </li>
+        <li  title="ExistsFilter">
+            <a href="existsfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ExistsFilter
+            </a>
+        </li>
+        <li  title="ExprFilter">
+            <a href="exprfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                ExprFilter
+            </a>
+        </li>
+        <li  title="Filter">
+            <a href="filter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                Filter
+            </a>
+        </li>
+        <li  title="IndexesInput">
+            <a href="indexesinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                IndexesInput
+            </a>
+        </li>
+        <li  title="IndexInput">
+            <a href="indexinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                IndexInput
+            </a>
+        </li>
+        <li  title="OutboundMessage">
+            <a href="outboundmessage.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                OutboundMessage
+            </a>
+        </li>
+        <li  title="PeerInput">
+            <a href="peerinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PeerInput
+            </a>
+        </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li class="slds-is-active" title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
+        <li  title="RefConstructor">
+            <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                RefConstructor
+            </a>
+        </li>
+        <li  title="RefInput">
+            <a href="refinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                RefInput
+            </a>
+        </li>
+        <li  title="SearchConnectFilter">
+            <a href="searchconnectfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                SearchConnectFilter
+            </a>
+        </li>
+        <li  title="SearchConnectMeFilter">
+            <a href="searchconnectmefilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                SearchConnectMeFilter
+            </a>
+        </li>
+        <li  title="StreamFilter">
+            <a href="streamfilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                StreamFilter
+            </a>
+        </li>
+        <li  title="TraverseFilter">
+            <a href="traversefilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                TraverseFilter
+            </a>
+        </li>
+        <li  title="TraverseMeFilter">
+            <a href="traversemefilter.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                TraverseMeFilter
+            </a>
+        </li>
+        <li  title="TriggerInput">
+            <a href="triggerinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                TriggerInput
+            </a>
+        </li>
+        <li  title="TriggersInput">
+            <a href="triggersinput.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                TriggersInput
+            </a>
+        </li>
+    </ul>
+</div>
+<div class="slds-grid slds-grid--vertical slds-navigation-list--vertical">
+    <h4 class="slds-text-title--caps slds-p-around--medium">Directives</h4>
+    <ul>
+        <li  title="deprecated">
+            <a href="deprecated.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                deprecated
+            </a>
+        </li>
+        <li  title="include">
+            <a href="include.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                include
+            </a>
+        </li>
+        <li  title="skip">
+            <a href="skip.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                skip
+            </a>
+        </li>
+    </ul>
+</div>
+        </div>
+    </nav>
+    <main><section class="title slds-theme--inverse">
+    <div class="container slds-grid">
+        <div>
+        <button class="slds-button js-toggle-navigation less-than-medium">
+            <i class="material-icons slds-button__icon slds-button__icon--left">menu</i>
+            <span class="slds-text-title--caps">Types<span>
+        </button>
+        </div>
+        </div>
+    </div>
+    <div class="container">
+        <p class="slds-text-title--caps slds-text-color--weak">INPUT_OBJECT</p>
+        <h1 class="slds-text-heading--large">PutDocs</h1>
+        <div class="slds-text-body--regular"></div>
+    </div>
+</section>
+<section>
+    <div class="container">
+        <h2 id="graphql-schema-definition" class="graphdoc-section__title slds-text-heading--medium slds-m-top--small">
+            <a href="#graphql-schema-definition">
+                <i class="material-icons">link</i>
+            </a>
+            GraphQL Schema definition
+        </h2>
+        <code class="highlight"><ul class="code" style="padding-left:28px"><li><span class="keyword operator ts">input</span> <span class="identifier">PutDocs</span> {</li><li><span class="tab"><li><span class="tab"><span class="comment line">#   docs is an array of docs</span></span></li><li><span class="tab"><span class="meta">docs</span>: [<a class="support type" href="putdoc.doc.html">PutDoc</a>!]</span></li></span></li><li>}</li></ul></code>
+    </div>
+</section>
+<section>
+    <div class="container">
+        <h2 id="require-by" class="graphdoc-section__title slds-text-heading--medium slds-m-top--small">
+            <a href="#require-by">
+                <i class="material-icons">link</i>
+            </a>
+            Require by
+        </h2>
+        <ul class="require-by"><li><a href="mutation.doc.html" title="Mutation - ">Mutation<em></em></a><li></ul>
+    </div>
+</section>
+<footer>
+<div class="container slds-p-around--large">
+    <p class="slds-text-align--right slds-text-title--caps">
+        Generated with <a href="https://github.com/2fd/graphdoc#readme" target="_blank">graphdoc 2.4.0</a>
+    </p>
+</div>
+</footer>
+</main>
+    <script src="./scripts/focus-active.js"></script>
+    <script src="./scripts/filter-types.js"></script>
+    <script src="./scripts/toggle-navigation.js"></script>
+</body>
\ No newline at end of file
diff --git a/gen/gql/docs/query.doc.html b/gen/gql/docs/query.doc.html
index 00c49a2..94a7ce8 100644
--- a/gen/gql/docs/query.doc.html
+++ b/gen/gql/docs/query.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/raftstate.doc.html b/gen/gql/docs/raftstate.doc.html
index 7b4a96a..d68a67a 100644
--- a/gen/gql/docs/raftstate.doc.html
+++ b/gen/gql/docs/raftstate.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/ref.doc.html b/gen/gql/docs/ref.doc.html
index fbe4a44..987b914 100644
--- a/gen/gql/docs/ref.doc.html
+++ b/gen/gql/docs/ref.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/refconstructor.doc.html b/gen/gql/docs/refconstructor.doc.html
index 0b05409..135b216 100644
--- a/gen/gql/docs/refconstructor.doc.html
+++ b/gen/gql/docs/refconstructor.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li class="slds-is-active" title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/refinput.doc.html b/gen/gql/docs/refinput.doc.html
index 6b9f1b4..633b431 100644
--- a/gen/gql/docs/refinput.doc.html
+++ b/gen/gql/docs/refinput.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
@@ -455,7 +475,7 @@ <h2 id="require-by" class="graphdoc-section__title slds-text-heading--medium sld
             </a>
             Require by
         </h2>
-        <ul class="require-by"><li><a href="connectfilter.doc.html" title="ConnectFilter - ConnectFilter is used to fetch connections related to a single noted">ConnectFilter<em>ConnectFilter is used to fetch connections related to a single noted</em></a><li><li><a href="connectionconstructor.doc.html" title="ConnectionConstructor - ConnectionConstructor is used to create an Connection">ConnectionConstructor<em>ConnectionConstructor is used to create an Connection</em></a><li><li><a href="edit.doc.html" title="Edit - Edit edites the attributes of a Doc or Connection">Edit<em>Edit edites the attributes of a Doc or Connection</em></a><li><li><a href="mutation.doc.html" title="Mutation - ">Mutation<em></em></a><li><li><a href="query.doc.html" title="Query - ">Query<em></em></a><li><li><a href="searchconnectfilter.doc.html" title="SearchConnectFilter - SearchConnectFilter is used for searching for documents and adding connections based on whether they pass a Filter">SearchConnectFilter<em>SearchConnectFilter is used for searching for documents and adding connections based on whether they pass a Filter</em></a><li><li><a href="traversefilter.doc.html" title="TraverseFilter - TraverseFilter is a filter used for graph traversals">TraverseFilter<em>TraverseFilter is a filter used for graph traversals</em></a><li></ul>
+        <ul class="require-by"><li><a href="connectfilter.doc.html" title="ConnectFilter - ConnectFilter is used to fetch connections related to a single noted">ConnectFilter<em>ConnectFilter is used to fetch connections related to a single noted</em></a><li><li><a href="connectionconstructor.doc.html" title="ConnectionConstructor - ConnectionConstructor is used to create an Connection">ConnectionConstructor<em>ConnectionConstructor is used to create an Connection</em></a><li><li><a href="edit.doc.html" title="Edit - Edit edites the attributes of a Doc or Connection">Edit<em>Edit edites the attributes of a Doc or Connection</em></a><li><li><a href="mutation.doc.html" title="Mutation - ">Mutation<em></em></a><li><li><a href="putconnection.doc.html" title="PutConnection - ">PutConnection<em></em></a><li><li><a href="putdoc.doc.html" title="PutDoc - ">PutDoc<em></em></a><li><li><a href="query.doc.html" title="Query - ">Query<em></em></a><li><li><a href="searchconnectfilter.doc.html" title="SearchConnectFilter - SearchConnectFilter is used for searching for documents and adding connections based on whether they pass a Filter">SearchConnectFilter<em>SearchConnectFilter is used for searching for documents and adding connections based on whether they pass a Filter</em></a><li><li><a href="traversefilter.doc.html" title="TraverseFilter - TraverseFilter is a filter used for graph traversals">TraverseFilter<em>TraverseFilter is a filter used for graph traversals</em></a><li></ul>
     </div>
 </section>
 <footer>
diff --git a/gen/gql/docs/refs.doc.html b/gen/gql/docs/refs.doc.html
index ba8209b..6524458 100644
--- a/gen/gql/docs/refs.doc.html
+++ b/gen/gql/docs/refs.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/schema.doc.html b/gen/gql/docs/schema.doc.html
index 071b032..a8a22c2 100644
--- a/gen/gql/docs/schema.doc.html
+++ b/gen/gql/docs/schema.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/schema.spec.html b/gen/gql/docs/schema.spec.html
index 2300321..bd22334 100644
--- a/gen/gql/docs/schema.spec.html
+++ b/gen/gql/docs/schema.spec.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/searchconnectfilter.doc.html b/gen/gql/docs/searchconnectfilter.doc.html
index 0ca93a4..e3ecddb 100644
--- a/gen/gql/docs/searchconnectfilter.doc.html
+++ b/gen/gql/docs/searchconnectfilter.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/searchconnectmefilter.doc.html b/gen/gql/docs/searchconnectmefilter.doc.html
index 0dbf3ac..a1bda8c 100644
--- a/gen/gql/docs/searchconnectmefilter.doc.html
+++ b/gen/gql/docs/searchconnectmefilter.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/skip.doc.html b/gen/gql/docs/skip.doc.html
index 86fda62..2d57490 100644
--- a/gen/gql/docs/skip.doc.html
+++ b/gen/gql/docs/skip.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/streamfilter.doc.html b/gen/gql/docs/streamfilter.doc.html
index fbe91c8..ceddca6 100644
--- a/gen/gql/docs/streamfilter.doc.html
+++ b/gen/gql/docs/streamfilter.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/string.doc.html b/gen/gql/docs/string.doc.html
index 8a572d8..84f5727 100644
--- a/gen/gql/docs/string.doc.html
+++ b/gen/gql/docs/string.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/subscription.doc.html b/gen/gql/docs/subscription.doc.html
index efbf04d..8a8a2f0 100644
--- a/gen/gql/docs/subscription.doc.html
+++ b/gen/gql/docs/subscription.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/time.doc.html b/gen/gql/docs/time.doc.html
index 2dc7a0d..88e7a42 100644
--- a/gen/gql/docs/time.doc.html
+++ b/gen/gql/docs/time.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/traversal.doc.html b/gen/gql/docs/traversal.doc.html
index 97ee67e..ce05151 100644
--- a/gen/gql/docs/traversal.doc.html
+++ b/gen/gql/docs/traversal.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/traversals.doc.html b/gen/gql/docs/traversals.doc.html
index 9d8592a..b5e7292 100644
--- a/gen/gql/docs/traversals.doc.html
+++ b/gen/gql/docs/traversals.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/traversefilter.doc.html b/gen/gql/docs/traversefilter.doc.html
index 66135d7..56529a4 100644
--- a/gen/gql/docs/traversefilter.doc.html
+++ b/gen/gql/docs/traversefilter.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/traversemefilter.doc.html b/gen/gql/docs/traversemefilter.doc.html
index d9f6a02..9daa339 100644
--- a/gen/gql/docs/traversemefilter.doc.html
+++ b/gen/gql/docs/traversemefilter.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/trigger.doc.html b/gen/gql/docs/trigger.doc.html
index 1dcb9b6..72cfab0 100644
--- a/gen/gql/docs/trigger.doc.html
+++ b/gen/gql/docs/trigger.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/triggerinput.doc.html b/gen/gql/docs/triggerinput.doc.html
index 651b1dd..8759c3d 100644
--- a/gen/gql/docs/triggerinput.doc.html
+++ b/gen/gql/docs/triggerinput.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/triggers.doc.html b/gen/gql/docs/triggers.doc.html
index fd7feb5..5c222cc 100644
--- a/gen/gql/docs/triggers.doc.html
+++ b/gen/gql/docs/triggers.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/triggersinput.doc.html b/gen/gql/docs/triggersinput.doc.html
index b2b4e9d..8c0da16 100644
--- a/gen/gql/docs/triggersinput.doc.html
+++ b/gen/gql/docs/triggersinput.doc.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/type.spec.html b/gen/gql/docs/type.spec.html
index aaa0327..c093d4d 100644
--- a/gen/gql/docs/type.spec.html
+++ b/gen/gql/docs/type.spec.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/docs/typekind.spec.html b/gen/gql/docs/typekind.spec.html
index a3d7918..6581e2d 100644
--- a/gen/gql/docs/typekind.spec.html
+++ b/gen/gql/docs/typekind.spec.html
@@ -350,6 +350,26 @@ <h4 class="slds-text-title--caps slds-p-around--medium">Input Objects</h4>
                 PeerInput
             </a>
         </li>
+        <li  title="PutConnection">
+            <a href="putconnection.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnection
+            </a>
+        </li>
+        <li  title="PutConnections">
+            <a href="putconnections.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutConnections
+            </a>
+        </li>
+        <li  title="PutDoc">
+            <a href="putdoc.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDoc
+            </a>
+        </li>
+        <li  title="PutDocs">
+            <a href="putdocs.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
+                PutDocs
+            </a>
+        </li>
         <li  title="RefConstructor">
             <a href="refconstructor.doc.html" class="slds-navigation-list--vertical__action slds-text-link--reset slds-truncate">
                 RefConstructor
diff --git a/gen/gql/go/generated/generated.go b/gen/gql/go/generated/generated.go
index fb5ebb0..b4b9ed0 100644
--- a/gen/gql/go/generated/generated.go
+++ b/gen/gql/go/generated/generated.go
@@ -135,6 +135,10 @@ type ComplexityRoot struct {
 		EditConnections    func(childComplexity int, input model.EditFilter) int
 		EditDoc            func(childComplexity int, input model.Edit) int
 		EditDocs           func(childComplexity int, input model.EditFilter) int
+		PutConnection      func(childComplexity int, input *model.PutConnection) int
+		PutConnections     func(childComplexity int, input *model.PutConnections) int
+		PutDoc             func(childComplexity int, input *model.PutDoc) int
+		PutDocs            func(childComplexity int, input *model.PutDocs) int
 		SearchAndConnect   func(childComplexity int, input model.SearchConnectFilter) int
 		SearchAndConnectMe func(childComplexity int, input model.SearchConnectMeFilter) int
 		SetAuthorizers     func(childComplexity int, input model.AuthorizersInput) int
@@ -224,12 +228,16 @@ type ComplexityRoot struct {
 type MutationResolver interface {
 	CreateDoc(ctx context.Context, input model.DocConstructor) (*model.Doc, error)
 	CreateDocs(ctx context.Context, input model.DocConstructors) (*model.Docs, error)
+	PutDoc(ctx context.Context, input *model.PutDoc) (*model.Doc, error)
+	PutDocs(ctx context.Context, input *model.PutDocs) (*model.Docs, error)
 	EditDoc(ctx context.Context, input model.Edit) (*model.Doc, error)
 	EditDocs(ctx context.Context, input model.EditFilter) (*model.Docs, error)
 	DelDoc(ctx context.Context, input model.RefInput) (*emptypb.Empty, error)
 	DelDocs(ctx context.Context, input model.Filter) (*emptypb.Empty, error)
 	CreateConnection(ctx context.Context, input model.ConnectionConstructor) (*model.Connection, error)
 	CreateConnections(ctx context.Context, input model.ConnectionConstructors) (*model.Connections, error)
+	PutConnection(ctx context.Context, input *model.PutConnection) (*model.Connection, error)
+	PutConnections(ctx context.Context, input *model.PutConnections) (*model.Connections, error)
 	EditConnection(ctx context.Context, input model.Edit) (*model.Connection, error)
 	EditConnections(ctx context.Context, input model.EditFilter) (*model.Connections, error)
 	DelConnection(ctx context.Context, input model.RefInput) (*emptypb.Empty, error)
@@ -694,6 +702,54 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in
 
 		return e.complexity.Mutation.EditDocs(childComplexity, args["input"].(model.EditFilter)), true
 
+	case "Mutation.putConnection":
+		if e.complexity.Mutation.PutConnection == nil {
+			break
+		}
+
+		args, err := ec.field_Mutation_putConnection_args(context.TODO(), rawArgs)
+		if err != nil {
+			return 0, false
+		}
+
+		return e.complexity.Mutation.PutConnection(childComplexity, args["input"].(*model.PutConnection)), true
+
+	case "Mutation.putConnections":
+		if e.complexity.Mutation.PutConnections == nil {
+			break
+		}
+
+		args, err := ec.field_Mutation_putConnections_args(context.TODO(), rawArgs)
+		if err != nil {
+			return 0, false
+		}
+
+		return e.complexity.Mutation.PutConnections(childComplexity, args["input"].(*model.PutConnections)), true
+
+	case "Mutation.putDoc":
+		if e.complexity.Mutation.PutDoc == nil {
+			break
+		}
+
+		args, err := ec.field_Mutation_putDoc_args(context.TODO(), rawArgs)
+		if err != nil {
+			return 0, false
+		}
+
+		return e.complexity.Mutation.PutDoc(childComplexity, args["input"].(*model.PutDoc)), true
+
+	case "Mutation.putDocs":
+		if e.complexity.Mutation.PutDocs == nil {
+			break
+		}
+
+		args, err := ec.field_Mutation_putDocs_args(context.TODO(), rawArgs)
+		if err != nil {
+			return 0, false
+		}
+
+		return e.complexity.Mutation.PutDocs(childComplexity, args["input"].(*model.PutDocs)), true
+
 	case "Mutation.searchAndConnect":
 		if e.complexity.Mutation.SearchAndConnect == nil {
 			break
@@ -1775,11 +1831,45 @@ input ExistsFilter {
   index: String
 }
 
+input PutDoc {
+  # ref is the ref to the doc
+  ref: RefInput!
+  # k/v pairs
+  attributes: Map
+}
+
+input PutDocs {
+  # docs is an array of docs
+  docs: [PutDoc!]
+}
+
+input PutConnection {
+  # ref is the ref to the connection
+  ref: RefInput!
+  # k/v pairs
+  attributes: Map
+  # directed is false if the connection is bi-directional
+  directed: Boolean!
+  # from is the doc ref that is the source of the connection
+  from: RefInput!
+  # to is the doc ref that is the destination of the connection
+  to: RefInput!
+}
+
+input PutConnections {
+  # connections is an array of connections
+  connections: [PutConnection!]
+}
+
 type Mutation {
   # createDoc creates a single doc in the graph
   createDoc(input: DocConstructor!): Doc!
   # createDocs creates 1-many documents in the graph
   createDocs(input: DocConstructors!): Docs!
+  # putDoc create-or-replaces a Doc in the graph
+  putDoc(input: PutDoc): Doc!
+  # putDocs puts a batch of docs in the graph
+  putDocs(input: PutDocs): Docs!
   # editDoc edites a single doc in the graph
   editDoc(input: Edit!): Doc!
   # editDocs edites 0-many docs in the graph
@@ -1792,6 +1882,10 @@ type Mutation {
   createConnection(input: ConnectionConstructor!): Connection!
   # createConnections creates 1-many connections in the graph
   createConnections(input: ConnectionConstructors!): Connections!
+  # putConnection create-or-replaces a Connection in the graph
+  putConnection(input: PutConnection): Connection!
+  # putConnections puts a batch of connections in the graph
+  putConnections(input: PutConnections): Connections!
   # editConnection edites a single connection in the graph
   editConnection(input: Edit!): Connection!
   # editConnections edites 0-many connections in the graph
@@ -2057,6 +2151,66 @@ func (ec *executionContext) field_Mutation_editDocs_args(ctx context.Context, ra
 	return args, nil
 }
 
+func (ec *executionContext) field_Mutation_putConnection_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) {
+	var err error
+	args := map[string]interface{}{}
+	var arg0 *model.PutConnection
+	if tmp, ok := rawArgs["input"]; ok {
+		ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("input"))
+		arg0, err = ec.unmarshalOPutConnection2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐPutConnection(ctx, tmp)
+		if err != nil {
+			return nil, err
+		}
+	}
+	args["input"] = arg0
+	return args, nil
+}
+
+func (ec *executionContext) field_Mutation_putConnections_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) {
+	var err error
+	args := map[string]interface{}{}
+	var arg0 *model.PutConnections
+	if tmp, ok := rawArgs["input"]; ok {
+		ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("input"))
+		arg0, err = ec.unmarshalOPutConnections2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐPutConnections(ctx, tmp)
+		if err != nil {
+			return nil, err
+		}
+	}
+	args["input"] = arg0
+	return args, nil
+}
+
+func (ec *executionContext) field_Mutation_putDoc_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) {
+	var err error
+	args := map[string]interface{}{}
+	var arg0 *model.PutDoc
+	if tmp, ok := rawArgs["input"]; ok {
+		ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("input"))
+		arg0, err = ec.unmarshalOPutDoc2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐPutDoc(ctx, tmp)
+		if err != nil {
+			return nil, err
+		}
+	}
+	args["input"] = arg0
+	return args, nil
+}
+
+func (ec *executionContext) field_Mutation_putDocs_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) {
+	var err error
+	args := map[string]interface{}{}
+	var arg0 *model.PutDocs
+	if tmp, ok := rawArgs["input"]; ok {
+		ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("input"))
+		arg0, err = ec.unmarshalOPutDocs2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐPutDocs(ctx, tmp)
+		if err != nil {
+			return nil, err
+		}
+	}
+	args["input"] = arg0
+	return args, nil
+}
+
 func (ec *executionContext) field_Mutation_searchAndConnectMe_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) {
 	var err error
 	args := map[string]interface{}{}
@@ -3807,6 +3961,90 @@ func (ec *executionContext) _Mutation_createDocs(ctx context.Context, field grap
 	return ec.marshalNDocs2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐDocs(ctx, field.Selections, res)
 }
 
+func (ec *executionContext) _Mutation_putDoc(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
+	defer func() {
+		if r := recover(); r != nil {
+			ec.Error(ctx, ec.Recover(ctx, r))
+			ret = graphql.Null
+		}
+	}()
+	fc := &graphql.FieldContext{
+		Object:     "Mutation",
+		Field:      field,
+		Args:       nil,
+		IsMethod:   true,
+		IsResolver: true,
+	}
+
+	ctx = graphql.WithFieldContext(ctx, fc)
+	rawArgs := field.ArgumentMap(ec.Variables)
+	args, err := ec.field_Mutation_putDoc_args(ctx, rawArgs)
+	if err != nil {
+		ec.Error(ctx, err)
+		return graphql.Null
+	}
+	fc.Args = args
+	resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
+		ctx = rctx // use context from middleware stack in children
+		return ec.resolvers.Mutation().PutDoc(rctx, args["input"].(*model.PutDoc))
+	})
+	if err != nil {
+		ec.Error(ctx, err)
+		return graphql.Null
+	}
+	if resTmp == nil {
+		if !graphql.HasFieldError(ctx, fc) {
+			ec.Errorf(ctx, "must not be null")
+		}
+		return graphql.Null
+	}
+	res := resTmp.(*model.Doc)
+	fc.Result = res
+	return ec.marshalNDoc2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐDoc(ctx, field.Selections, res)
+}
+
+func (ec *executionContext) _Mutation_putDocs(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
+	defer func() {
+		if r := recover(); r != nil {
+			ec.Error(ctx, ec.Recover(ctx, r))
+			ret = graphql.Null
+		}
+	}()
+	fc := &graphql.FieldContext{
+		Object:     "Mutation",
+		Field:      field,
+		Args:       nil,
+		IsMethod:   true,
+		IsResolver: true,
+	}
+
+	ctx = graphql.WithFieldContext(ctx, fc)
+	rawArgs := field.ArgumentMap(ec.Variables)
+	args, err := ec.field_Mutation_putDocs_args(ctx, rawArgs)
+	if err != nil {
+		ec.Error(ctx, err)
+		return graphql.Null
+	}
+	fc.Args = args
+	resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
+		ctx = rctx // use context from middleware stack in children
+		return ec.resolvers.Mutation().PutDocs(rctx, args["input"].(*model.PutDocs))
+	})
+	if err != nil {
+		ec.Error(ctx, err)
+		return graphql.Null
+	}
+	if resTmp == nil {
+		if !graphql.HasFieldError(ctx, fc) {
+			ec.Errorf(ctx, "must not be null")
+		}
+		return graphql.Null
+	}
+	res := resTmp.(*model.Docs)
+	fc.Result = res
+	return ec.marshalNDocs2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐDocs(ctx, field.Selections, res)
+}
+
 func (ec *executionContext) _Mutation_editDoc(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
 	defer func() {
 		if r := recover(); r != nil {
@@ -4053,6 +4291,90 @@ func (ec *executionContext) _Mutation_createConnections(ctx context.Context, fie
 	return ec.marshalNConnections2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐConnections(ctx, field.Selections, res)
 }
 
+func (ec *executionContext) _Mutation_putConnection(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
+	defer func() {
+		if r := recover(); r != nil {
+			ec.Error(ctx, ec.Recover(ctx, r))
+			ret = graphql.Null
+		}
+	}()
+	fc := &graphql.FieldContext{
+		Object:     "Mutation",
+		Field:      field,
+		Args:       nil,
+		IsMethod:   true,
+		IsResolver: true,
+	}
+
+	ctx = graphql.WithFieldContext(ctx, fc)
+	rawArgs := field.ArgumentMap(ec.Variables)
+	args, err := ec.field_Mutation_putConnection_args(ctx, rawArgs)
+	if err != nil {
+		ec.Error(ctx, err)
+		return graphql.Null
+	}
+	fc.Args = args
+	resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
+		ctx = rctx // use context from middleware stack in children
+		return ec.resolvers.Mutation().PutConnection(rctx, args["input"].(*model.PutConnection))
+	})
+	if err != nil {
+		ec.Error(ctx, err)
+		return graphql.Null
+	}
+	if resTmp == nil {
+		if !graphql.HasFieldError(ctx, fc) {
+			ec.Errorf(ctx, "must not be null")
+		}
+		return graphql.Null
+	}
+	res := resTmp.(*model.Connection)
+	fc.Result = res
+	return ec.marshalNConnection2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐConnection(ctx, field.Selections, res)
+}
+
+func (ec *executionContext) _Mutation_putConnections(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
+	defer func() {
+		if r := recover(); r != nil {
+			ec.Error(ctx, ec.Recover(ctx, r))
+			ret = graphql.Null
+		}
+	}()
+	fc := &graphql.FieldContext{
+		Object:     "Mutation",
+		Field:      field,
+		Args:       nil,
+		IsMethod:   true,
+		IsResolver: true,
+	}
+
+	ctx = graphql.WithFieldContext(ctx, fc)
+	rawArgs := field.ArgumentMap(ec.Variables)
+	args, err := ec.field_Mutation_putConnections_args(ctx, rawArgs)
+	if err != nil {
+		ec.Error(ctx, err)
+		return graphql.Null
+	}
+	fc.Args = args
+	resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) {
+		ctx = rctx // use context from middleware stack in children
+		return ec.resolvers.Mutation().PutConnections(rctx, args["input"].(*model.PutConnections))
+	})
+	if err != nil {
+		ec.Error(ctx, err)
+		return graphql.Null
+	}
+	if resTmp == nil {
+		if !graphql.HasFieldError(ctx, fc) {
+			ec.Errorf(ctx, "must not be null")
+		}
+		return graphql.Null
+	}
+	res := resTmp.(*model.Connections)
+	fc.Result = res
+	return ec.marshalNConnections2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐConnections(ctx, field.Selections, res)
+}
+
 func (ec *executionContext) _Mutation_editConnection(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) {
 	defer func() {
 		if r := recover(); r != nil {
@@ -7980,6 +8302,126 @@ func (ec *executionContext) unmarshalInputPeerInput(ctx context.Context, obj int
 	return it, nil
 }
 
+func (ec *executionContext) unmarshalInputPutConnection(ctx context.Context, obj interface{}) (model.PutConnection, error) {
+	var it model.PutConnection
+	var asMap = obj.(map[string]interface{})
+
+	for k, v := range asMap {
+		switch k {
+		case "ref":
+			var err error
+
+			ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("ref"))
+			it.Ref, err = ec.unmarshalNRefInput2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐRefInput(ctx, v)
+			if err != nil {
+				return it, err
+			}
+		case "attributes":
+			var err error
+
+			ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("attributes"))
+			it.Attributes, err = ec.unmarshalOMap2map(ctx, v)
+			if err != nil {
+				return it, err
+			}
+		case "directed":
+			var err error
+
+			ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("directed"))
+			it.Directed, err = ec.unmarshalNBoolean2bool(ctx, v)
+			if err != nil {
+				return it, err
+			}
+		case "from":
+			var err error
+
+			ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("from"))
+			it.From, err = ec.unmarshalNRefInput2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐRefInput(ctx, v)
+			if err != nil {
+				return it, err
+			}
+		case "to":
+			var err error
+
+			ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("to"))
+			it.To, err = ec.unmarshalNRefInput2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐRefInput(ctx, v)
+			if err != nil {
+				return it, err
+			}
+		}
+	}
+
+	return it, nil
+}
+
+func (ec *executionContext) unmarshalInputPutConnections(ctx context.Context, obj interface{}) (model.PutConnections, error) {
+	var it model.PutConnections
+	var asMap = obj.(map[string]interface{})
+
+	for k, v := range asMap {
+		switch k {
+		case "connections":
+			var err error
+
+			ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("connections"))
+			it.Connections, err = ec.unmarshalOPutConnection2ᚕᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐPutConnectionᚄ(ctx, v)
+			if err != nil {
+				return it, err
+			}
+		}
+	}
+
+	return it, nil
+}
+
+func (ec *executionContext) unmarshalInputPutDoc(ctx context.Context, obj interface{}) (model.PutDoc, error) {
+	var it model.PutDoc
+	var asMap = obj.(map[string]interface{})
+
+	for k, v := range asMap {
+		switch k {
+		case "ref":
+			var err error
+
+			ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("ref"))
+			it.Ref, err = ec.unmarshalNRefInput2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐRefInput(ctx, v)
+			if err != nil {
+				return it, err
+			}
+		case "attributes":
+			var err error
+
+			ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("attributes"))
+			it.Attributes, err = ec.unmarshalOMap2map(ctx, v)
+			if err != nil {
+				return it, err
+			}
+		}
+	}
+
+	return it, nil
+}
+
+func (ec *executionContext) unmarshalInputPutDocs(ctx context.Context, obj interface{}) (model.PutDocs, error) {
+	var it model.PutDocs
+	var asMap = obj.(map[string]interface{})
+
+	for k, v := range asMap {
+		switch k {
+		case "docs":
+			var err error
+
+			ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("docs"))
+			it.Docs, err = ec.unmarshalOPutDoc2ᚕᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐPutDocᚄ(ctx, v)
+			if err != nil {
+				return it, err
+			}
+		}
+	}
+
+	return it, nil
+}
+
 func (ec *executionContext) unmarshalInputRefConstructor(ctx context.Context, obj interface{}) (model.RefConstructor, error) {
 	var it model.RefConstructor
 	var asMap = obj.(map[string]interface{})
@@ -8855,6 +9297,16 @@ func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet)
 			if out.Values[i] == graphql.Null {
 				invalids++
 			}
+		case "putDoc":
+			out.Values[i] = ec._Mutation_putDoc(ctx, field)
+			if out.Values[i] == graphql.Null {
+				invalids++
+			}
+		case "putDocs":
+			out.Values[i] = ec._Mutation_putDocs(ctx, field)
+			if out.Values[i] == graphql.Null {
+				invalids++
+			}
 		case "editDoc":
 			out.Values[i] = ec._Mutation_editDoc(ctx, field)
 			if out.Values[i] == graphql.Null {
@@ -8879,6 +9331,16 @@ func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet)
 			if out.Values[i] == graphql.Null {
 				invalids++
 			}
+		case "putConnection":
+			out.Values[i] = ec._Mutation_putConnection(ctx, field)
+			if out.Values[i] == graphql.Null {
+				invalids++
+			}
+		case "putConnections":
+			out.Values[i] = ec._Mutation_putConnections(ctx, field)
+			if out.Values[i] == graphql.Null {
+				invalids++
+			}
 		case "editConnection":
 			out.Values[i] = ec._Mutation_editConnection(ctx, field)
 			if out.Values[i] == graphql.Null {
@@ -10081,6 +10543,16 @@ func (ec *executionContext) marshalNPeer2ᚖgithubᚗcomᚋgraphikDBᚋgraphik
 	return ec._Peer(ctx, sel, v)
 }
 
+func (ec *executionContext) unmarshalNPutConnection2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐPutConnection(ctx context.Context, v interface{}) (*model.PutConnection, error) {
+	res, err := ec.unmarshalInputPutConnection(ctx, v)
+	return &res, graphql.ErrorOnPath(ctx, err)
+}
+
+func (ec *executionContext) unmarshalNPutDoc2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐPutDoc(ctx context.Context, v interface{}) (*model.PutDoc, error) {
+	res, err := ec.unmarshalInputPutDoc(ctx, v)
+	return &res, graphql.ErrorOnPath(ctx, err)
+}
+
 func (ec *executionContext) marshalNRef2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐRef(ctx context.Context, sel ast.SelectionSet, v *model.Ref) graphql.Marshaler {
 	if v == nil {
 		if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
@@ -10851,6 +11323,86 @@ func (ec *executionContext) marshalOPeer2ᚕᚖgithubᚗcomᚋgraphikDBᚋgraphi
 	return ret
 }
 
+func (ec *executionContext) unmarshalOPutConnection2ᚕᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐPutConnectionᚄ(ctx context.Context, v interface{}) ([]*model.PutConnection, error) {
+	if v == nil {
+		return nil, nil
+	}
+	var vSlice []interface{}
+	if v != nil {
+		if tmp1, ok := v.([]interface{}); ok {
+			vSlice = tmp1
+		} else {
+			vSlice = []interface{}{v}
+		}
+	}
+	var err error
+	res := make([]*model.PutConnection, len(vSlice))
+	for i := range vSlice {
+		ctx := graphql.WithPathContext(ctx, graphql.NewPathWithIndex(i))
+		res[i], err = ec.unmarshalNPutConnection2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐPutConnection(ctx, vSlice[i])
+		if err != nil {
+			return nil, err
+		}
+	}
+	return res, nil
+}
+
+func (ec *executionContext) unmarshalOPutConnection2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐPutConnection(ctx context.Context, v interface{}) (*model.PutConnection, error) {
+	if v == nil {
+		return nil, nil
+	}
+	res, err := ec.unmarshalInputPutConnection(ctx, v)
+	return &res, graphql.ErrorOnPath(ctx, err)
+}
+
+func (ec *executionContext) unmarshalOPutConnections2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐPutConnections(ctx context.Context, v interface{}) (*model.PutConnections, error) {
+	if v == nil {
+		return nil, nil
+	}
+	res, err := ec.unmarshalInputPutConnections(ctx, v)
+	return &res, graphql.ErrorOnPath(ctx, err)
+}
+
+func (ec *executionContext) unmarshalOPutDoc2ᚕᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐPutDocᚄ(ctx context.Context, v interface{}) ([]*model.PutDoc, error) {
+	if v == nil {
+		return nil, nil
+	}
+	var vSlice []interface{}
+	if v != nil {
+		if tmp1, ok := v.([]interface{}); ok {
+			vSlice = tmp1
+		} else {
+			vSlice = []interface{}{v}
+		}
+	}
+	var err error
+	res := make([]*model.PutDoc, len(vSlice))
+	for i := range vSlice {
+		ctx := graphql.WithPathContext(ctx, graphql.NewPathWithIndex(i))
+		res[i], err = ec.unmarshalNPutDoc2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐPutDoc(ctx, vSlice[i])
+		if err != nil {
+			return nil, err
+		}
+	}
+	return res, nil
+}
+
+func (ec *executionContext) unmarshalOPutDoc2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐPutDoc(ctx context.Context, v interface{}) (*model.PutDoc, error) {
+	if v == nil {
+		return nil, nil
+	}
+	res, err := ec.unmarshalInputPutDoc(ctx, v)
+	return &res, graphql.ErrorOnPath(ctx, err)
+}
+
+func (ec *executionContext) unmarshalOPutDocs2ᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐPutDocs(ctx context.Context, v interface{}) (*model.PutDocs, error) {
+	if v == nil {
+		return nil, nil
+	}
+	res, err := ec.unmarshalInputPutDocs(ctx, v)
+	return &res, graphql.ErrorOnPath(ctx, err)
+}
+
 func (ec *executionContext) marshalORef2ᚕᚖgithubᚗcomᚋgraphikDBᚋgraphikᚋgenᚋgqlᚋgoᚋmodelᚐRefᚄ(ctx context.Context, sel ast.SelectionSet, v []*model.Ref) graphql.Marshaler {
 	if v == nil {
 		return graphql.Null
diff --git a/gen/gql/go/model/models_gen.go b/gen/gql/go/model/models_gen.go
index 3b67b30..f079463 100644
--- a/gen/gql/go/model/models_gen.go
+++ b/gen/gql/go/model/models_gen.go
@@ -202,6 +202,27 @@ type PeerInput struct {
 	Addr   string `json:"addr"`
 }
 
+type PutConnection struct {
+	Ref        *RefInput              `json:"ref"`
+	Attributes map[string]interface{} `json:"attributes"`
+	Directed   bool                   `json:"directed"`
+	From       *RefInput              `json:"from"`
+	To         *RefInput              `json:"to"`
+}
+
+type PutConnections struct {
+	Connections []*PutConnection `json:"connections"`
+}
+
+type PutDoc struct {
+	Ref        *RefInput              `json:"ref"`
+	Attributes map[string]interface{} `json:"attributes"`
+}
+
+type PutDocs struct {
+	Docs []*PutDoc `json:"docs"`
+}
+
 type RaftState struct {
 	Leader     string                 `json:"leader"`
 	Membership Membership             `json:"membership"`
diff --git a/gen/grpc/csharp/Graphik.cs b/gen/grpc/csharp/Graphik.cs
index 8673e15..d75412d 100644
--- a/gen/grpc/csharp/Graphik.cs
+++ b/gen/grpc/csharp/Graphik.cs
@@ -167,7 +167,7 @@ static GraphikReflection() {
             "AQoLUmFmdFNlcnZpY2USKwoEUGluZxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0",
             "eRoJLmFwaS5Qb25nIgASMgoLSm9pbkNsdXN0ZXISCS5hcGkuUGVlchoWLmdv",
             "b2dsZS5wcm90b2J1Zi5FbXB0eSIAEjgKDENsdXN0ZXJTdGF0ZRIWLmdvb2ds",
-            "ZS5wcm90b2J1Zi5FbXB0eRoOLmFwaS5SYWZ0U3RhdGUiADLfEAoPRGF0YWJh",
+            "ZS5wcm90b2J1Zi5FbXB0eRoOLmFwaS5SYWZ0U3RhdGUiADKPEgoPRGF0YWJh",
             "c2VTZXJ2aWNlEjIKCUdldFNjaGVtYRIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0",
             "eRoLLmFwaS5TY2hlbWEiABI8Cg5TZXRBdXRob3JpemVycxIQLmFwaS5BdXRo",
             "b3JpemVycxoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIAEjQKClNldEluZGV4",
@@ -177,45 +177,49 @@ static GraphikReflection() {
             "Fi5nb29nbGUucHJvdG9idWYuRW1wdHkiABIoCgJNZRIWLmdvb2dsZS5wcm90",
             "b2J1Zi5FbXB0eRoILmFwaS5Eb2MiABIsCglDcmVhdGVEb2MSEy5hcGkuRG9j",
             "Q29uc3RydWN0b3IaCC5hcGkuRG9jIgASLwoKQ3JlYXRlRG9jcxIULmFwaS5E",
-            "b2NDb25zdHJ1Y3RvcnMaCS5hcGkuRG9jcyIAEh4KBkdldERvYxIILmFwaS5S",
-            "ZWYaCC5hcGkuRG9jIgASJgoKU2VhcmNoRG9jcxILLmFwaS5GaWx0ZXIaCS5h",
-            "cGkuRG9jcyIAEjIKCFRyYXZlcnNlEhMuYXBpLlRyYXZlcnNlRmlsdGVyGg8u",
-            "YXBpLlRyYXZlcnNhbHMiABI2CgpUcmF2ZXJzZU1lEhUuYXBpLlRyYXZlcnNl",
-            "TWVGaWx0ZXIaDy5hcGkuVHJhdmVyc2FscyIAEiAKB0VkaXREb2MSCS5hcGku",
-            "RWRpdBoILmFwaS5Eb2MiABIoCghFZGl0RG9jcxIPLmFwaS5FZGl0RmlsdGVy",
-            "GgkuYXBpLkRvY3MiABIsCgZEZWxEb2MSCC5hcGkuUmVmGhYuZ29vZ2xlLnBy",
-            "b3RvYnVmLkVtcHR5IgASMAoHRGVsRG9jcxILLmFwaS5GaWx0ZXIaFi5nb29n",
-            "bGUucHJvdG9idWYuRW1wdHkiABIuCglFeGlzdHNEb2MSES5hcGkuRXhpc3Rz",
-            "RmlsdGVyGgwuYXBpLkJvb2xlYW4iABI1ChBFeGlzdHNDb25uZWN0aW9uEhEu",
-            "YXBpLkV4aXN0c0ZpbHRlchoMLmFwaS5Cb29sZWFuIgASIgoGSGFzRG9jEggu",
-            "YXBpLlJlZhoMLmFwaS5Cb29sZWFuIgASKQoNSGFzQ29ubmVjdGlvbhIILmFw",
-            "aS5SZWYaDC5hcGkuQm9vbGVhbiIAEkEKEENyZWF0ZUNvbm5lY3Rpb24SGi5h",
-            "cGkuQ29ubmVjdGlvbkNvbnN0cnVjdG9yGg8uYXBpLkNvbm5lY3Rpb24iABJE",
-            "ChFDcmVhdGVDb25uZWN0aW9ucxIbLmFwaS5Db25uZWN0aW9uQ29uc3RydWN0",
-            "b3JzGhAuYXBpLkNvbm5lY3Rpb25zIgASQAoQU2VhcmNoQW5kQ29ubmVjdBIY",
-            "LmFwaS5TZWFyY2hDb25uZWN0RmlsdGVyGhAuYXBpLkNvbm5lY3Rpb25zIgAS",
-            "RAoSU2VhcmNoQW5kQ29ubmVjdE1lEhouYXBpLlNlYXJjaENvbm5lY3RNZUZp",
-            "bHRlchoQLmFwaS5Db25uZWN0aW9ucyIAEiwKDUdldENvbm5lY3Rpb24SCC5h",
-            "cGkuUmVmGg8uYXBpLkNvbm5lY3Rpb24iABI0ChFTZWFyY2hDb25uZWN0aW9u",
-            "cxILLmFwaS5GaWx0ZXIaEC5hcGkuQ29ubmVjdGlvbnMiABIuCg5FZGl0Q29u",
-            "bmVjdGlvbhIJLmFwaS5FZGl0Gg8uYXBpLkNvbm5lY3Rpb24iABI2Cg9FZGl0",
-            "Q29ubmVjdGlvbnMSDy5hcGkuRWRpdEZpbHRlchoQLmFwaS5Db25uZWN0aW9u",
-            "cyIAEjMKDURlbENvbm5lY3Rpb24SCC5hcGkuUmVmGhYuZ29vZ2xlLnByb3Rv",
-            "YnVmLkVtcHR5IgASNwoORGVsQ29ubmVjdGlvbnMSCy5hcGkuRmlsdGVyGhYu",
-            "Z29vZ2xlLnByb3RvYnVmLkVtcHR5IgASOQoPQ29ubmVjdGlvbnNGcm9tEhIu",
-            "YXBpLkNvbm5lY3RGaWx0ZXIaEC5hcGkuQ29ubmVjdGlvbnMiABI3Cg1Db25u",
-            "ZWN0aW9uc1RvEhIuYXBpLkNvbm5lY3RGaWx0ZXIaEC5hcGkuQ29ubmVjdGlv",
-            "bnMiABIuCg1BZ2dyZWdhdGVEb2NzEg4uYXBpLkFnZ0ZpbHRlchoLLmFwaS5O",
-            "dW1iZXIiABI1ChRBZ2dyZWdhdGVDb25uZWN0aW9ucxIOLmFwaS5BZ2dGaWx0",
-            "ZXIaCy5hcGkuTnVtYmVyIgASOwoJQnJvYWRjYXN0EhQuYXBpLk91dGJvdW5k",
-            "TWVzc2FnZRoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIAEi0KBlN0cmVhbRIR",
-            "LmFwaS5TdHJlYW1GaWx0ZXIaDC5hcGkuTWVzc2FnZSIAMAESOgoTUHVzaERv",
-            "Y0NvbnN0cnVjdG9ycxITLmFwaS5Eb2NDb25zdHJ1Y3RvchoILmFwaS5Eb2Mi",
-            "ACgBMAESTwoaUHVzaENvbm5lY3Rpb25Db25zdHJ1Y3RvcnMSGi5hcGkuQ29u",
-            "bmVjdGlvbkNvbnN0cnVjdG9yGg8uYXBpLkNvbm5lY3Rpb24iACgBMAESMAoI",
-            "U2VlZERvY3MSCC5hcGkuRG9jGhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IgAo",
-            "ARI+Cg9TZWVkQ29ubmVjdGlvbnMSDy5hcGkuQ29ubmVjdGlvbhoWLmdvb2ds",
-            "ZS5wcm90b2J1Zi5FbXB0eSIAKAFCB1oFYXBpcGJiBnByb3RvMw=="));
+            "b2NDb25zdHJ1Y3RvcnMaCS5hcGkuRG9jcyIAEh4KBlB1dERvYxIILmFwaS5E",
+            "b2MaCC5hcGkuRG9jIgASIQoHUHV0RG9jcxIJLmFwaS5Eb2NzGgkuYXBpLkRv",
+            "Y3MiABIeCgZHZXREb2MSCC5hcGkuUmVmGgguYXBpLkRvYyIAEiYKClNlYXJj",
+            "aERvY3MSCy5hcGkuRmlsdGVyGgkuYXBpLkRvY3MiABIyCghUcmF2ZXJzZRIT",
+            "LmFwaS5UcmF2ZXJzZUZpbHRlchoPLmFwaS5UcmF2ZXJzYWxzIgASNgoKVHJh",
+            "dmVyc2VNZRIVLmFwaS5UcmF2ZXJzZU1lRmlsdGVyGg8uYXBpLlRyYXZlcnNh",
+            "bHMiABIgCgdFZGl0RG9jEgkuYXBpLkVkaXQaCC5hcGkuRG9jIgASKAoIRWRp",
+            "dERvY3MSDy5hcGkuRWRpdEZpbHRlchoJLmFwaS5Eb2NzIgASLAoGRGVsRG9j",
+            "EgguYXBpLlJlZhoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIAEjAKB0RlbERv",
+            "Y3MSCy5hcGkuRmlsdGVyGhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IgASLgoJ",
+            "RXhpc3RzRG9jEhEuYXBpLkV4aXN0c0ZpbHRlchoMLmFwaS5Cb29sZWFuIgAS",
+            "NQoQRXhpc3RzQ29ubmVjdGlvbhIRLmFwaS5FeGlzdHNGaWx0ZXIaDC5hcGku",
+            "Qm9vbGVhbiIAEiIKBkhhc0RvYxIILmFwaS5SZWYaDC5hcGkuQm9vbGVhbiIA",
+            "EikKDUhhc0Nvbm5lY3Rpb24SCC5hcGkuUmVmGgwuYXBpLkJvb2xlYW4iABJB",
+            "ChBDcmVhdGVDb25uZWN0aW9uEhouYXBpLkNvbm5lY3Rpb25Db25zdHJ1Y3Rv",
+            "choPLmFwaS5Db25uZWN0aW9uIgASRAoRQ3JlYXRlQ29ubmVjdGlvbnMSGy5h",
+            "cGkuQ29ubmVjdGlvbkNvbnN0cnVjdG9ycxoQLmFwaS5Db25uZWN0aW9ucyIA",
+            "EjMKDVB1dENvbm5lY3Rpb24SDy5hcGkuQ29ubmVjdGlvbhoPLmFwaS5Db25u",
+            "ZWN0aW9uIgASNgoOUHV0Q29ubmVjdGlvbnMSEC5hcGkuQ29ubmVjdGlvbnMa",
+            "EC5hcGkuQ29ubmVjdGlvbnMiABJAChBTZWFyY2hBbmRDb25uZWN0EhguYXBp",
+            "LlNlYXJjaENvbm5lY3RGaWx0ZXIaEC5hcGkuQ29ubmVjdGlvbnMiABJEChJT",
+            "ZWFyY2hBbmRDb25uZWN0TWUSGi5hcGkuU2VhcmNoQ29ubmVjdE1lRmlsdGVy",
+            "GhAuYXBpLkNvbm5lY3Rpb25zIgASLAoNR2V0Q29ubmVjdGlvbhIILmFwaS5S",
+            "ZWYaDy5hcGkuQ29ubmVjdGlvbiIAEjQKEVNlYXJjaENvbm5lY3Rpb25zEgsu",
+            "YXBpLkZpbHRlchoQLmFwaS5Db25uZWN0aW9ucyIAEi4KDkVkaXRDb25uZWN0",
+            "aW9uEgkuYXBpLkVkaXQaDy5hcGkuQ29ubmVjdGlvbiIAEjYKD0VkaXRDb25u",
+            "ZWN0aW9ucxIPLmFwaS5FZGl0RmlsdGVyGhAuYXBpLkNvbm5lY3Rpb25zIgAS",
+            "MwoNRGVsQ29ubmVjdGlvbhIILmFwaS5SZWYaFi5nb29nbGUucHJvdG9idWYu",
+            "RW1wdHkiABI3Cg5EZWxDb25uZWN0aW9ucxILLmFwaS5GaWx0ZXIaFi5nb29n",
+            "bGUucHJvdG9idWYuRW1wdHkiABI5Cg9Db25uZWN0aW9uc0Zyb20SEi5hcGku",
+            "Q29ubmVjdEZpbHRlchoQLmFwaS5Db25uZWN0aW9ucyIAEjcKDUNvbm5lY3Rp",
+            "b25zVG8SEi5hcGkuQ29ubmVjdEZpbHRlchoQLmFwaS5Db25uZWN0aW9ucyIA",
+            "Ei4KDUFnZ3JlZ2F0ZURvY3MSDi5hcGkuQWdnRmlsdGVyGgsuYXBpLk51bWJl",
+            "ciIAEjUKFEFnZ3JlZ2F0ZUNvbm5lY3Rpb25zEg4uYXBpLkFnZ0ZpbHRlchoL",
+            "LmFwaS5OdW1iZXIiABI7CglCcm9hZGNhc3QSFC5hcGkuT3V0Ym91bmRNZXNz",
+            "YWdlGhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IgASLQoGU3RyZWFtEhEuYXBp",
+            "LlN0cmVhbUZpbHRlchoMLmFwaS5NZXNzYWdlIgAwARI6ChNQdXNoRG9jQ29u",
+            "c3RydWN0b3JzEhMuYXBpLkRvY0NvbnN0cnVjdG9yGgguYXBpLkRvYyIAKAEw",
+            "ARJPChpQdXNoQ29ubmVjdGlvbkNvbnN0cnVjdG9ycxIaLmFwaS5Db25uZWN0",
+            "aW9uQ29uc3RydWN0b3IaDy5hcGkuQ29ubmVjdGlvbiIAKAEwARIwCghTZWVk",
+            "RG9jcxIILmFwaS5Eb2MaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiACgBEj4K",
+            "D1NlZWRDb25uZWN0aW9ucxIPLmFwaS5Db25uZWN0aW9uGhYuZ29vZ2xlLnBy",
+            "b3RvYnVmLkVtcHR5IgAoAUIHWgVhcGlwYmIGcHJvdG8z"));
       descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
           new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.StructReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.AnyReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.EmptyReflection.Descriptor, global::Validator.ValidatorReflection.Descriptor, },
           new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Api.Algorithm), typeof(global::Api.Aggregate), typeof(global::Api.Membership), }, new pbr::GeneratedClrTypeInfo[] {
diff --git a/gen/grpc/docs/index.html b/gen/grpc/docs/index.html
index a4158dc..e93cef7 100644
--- a/gen/grpc/docs/index.html
+++ b/gen/grpc/docs/index.html
@@ -3643,6 +3643,20 @@ <h3 id="api.DatabaseService">DatabaseService</h3>
                 <td><p>CreateDocs creates a batch of docs in the graph</p></td>
               </tr>
             
+              <tr>
+                <td>PutDoc</td>
+                <td><a href="#api.Doc">Doc</a></td>
+                <td><a href="#api.Doc">Doc</a></td>
+                <td><p>PutDoc create-or-replaces a Doc in the graph</p></td>
+              </tr>
+            
+              <tr>
+                <td>PutDocs</td>
+                <td><a href="#api.Docs">Docs</a></td>
+                <td><a href="#api.Docs">Docs</a></td>
+                <td><p>PutDocs puts a batch of docs in the graph</p></td>
+              </tr>
+            
               <tr>
                 <td>GetDoc</td>
                 <td><a href="#api.Ref">Ref</a></td>
@@ -3741,6 +3755,20 @@ <h3 id="api.DatabaseService">DatabaseService</h3>
                 <td><p>CreateConnections creates a batch of connections in the graph</p></td>
               </tr>
             
+              <tr>
+                <td>PutConnection</td>
+                <td><a href="#api.Connection">Connection</a></td>
+                <td><a href="#api.Connection">Connection</a></td>
+                <td><p>PutConnection create-or-replaces a Connection in the graph</p></td>
+              </tr>
+            
+              <tr>
+                <td>PutConnections</td>
+                <td><a href="#api.Connections">Connections</a></td>
+                <td><a href="#api.Connections">Connections</a></td>
+                <td><p>PutConnections puts a batch of connections in the graph</p></td>
+              </tr>
+            
               <tr>
                 <td>SearchAndConnect</td>
                 <td><a href="#api.SearchConnectFilter">SearchConnectFilter</a></td>
diff --git a/gen/grpc/go/graphik.pb.go b/gen/grpc/go/graphik.pb.go
index 9bd4b6e..5dd2fe6 100644
--- a/gen/grpc/go/graphik.pb.go
+++ b/gen/grpc/go/graphik.pb.go
@@ -4007,7 +4007,7 @@ var file_graphik_proto_rawDesc = []byte{
 	0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f,
 	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
 	0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x66, 0x74, 0x53, 0x74,
-	0x61, 0x74, 0x65, 0x22, 0x00, 0x32, 0xdf, 0x10, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61,
+	0x61, 0x74, 0x65, 0x22, 0x00, 0x32, 0x8f, 0x12, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61,
 	0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x47, 0x65, 0x74,
 	0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
 	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0b,
@@ -4035,47 +4035,58 @@ var file_graphik_proto_rawDesc = []byte{
 	0x2f, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x63, 0x73, 0x12, 0x14, 0x2e,
 	0x61, 0x70, 0x69, 0x2e, 0x44, 0x6f, 0x63, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
 	0x6f, 0x72, 0x73, 0x1a, 0x09, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x6f, 0x63, 0x73, 0x22, 0x00,
-	0x12, 0x1e, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x44, 0x6f, 0x63, 0x12, 0x08, 0x2e, 0x61, 0x70, 0x69,
-	0x2e, 0x52, 0x65, 0x66, 0x1a, 0x08, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x6f, 0x63, 0x22, 0x00,
-	0x12, 0x26, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x6f, 0x63, 0x73, 0x12, 0x0b,
-	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x09, 0x2e, 0x61, 0x70,
-	0x69, 0x2e, 0x44, 0x6f, 0x63, 0x73, 0x22, 0x00, 0x12, 0x32, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x76,
-	0x65, 0x72, 0x73, 0x65, 0x12, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x72, 0x61, 0x76, 0x65,
-	0x72, 0x73, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e,
-	0x54, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x73, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0a,
-	0x54, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x65, 0x4d, 0x65, 0x12, 0x15, 0x2e, 0x61, 0x70, 0x69,
-	0x2e, 0x54, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x65, 0x4d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65,
-	0x72, 0x1a, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x61,
-	0x6c, 0x73, 0x22, 0x00, 0x12, 0x20, 0x0a, 0x07, 0x45, 0x64, 0x69, 0x74, 0x44, 0x6f, 0x63, 0x12,
-	0x09, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x1a, 0x08, 0x2e, 0x61, 0x70, 0x69,
-	0x2e, 0x44, 0x6f, 0x63, 0x22, 0x00, 0x12, 0x28, 0x0a, 0x08, 0x45, 0x64, 0x69, 0x74, 0x44, 0x6f,
-	0x63, 0x73, 0x12, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x46, 0x69, 0x6c,
-	0x74, 0x65, 0x72, 0x1a, 0x09, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x6f, 0x63, 0x73, 0x22, 0x00,
-	0x12, 0x2c, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x44, 0x6f, 0x63, 0x12, 0x08, 0x2e, 0x61, 0x70, 0x69,
-	0x2e, 0x52, 0x65, 0x66, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x30,
-	0x0a, 0x07, 0x44, 0x65, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x12, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e,
-	0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00,
-	0x12, 0x2e, 0x0a, 0x09, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x44, 0x6f, 0x63, 0x12, 0x11, 0x2e,
-	0x61, 0x70, 0x69, 0x2e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
-	0x1a, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x22, 0x00,
-	0x12, 0x35, 0x0a, 0x10, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
-	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78, 0x69, 0x73, 0x74,
-	0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6f,
-	0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x22, 0x00, 0x12, 0x22, 0x0a, 0x06, 0x48, 0x61, 0x73, 0x44, 0x6f,
-	0x63, 0x12, 0x08, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x66, 0x1a, 0x0c, 0x2e, 0x61, 0x70,
-	0x69, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x22, 0x00, 0x12, 0x29, 0x0a, 0x0d, 0x48,
-	0x61, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x2e, 0x61,
-	0x70, 0x69, 0x2e, 0x52, 0x65, 0x66, 0x1a, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6f, 0x6f,
-	0x6c, 0x65, 0x61, 0x6e, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
-	0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x2e, 0x61, 0x70, 0x69,
-	0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x74,
-	0x72, 0x75, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6e,
-	0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x11, 0x43, 0x72, 0x65,
-	0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b,
-	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43,
-	0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x1a, 0x10, 0x2e, 0x61, 0x70,
+	0x12, 0x1e, 0x0a, 0x06, 0x50, 0x75, 0x74, 0x44, 0x6f, 0x63, 0x12, 0x08, 0x2e, 0x61, 0x70, 0x69,
+	0x2e, 0x44, 0x6f, 0x63, 0x1a, 0x08, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x6f, 0x63, 0x22, 0x00,
+	0x12, 0x21, 0x0a, 0x07, 0x50, 0x75, 0x74, 0x44, 0x6f, 0x63, 0x73, 0x12, 0x09, 0x2e, 0x61, 0x70,
+	0x69, 0x2e, 0x44, 0x6f, 0x63, 0x73, 0x1a, 0x09, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x6f, 0x63,
+	0x73, 0x22, 0x00, 0x12, 0x1e, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x44, 0x6f, 0x63, 0x12, 0x08, 0x2e,
+	0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x66, 0x1a, 0x08, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x6f,
+	0x63, 0x22, 0x00, 0x12, 0x26, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x6f, 0x63,
+	0x73, 0x12, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x09,
+	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x6f, 0x63, 0x73, 0x22, 0x00, 0x12, 0x32, 0x0a, 0x08, 0x54,
+	0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x65, 0x12, 0x13, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x72,
+	0x61, 0x76, 0x65, 0x72, 0x73, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x0f, 0x2e, 0x61,
+	0x70, 0x69, 0x2e, 0x54, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x73, 0x22, 0x00, 0x12,
+	0x36, 0x0a, 0x0a, 0x54, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x65, 0x4d, 0x65, 0x12, 0x15, 0x2e,
+	0x61, 0x70, 0x69, 0x2e, 0x54, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x65, 0x4d, 0x65, 0x46, 0x69,
+	0x6c, 0x74, 0x65, 0x72, 0x1a, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x72, 0x61, 0x76, 0x65,
+	0x72, 0x73, 0x61, 0x6c, 0x73, 0x22, 0x00, 0x12, 0x20, 0x0a, 0x07, 0x45, 0x64, 0x69, 0x74, 0x44,
+	0x6f, 0x63, 0x12, 0x09, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x1a, 0x08, 0x2e,
+	0x61, 0x70, 0x69, 0x2e, 0x44, 0x6f, 0x63, 0x22, 0x00, 0x12, 0x28, 0x0a, 0x08, 0x45, 0x64, 0x69,
+	0x74, 0x44, 0x6f, 0x63, 0x73, 0x12, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x64, 0x69, 0x74,
+	0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x09, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x6f, 0x63,
+	0x73, 0x22, 0x00, 0x12, 0x2c, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x44, 0x6f, 0x63, 0x12, 0x08, 0x2e,
+	0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x66, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22,
+	0x00, 0x12, 0x30, 0x0a, 0x07, 0x44, 0x65, 0x6c, 0x44, 0x6f, 0x63, 0x73, 0x12, 0x0b, 0x2e, 0x61,
+	0x70, 0x69, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
+	0x79, 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x09, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x44, 0x6f, 0x63,
+	0x12, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x46, 0x69, 0x6c,
+	0x74, 0x65, 0x72, 0x1a, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61,
+	0x6e, 0x22, 0x00, 0x12, 0x35, 0x0a, 0x10, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x6e,
+	0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78,
+	0x69, 0x73, 0x74, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x0c, 0x2e, 0x61, 0x70, 0x69,
+	0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x22, 0x00, 0x12, 0x22, 0x0a, 0x06, 0x48, 0x61,
+	0x73, 0x44, 0x6f, 0x63, 0x12, 0x08, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x66, 0x1a, 0x0c,
+	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x22, 0x00, 0x12, 0x29,
+	0x0a, 0x0d, 0x48, 0x61, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+	0x08, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x66, 0x1a, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+	0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x10, 0x43, 0x72, 0x65,
+	0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x2e,
+	0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
+	0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+	0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x11,
+	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+	0x73, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
+	0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x1a, 0x10,
+	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x22, 0x00, 0x12, 0x33, 0x0a, 0x0d, 0x50, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
+	0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
+	0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
+	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0e, 0x50, 0x75, 0x74, 0x43, 0x6f,
+	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+	0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x10, 0x2e, 0x61, 0x70,
 	0x69, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x00, 0x12,
 	0x40, 0x0a, 0x10, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x6e,
 	0x65, 0x63, 0x74, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
@@ -4292,83 +4303,91 @@ var file_graphik_proto_depIdxs = []int32{
 	53,  // 73: api.DatabaseService.Me:input_type -> google.protobuf.Empty
 	7,   // 74: api.DatabaseService.CreateDoc:input_type -> api.DocConstructor
 	8,   // 75: api.DatabaseService.CreateDocs:input_type -> api.DocConstructors
-	3,   // 76: api.DatabaseService.GetDoc:input_type -> api.Ref
-	19,  // 77: api.DatabaseService.SearchDocs:input_type -> api.Filter
-	21,  // 78: api.DatabaseService.Traverse:input_type -> api.TraverseFilter
-	22,  // 79: api.DatabaseService.TraverseMe:input_type -> api.TraverseMeFilter
-	39,  // 80: api.DatabaseService.EditDoc:input_type -> api.Edit
-	40,  // 81: api.DatabaseService.EditDocs:input_type -> api.EditFilter
-	3,   // 82: api.DatabaseService.DelDoc:input_type -> api.Ref
-	19,  // 83: api.DatabaseService.DelDocs:input_type -> api.Filter
-	38,  // 84: api.DatabaseService.ExistsDoc:input_type -> api.ExistsFilter
-	38,  // 85: api.DatabaseService.ExistsConnection:input_type -> api.ExistsFilter
-	3,   // 86: api.DatabaseService.HasDoc:input_type -> api.Ref
-	3,   // 87: api.DatabaseService.HasConnection:input_type -> api.Ref
-	13,  // 88: api.DatabaseService.CreateConnection:input_type -> api.ConnectionConstructor
-	16,  // 89: api.DatabaseService.CreateConnections:input_type -> api.ConnectionConstructors
-	14,  // 90: api.DatabaseService.SearchAndConnect:input_type -> api.SearchConnectFilter
-	15,  // 91: api.DatabaseService.SearchAndConnectMe:input_type -> api.SearchConnectMeFilter
-	3,   // 92: api.DatabaseService.GetConnection:input_type -> api.Ref
-	19,  // 93: api.DatabaseService.SearchConnections:input_type -> api.Filter
-	39,  // 94: api.DatabaseService.EditConnection:input_type -> api.Edit
-	40,  // 95: api.DatabaseService.EditConnections:input_type -> api.EditFilter
-	3,   // 96: api.DatabaseService.DelConnection:input_type -> api.Ref
-	19,  // 97: api.DatabaseService.DelConnections:input_type -> api.Filter
-	18,  // 98: api.DatabaseService.ConnectionsFrom:input_type -> api.ConnectFilter
-	18,  // 99: api.DatabaseService.ConnectionsTo:input_type -> api.ConnectFilter
-	20,  // 100: api.DatabaseService.AggregateDocs:input_type -> api.AggFilter
-	20,  // 101: api.DatabaseService.AggregateConnections:input_type -> api.AggFilter
-	42,  // 102: api.DatabaseService.Broadcast:input_type -> api.OutboundMessage
-	33,  // 103: api.DatabaseService.Stream:input_type -> api.StreamFilter
-	7,   // 104: api.DatabaseService.PushDocConstructors:input_type -> api.DocConstructor
-	13,  // 105: api.DatabaseService.PushConnectionConstructors:input_type -> api.ConnectionConstructor
-	6,   // 106: api.DatabaseService.SeedDocs:input_type -> api.Doc
-	12,  // 107: api.DatabaseService.SeedConnections:input_type -> api.Connection
-	41,  // 108: api.RaftService.Ping:output_type -> api.Pong
-	53,  // 109: api.RaftService.JoinCluster:output_type -> google.protobuf.Empty
-	48,  // 110: api.RaftService.ClusterState:output_type -> api.RaftState
-	44,  // 111: api.DatabaseService.GetSchema:output_type -> api.Schema
-	53,  // 112: api.DatabaseService.SetAuthorizers:output_type -> google.protobuf.Empty
-	53,  // 113: api.DatabaseService.SetIndexes:output_type -> google.protobuf.Empty
-	53,  // 114: api.DatabaseService.SetConstraints:output_type -> google.protobuf.Empty
-	53,  // 115: api.DatabaseService.SetTriggers:output_type -> google.protobuf.Empty
-	6,   // 116: api.DatabaseService.Me:output_type -> api.Doc
-	6,   // 117: api.DatabaseService.CreateDoc:output_type -> api.Doc
-	11,  // 118: api.DatabaseService.CreateDocs:output_type -> api.Docs
-	6,   // 119: api.DatabaseService.GetDoc:output_type -> api.Doc
-	11,  // 120: api.DatabaseService.SearchDocs:output_type -> api.Docs
-	10,  // 121: api.DatabaseService.Traverse:output_type -> api.Traversals
-	10,  // 122: api.DatabaseService.TraverseMe:output_type -> api.Traversals
-	6,   // 123: api.DatabaseService.EditDoc:output_type -> api.Doc
-	11,  // 124: api.DatabaseService.EditDocs:output_type -> api.Docs
-	53,  // 125: api.DatabaseService.DelDoc:output_type -> google.protobuf.Empty
-	53,  // 126: api.DatabaseService.DelDocs:output_type -> google.protobuf.Empty
-	36,  // 127: api.DatabaseService.ExistsDoc:output_type -> api.Boolean
-	36,  // 128: api.DatabaseService.ExistsConnection:output_type -> api.Boolean
-	36,  // 129: api.DatabaseService.HasDoc:output_type -> api.Boolean
-	36,  // 130: api.DatabaseService.HasConnection:output_type -> api.Boolean
-	12,  // 131: api.DatabaseService.CreateConnection:output_type -> api.Connection
-	17,  // 132: api.DatabaseService.CreateConnections:output_type -> api.Connections
-	17,  // 133: api.DatabaseService.SearchAndConnect:output_type -> api.Connections
-	17,  // 134: api.DatabaseService.SearchAndConnectMe:output_type -> api.Connections
-	12,  // 135: api.DatabaseService.GetConnection:output_type -> api.Connection
-	17,  // 136: api.DatabaseService.SearchConnections:output_type -> api.Connections
-	12,  // 137: api.DatabaseService.EditConnection:output_type -> api.Connection
-	17,  // 138: api.DatabaseService.EditConnections:output_type -> api.Connections
-	53,  // 139: api.DatabaseService.DelConnection:output_type -> google.protobuf.Empty
-	53,  // 140: api.DatabaseService.DelConnections:output_type -> google.protobuf.Empty
-	17,  // 141: api.DatabaseService.ConnectionsFrom:output_type -> api.Connections
-	17,  // 142: api.DatabaseService.ConnectionsTo:output_type -> api.Connections
-	37,  // 143: api.DatabaseService.AggregateDocs:output_type -> api.Number
-	37,  // 144: api.DatabaseService.AggregateConnections:output_type -> api.Number
-	53,  // 145: api.DatabaseService.Broadcast:output_type -> google.protobuf.Empty
-	43,  // 146: api.DatabaseService.Stream:output_type -> api.Message
-	6,   // 147: api.DatabaseService.PushDocConstructors:output_type -> api.Doc
-	12,  // 148: api.DatabaseService.PushConnectionConstructors:output_type -> api.Connection
-	53,  // 149: api.DatabaseService.SeedDocs:output_type -> google.protobuf.Empty
-	53,  // 150: api.DatabaseService.SeedConnections:output_type -> google.protobuf.Empty
-	108, // [108:151] is the sub-list for method output_type
-	65,  // [65:108] is the sub-list for method input_type
+	6,   // 76: api.DatabaseService.PutDoc:input_type -> api.Doc
+	11,  // 77: api.DatabaseService.PutDocs:input_type -> api.Docs
+	3,   // 78: api.DatabaseService.GetDoc:input_type -> api.Ref
+	19,  // 79: api.DatabaseService.SearchDocs:input_type -> api.Filter
+	21,  // 80: api.DatabaseService.Traverse:input_type -> api.TraverseFilter
+	22,  // 81: api.DatabaseService.TraverseMe:input_type -> api.TraverseMeFilter
+	39,  // 82: api.DatabaseService.EditDoc:input_type -> api.Edit
+	40,  // 83: api.DatabaseService.EditDocs:input_type -> api.EditFilter
+	3,   // 84: api.DatabaseService.DelDoc:input_type -> api.Ref
+	19,  // 85: api.DatabaseService.DelDocs:input_type -> api.Filter
+	38,  // 86: api.DatabaseService.ExistsDoc:input_type -> api.ExistsFilter
+	38,  // 87: api.DatabaseService.ExistsConnection:input_type -> api.ExistsFilter
+	3,   // 88: api.DatabaseService.HasDoc:input_type -> api.Ref
+	3,   // 89: api.DatabaseService.HasConnection:input_type -> api.Ref
+	13,  // 90: api.DatabaseService.CreateConnection:input_type -> api.ConnectionConstructor
+	16,  // 91: api.DatabaseService.CreateConnections:input_type -> api.ConnectionConstructors
+	12,  // 92: api.DatabaseService.PutConnection:input_type -> api.Connection
+	17,  // 93: api.DatabaseService.PutConnections:input_type -> api.Connections
+	14,  // 94: api.DatabaseService.SearchAndConnect:input_type -> api.SearchConnectFilter
+	15,  // 95: api.DatabaseService.SearchAndConnectMe:input_type -> api.SearchConnectMeFilter
+	3,   // 96: api.DatabaseService.GetConnection:input_type -> api.Ref
+	19,  // 97: api.DatabaseService.SearchConnections:input_type -> api.Filter
+	39,  // 98: api.DatabaseService.EditConnection:input_type -> api.Edit
+	40,  // 99: api.DatabaseService.EditConnections:input_type -> api.EditFilter
+	3,   // 100: api.DatabaseService.DelConnection:input_type -> api.Ref
+	19,  // 101: api.DatabaseService.DelConnections:input_type -> api.Filter
+	18,  // 102: api.DatabaseService.ConnectionsFrom:input_type -> api.ConnectFilter
+	18,  // 103: api.DatabaseService.ConnectionsTo:input_type -> api.ConnectFilter
+	20,  // 104: api.DatabaseService.AggregateDocs:input_type -> api.AggFilter
+	20,  // 105: api.DatabaseService.AggregateConnections:input_type -> api.AggFilter
+	42,  // 106: api.DatabaseService.Broadcast:input_type -> api.OutboundMessage
+	33,  // 107: api.DatabaseService.Stream:input_type -> api.StreamFilter
+	7,   // 108: api.DatabaseService.PushDocConstructors:input_type -> api.DocConstructor
+	13,  // 109: api.DatabaseService.PushConnectionConstructors:input_type -> api.ConnectionConstructor
+	6,   // 110: api.DatabaseService.SeedDocs:input_type -> api.Doc
+	12,  // 111: api.DatabaseService.SeedConnections:input_type -> api.Connection
+	41,  // 112: api.RaftService.Ping:output_type -> api.Pong
+	53,  // 113: api.RaftService.JoinCluster:output_type -> google.protobuf.Empty
+	48,  // 114: api.RaftService.ClusterState:output_type -> api.RaftState
+	44,  // 115: api.DatabaseService.GetSchema:output_type -> api.Schema
+	53,  // 116: api.DatabaseService.SetAuthorizers:output_type -> google.protobuf.Empty
+	53,  // 117: api.DatabaseService.SetIndexes:output_type -> google.protobuf.Empty
+	53,  // 118: api.DatabaseService.SetConstraints:output_type -> google.protobuf.Empty
+	53,  // 119: api.DatabaseService.SetTriggers:output_type -> google.protobuf.Empty
+	6,   // 120: api.DatabaseService.Me:output_type -> api.Doc
+	6,   // 121: api.DatabaseService.CreateDoc:output_type -> api.Doc
+	11,  // 122: api.DatabaseService.CreateDocs:output_type -> api.Docs
+	6,   // 123: api.DatabaseService.PutDoc:output_type -> api.Doc
+	11,  // 124: api.DatabaseService.PutDocs:output_type -> api.Docs
+	6,   // 125: api.DatabaseService.GetDoc:output_type -> api.Doc
+	11,  // 126: api.DatabaseService.SearchDocs:output_type -> api.Docs
+	10,  // 127: api.DatabaseService.Traverse:output_type -> api.Traversals
+	10,  // 128: api.DatabaseService.TraverseMe:output_type -> api.Traversals
+	6,   // 129: api.DatabaseService.EditDoc:output_type -> api.Doc
+	11,  // 130: api.DatabaseService.EditDocs:output_type -> api.Docs
+	53,  // 131: api.DatabaseService.DelDoc:output_type -> google.protobuf.Empty
+	53,  // 132: api.DatabaseService.DelDocs:output_type -> google.protobuf.Empty
+	36,  // 133: api.DatabaseService.ExistsDoc:output_type -> api.Boolean
+	36,  // 134: api.DatabaseService.ExistsConnection:output_type -> api.Boolean
+	36,  // 135: api.DatabaseService.HasDoc:output_type -> api.Boolean
+	36,  // 136: api.DatabaseService.HasConnection:output_type -> api.Boolean
+	12,  // 137: api.DatabaseService.CreateConnection:output_type -> api.Connection
+	17,  // 138: api.DatabaseService.CreateConnections:output_type -> api.Connections
+	12,  // 139: api.DatabaseService.PutConnection:output_type -> api.Connection
+	17,  // 140: api.DatabaseService.PutConnections:output_type -> api.Connections
+	17,  // 141: api.DatabaseService.SearchAndConnect:output_type -> api.Connections
+	17,  // 142: api.DatabaseService.SearchAndConnectMe:output_type -> api.Connections
+	12,  // 143: api.DatabaseService.GetConnection:output_type -> api.Connection
+	17,  // 144: api.DatabaseService.SearchConnections:output_type -> api.Connections
+	12,  // 145: api.DatabaseService.EditConnection:output_type -> api.Connection
+	17,  // 146: api.DatabaseService.EditConnections:output_type -> api.Connections
+	53,  // 147: api.DatabaseService.DelConnection:output_type -> google.protobuf.Empty
+	53,  // 148: api.DatabaseService.DelConnections:output_type -> google.protobuf.Empty
+	17,  // 149: api.DatabaseService.ConnectionsFrom:output_type -> api.Connections
+	17,  // 150: api.DatabaseService.ConnectionsTo:output_type -> api.Connections
+	37,  // 151: api.DatabaseService.AggregateDocs:output_type -> api.Number
+	37,  // 152: api.DatabaseService.AggregateConnections:output_type -> api.Number
+	53,  // 153: api.DatabaseService.Broadcast:output_type -> google.protobuf.Empty
+	43,  // 154: api.DatabaseService.Stream:output_type -> api.Message
+	6,   // 155: api.DatabaseService.PushDocConstructors:output_type -> api.Doc
+	12,  // 156: api.DatabaseService.PushConnectionConstructors:output_type -> api.Connection
+	53,  // 157: api.DatabaseService.SeedDocs:output_type -> google.protobuf.Empty
+	53,  // 158: api.DatabaseService.SeedConnections:output_type -> google.protobuf.Empty
+	112, // [112:159] is the sub-list for method output_type
+	65,  // [65:112] is the sub-list for method input_type
 	65,  // [65:65] is the sub-list for extension type_name
 	65,  // [65:65] is the sub-list for extension extendee
 	0,   // [0:65] is the sub-list for field type_name
@@ -5128,6 +5147,10 @@ type DatabaseServiceClient interface {
 	CreateDoc(ctx context.Context, in *DocConstructor, opts ...grpc.CallOption) (*Doc, error)
 	// CreateDocs creates a batch of docs in the graph
 	CreateDocs(ctx context.Context, in *DocConstructors, opts ...grpc.CallOption) (*Docs, error)
+	// PutDoc create-or-replaces a Doc in the graph
+	PutDoc(ctx context.Context, in *Doc, opts ...grpc.CallOption) (*Doc, error)
+	// PutDocs puts a batch of docs in the graph
+	PutDocs(ctx context.Context, in *Docs, opts ...grpc.CallOption) (*Docs, error)
 	// GetDoc gets a single doc in the graph
 	GetDoc(ctx context.Context, in *Ref, opts ...grpc.CallOption) (*Doc, error)
 	// SearchDocs searches the graph for docs
@@ -5156,6 +5179,10 @@ type DatabaseServiceClient interface {
 	CreateConnection(ctx context.Context, in *ConnectionConstructor, opts ...grpc.CallOption) (*Connection, error)
 	// CreateConnections creates a batch of connections in the graph
 	CreateConnections(ctx context.Context, in *ConnectionConstructors, opts ...grpc.CallOption) (*Connections, error)
+	// PutConnection create-or-replaces a Connection in the graph
+	PutConnection(ctx context.Context, in *Connection, opts ...grpc.CallOption) (*Connection, error)
+	// PutConnections puts a batch of connections in the graph
+	PutConnections(ctx context.Context, in *Connections, opts ...grpc.CallOption) (*Connections, error)
 	// searches for documents and forms connections based on whether they pass a filter
 	SearchAndConnect(ctx context.Context, in *SearchConnectFilter, opts ...grpc.CallOption) (*Connections, error)
 	// SearchAndConnectMe searches for documents and forms connections from the origin user to the document based on whether they pass a filter
@@ -5271,6 +5298,24 @@ func (c *databaseServiceClient) CreateDocs(ctx context.Context, in *DocConstruct
 	return out, nil
 }
 
+func (c *databaseServiceClient) PutDoc(ctx context.Context, in *Doc, opts ...grpc.CallOption) (*Doc, error) {
+	out := new(Doc)
+	err := c.cc.Invoke(ctx, "/api.DatabaseService/PutDoc", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *databaseServiceClient) PutDocs(ctx context.Context, in *Docs, opts ...grpc.CallOption) (*Docs, error) {
+	out := new(Docs)
+	err := c.cc.Invoke(ctx, "/api.DatabaseService/PutDocs", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *databaseServiceClient) GetDoc(ctx context.Context, in *Ref, opts ...grpc.CallOption) (*Doc, error) {
 	out := new(Doc)
 	err := c.cc.Invoke(ctx, "/api.DatabaseService/GetDoc", in, out, opts...)
@@ -5397,6 +5442,24 @@ func (c *databaseServiceClient) CreateConnections(ctx context.Context, in *Conne
 	return out, nil
 }
 
+func (c *databaseServiceClient) PutConnection(ctx context.Context, in *Connection, opts ...grpc.CallOption) (*Connection, error) {
+	out := new(Connection)
+	err := c.cc.Invoke(ctx, "/api.DatabaseService/PutConnection", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *databaseServiceClient) PutConnections(ctx context.Context, in *Connections, opts ...grpc.CallOption) (*Connections, error) {
+	out := new(Connections)
+	err := c.cc.Invoke(ctx, "/api.DatabaseService/PutConnections", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *databaseServiceClient) SearchAndConnect(ctx context.Context, in *SearchConnectFilter, opts ...grpc.CallOption) (*Connections, error) {
 	out := new(Connections)
 	err := c.cc.Invoke(ctx, "/api.DatabaseService/SearchAndConnect", in, out, opts...)
@@ -5694,6 +5757,10 @@ type DatabaseServiceServer interface {
 	CreateDoc(context.Context, *DocConstructor) (*Doc, error)
 	// CreateDocs creates a batch of docs in the graph
 	CreateDocs(context.Context, *DocConstructors) (*Docs, error)
+	// PutDoc create-or-replaces a Doc in the graph
+	PutDoc(context.Context, *Doc) (*Doc, error)
+	// PutDocs puts a batch of docs in the graph
+	PutDocs(context.Context, *Docs) (*Docs, error)
 	// GetDoc gets a single doc in the graph
 	GetDoc(context.Context, *Ref) (*Doc, error)
 	// SearchDocs searches the graph for docs
@@ -5722,6 +5789,10 @@ type DatabaseServiceServer interface {
 	CreateConnection(context.Context, *ConnectionConstructor) (*Connection, error)
 	// CreateConnections creates a batch of connections in the graph
 	CreateConnections(context.Context, *ConnectionConstructors) (*Connections, error)
+	// PutConnection create-or-replaces a Connection in the graph
+	PutConnection(context.Context, *Connection) (*Connection, error)
+	// PutConnections puts a batch of connections in the graph
+	PutConnections(context.Context, *Connections) (*Connections, error)
 	// searches for documents and forms connections based on whether they pass a filter
 	SearchAndConnect(context.Context, *SearchConnectFilter) (*Connections, error)
 	// SearchAndConnectMe searches for documents and forms connections from the origin user to the document based on whether they pass a filter
@@ -5785,6 +5856,12 @@ func (*UnimplementedDatabaseServiceServer) CreateDoc(context.Context, *DocConstr
 func (*UnimplementedDatabaseServiceServer) CreateDocs(context.Context, *DocConstructors) (*Docs, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method CreateDocs not implemented")
 }
+func (*UnimplementedDatabaseServiceServer) PutDoc(context.Context, *Doc) (*Doc, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method PutDoc not implemented")
+}
+func (*UnimplementedDatabaseServiceServer) PutDocs(context.Context, *Docs) (*Docs, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method PutDocs not implemented")
+}
 func (*UnimplementedDatabaseServiceServer) GetDoc(context.Context, *Ref) (*Doc, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method GetDoc not implemented")
 }
@@ -5827,6 +5904,12 @@ func (*UnimplementedDatabaseServiceServer) CreateConnection(context.Context, *Co
 func (*UnimplementedDatabaseServiceServer) CreateConnections(context.Context, *ConnectionConstructors) (*Connections, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method CreateConnections not implemented")
 }
+func (*UnimplementedDatabaseServiceServer) PutConnection(context.Context, *Connection) (*Connection, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method PutConnection not implemented")
+}
+func (*UnimplementedDatabaseServiceServer) PutConnections(context.Context, *Connections) (*Connections, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method PutConnections not implemented")
+}
 func (*UnimplementedDatabaseServiceServer) SearchAndConnect(context.Context, *SearchConnectFilter) (*Connections, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method SearchAndConnect not implemented")
 }
@@ -6030,6 +6113,42 @@ func _DatabaseService_CreateDocs_Handler(srv interface{}, ctx context.Context, d
 	return interceptor(ctx, in, info, handler)
 }
 
+func _DatabaseService_PutDoc_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Doc)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(DatabaseServiceServer).PutDoc(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/api.DatabaseService/PutDoc",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(DatabaseServiceServer).PutDoc(ctx, req.(*Doc))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _DatabaseService_PutDocs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Docs)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(DatabaseServiceServer).PutDocs(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/api.DatabaseService/PutDocs",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(DatabaseServiceServer).PutDocs(ctx, req.(*Docs))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _DatabaseService_GetDoc_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(Ref)
 	if err := dec(in); err != nil {
@@ -6282,6 +6401,42 @@ func _DatabaseService_CreateConnections_Handler(srv interface{}, ctx context.Con
 	return interceptor(ctx, in, info, handler)
 }
 
+func _DatabaseService_PutConnection_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Connection)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(DatabaseServiceServer).PutConnection(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/api.DatabaseService/PutConnection",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(DatabaseServiceServer).PutConnection(ctx, req.(*Connection))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _DatabaseService_PutConnections_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Connections)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(DatabaseServiceServer).PutConnections(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/api.DatabaseService/PutConnections",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(DatabaseServiceServer).PutConnections(ctx, req.(*Connections))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _DatabaseService_SearchAndConnect_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(SearchConnectFilter)
 	if err := dec(in); err != nil {
@@ -6677,6 +6832,14 @@ var _DatabaseService_serviceDesc = grpc.ServiceDesc{
 			MethodName: "CreateDocs",
 			Handler:    _DatabaseService_CreateDocs_Handler,
 		},
+		{
+			MethodName: "PutDoc",
+			Handler:    _DatabaseService_PutDoc_Handler,
+		},
+		{
+			MethodName: "PutDocs",
+			Handler:    _DatabaseService_PutDocs_Handler,
+		},
 		{
 			MethodName: "GetDoc",
 			Handler:    _DatabaseService_GetDoc_Handler,
@@ -6733,6 +6896,14 @@ var _DatabaseService_serviceDesc = grpc.ServiceDesc{
 			MethodName: "CreateConnections",
 			Handler:    _DatabaseService_CreateConnections_Handler,
 		},
+		{
+			MethodName: "PutConnection",
+			Handler:    _DatabaseService_PutConnection_Handler,
+		},
+		{
+			MethodName: "PutConnections",
+			Handler:    _DatabaseService_PutConnections_Handler,
+		},
 		{
 			MethodName: "SearchAndConnect",
 			Handler:    _DatabaseService_SearchAndConnect_Handler,
diff --git a/gen/grpc/java/api/Graphik.java b/gen/grpc/java/api/Graphik.java
index b62b5f3..f4250c4 100644
--- a/gen/grpc/java/api/Graphik.java
+++ b/gen/grpc/java/api/Graphik.java
@@ -51852,7 +51852,7 @@ public api.Graphik.RaftState getDefaultInstanceForType() {
       "ng\022\026.google.protobuf.Empty\032\t.api.Pong\"\000\022" +
       "2\n\013JoinCluster\022\t.api.Peer\032\026.google.proto" +
       "buf.Empty\"\000\0228\n\014ClusterState\022\026.google.pro" +
-      "tobuf.Empty\032\016.api.RaftState\"\0002\337\020\n\017Databa" +
+      "tobuf.Empty\032\016.api.RaftState\"\0002\217\022\n\017Databa" +
       "seService\0222\n\tGetSchema\022\026.google.protobuf" +
       ".Empty\032\013.api.Schema\"\000\022<\n\016SetAuthorizers\022" +
       "\020.api.Authorizers\032\026.google.protobuf.Empt" +
@@ -51863,50 +51863,55 @@ public api.Graphik.RaftState getDefaultInstanceForType() {
       "rotobuf.Empty\"\000\022(\n\002Me\022\026.google.protobuf." +
       "Empty\032\010.api.Doc\"\000\022,\n\tCreateDoc\022\023.api.Doc" +
       "Constructor\032\010.api.Doc\"\000\022/\n\nCreateDocs\022\024." +
-      "api.DocConstructors\032\t.api.Docs\"\000\022\036\n\006GetD" +
-      "oc\022\010.api.Ref\032\010.api.Doc\"\000\022&\n\nSearchDocs\022\013" +
-      ".api.Filter\032\t.api.Docs\"\000\0222\n\010Traverse\022\023.a" +
-      "pi.TraverseFilter\032\017.api.Traversals\"\000\0226\n\n" +
-      "TraverseMe\022\025.api.TraverseMeFilter\032\017.api." +
-      "Traversals\"\000\022 \n\007EditDoc\022\t.api.Edit\032\010.api" +
-      ".Doc\"\000\022(\n\010EditDocs\022\017.api.EditFilter\032\t.ap" +
-      "i.Docs\"\000\022,\n\006DelDoc\022\010.api.Ref\032\026.google.pr" +
-      "otobuf.Empty\"\000\0220\n\007DelDocs\022\013.api.Filter\032\026" +
-      ".google.protobuf.Empty\"\000\022.\n\tExistsDoc\022\021." +
-      "api.ExistsFilter\032\014.api.Boolean\"\000\0225\n\020Exis" +
-      "tsConnection\022\021.api.ExistsFilter\032\014.api.Bo" +
-      "olean\"\000\022\"\n\006HasDoc\022\010.api.Ref\032\014.api.Boolea" +
-      "n\"\000\022)\n\rHasConnection\022\010.api.Ref\032\014.api.Boo" +
-      "lean\"\000\022A\n\020CreateConnection\022\032.api.Connect" +
-      "ionConstructor\032\017.api.Connection\"\000\022D\n\021Cre" +
-      "ateConnections\022\033.api.ConnectionConstruct" +
-      "ors\032\020.api.Connections\"\000\022@\n\020SearchAndConn" +
-      "ect\022\030.api.SearchConnectFilter\032\020.api.Conn" +
-      "ections\"\000\022D\n\022SearchAndConnectMe\022\032.api.Se" +
-      "archConnectMeFilter\032\020.api.Connections\"\000\022" +
-      ",\n\rGetConnection\022\010.api.Ref\032\017.api.Connect" +
-      "ion\"\000\0224\n\021SearchConnections\022\013.api.Filter\032" +
-      "\020.api.Connections\"\000\022.\n\016EditConnection\022\t." +
-      "api.Edit\032\017.api.Connection\"\000\0226\n\017EditConne" +
-      "ctions\022\017.api.EditFilter\032\020.api.Connection" +
-      "s\"\000\0223\n\rDelConnection\022\010.api.Ref\032\026.google." +
-      "protobuf.Empty\"\000\0227\n\016DelConnections\022\013.api" +
-      ".Filter\032\026.google.protobuf.Empty\"\000\0229\n\017Con" +
-      "nectionsFrom\022\022.api.ConnectFilter\032\020.api.C" +
-      "onnections\"\000\0227\n\rConnectionsTo\022\022.api.Conn" +
-      "ectFilter\032\020.api.Connections\"\000\022.\n\rAggrega" +
-      "teDocs\022\016.api.AggFilter\032\013.api.Number\"\000\0225\n" +
-      "\024AggregateConnections\022\016.api.AggFilter\032\013." +
-      "api.Number\"\000\022;\n\tBroadcast\022\024.api.Outbound" +
-      "Message\032\026.google.protobuf.Empty\"\000\022-\n\006Str" +
-      "eam\022\021.api.StreamFilter\032\014.api.Message\"\0000\001" +
-      "\022:\n\023PushDocConstructors\022\023.api.DocConstru" +
-      "ctor\032\010.api.Doc\"\000(\0010\001\022O\n\032PushConnectionCo" +
-      "nstructors\022\032.api.ConnectionConstructor\032\017" +
-      ".api.Connection\"\000(\0010\001\0220\n\010SeedDocs\022\010.api." +
-      "Doc\032\026.google.protobuf.Empty\"\000(\001\022>\n\017SeedC" +
-      "onnections\022\017.api.Connection\032\026.google.pro" +
-      "tobuf.Empty\"\000(\001B\007Z\005apipbb\006proto3"
+      "api.DocConstructors\032\t.api.Docs\"\000\022\036\n\006PutD" +
+      "oc\022\010.api.Doc\032\010.api.Doc\"\000\022!\n\007PutDocs\022\t.ap" +
+      "i.Docs\032\t.api.Docs\"\000\022\036\n\006GetDoc\022\010.api.Ref\032" +
+      "\010.api.Doc\"\000\022&\n\nSearchDocs\022\013.api.Filter\032\t" +
+      ".api.Docs\"\000\0222\n\010Traverse\022\023.api.TraverseFi" +
+      "lter\032\017.api.Traversals\"\000\0226\n\nTraverseMe\022\025." +
+      "api.TraverseMeFilter\032\017.api.Traversals\"\000\022" +
+      " \n\007EditDoc\022\t.api.Edit\032\010.api.Doc\"\000\022(\n\010Edi" +
+      "tDocs\022\017.api.EditFilter\032\t.api.Docs\"\000\022,\n\006D" +
+      "elDoc\022\010.api.Ref\032\026.google.protobuf.Empty\"" +
+      "\000\0220\n\007DelDocs\022\013.api.Filter\032\026.google.proto" +
+      "buf.Empty\"\000\022.\n\tExistsDoc\022\021.api.ExistsFil" +
+      "ter\032\014.api.Boolean\"\000\0225\n\020ExistsConnection\022" +
+      "\021.api.ExistsFilter\032\014.api.Boolean\"\000\022\"\n\006Ha" +
+      "sDoc\022\010.api.Ref\032\014.api.Boolean\"\000\022)\n\rHasCon" +
+      "nection\022\010.api.Ref\032\014.api.Boolean\"\000\022A\n\020Cre" +
+      "ateConnection\022\032.api.ConnectionConstructo" +
+      "r\032\017.api.Connection\"\000\022D\n\021CreateConnection" +
+      "s\022\033.api.ConnectionConstructors\032\020.api.Con" +
+      "nections\"\000\0223\n\rPutConnection\022\017.api.Connec" +
+      "tion\032\017.api.Connection\"\000\0226\n\016PutConnection" +
+      "s\022\020.api.Connections\032\020.api.Connections\"\000\022" +
+      "@\n\020SearchAndConnect\022\030.api.SearchConnectF" +
+      "ilter\032\020.api.Connections\"\000\022D\n\022SearchAndCo" +
+      "nnectMe\022\032.api.SearchConnectMeFilter\032\020.ap" +
+      "i.Connections\"\000\022,\n\rGetConnection\022\010.api.R" +
+      "ef\032\017.api.Connection\"\000\0224\n\021SearchConnectio" +
+      "ns\022\013.api.Filter\032\020.api.Connections\"\000\022.\n\016E" +
+      "ditConnection\022\t.api.Edit\032\017.api.Connectio" +
+      "n\"\000\0226\n\017EditConnections\022\017.api.EditFilter\032" +
+      "\020.api.Connections\"\000\0223\n\rDelConnection\022\010.a" +
+      "pi.Ref\032\026.google.protobuf.Empty\"\000\0227\n\016DelC" +
+      "onnections\022\013.api.Filter\032\026.google.protobu" +
+      "f.Empty\"\000\0229\n\017ConnectionsFrom\022\022.api.Conne" +
+      "ctFilter\032\020.api.Connections\"\000\0227\n\rConnecti" +
+      "onsTo\022\022.api.ConnectFilter\032\020.api.Connecti" +
+      "ons\"\000\022.\n\rAggregateDocs\022\016.api.AggFilter\032\013" +
+      ".api.Number\"\000\0225\n\024AggregateConnections\022\016." +
+      "api.AggFilter\032\013.api.Number\"\000\022;\n\tBroadcas" +
+      "t\022\024.api.OutboundMessage\032\026.google.protobu" +
+      "f.Empty\"\000\022-\n\006Stream\022\021.api.StreamFilter\032\014" +
+      ".api.Message\"\0000\001\022:\n\023PushDocConstructors\022" +
+      "\023.api.DocConstructor\032\010.api.Doc\"\000(\0010\001\022O\n\032" +
+      "PushConnectionConstructors\022\032.api.Connect" +
+      "ionConstructor\032\017.api.Connection\"\000(\0010\001\0220\n" +
+      "\010SeedDocs\022\010.api.Doc\032\026.google.protobuf.Em" +
+      "pty\"\000(\001\022>\n\017SeedConnections\022\017.api.Connect" +
+      "ion\032\026.google.protobuf.Empty\"\000(\001B\007Z\005apipb" +
+      "b\006proto3"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
         new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
diff --git a/gen/grpc/php/GPBMetadata/Graphik.php b/gen/grpc/php/GPBMetadata/Graphik.php
index 881b623..137c190 100644
--- a/gen/grpc/php/GPBMetadata/Graphik.php
+++ b/gen/grpc/php/GPBMetadata/Graphik.php
@@ -20,7 +20,7 @@ public static function initOnce() {
         \GPBMetadata\Google\Protobuf\GPBEmpty::initOnce();
         \GPBMetadata\GithubCom\Mwitkow\GoProtoValidators\Validator::initOnce();
         $pool->internalAddGeneratedFile(hex2bin(
-            "0a9a430a0d6772617068696b2e70726f746f12036170691a1f676f6f676c" .
+            "0aca440a0d6772617068696b2e70726f746f12036170691a1f676f6f676c" .
             "652f70726f746f6275662f74696d657374616d702e70726f746f1a19676f" .
             "6f676c652f70726f746f6275662f616e792e70726f746f1a1b676f6f676c" .
             "652f70726f746f6275662f656d7074792e70726f746f1a36676974687562" .
@@ -234,7 +234,7 @@ public static function initOnce() {
             "220012320a0b4a6f696e436c757374657212092e6170692e506565721a16" .
             "2e676f6f676c652e70726f746f6275662e456d707479220012380a0c436c" .
             "7573746572537461746512162e676f6f676c652e70726f746f6275662e45" .
-            "6d7074791a0e2e6170692e526166745374617465220032df100a0f446174" .
+            "6d7074791a0e2e6170692e5261667453746174652200328f120a0f446174" .
             "61626173655365727669636512320a09476574536368656d6112162e676f" .
             "6f676c652e70726f746f6275662e456d7074791a0b2e6170692e53636865" .
             "6d612200123c0a0e536574417574686f72697a65727312102e6170692e41" .
@@ -249,64 +249,70 @@ public static function initOnce() {
             "2e6170692e446f632200122c0a09437265617465446f6312132e6170692e" .
             "446f63436f6e7374727563746f721a082e6170692e446f632200122f0a0a" .
             "437265617465446f637312142e6170692e446f63436f6e7374727563746f" .
-            "72731a092e6170692e446f63732200121e0a06476574446f6312082e6170" .
-            "692e5265661a082e6170692e446f63220012260a0a536561726368446f63" .
-            "73120b2e6170692e46696c7465721a092e6170692e446f6373220012320a" .
-            "08547261766572736512132e6170692e547261766572736546696c746572" .
-            "1a0f2e6170692e54726176657273616c73220012360a0a54726176657273" .
-            "654d6512152e6170692e54726176657273654d6546696c7465721a0f2e61" .
-            "70692e54726176657273616c73220012200a0745646974446f6312092e61" .
-            "70692e456469741a082e6170692e446f63220012280a0845646974446f63" .
-            "73120f2e6170692e4564697446696c7465721a092e6170692e446f637322" .
-            "00122c0a0644656c446f6312082e6170692e5265661a162e676f6f676c65" .
-            "2e70726f746f6275662e456d707479220012300a0744656c446f6373120b" .
-            "2e6170692e46696c7465721a162e676f6f676c652e70726f746f6275662e" .
-            "456d7074792200122e0a09457869737473446f6312112e6170692e457869" .
-            "73747346696c7465721a0c2e6170692e426f6f6c65616e220012350a1045" .
-            "7869737473436f6e6e656374696f6e12112e6170692e4578697374734669" .
-            "6c7465721a0c2e6170692e426f6f6c65616e220012220a06486173446f63" .
-            "12082e6170692e5265661a0c2e6170692e426f6f6c65616e220012290a0d" .
-            "486173436f6e6e656374696f6e12082e6170692e5265661a0c2e6170692e" .
-            "426f6f6c65616e220012410a10437265617465436f6e6e656374696f6e12" .
-            "1a2e6170692e436f6e6e656374696f6e436f6e7374727563746f721a0f2e" .
-            "6170692e436f6e6e656374696f6e220012440a11437265617465436f6e6e" .
-            "656374696f6e73121b2e6170692e436f6e6e656374696f6e436f6e737472" .
-            "7563746f72731a102e6170692e436f6e6e656374696f6e73220012400a10" .
-            "536561726368416e64436f6e6e65637412182e6170692e53656172636843" .
-            "6f6e6e65637446696c7465721a102e6170692e436f6e6e656374696f6e73" .
-            "220012440a12536561726368416e64436f6e6e6563744d65121a2e617069" .
-            "2e536561726368436f6e6e6563744d6546696c7465721a102e6170692e43" .
-            "6f6e6e656374696f6e732200122c0a0d476574436f6e6e656374696f6e12" .
-            "082e6170692e5265661a0f2e6170692e436f6e6e656374696f6e22001234" .
-            "0a11536561726368436f6e6e656374696f6e73120b2e6170692e46696c74" .
-            "65721a102e6170692e436f6e6e656374696f6e732200122e0a0e45646974" .
-            "436f6e6e656374696f6e12092e6170692e456469741a0f2e6170692e436f" .
-            "6e6e656374696f6e220012360a0f45646974436f6e6e656374696f6e7312" .
-            "0f2e6170692e4564697446696c7465721a102e6170692e436f6e6e656374" .
-            "696f6e73220012330a0d44656c436f6e6e656374696f6e12082e6170692e" .
-            "5265661a162e676f6f676c652e70726f746f6275662e456d707479220012" .
-            "370a0e44656c436f6e6e656374696f6e73120b2e6170692e46696c746572" .
-            "1a162e676f6f676c652e70726f746f6275662e456d707479220012390a0f" .
-            "436f6e6e656374696f6e7346726f6d12122e6170692e436f6e6e65637446" .
-            "696c7465721a102e6170692e436f6e6e656374696f6e73220012370a0d43" .
-            "6f6e6e656374696f6e73546f12122e6170692e436f6e6e65637446696c74" .
-            "65721a102e6170692e436f6e6e656374696f6e732200122e0a0d41676772" .
-            "6567617465446f6373120e2e6170692e41676746696c7465721a0b2e6170" .
-            "692e4e756d626572220012350a14416767726567617465436f6e6e656374" .
-            "696f6e73120e2e6170692e41676746696c7465721a0b2e6170692e4e756d" .
-            "6265722200123b0a0942726f61646361737412142e6170692e4f7574626f" .
-            "756e644d6573736167651a162e676f6f676c652e70726f746f6275662e45" .
-            "6d7074792200122d0a0653747265616d12112e6170692e53747265616d46" .
-            "696c7465721a0c2e6170692e4d65737361676522003001123a0a13507573" .
-            "68446f63436f6e7374727563746f727312132e6170692e446f63436f6e73" .
-            "74727563746f721a082e6170692e446f63220028013001124f0a1a507573" .
-            "68436f6e6e656374696f6e436f6e7374727563746f7273121a2e6170692e" .
-            "436f6e6e656374696f6e436f6e7374727563746f721a0f2e6170692e436f" .
-            "6e6e656374696f6e22002801300112300a0853656564446f637312082e61" .
-            "70692e446f631a162e676f6f676c652e70726f746f6275662e456d707479" .
-            "22002801123e0a0f53656564436f6e6e656374696f6e73120f2e6170692e" .
-            "436f6e6e656374696f6e1a162e676f6f676c652e70726f746f6275662e45" .
-            "6d7074792200280142075a056170697062620670726f746f33"
+            "72731a092e6170692e446f63732200121e0a06507574446f6312082e6170" .
+            "692e446f631a082e6170692e446f63220012210a07507574446f63731209" .
+            "2e6170692e446f63731a092e6170692e446f63732200121e0a0647657444" .
+            "6f6312082e6170692e5265661a082e6170692e446f63220012260a0a5365" .
+            "61726368446f6373120b2e6170692e46696c7465721a092e6170692e446f" .
+            "6373220012320a08547261766572736512132e6170692e54726176657273" .
+            "6546696c7465721a0f2e6170692e54726176657273616c73220012360a0a" .
+            "54726176657273654d6512152e6170692e54726176657273654d6546696c" .
+            "7465721a0f2e6170692e54726176657273616c73220012200a0745646974" .
+            "446f6312092e6170692e456469741a082e6170692e446f63220012280a08" .
+            "45646974446f6373120f2e6170692e4564697446696c7465721a092e6170" .
+            "692e446f63732200122c0a0644656c446f6312082e6170692e5265661a16" .
+            "2e676f6f676c652e70726f746f6275662e456d707479220012300a074465" .
+            "6c446f6373120b2e6170692e46696c7465721a162e676f6f676c652e7072" .
+            "6f746f6275662e456d7074792200122e0a09457869737473446f6312112e" .
+            "6170692e45786973747346696c7465721a0c2e6170692e426f6f6c65616e" .
+            "220012350a10457869737473436f6e6e656374696f6e12112e6170692e45" .
+            "786973747346696c7465721a0c2e6170692e426f6f6c65616e220012220a" .
+            "06486173446f6312082e6170692e5265661a0c2e6170692e426f6f6c6561" .
+            "6e220012290a0d486173436f6e6e656374696f6e12082e6170692e526566" .
+            "1a0c2e6170692e426f6f6c65616e220012410a10437265617465436f6e6e" .
+            "656374696f6e121a2e6170692e436f6e6e656374696f6e436f6e73747275" .
+            "63746f721a0f2e6170692e436f6e6e656374696f6e220012440a11437265" .
+            "617465436f6e6e656374696f6e73121b2e6170692e436f6e6e656374696f" .
+            "6e436f6e7374727563746f72731a102e6170692e436f6e6e656374696f6e" .
+            "73220012330a0d507574436f6e6e656374696f6e120f2e6170692e436f6e" .
+            "6e656374696f6e1a0f2e6170692e436f6e6e656374696f6e220012360a0e" .
+            "507574436f6e6e656374696f6e7312102e6170692e436f6e6e656374696f" .
+            "6e731a102e6170692e436f6e6e656374696f6e73220012400a1053656172" .
+            "6368416e64436f6e6e65637412182e6170692e536561726368436f6e6e65" .
+            "637446696c7465721a102e6170692e436f6e6e656374696f6e7322001244" .
+            "0a12536561726368416e64436f6e6e6563744d65121a2e6170692e536561" .
+            "726368436f6e6e6563744d6546696c7465721a102e6170692e436f6e6e65" .
+            "6374696f6e732200122c0a0d476574436f6e6e656374696f6e12082e6170" .
+            "692e5265661a0f2e6170692e436f6e6e656374696f6e220012340a115365" .
+            "61726368436f6e6e656374696f6e73120b2e6170692e46696c7465721a10" .
+            "2e6170692e436f6e6e656374696f6e732200122e0a0e45646974436f6e6e" .
+            "656374696f6e12092e6170692e456469741a0f2e6170692e436f6e6e6563" .
+            "74696f6e220012360a0f45646974436f6e6e656374696f6e73120f2e6170" .
+            "692e4564697446696c7465721a102e6170692e436f6e6e656374696f6e73" .
+            "220012330a0d44656c436f6e6e656374696f6e12082e6170692e5265661a" .
+            "162e676f6f676c652e70726f746f6275662e456d707479220012370a0e44" .
+            "656c436f6e6e656374696f6e73120b2e6170692e46696c7465721a162e67" .
+            "6f6f676c652e70726f746f6275662e456d707479220012390a0f436f6e6e" .
+            "656374696f6e7346726f6d12122e6170692e436f6e6e65637446696c7465" .
+            "721a102e6170692e436f6e6e656374696f6e73220012370a0d436f6e6e65" .
+            "6374696f6e73546f12122e6170692e436f6e6e65637446696c7465721a10" .
+            "2e6170692e436f6e6e656374696f6e732200122e0a0d4167677265676174" .
+            "65446f6373120e2e6170692e41676746696c7465721a0b2e6170692e4e75" .
+            "6d626572220012350a14416767726567617465436f6e6e656374696f6e73" .
+            "120e2e6170692e41676746696c7465721a0b2e6170692e4e756d62657222" .
+            "00123b0a0942726f61646361737412142e6170692e4f7574626f756e644d" .
+            "6573736167651a162e676f6f676c652e70726f746f6275662e456d707479" .
+            "2200122d0a0653747265616d12112e6170692e53747265616d46696c7465" .
+            "721a0c2e6170692e4d65737361676522003001123a0a1350757368446f63" .
+            "436f6e7374727563746f727312132e6170692e446f63436f6e7374727563" .
+            "746f721a082e6170692e446f63220028013001124f0a1a50757368436f6e" .
+            "6e656374696f6e436f6e7374727563746f7273121a2e6170692e436f6e6e" .
+            "656374696f6e436f6e7374727563746f721a0f2e6170692e436f6e6e6563" .
+            "74696f6e22002801300112300a0853656564446f637312082e6170692e44" .
+            "6f631a162e676f6f676c652e70726f746f6275662e456d70747922002801" .
+            "123e0a0f53656564436f6e6e656374696f6e73120f2e6170692e436f6e6e" .
+            "656374696f6e1a162e676f6f676c652e70726f746f6275662e456d707479" .
+            "2200280142075a056170697062620670726f746f33"
         ));
 
         static::$is_initialized = true;
diff --git a/gen/grpc/python/graphik_pb2.py b/gen/grpc/python/graphik_pb2.py
index 1760290..aa04bc7 100644
--- a/gen/grpc/python/graphik_pb2.py
+++ b/gen/grpc/python/graphik_pb2.py
@@ -25,7 +25,7 @@
   package='api',
   syntax='proto3',
   serialized_options=_b('Z\005apipb'),
-  serialized_pb=_b('\n\rgraphik.proto\x12\x03\x61pi\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x19google/protobuf/any.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x36github.com/mwitkow/go-proto-validators/validator.proto\"E\n\x03Ref\x12\x1f\n\x05gtype\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x1d\n\x03gid\x18\x02 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\">\n\x0eRefConstructor\x12\x1f\n\x05gtype\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x0b\n\x03gid\x18\x02 \x01(\t\"\x1e\n\x04Refs\x12\x16\n\x04refs\x18\x01 \x03(\x0b\x32\x08.api.Ref\"Q\n\x03\x44oc\x12\x1d\n\x03ref\x18\x01 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\x12+\n\nattributes\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"g\n\x0e\x44ocConstructor\x12(\n\x03ref\x18\x01 \x01(\x0b\x32\x13.api.RefConstructorB\x06\xe2\xdf\x1f\x02 \x01\x12+\n\nattributes\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"4\n\x0f\x44ocConstructors\x12!\n\x04\x64ocs\x18\x01 \x03(\x0b\x32\x13.api.DocConstructor\"a\n\tTraversal\x12\x15\n\x03\x64oc\x18\x01 \x01(\x0b\x32\x08.api.Doc\x12 \n\x0etraversal_path\x18\x02 \x03(\x0b\x32\x08.api.Ref\x12\r\n\x05\x64\x65pth\x18\x03 \x01(\x04\x12\x0c\n\x04hops\x18\x04 \x01(\x04\"0\n\nTraversals\x12\"\n\ntraversals\x18\x01 \x03(\x0b\x32\x0e.api.Traversal\"1\n\x04\x44ocs\x12\x16\n\x04\x64ocs\x18\x01 \x03(\x0b\x32\x08.api.Doc\x12\x11\n\tseek_next\x18\x02 \x01(\t\"\xa8\x01\n\nConnection\x12\x1d\n\x03ref\x18\x01 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\x12+\n\nattributes\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x10\n\x08\x64irected\x18\x03 \x01(\x08\x12\x1e\n\x04\x66rom\x18\x04 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\x12\x1c\n\x02to\x18\x05 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\"\xbe\x01\n\x15\x43onnectionConstructor\x12(\n\x03ref\x18\x01 \x01(\x0b\x32\x13.api.RefConstructorB\x06\xe2\xdf\x1f\x02 \x01\x12+\n\nattributes\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x10\n\x08\x64irected\x18\x04 \x01(\x08\x12\x1e\n\x04\x66rom\x18\x05 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\x12\x1c\n\x02to\x18\x06 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\"\xa0\x01\n\x13SearchConnectFilter\x12\x1b\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x0b.api.Filter\x12\r\n\x05gtype\x18\x02 \x01(\t\x12+\n\nattributes\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x10\n\x08\x64irected\x18\x04 \x01(\x08\x12\x1e\n\x04\x66rom\x18\x05 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\"\x82\x01\n\x15SearchConnectMeFilter\x12\x1b\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x0b.api.Filter\x12\r\n\x05gtype\x18\x02 \x01(\t\x12+\n\nattributes\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x10\n\x08\x64irected\x18\x04 \x01(\x08\"I\n\x16\x43onnectionConstructors\x12/\n\x0b\x63onnections\x18\x01 \x03(\x0b\x32\x1a.api.ConnectionConstructor\"F\n\x0b\x43onnections\x12$\n\x0b\x63onnections\x18\x01 \x03(\x0b\x32\x0f.api.Connection\x12\x11\n\tseek_next\x18\x02 \x01(\t\"\xe2\x01\n\rConnectFilter\x12!\n\x07\x64oc_ref\x18\x01 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\x12\x1f\n\x05gtype\x18\x02 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x12\n\nexpression\x18\x03 \x01(\t\x12\x15\n\x05limit\x18\x04 \x01(\x04\x42\x06\xe2\xdf\x1f\x02\x10\x00\x12\x43\n\x04sort\x18\x05 \x01(\tB5\xe2\xdf\x1f\x31\n/((^|, )(|ref.gid|ref.gtype|^attributes.(.*)))+$\x12\x0c\n\x04seek\x18\x06 \x01(\t\x12\x0f\n\x07reverse\x18\x07 \x01(\x08\"\xc7\x01\n\x06\x46ilter\x12\x1f\n\x05gtype\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x12\n\nexpression\x18\x02 \x01(\t\x12\x15\n\x05limit\x18\x03 \x01(\x04\x42\x06\xe2\xdf\x1f\x02\x10\x00\x12\x43\n\x04sort\x18\x04 \x01(\tB5\xe2\xdf\x1f\x31\n/((^|, )(|ref.gid|ref.gtype|^attributes.(.*)))+$\x12\x0c\n\x04seek\x18\x05 \x01(\t\x12\x0f\n\x07reverse\x18\x06 \x01(\x08\x12\r\n\x05index\x18\x07 \x01(\t\"\x87\x01\n\tAggFilter\x12#\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x0b.api.FilterB\x06\xe2\xdf\x1f\x02 \x01\x12!\n\taggregate\x18\x02 \x01(\x0e\x32\x0e.api.Aggregate\x12\x32\n\x05\x66ield\x18\x03 \x01(\tB#\xe2\xdf\x1f\x1f\n\x1d((^|, )(|^attributes.(.*)))+$\"\xac\x02\n\x0eTraverseFilter\x12\x1e\n\x04root\x18\x01 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\x12\x16\n\x0e\x64oc_expression\x18\x02 \x01(\t\x12\x1d\n\x15\x63onnection_expression\x18\x03 \x01(\t\x12\x15\n\x05limit\x18\x04 \x01(\x04\x42\x06\xe2\xdf\x1f\x02\x10\x00\x12\x43\n\x04sort\x18\x05 \x01(\tB5\xe2\xdf\x1f\x31\n/((^|, )(|ref.gid|ref.gtype|^attributes.(.*)))+$\x12\x0f\n\x07reverse\x18\x06 \x01(\x08\x12!\n\talgorithm\x18\x07 \x01(\x0e\x32\x0e.api.Algorithm\x12\x19\n\tmax_depth\x18\x08 \x01(\x04\x42\x06\xe2\xdf\x1f\x02\x10\x00\x12\x18\n\x08max_hops\x18\t \x01(\x04\x42\x06\xe2\xdf\x1f\x02\x10\x00\"\x8e\x02\n\x10TraverseMeFilter\x12\x16\n\x0e\x64oc_expression\x18\x01 \x01(\t\x12\x1d\n\x15\x63onnection_expression\x18\x02 \x01(\t\x12\x15\n\x05limit\x18\x03 \x01(\x04\x42\x06\xe2\xdf\x1f\x02\x10\x00\x12\x43\n\x04sort\x18\x04 \x01(\tB5\xe2\xdf\x1f\x31\n/((^|, )(|ref.gid|ref.gtype|^attributes.(.*)))+$\x12\x0f\n\x07reverse\x18\x05 \x01(\x08\x12!\n\talgorithm\x18\x06 \x01(\x0e\x32\x0e.api.Algorithm\x12\x19\n\tmax_depth\x18\x07 \x01(\x04\x42\x06\xe2\xdf\x1f\x02\x10\x00\x12\x18\n\x08max_hops\x18\x08 \x01(\x04\x42\x06\xe2\xdf\x1f\x02\x10\x00\"\x9c\x01\n\x10IndexConstructor\x12\x1e\n\x04name\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x1f\n\x05gtype\x18\x03 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12$\n\nexpression\x18\x04 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x0c\n\x04\x64ocs\x18\x06 \x01(\x08\x12\x13\n\x0b\x63onnections\x18\x07 \x01(\x08\"\xb4\x01\n\nAuthTarget\x12\x1e\n\x04user\x18\x01 \x01(\x0b\x32\x08.api.DocB\x06\xe2\xdf\x1f\x02 \x01\x12\'\n\x06target\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12-\n\x07headers\x18\x03 \x03(\x0b\x32\x1c.api.AuthTarget.HeadersEntry\x1a.\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xa7\x01\n\nAuthorizer\x12\x1e\n\x04name\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12 \n\x06method\x18\x02 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12$\n\nexpression\x18\x03 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x17\n\x0ftarget_requests\x18\x04 \x01(\x08\x12\x18\n\x10target_responses\x18\x05 \x01(\x08\"3\n\x0b\x41uthorizers\x12$\n\x0b\x61uthorizers\x18\x01 \x03(\x0b\x32\x0f.api.Authorizer\"\xa4\x01\n\nConstraint\x12\x1e\n\x04name\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x1f\n\x05gtype\x18\x02 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12$\n\nexpression\x18\x03 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x13\n\x0btarget_docs\x18\x04 \x01(\x08\x12\x1a\n\x12target_connections\x18\x05 \x01(\x08\"3\n\x0b\x43onstraints\x12$\n\x0b\x63onstraints\x18\x01 \x03(\x0b\x32\x0f.api.Constraint\"\x91\x01\n\x05Index\x12\x1e\n\x04name\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x1f\n\x05gtype\x18\x03 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12$\n\nexpression\x18\x04 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x0c\n\x04\x64ocs\x18\x06 \x01(\x08\x12\x13\n\x0b\x63onnections\x18\x07 \x01(\x08\"&\n\x07Indexes\x12\x1b\n\x07indexes\x18\x01 \x03(\x0b\x32\n.api.Index\"\xc4\x01\n\x07Trigger\x12\x1e\n\x04name\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x1f\n\x05gtype\x18\x02 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12$\n\nexpression\x18\x03 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12!\n\x07trigger\x18\x04 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x13\n\x0btarget_docs\x18\x05 \x01(\x08\x12\x1a\n\x12target_connections\x18\x06 \x01(\x08\"*\n\x08Triggers\x12\x1e\n\x08triggers\x18\x01 \x03(\x0b\x32\x0c.api.Trigger\"E\n\x0cStreamFilter\x12!\n\x07\x63hannel\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x12\n\nexpression\x18\x02 \x01(\t\"G\n\x05Graph\x12\x17\n\x04\x64ocs\x18\x01 \x01(\x0b\x32\t.api.Docs\x12%\n\x0b\x63onnections\x18\x02 \x01(\x0b\x32\x10.api.Connections\"\xcf\x03\n\x05\x46lags\x12\x19\n\x11open_id_discovery\x18\x01 \x01(\t\x12\x14\n\x0cstorage_path\x18\x02 \x01(\t\x12\x0f\n\x07metrics\x18\x03 \x01(\x08\x12\x15\n\rallow_headers\x18\x05 \x03(\t\x12\x15\n\rallow_methods\x18\x06 \x03(\t\x12\x15\n\rallow_origins\x18\x07 \x03(\t\x12\x12\n\nroot_users\x18\x08 \x03(\t\x12\x10\n\x08tls_cert\x18\t \x01(\t\x12\x0f\n\x07tls_key\x18\n \x01(\t\x12\x1c\n\x14playground_client_id\x18\x0b \x01(\t\x12 \n\x18playground_client_secret\x18\x0c \x01(\t\x12\x1b\n\x13playground_redirect\x18\r \x01(\t\x12#\n\x1brequire_request_authorizers\x18\x0f \x01(\x08\x12$\n\x1crequire_response_authorizers\x18\x10 \x01(\x08\x12\x11\n\tjoin_raft\x18\x11 \x01(\t\x12\x14\n\x0craft_peer_id\x18\x12 \x01(\t\x12\x13\n\x0blisten_port\x18\x13 \x01(\x03\x12\x13\n\x0braft_secret\x18\x14 \x01(\t\x12\r\n\x05\x64\x65\x62ug\x18\x15 \x01(\x08\"\x18\n\x07\x42oolean\x12\r\n\x05value\x18\x01 \x01(\x08\"\x17\n\x06Number\x12\r\n\x05value\x18\x01 \x01(\x01\"\x83\x01\n\x0c\x45xistsFilter\x12\x1f\n\x05gtype\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12$\n\nexpression\x18\x02 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x0c\n\x04seek\x18\x03 \x01(\t\x12\x0f\n\x07reverse\x18\x04 \x01(\x08\x12\r\n\x05index\x18\x05 \x01(\t\"R\n\x04\x45\x64it\x12\x1d\n\x03ref\x18\x01 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\x12+\n\nattributes\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"V\n\nEditFilter\x12\x1b\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x0b.api.Filter\x12+\n\nattributes\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"\x17\n\x04Pong\x12\x0f\n\x07message\x18\x01 \x01(\t\"c\n\x0fOutboundMessage\x12!\n\x07\x63hannel\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12-\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructB\x06\xe2\xdf\x1f\x02 \x01\"\xd4\x01\n\x07Message\x12!\n\x07\x63hannel\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12-\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructB\x06\xe2\xdf\x1f\x02 \x01\x12\x1e\n\x04user\x18\x03 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\x12\x35\n\ttimestamp\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x06\xe2\xdf\x1f\x02 \x01\x12 \n\x06method\x18\x05 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\"\xc3\x01\n\x06Schema\x12\x18\n\x10\x63onnection_types\x18\x01 \x03(\t\x12\x11\n\tdoc_types\x18\x02 \x03(\t\x12%\n\x0b\x61uthorizers\x18\x03 \x01(\x0b\x32\x10.api.Authorizers\x12%\n\x0b\x63onstraints\x18\x04 \x01(\x0b\x32\x10.api.Constraints\x12\x1d\n\x07indexes\x18\x05 \x01(\x0b\x32\x0c.api.Indexes\x12\x1f\n\x08triggers\x18\x06 \x01(\x0b\x32\r.api.Triggers\" \n\nExprFilter\x12\x12\n\nexpression\x18\x01 \x01(\t\"\xfc\x02\n\x0bRaftCommand\x12\x16\n\x04user\x18\x01 \x01(\x0b\x32\x08.api.Doc\x12\x0e\n\x06method\x18\x02 \x01(\t\x12\x1a\n\x08set_docs\x18\x03 \x03(\x0b\x32\x08.api.Doc\x12(\n\x0fset_connections\x18\x04 \x03(\x0b\x32\x0f.api.Connection\x12\x1a\n\x08\x64\x65l_docs\x18\x05 \x03(\x0b\x32\x08.api.Ref\x12!\n\x0f\x64\x65l_connections\x18\x06 \x03(\x0b\x32\x08.api.Ref\x12!\n\x0bset_indexes\x18\x07 \x01(\x0b\x32\x0c.api.Indexes\x12)\n\x0fset_authorizers\x18\x08 \x01(\x0b\x32\x10.api.Authorizers\x12)\n\x0fset_constraints\x18\t \x01(\x0b\x32\x10.api.Constraints\x12\"\n\x0csend_message\x18\n \x01(\x0b\x32\x0c.api.Message\x12#\n\x0cset_triggers\x18\x0b \x01(\x0b\x32\r.api.Triggers\"%\n\x04Peer\x12\x0f\n\x07node_id\x18\x01 \x01(\t\x12\x0c\n\x04\x61\x64\x64r\x18\x02 \x01(\t\"\xb2\x01\n\tRaftState\x12\x0e\n\x06leader\x18\x01 \x01(\t\x12#\n\nmembership\x18\x02 \x01(\x0e\x32\x0f.api.Membership\x12\x18\n\x05peers\x18\x03 \x03(\x0b\x32\t.api.Peer\x12(\n\x05stats\x18\x04 \x03(\x0b\x32\x19.api.RaftState.StatsEntry\x1a,\n\nStatsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01*\x1d\n\tAlgorithm\x12\x07\n\x03\x42\x46S\x10\x00\x12\x07\n\x03\x44\x46S\x10\x01*D\n\tAggregate\x12\t\n\x05\x43OUNT\x10\x00\x12\x07\n\x03SUM\x10\x01\x12\x07\n\x03\x41VG\x10\x02\x12\x07\n\x03MAX\x10\x03\x12\x07\n\x03MIN\x10\x04\x12\x08\n\x04PROD\x10\x05*P\n\nMembership\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0c\n\x08\x46OLLOWER\x10\x01\x12\r\n\tCANDIDATE\x10\x02\x12\n\n\x06LEADER\x10\x03\x12\x0c\n\x08SHUTDOWN\x10\x04\x32\xa8\x01\n\x0bRaftService\x12+\n\x04Ping\x12\x16.google.protobuf.Empty\x1a\t.api.Pong\"\x00\x12\x32\n\x0bJoinCluster\x12\t.api.Peer\x1a\x16.google.protobuf.Empty\"\x00\x12\x38\n\x0c\x43lusterState\x12\x16.google.protobuf.Empty\x1a\x0e.api.RaftState\"\x00\x32\xdf\x10\n\x0f\x44\x61tabaseService\x12\x32\n\tGetSchema\x12\x16.google.protobuf.Empty\x1a\x0b.api.Schema\"\x00\x12<\n\x0eSetAuthorizers\x12\x10.api.Authorizers\x1a\x16.google.protobuf.Empty\"\x00\x12\x34\n\nSetIndexes\x12\x0c.api.Indexes\x1a\x16.google.protobuf.Empty\"\x00\x12<\n\x0eSetConstraints\x12\x10.api.Constraints\x1a\x16.google.protobuf.Empty\"\x00\x12\x36\n\x0bSetTriggers\x12\r.api.Triggers\x1a\x16.google.protobuf.Empty\"\x00\x12(\n\x02Me\x12\x16.google.protobuf.Empty\x1a\x08.api.Doc\"\x00\x12,\n\tCreateDoc\x12\x13.api.DocConstructor\x1a\x08.api.Doc\"\x00\x12/\n\nCreateDocs\x12\x14.api.DocConstructors\x1a\t.api.Docs\"\x00\x12\x1e\n\x06GetDoc\x12\x08.api.Ref\x1a\x08.api.Doc\"\x00\x12&\n\nSearchDocs\x12\x0b.api.Filter\x1a\t.api.Docs\"\x00\x12\x32\n\x08Traverse\x12\x13.api.TraverseFilter\x1a\x0f.api.Traversals\"\x00\x12\x36\n\nTraverseMe\x12\x15.api.TraverseMeFilter\x1a\x0f.api.Traversals\"\x00\x12 \n\x07\x45\x64itDoc\x12\t.api.Edit\x1a\x08.api.Doc\"\x00\x12(\n\x08\x45\x64itDocs\x12\x0f.api.EditFilter\x1a\t.api.Docs\"\x00\x12,\n\x06\x44\x65lDoc\x12\x08.api.Ref\x1a\x16.google.protobuf.Empty\"\x00\x12\x30\n\x07\x44\x65lDocs\x12\x0b.api.Filter\x1a\x16.google.protobuf.Empty\"\x00\x12.\n\tExistsDoc\x12\x11.api.ExistsFilter\x1a\x0c.api.Boolean\"\x00\x12\x35\n\x10\x45xistsConnection\x12\x11.api.ExistsFilter\x1a\x0c.api.Boolean\"\x00\x12\"\n\x06HasDoc\x12\x08.api.Ref\x1a\x0c.api.Boolean\"\x00\x12)\n\rHasConnection\x12\x08.api.Ref\x1a\x0c.api.Boolean\"\x00\x12\x41\n\x10\x43reateConnection\x12\x1a.api.ConnectionConstructor\x1a\x0f.api.Connection\"\x00\x12\x44\n\x11\x43reateConnections\x12\x1b.api.ConnectionConstructors\x1a\x10.api.Connections\"\x00\x12@\n\x10SearchAndConnect\x12\x18.api.SearchConnectFilter\x1a\x10.api.Connections\"\x00\x12\x44\n\x12SearchAndConnectMe\x12\x1a.api.SearchConnectMeFilter\x1a\x10.api.Connections\"\x00\x12,\n\rGetConnection\x12\x08.api.Ref\x1a\x0f.api.Connection\"\x00\x12\x34\n\x11SearchConnections\x12\x0b.api.Filter\x1a\x10.api.Connections\"\x00\x12.\n\x0e\x45\x64itConnection\x12\t.api.Edit\x1a\x0f.api.Connection\"\x00\x12\x36\n\x0f\x45\x64itConnections\x12\x0f.api.EditFilter\x1a\x10.api.Connections\"\x00\x12\x33\n\rDelConnection\x12\x08.api.Ref\x1a\x16.google.protobuf.Empty\"\x00\x12\x37\n\x0e\x44\x65lConnections\x12\x0b.api.Filter\x1a\x16.google.protobuf.Empty\"\x00\x12\x39\n\x0f\x43onnectionsFrom\x12\x12.api.ConnectFilter\x1a\x10.api.Connections\"\x00\x12\x37\n\rConnectionsTo\x12\x12.api.ConnectFilter\x1a\x10.api.Connections\"\x00\x12.\n\rAggregateDocs\x12\x0e.api.AggFilter\x1a\x0b.api.Number\"\x00\x12\x35\n\x14\x41ggregateConnections\x12\x0e.api.AggFilter\x1a\x0b.api.Number\"\x00\x12;\n\tBroadcast\x12\x14.api.OutboundMessage\x1a\x16.google.protobuf.Empty\"\x00\x12-\n\x06Stream\x12\x11.api.StreamFilter\x1a\x0c.api.Message\"\x00\x30\x01\x12:\n\x13PushDocConstructors\x12\x13.api.DocConstructor\x1a\x08.api.Doc\"\x00(\x01\x30\x01\x12O\n\x1aPushConnectionConstructors\x12\x1a.api.ConnectionConstructor\x1a\x0f.api.Connection\"\x00(\x01\x30\x01\x12\x30\n\x08SeedDocs\x12\x08.api.Doc\x1a\x16.google.protobuf.Empty\"\x00(\x01\x12>\n\x0fSeedConnections\x12\x0f.api.Connection\x1a\x16.google.protobuf.Empty\"\x00(\x01\x42\x07Z\x05\x61pipbb\x06proto3')
+  serialized_pb=_b('\n\rgraphik.proto\x12\x03\x61pi\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x19google/protobuf/any.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x36github.com/mwitkow/go-proto-validators/validator.proto\"E\n\x03Ref\x12\x1f\n\x05gtype\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x1d\n\x03gid\x18\x02 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\">\n\x0eRefConstructor\x12\x1f\n\x05gtype\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x0b\n\x03gid\x18\x02 \x01(\t\"\x1e\n\x04Refs\x12\x16\n\x04refs\x18\x01 \x03(\x0b\x32\x08.api.Ref\"Q\n\x03\x44oc\x12\x1d\n\x03ref\x18\x01 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\x12+\n\nattributes\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"g\n\x0e\x44ocConstructor\x12(\n\x03ref\x18\x01 \x01(\x0b\x32\x13.api.RefConstructorB\x06\xe2\xdf\x1f\x02 \x01\x12+\n\nattributes\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"4\n\x0f\x44ocConstructors\x12!\n\x04\x64ocs\x18\x01 \x03(\x0b\x32\x13.api.DocConstructor\"a\n\tTraversal\x12\x15\n\x03\x64oc\x18\x01 \x01(\x0b\x32\x08.api.Doc\x12 \n\x0etraversal_path\x18\x02 \x03(\x0b\x32\x08.api.Ref\x12\r\n\x05\x64\x65pth\x18\x03 \x01(\x04\x12\x0c\n\x04hops\x18\x04 \x01(\x04\"0\n\nTraversals\x12\"\n\ntraversals\x18\x01 \x03(\x0b\x32\x0e.api.Traversal\"1\n\x04\x44ocs\x12\x16\n\x04\x64ocs\x18\x01 \x03(\x0b\x32\x08.api.Doc\x12\x11\n\tseek_next\x18\x02 \x01(\t\"\xa8\x01\n\nConnection\x12\x1d\n\x03ref\x18\x01 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\x12+\n\nattributes\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x10\n\x08\x64irected\x18\x03 \x01(\x08\x12\x1e\n\x04\x66rom\x18\x04 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\x12\x1c\n\x02to\x18\x05 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\"\xbe\x01\n\x15\x43onnectionConstructor\x12(\n\x03ref\x18\x01 \x01(\x0b\x32\x13.api.RefConstructorB\x06\xe2\xdf\x1f\x02 \x01\x12+\n\nattributes\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x10\n\x08\x64irected\x18\x04 \x01(\x08\x12\x1e\n\x04\x66rom\x18\x05 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\x12\x1c\n\x02to\x18\x06 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\"\xa0\x01\n\x13SearchConnectFilter\x12\x1b\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x0b.api.Filter\x12\r\n\x05gtype\x18\x02 \x01(\t\x12+\n\nattributes\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x10\n\x08\x64irected\x18\x04 \x01(\x08\x12\x1e\n\x04\x66rom\x18\x05 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\"\x82\x01\n\x15SearchConnectMeFilter\x12\x1b\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x0b.api.Filter\x12\r\n\x05gtype\x18\x02 \x01(\t\x12+\n\nattributes\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x10\n\x08\x64irected\x18\x04 \x01(\x08\"I\n\x16\x43onnectionConstructors\x12/\n\x0b\x63onnections\x18\x01 \x03(\x0b\x32\x1a.api.ConnectionConstructor\"F\n\x0b\x43onnections\x12$\n\x0b\x63onnections\x18\x01 \x03(\x0b\x32\x0f.api.Connection\x12\x11\n\tseek_next\x18\x02 \x01(\t\"\xe2\x01\n\rConnectFilter\x12!\n\x07\x64oc_ref\x18\x01 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\x12\x1f\n\x05gtype\x18\x02 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x12\n\nexpression\x18\x03 \x01(\t\x12\x15\n\x05limit\x18\x04 \x01(\x04\x42\x06\xe2\xdf\x1f\x02\x10\x00\x12\x43\n\x04sort\x18\x05 \x01(\tB5\xe2\xdf\x1f\x31\n/((^|, )(|ref.gid|ref.gtype|^attributes.(.*)))+$\x12\x0c\n\x04seek\x18\x06 \x01(\t\x12\x0f\n\x07reverse\x18\x07 \x01(\x08\"\xc7\x01\n\x06\x46ilter\x12\x1f\n\x05gtype\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x12\n\nexpression\x18\x02 \x01(\t\x12\x15\n\x05limit\x18\x03 \x01(\x04\x42\x06\xe2\xdf\x1f\x02\x10\x00\x12\x43\n\x04sort\x18\x04 \x01(\tB5\xe2\xdf\x1f\x31\n/((^|, )(|ref.gid|ref.gtype|^attributes.(.*)))+$\x12\x0c\n\x04seek\x18\x05 \x01(\t\x12\x0f\n\x07reverse\x18\x06 \x01(\x08\x12\r\n\x05index\x18\x07 \x01(\t\"\x87\x01\n\tAggFilter\x12#\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x0b.api.FilterB\x06\xe2\xdf\x1f\x02 \x01\x12!\n\taggregate\x18\x02 \x01(\x0e\x32\x0e.api.Aggregate\x12\x32\n\x05\x66ield\x18\x03 \x01(\tB#\xe2\xdf\x1f\x1f\n\x1d((^|, )(|^attributes.(.*)))+$\"\xac\x02\n\x0eTraverseFilter\x12\x1e\n\x04root\x18\x01 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\x12\x16\n\x0e\x64oc_expression\x18\x02 \x01(\t\x12\x1d\n\x15\x63onnection_expression\x18\x03 \x01(\t\x12\x15\n\x05limit\x18\x04 \x01(\x04\x42\x06\xe2\xdf\x1f\x02\x10\x00\x12\x43\n\x04sort\x18\x05 \x01(\tB5\xe2\xdf\x1f\x31\n/((^|, )(|ref.gid|ref.gtype|^attributes.(.*)))+$\x12\x0f\n\x07reverse\x18\x06 \x01(\x08\x12!\n\talgorithm\x18\x07 \x01(\x0e\x32\x0e.api.Algorithm\x12\x19\n\tmax_depth\x18\x08 \x01(\x04\x42\x06\xe2\xdf\x1f\x02\x10\x00\x12\x18\n\x08max_hops\x18\t \x01(\x04\x42\x06\xe2\xdf\x1f\x02\x10\x00\"\x8e\x02\n\x10TraverseMeFilter\x12\x16\n\x0e\x64oc_expression\x18\x01 \x01(\t\x12\x1d\n\x15\x63onnection_expression\x18\x02 \x01(\t\x12\x15\n\x05limit\x18\x03 \x01(\x04\x42\x06\xe2\xdf\x1f\x02\x10\x00\x12\x43\n\x04sort\x18\x04 \x01(\tB5\xe2\xdf\x1f\x31\n/((^|, )(|ref.gid|ref.gtype|^attributes.(.*)))+$\x12\x0f\n\x07reverse\x18\x05 \x01(\x08\x12!\n\talgorithm\x18\x06 \x01(\x0e\x32\x0e.api.Algorithm\x12\x19\n\tmax_depth\x18\x07 \x01(\x04\x42\x06\xe2\xdf\x1f\x02\x10\x00\x12\x18\n\x08max_hops\x18\x08 \x01(\x04\x42\x06\xe2\xdf\x1f\x02\x10\x00\"\x9c\x01\n\x10IndexConstructor\x12\x1e\n\x04name\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x1f\n\x05gtype\x18\x03 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12$\n\nexpression\x18\x04 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x0c\n\x04\x64ocs\x18\x06 \x01(\x08\x12\x13\n\x0b\x63onnections\x18\x07 \x01(\x08\"\xb4\x01\n\nAuthTarget\x12\x1e\n\x04user\x18\x01 \x01(\x0b\x32\x08.api.DocB\x06\xe2\xdf\x1f\x02 \x01\x12\'\n\x06target\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12-\n\x07headers\x18\x03 \x03(\x0b\x32\x1c.api.AuthTarget.HeadersEntry\x1a.\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xa7\x01\n\nAuthorizer\x12\x1e\n\x04name\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12 \n\x06method\x18\x02 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12$\n\nexpression\x18\x03 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x17\n\x0ftarget_requests\x18\x04 \x01(\x08\x12\x18\n\x10target_responses\x18\x05 \x01(\x08\"3\n\x0b\x41uthorizers\x12$\n\x0b\x61uthorizers\x18\x01 \x03(\x0b\x32\x0f.api.Authorizer\"\xa4\x01\n\nConstraint\x12\x1e\n\x04name\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x1f\n\x05gtype\x18\x02 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12$\n\nexpression\x18\x03 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x13\n\x0btarget_docs\x18\x04 \x01(\x08\x12\x1a\n\x12target_connections\x18\x05 \x01(\x08\"3\n\x0b\x43onstraints\x12$\n\x0b\x63onstraints\x18\x01 \x03(\x0b\x32\x0f.api.Constraint\"\x91\x01\n\x05Index\x12\x1e\n\x04name\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x1f\n\x05gtype\x18\x03 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12$\n\nexpression\x18\x04 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x0c\n\x04\x64ocs\x18\x06 \x01(\x08\x12\x13\n\x0b\x63onnections\x18\x07 \x01(\x08\"&\n\x07Indexes\x12\x1b\n\x07indexes\x18\x01 \x03(\x0b\x32\n.api.Index\"\xc4\x01\n\x07Trigger\x12\x1e\n\x04name\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x1f\n\x05gtype\x18\x02 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12$\n\nexpression\x18\x03 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12!\n\x07trigger\x18\x04 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x13\n\x0btarget_docs\x18\x05 \x01(\x08\x12\x1a\n\x12target_connections\x18\x06 \x01(\x08\"*\n\x08Triggers\x12\x1e\n\x08triggers\x18\x01 \x03(\x0b\x32\x0c.api.Trigger\"E\n\x0cStreamFilter\x12!\n\x07\x63hannel\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x12\n\nexpression\x18\x02 \x01(\t\"G\n\x05Graph\x12\x17\n\x04\x64ocs\x18\x01 \x01(\x0b\x32\t.api.Docs\x12%\n\x0b\x63onnections\x18\x02 \x01(\x0b\x32\x10.api.Connections\"\xcf\x03\n\x05\x46lags\x12\x19\n\x11open_id_discovery\x18\x01 \x01(\t\x12\x14\n\x0cstorage_path\x18\x02 \x01(\t\x12\x0f\n\x07metrics\x18\x03 \x01(\x08\x12\x15\n\rallow_headers\x18\x05 \x03(\t\x12\x15\n\rallow_methods\x18\x06 \x03(\t\x12\x15\n\rallow_origins\x18\x07 \x03(\t\x12\x12\n\nroot_users\x18\x08 \x03(\t\x12\x10\n\x08tls_cert\x18\t \x01(\t\x12\x0f\n\x07tls_key\x18\n \x01(\t\x12\x1c\n\x14playground_client_id\x18\x0b \x01(\t\x12 \n\x18playground_client_secret\x18\x0c \x01(\t\x12\x1b\n\x13playground_redirect\x18\r \x01(\t\x12#\n\x1brequire_request_authorizers\x18\x0f \x01(\x08\x12$\n\x1crequire_response_authorizers\x18\x10 \x01(\x08\x12\x11\n\tjoin_raft\x18\x11 \x01(\t\x12\x14\n\x0craft_peer_id\x18\x12 \x01(\t\x12\x13\n\x0blisten_port\x18\x13 \x01(\x03\x12\x13\n\x0braft_secret\x18\x14 \x01(\t\x12\r\n\x05\x64\x65\x62ug\x18\x15 \x01(\x08\"\x18\n\x07\x42oolean\x12\r\n\x05value\x18\x01 \x01(\x08\"\x17\n\x06Number\x12\r\n\x05value\x18\x01 \x01(\x01\"\x83\x01\n\x0c\x45xistsFilter\x12\x1f\n\x05gtype\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12$\n\nexpression\x18\x02 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12\x0c\n\x04seek\x18\x03 \x01(\t\x12\x0f\n\x07reverse\x18\x04 \x01(\x08\x12\r\n\x05index\x18\x05 \x01(\t\"R\n\x04\x45\x64it\x12\x1d\n\x03ref\x18\x01 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\x12+\n\nattributes\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"V\n\nEditFilter\x12\x1b\n\x06\x66ilter\x18\x01 \x01(\x0b\x32\x0b.api.Filter\x12+\n\nattributes\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"\x17\n\x04Pong\x12\x0f\n\x07message\x18\x01 \x01(\t\"c\n\x0fOutboundMessage\x12!\n\x07\x63hannel\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12-\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructB\x06\xe2\xdf\x1f\x02 \x01\"\xd4\x01\n\x07Message\x12!\n\x07\x63hannel\x18\x01 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\x12-\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructB\x06\xe2\xdf\x1f\x02 \x01\x12\x1e\n\x04user\x18\x03 \x01(\x0b\x32\x08.api.RefB\x06\xe2\xdf\x1f\x02 \x01\x12\x35\n\ttimestamp\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x06\xe2\xdf\x1f\x02 \x01\x12 \n\x06method\x18\x05 \x01(\tB\x10\xe2\xdf\x1f\x0c\n\n^.{1,225}$\"\xc3\x01\n\x06Schema\x12\x18\n\x10\x63onnection_types\x18\x01 \x03(\t\x12\x11\n\tdoc_types\x18\x02 \x03(\t\x12%\n\x0b\x61uthorizers\x18\x03 \x01(\x0b\x32\x10.api.Authorizers\x12%\n\x0b\x63onstraints\x18\x04 \x01(\x0b\x32\x10.api.Constraints\x12\x1d\n\x07indexes\x18\x05 \x01(\x0b\x32\x0c.api.Indexes\x12\x1f\n\x08triggers\x18\x06 \x01(\x0b\x32\r.api.Triggers\" \n\nExprFilter\x12\x12\n\nexpression\x18\x01 \x01(\t\"\xfc\x02\n\x0bRaftCommand\x12\x16\n\x04user\x18\x01 \x01(\x0b\x32\x08.api.Doc\x12\x0e\n\x06method\x18\x02 \x01(\t\x12\x1a\n\x08set_docs\x18\x03 \x03(\x0b\x32\x08.api.Doc\x12(\n\x0fset_connections\x18\x04 \x03(\x0b\x32\x0f.api.Connection\x12\x1a\n\x08\x64\x65l_docs\x18\x05 \x03(\x0b\x32\x08.api.Ref\x12!\n\x0f\x64\x65l_connections\x18\x06 \x03(\x0b\x32\x08.api.Ref\x12!\n\x0bset_indexes\x18\x07 \x01(\x0b\x32\x0c.api.Indexes\x12)\n\x0fset_authorizers\x18\x08 \x01(\x0b\x32\x10.api.Authorizers\x12)\n\x0fset_constraints\x18\t \x01(\x0b\x32\x10.api.Constraints\x12\"\n\x0csend_message\x18\n \x01(\x0b\x32\x0c.api.Message\x12#\n\x0cset_triggers\x18\x0b \x01(\x0b\x32\r.api.Triggers\"%\n\x04Peer\x12\x0f\n\x07node_id\x18\x01 \x01(\t\x12\x0c\n\x04\x61\x64\x64r\x18\x02 \x01(\t\"\xb2\x01\n\tRaftState\x12\x0e\n\x06leader\x18\x01 \x01(\t\x12#\n\nmembership\x18\x02 \x01(\x0e\x32\x0f.api.Membership\x12\x18\n\x05peers\x18\x03 \x03(\x0b\x32\t.api.Peer\x12(\n\x05stats\x18\x04 \x03(\x0b\x32\x19.api.RaftState.StatsEntry\x1a,\n\nStatsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01*\x1d\n\tAlgorithm\x12\x07\n\x03\x42\x46S\x10\x00\x12\x07\n\x03\x44\x46S\x10\x01*D\n\tAggregate\x12\t\n\x05\x43OUNT\x10\x00\x12\x07\n\x03SUM\x10\x01\x12\x07\n\x03\x41VG\x10\x02\x12\x07\n\x03MAX\x10\x03\x12\x07\n\x03MIN\x10\x04\x12\x08\n\x04PROD\x10\x05*P\n\nMembership\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0c\n\x08\x46OLLOWER\x10\x01\x12\r\n\tCANDIDATE\x10\x02\x12\n\n\x06LEADER\x10\x03\x12\x0c\n\x08SHUTDOWN\x10\x04\x32\xa8\x01\n\x0bRaftService\x12+\n\x04Ping\x12\x16.google.protobuf.Empty\x1a\t.api.Pong\"\x00\x12\x32\n\x0bJoinCluster\x12\t.api.Peer\x1a\x16.google.protobuf.Empty\"\x00\x12\x38\n\x0c\x43lusterState\x12\x16.google.protobuf.Empty\x1a\x0e.api.RaftState\"\x00\x32\x8f\x12\n\x0f\x44\x61tabaseService\x12\x32\n\tGetSchema\x12\x16.google.protobuf.Empty\x1a\x0b.api.Schema\"\x00\x12<\n\x0eSetAuthorizers\x12\x10.api.Authorizers\x1a\x16.google.protobuf.Empty\"\x00\x12\x34\n\nSetIndexes\x12\x0c.api.Indexes\x1a\x16.google.protobuf.Empty\"\x00\x12<\n\x0eSetConstraints\x12\x10.api.Constraints\x1a\x16.google.protobuf.Empty\"\x00\x12\x36\n\x0bSetTriggers\x12\r.api.Triggers\x1a\x16.google.protobuf.Empty\"\x00\x12(\n\x02Me\x12\x16.google.protobuf.Empty\x1a\x08.api.Doc\"\x00\x12,\n\tCreateDoc\x12\x13.api.DocConstructor\x1a\x08.api.Doc\"\x00\x12/\n\nCreateDocs\x12\x14.api.DocConstructors\x1a\t.api.Docs\"\x00\x12\x1e\n\x06PutDoc\x12\x08.api.Doc\x1a\x08.api.Doc\"\x00\x12!\n\x07PutDocs\x12\t.api.Docs\x1a\t.api.Docs\"\x00\x12\x1e\n\x06GetDoc\x12\x08.api.Ref\x1a\x08.api.Doc\"\x00\x12&\n\nSearchDocs\x12\x0b.api.Filter\x1a\t.api.Docs\"\x00\x12\x32\n\x08Traverse\x12\x13.api.TraverseFilter\x1a\x0f.api.Traversals\"\x00\x12\x36\n\nTraverseMe\x12\x15.api.TraverseMeFilter\x1a\x0f.api.Traversals\"\x00\x12 \n\x07\x45\x64itDoc\x12\t.api.Edit\x1a\x08.api.Doc\"\x00\x12(\n\x08\x45\x64itDocs\x12\x0f.api.EditFilter\x1a\t.api.Docs\"\x00\x12,\n\x06\x44\x65lDoc\x12\x08.api.Ref\x1a\x16.google.protobuf.Empty\"\x00\x12\x30\n\x07\x44\x65lDocs\x12\x0b.api.Filter\x1a\x16.google.protobuf.Empty\"\x00\x12.\n\tExistsDoc\x12\x11.api.ExistsFilter\x1a\x0c.api.Boolean\"\x00\x12\x35\n\x10\x45xistsConnection\x12\x11.api.ExistsFilter\x1a\x0c.api.Boolean\"\x00\x12\"\n\x06HasDoc\x12\x08.api.Ref\x1a\x0c.api.Boolean\"\x00\x12)\n\rHasConnection\x12\x08.api.Ref\x1a\x0c.api.Boolean\"\x00\x12\x41\n\x10\x43reateConnection\x12\x1a.api.ConnectionConstructor\x1a\x0f.api.Connection\"\x00\x12\x44\n\x11\x43reateConnections\x12\x1b.api.ConnectionConstructors\x1a\x10.api.Connections\"\x00\x12\x33\n\rPutConnection\x12\x0f.api.Connection\x1a\x0f.api.Connection\"\x00\x12\x36\n\x0ePutConnections\x12\x10.api.Connections\x1a\x10.api.Connections\"\x00\x12@\n\x10SearchAndConnect\x12\x18.api.SearchConnectFilter\x1a\x10.api.Connections\"\x00\x12\x44\n\x12SearchAndConnectMe\x12\x1a.api.SearchConnectMeFilter\x1a\x10.api.Connections\"\x00\x12,\n\rGetConnection\x12\x08.api.Ref\x1a\x0f.api.Connection\"\x00\x12\x34\n\x11SearchConnections\x12\x0b.api.Filter\x1a\x10.api.Connections\"\x00\x12.\n\x0e\x45\x64itConnection\x12\t.api.Edit\x1a\x0f.api.Connection\"\x00\x12\x36\n\x0f\x45\x64itConnections\x12\x0f.api.EditFilter\x1a\x10.api.Connections\"\x00\x12\x33\n\rDelConnection\x12\x08.api.Ref\x1a\x16.google.protobuf.Empty\"\x00\x12\x37\n\x0e\x44\x65lConnections\x12\x0b.api.Filter\x1a\x16.google.protobuf.Empty\"\x00\x12\x39\n\x0f\x43onnectionsFrom\x12\x12.api.ConnectFilter\x1a\x10.api.Connections\"\x00\x12\x37\n\rConnectionsTo\x12\x12.api.ConnectFilter\x1a\x10.api.Connections\"\x00\x12.\n\rAggregateDocs\x12\x0e.api.AggFilter\x1a\x0b.api.Number\"\x00\x12\x35\n\x14\x41ggregateConnections\x12\x0e.api.AggFilter\x1a\x0b.api.Number\"\x00\x12;\n\tBroadcast\x12\x14.api.OutboundMessage\x1a\x16.google.protobuf.Empty\"\x00\x12-\n\x06Stream\x12\x11.api.StreamFilter\x1a\x0c.api.Message\"\x00\x30\x01\x12:\n\x13PushDocConstructors\x12\x13.api.DocConstructor\x1a\x08.api.Doc\"\x00(\x01\x30\x01\x12O\n\x1aPushConnectionConstructors\x12\x1a.api.ConnectionConstructor\x1a\x0f.api.Connection\"\x00(\x01\x30\x01\x12\x30\n\x08SeedDocs\x12\x08.api.Doc\x1a\x16.google.protobuf.Empty\"\x00(\x01\x12>\n\x0fSeedConnections\x12\x0f.api.Connection\x1a\x16.google.protobuf.Empty\"\x00(\x01\x42\x07Z\x05\x61pipbb\x06proto3')
   ,
   dependencies=[google_dot_protobuf_dot_struct__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,google_dot_protobuf_dot_any__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,github_dot_com_dot_mwitkow_dot_go__proto__validators_dot_validator__pb2.DESCRIPTOR,])
 
@@ -3091,7 +3091,7 @@
   index=1,
   serialized_options=None,
   serialized_start=6472,
-  serialized_end=8615,
+  serialized_end=8791,
   methods=[
   _descriptor.MethodDescriptor(
     name='GetSchema',
@@ -3165,10 +3165,28 @@
     output_type=_DOCS,
     serialized_options=None,
   ),
+  _descriptor.MethodDescriptor(
+    name='PutDoc',
+    full_name='api.DatabaseService.PutDoc',
+    index=8,
+    containing_service=None,
+    input_type=_DOC,
+    output_type=_DOC,
+    serialized_options=None,
+  ),
+  _descriptor.MethodDescriptor(
+    name='PutDocs',
+    full_name='api.DatabaseService.PutDocs',
+    index=9,
+    containing_service=None,
+    input_type=_DOCS,
+    output_type=_DOCS,
+    serialized_options=None,
+  ),
   _descriptor.MethodDescriptor(
     name='GetDoc',
     full_name='api.DatabaseService.GetDoc',
-    index=8,
+    index=10,
     containing_service=None,
     input_type=_REF,
     output_type=_DOC,
@@ -3177,7 +3195,7 @@
   _descriptor.MethodDescriptor(
     name='SearchDocs',
     full_name='api.DatabaseService.SearchDocs',
-    index=9,
+    index=11,
     containing_service=None,
     input_type=_FILTER,
     output_type=_DOCS,
@@ -3186,7 +3204,7 @@
   _descriptor.MethodDescriptor(
     name='Traverse',
     full_name='api.DatabaseService.Traverse',
-    index=10,
+    index=12,
     containing_service=None,
     input_type=_TRAVERSEFILTER,
     output_type=_TRAVERSALS,
@@ -3195,7 +3213,7 @@
   _descriptor.MethodDescriptor(
     name='TraverseMe',
     full_name='api.DatabaseService.TraverseMe',
-    index=11,
+    index=13,
     containing_service=None,
     input_type=_TRAVERSEMEFILTER,
     output_type=_TRAVERSALS,
@@ -3204,7 +3222,7 @@
   _descriptor.MethodDescriptor(
     name='EditDoc',
     full_name='api.DatabaseService.EditDoc',
-    index=12,
+    index=14,
     containing_service=None,
     input_type=_EDIT,
     output_type=_DOC,
@@ -3213,7 +3231,7 @@
   _descriptor.MethodDescriptor(
     name='EditDocs',
     full_name='api.DatabaseService.EditDocs',
-    index=13,
+    index=15,
     containing_service=None,
     input_type=_EDITFILTER,
     output_type=_DOCS,
@@ -3222,7 +3240,7 @@
   _descriptor.MethodDescriptor(
     name='DelDoc',
     full_name='api.DatabaseService.DelDoc',
-    index=14,
+    index=16,
     containing_service=None,
     input_type=_REF,
     output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
@@ -3231,7 +3249,7 @@
   _descriptor.MethodDescriptor(
     name='DelDocs',
     full_name='api.DatabaseService.DelDocs',
-    index=15,
+    index=17,
     containing_service=None,
     input_type=_FILTER,
     output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
@@ -3240,7 +3258,7 @@
   _descriptor.MethodDescriptor(
     name='ExistsDoc',
     full_name='api.DatabaseService.ExistsDoc',
-    index=16,
+    index=18,
     containing_service=None,
     input_type=_EXISTSFILTER,
     output_type=_BOOLEAN,
@@ -3249,7 +3267,7 @@
   _descriptor.MethodDescriptor(
     name='ExistsConnection',
     full_name='api.DatabaseService.ExistsConnection',
-    index=17,
+    index=19,
     containing_service=None,
     input_type=_EXISTSFILTER,
     output_type=_BOOLEAN,
@@ -3258,7 +3276,7 @@
   _descriptor.MethodDescriptor(
     name='HasDoc',
     full_name='api.DatabaseService.HasDoc',
-    index=18,
+    index=20,
     containing_service=None,
     input_type=_REF,
     output_type=_BOOLEAN,
@@ -3267,7 +3285,7 @@
   _descriptor.MethodDescriptor(
     name='HasConnection',
     full_name='api.DatabaseService.HasConnection',
-    index=19,
+    index=21,
     containing_service=None,
     input_type=_REF,
     output_type=_BOOLEAN,
@@ -3276,7 +3294,7 @@
   _descriptor.MethodDescriptor(
     name='CreateConnection',
     full_name='api.DatabaseService.CreateConnection',
-    index=20,
+    index=22,
     containing_service=None,
     input_type=_CONNECTIONCONSTRUCTOR,
     output_type=_CONNECTION,
@@ -3285,16 +3303,34 @@
   _descriptor.MethodDescriptor(
     name='CreateConnections',
     full_name='api.DatabaseService.CreateConnections',
-    index=21,
+    index=23,
     containing_service=None,
     input_type=_CONNECTIONCONSTRUCTORS,
     output_type=_CONNECTIONS,
     serialized_options=None,
   ),
+  _descriptor.MethodDescriptor(
+    name='PutConnection',
+    full_name='api.DatabaseService.PutConnection',
+    index=24,
+    containing_service=None,
+    input_type=_CONNECTION,
+    output_type=_CONNECTION,
+    serialized_options=None,
+  ),
+  _descriptor.MethodDescriptor(
+    name='PutConnections',
+    full_name='api.DatabaseService.PutConnections',
+    index=25,
+    containing_service=None,
+    input_type=_CONNECTIONS,
+    output_type=_CONNECTIONS,
+    serialized_options=None,
+  ),
   _descriptor.MethodDescriptor(
     name='SearchAndConnect',
     full_name='api.DatabaseService.SearchAndConnect',
-    index=22,
+    index=26,
     containing_service=None,
     input_type=_SEARCHCONNECTFILTER,
     output_type=_CONNECTIONS,
@@ -3303,7 +3339,7 @@
   _descriptor.MethodDescriptor(
     name='SearchAndConnectMe',
     full_name='api.DatabaseService.SearchAndConnectMe',
-    index=23,
+    index=27,
     containing_service=None,
     input_type=_SEARCHCONNECTMEFILTER,
     output_type=_CONNECTIONS,
@@ -3312,7 +3348,7 @@
   _descriptor.MethodDescriptor(
     name='GetConnection',
     full_name='api.DatabaseService.GetConnection',
-    index=24,
+    index=28,
     containing_service=None,
     input_type=_REF,
     output_type=_CONNECTION,
@@ -3321,7 +3357,7 @@
   _descriptor.MethodDescriptor(
     name='SearchConnections',
     full_name='api.DatabaseService.SearchConnections',
-    index=25,
+    index=29,
     containing_service=None,
     input_type=_FILTER,
     output_type=_CONNECTIONS,
@@ -3330,7 +3366,7 @@
   _descriptor.MethodDescriptor(
     name='EditConnection',
     full_name='api.DatabaseService.EditConnection',
-    index=26,
+    index=30,
     containing_service=None,
     input_type=_EDIT,
     output_type=_CONNECTION,
@@ -3339,7 +3375,7 @@
   _descriptor.MethodDescriptor(
     name='EditConnections',
     full_name='api.DatabaseService.EditConnections',
-    index=27,
+    index=31,
     containing_service=None,
     input_type=_EDITFILTER,
     output_type=_CONNECTIONS,
@@ -3348,7 +3384,7 @@
   _descriptor.MethodDescriptor(
     name='DelConnection',
     full_name='api.DatabaseService.DelConnection',
-    index=28,
+    index=32,
     containing_service=None,
     input_type=_REF,
     output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
@@ -3357,7 +3393,7 @@
   _descriptor.MethodDescriptor(
     name='DelConnections',
     full_name='api.DatabaseService.DelConnections',
-    index=29,
+    index=33,
     containing_service=None,
     input_type=_FILTER,
     output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
@@ -3366,7 +3402,7 @@
   _descriptor.MethodDescriptor(
     name='ConnectionsFrom',
     full_name='api.DatabaseService.ConnectionsFrom',
-    index=30,
+    index=34,
     containing_service=None,
     input_type=_CONNECTFILTER,
     output_type=_CONNECTIONS,
@@ -3375,7 +3411,7 @@
   _descriptor.MethodDescriptor(
     name='ConnectionsTo',
     full_name='api.DatabaseService.ConnectionsTo',
-    index=31,
+    index=35,
     containing_service=None,
     input_type=_CONNECTFILTER,
     output_type=_CONNECTIONS,
@@ -3384,7 +3420,7 @@
   _descriptor.MethodDescriptor(
     name='AggregateDocs',
     full_name='api.DatabaseService.AggregateDocs',
-    index=32,
+    index=36,
     containing_service=None,
     input_type=_AGGFILTER,
     output_type=_NUMBER,
@@ -3393,7 +3429,7 @@
   _descriptor.MethodDescriptor(
     name='AggregateConnections',
     full_name='api.DatabaseService.AggregateConnections',
-    index=33,
+    index=37,
     containing_service=None,
     input_type=_AGGFILTER,
     output_type=_NUMBER,
@@ -3402,7 +3438,7 @@
   _descriptor.MethodDescriptor(
     name='Broadcast',
     full_name='api.DatabaseService.Broadcast',
-    index=34,
+    index=38,
     containing_service=None,
     input_type=_OUTBOUNDMESSAGE,
     output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
@@ -3411,7 +3447,7 @@
   _descriptor.MethodDescriptor(
     name='Stream',
     full_name='api.DatabaseService.Stream',
-    index=35,
+    index=39,
     containing_service=None,
     input_type=_STREAMFILTER,
     output_type=_MESSAGE,
@@ -3420,7 +3456,7 @@
   _descriptor.MethodDescriptor(
     name='PushDocConstructors',
     full_name='api.DatabaseService.PushDocConstructors',
-    index=36,
+    index=40,
     containing_service=None,
     input_type=_DOCCONSTRUCTOR,
     output_type=_DOC,
@@ -3429,7 +3465,7 @@
   _descriptor.MethodDescriptor(
     name='PushConnectionConstructors',
     full_name='api.DatabaseService.PushConnectionConstructors',
-    index=37,
+    index=41,
     containing_service=None,
     input_type=_CONNECTIONCONSTRUCTOR,
     output_type=_CONNECTION,
@@ -3438,7 +3474,7 @@
   _descriptor.MethodDescriptor(
     name='SeedDocs',
     full_name='api.DatabaseService.SeedDocs',
-    index=38,
+    index=42,
     containing_service=None,
     input_type=_DOC,
     output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
@@ -3447,7 +3483,7 @@
   _descriptor.MethodDescriptor(
     name='SeedConnections',
     full_name='api.DatabaseService.SeedConnections',
-    index=39,
+    index=43,
     containing_service=None,
     input_type=_CONNECTION,
     output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
diff --git a/gql/schema.resolvers.go b/gql/schema.resolvers.go
index 05a0c56..0ab70e3 100644
--- a/gql/schema.resolvers.go
+++ b/gql/schema.resolvers.go
@@ -44,6 +44,51 @@ func (r *mutationResolver) CreateDocs(ctx context.Context, input model.DocConstr
 	return gqlDocs(docs), nil
 }
 
+func (r *mutationResolver) PutDoc(ctx context.Context, input *model.PutDoc) (*model.Doc, error) {
+	res, err := r.client.PutDoc(ctx, &apipb.Doc{
+		Ref: &apipb.Ref{
+			Gtype: input.Ref.Gtype,
+			Gid:   input.Ref.Gid,
+		},
+		Attributes: apipb.NewStruct(input.Attributes),
+	})
+	if err != nil {
+		return nil, &gqlerror.Error{
+			Message: err.Error(),
+			Path:    graphql.GetPath(ctx),
+			Extensions: map[string]interface{}{
+				"code": status.Code(err).String(),
+			},
+		}
+	}
+	return gqlDoc(res), nil
+}
+
+func (r *mutationResolver) PutDocs(ctx context.Context, input *model.PutDocs) (*model.Docs, error) {
+	var docs = &apipb.Docs{}
+	var err error
+	for _, d := range input.Docs {
+		docs.Docs = append(docs.Docs, &apipb.Doc{
+			Ref: &apipb.Ref{
+				Gtype: d.Ref.Gtype,
+				Gid:   d.Ref.Gid,
+			},
+			Attributes: apipb.NewStruct(d.Attributes),
+		})
+	}
+	docs, err = r.client.PutDocs(ctx, docs)
+	if err != nil {
+		return nil, &gqlerror.Error{
+			Message: err.Error(),
+			Path:    graphql.GetPath(ctx),
+			Extensions: map[string]interface{}{
+				"code": status.Code(err).String(),
+			},
+		}
+	}
+	return gqlDocs(docs), nil
+}
+
 func (r *mutationResolver) EditDoc(ctx context.Context, input model.Edit) (*model.Doc, error) {
 	res, err := r.client.EditDoc(ctx, protoEdit(input))
 	if err != nil {
@@ -128,6 +173,69 @@ func (r *mutationResolver) CreateConnections(ctx context.Context, input model.Co
 	return gqlConnections(connections), nil
 }
 
+func (r *mutationResolver) PutConnection(ctx context.Context, input *model.PutConnection) (*model.Connection, error) {
+	res, err := r.client.PutConnection(ctx, protoConnection(&model.Connection{
+		Ref: &model.Ref{
+			Gtype: input.Ref.Gtype,
+			Gid:   input.Ref.Gid,
+		},
+		Attributes: input.Attributes,
+		Directed:   input.Directed,
+		From: &model.Ref{
+			Gtype: input.From.Gtype,
+			Gid:   input.From.Gid,
+		},
+		To: &model.Ref{
+			Gtype: input.To.Gtype,
+			Gid:   input.To.Gid,
+		},
+	}))
+	if err != nil {
+		return nil, &gqlerror.Error{
+			Message: err.Error(),
+			Path:    graphql.GetPath(ctx),
+			Extensions: map[string]interface{}{
+				"code": status.Code(err).String(),
+			},
+		}
+	}
+	return gqlConnection(res), nil
+}
+
+func (r *mutationResolver) PutConnections(ctx context.Context, input *model.PutConnections) (*model.Connections, error) {
+	var connections = &apipb.Connections{}
+	var err error
+	for _, d := range input.Connections {
+		connections.Connections = append(connections.Connections, &apipb.Connection{
+			Ref: &apipb.Ref{
+				Gtype: d.Ref.Gtype,
+				Gid:   d.Ref.Gid,
+			},
+			Attributes: apipb.NewStruct(d.Attributes),
+			Directed:   d.Directed,
+			From: &apipb.Ref{
+				Gtype: d.From.Gtype,
+				Gid:   d.From.Gid,
+			},
+			To: &apipb.Ref{
+				Gtype: d.To.Gtype,
+				Gid:   d.To.Gid,
+			},
+		})
+	}
+	connections, err = r.client.PutConnections(ctx, connections)
+	if err != nil {
+		return nil, &gqlerror.Error{
+			Message: err.Error(),
+			Path:    graphql.GetPath(ctx),
+			Extensions: map[string]interface{}{
+				"code": status.Code(err).String(),
+			},
+		}
+	}
+	return gqlConnections(connections), nil
+}
+
 func (r *mutationResolver) EditConnection(ctx context.Context, input model.Edit) (*model.Connection, error) {
 	res, err := r.client.EditConnection(ctx, protoEdit(input))
 	if err != nil {
diff --git a/graphik-client-go/example_test.go b/graphik-client-go/example_test.go
index 00bcf79..a8fd1c2 100644
--- a/graphik-client-go/example_test.go
+++ b/graphik-client-go/example_test.go
@@ -238,6 +238,30 @@ func ExampleClient_SearchDocs() {
 	// Output: Charlie
 }
 
+
+func ExampleClient_PutDoc() {
+	note33, err := client.PutDoc(context.Background(), &apipb2.Doc{
+		Ref:        &apipb2.Ref{
+			Gtype: "note",
+			Gid:   "note33",
+		},
+		Attributes: apipb2.NewStruct(map[string]interface{}{
+			"title": "this is a note",
+		}),
+	})
+	if err != nil {
+		fmt.Print(err)
+		return
+	}
+	has, err := client.HasDoc(context.Background(), note33.Ref)
+	if err != nil {
+		fmt.Print(err)
+		return
+	}
+	fmt.Println(has.Value)
+	// Output: true
+}
+
 func ExampleClient_CreateConnection() {
 	dogs, err := client.SearchDocs(context.Background(), &apipb2.Filter{
 		Gtype:      "dog",
@@ -401,7 +425,7 @@ func ExampleClient_GetSchema() {
 		authorizers = append(authorizers, a.Name)
 	}
 	fmt.Printf("authorizers: %s", strings.Join(authorizers, ","))
-	// Output: doc types: dog,human,user
+	// Output: doc types: dog,human,note,user
 	//connection types: created,created_by,edited,edited_by,owner
 	//authorizers: testing-request
 }
diff --git a/graphik-client-go/graphik.go b/graphik-client-go/graphik.go
index 4828045..35435a8 100644
--- a/graphik-client-go/graphik.go
+++ b/graphik-client-go/graphik.go
@@ -456,3 +456,23 @@ func (c *Client) ClusterState(ctx context.Context, _ *empty.Empty, opts ...grpc.
 func (c *Client) Ping(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*apipb.Pong, error) {
 	return c.raft.Ping(ctx, in, opts...)
 }
+
+// PutDocs puts a batch of docs in the graph
+func (c *Client) PutDoc(ctx context.Context, in *apipb.Doc, opts ...grpc.CallOption) (*apipb.Doc, error) {
+	return c.graph.PutDoc(ctx, in, opts...)
+}
+
+// PutDoc creates a Doc if it doesnt exist already, otherwise it replaces it
+func (c *Client) PutDocs(ctx context.Context, in *apipb.Docs, opts ...grpc.CallOption) (*apipb.Docs, error) {
+	return c.graph.PutDocs(ctx, in, opts...)
+}
+
+// PutConnection create-or-replaces a Connection in the graph
+func (c *Client) PutConnection(ctx context.Context, in *apipb.Connection, opts ...grpc.CallOption) (*apipb.Connection, error) {
+	return c.graph.PutConnection(ctx, in, opts...)
+}
+
+// PutConnections puts a batch of connections in the graph
+func (c *Client) PutConnections(ctx context.Context, in *apipb.Connections, opts ...grpc.CallOption) (*apipb.Connections, error) {
+	return c.graph.PutConnections(ctx, in, opts...)
+}
diff --git a/graphik.proto b/graphik.proto
index afcf465..fb8648d 100644
--- a/graphik.proto
+++ b/graphik.proto
@@ -35,6 +35,10 @@ service DatabaseService {
   rpc CreateDoc(DocConstructor) returns(Doc){}
   // CreateDocs creates a batch of docs in the graph
   rpc CreateDocs(DocConstructors) returns(Docs){}
+  // PutDoc create-or-replaces a Doc in the graph
+  rpc PutDoc(Doc) returns(Doc){}
+  // PutDocs puts a batch of docs in the graph
+  rpc PutDocs(Docs) returns(Docs){}
   // GetDoc gets a single doc in the graph
   rpc GetDoc(Ref) returns(Doc){}
   // SearchDocs searches the graph for docs
@@ -63,6 +67,10 @@ service DatabaseService {
   rpc CreateConnection(ConnectionConstructor) returns(Connection){}
   // CreateConnections creates a batch of connections in the graph
   rpc CreateConnections(ConnectionConstructors) returns(Connections){}
+  // PutConnection create-or-replaces a Connection in the graph
+  rpc PutConnection(Connection) returns(Connection){}
+  // PutConnections puts a batch of connections in the graph
+  rpc PutConnections(Connections) returns(Connections){}
   // searches for documents and forms connections based on whether they pass a filter
   rpc SearchAndConnect(SearchConnectFilter) returns(Connections){}
   // SearchAndConnectMe searches for documents and forms connections from the origin user to the document based on whether they pass a filter
diff --git a/schema.graphql b/schema.graphql
index 4fe6f1a..060ee87 100644
--- a/schema.graphql
+++ b/schema.graphql
@@ -533,11 +533,45 @@ input ExistsFilter {
   index: String
 }
 
+input PutDoc {
+  # ref is the ref to the doc
+  ref: RefInput!
+  # k/v pairs
+  attributes: Map
+}
+
+input PutDocs {
+  # docs is an array of docs
+  docs: [PutDoc!]
+}
+
+input PutConnection {
+  # ref is the ref to the connection
+  ref: RefInput!
+  # k/v pairs
+  attributes: Map
+  # directed is false if the connection is bi-directional
+  directed: Boolean!
+  # from is the doc ref that is the source of the connection
+  from: RefInput!
+  # to is the doc ref that is the destination of the connection
+  to: RefInput!
+}
+
+input PutConnections {
+  # connections is an array of connections
+  connections: [PutConnection!]
+}
+
 type Mutation {
   # createDoc creates a single doc in the graph
   createDoc(input: DocConstructor!): Doc!
   # createDocs creates 1-many documents in the graph
   createDocs(input: DocConstructors!): Docs!
+  # putDoc create-or-replaces a Doc in the graph
+  putDoc(input: PutDoc): Doc!
+  # putDocs puts a batch of docs in the graph
+  putDocs(input: PutDocs): Docs!
   # editDoc edites a single doc in the graph
   editDoc(input: Edit!): Doc!
   # editDocs edites 0-many docs in the graph
@@ -550,6 +584,10 @@ type Mutation {
   createConnection(input: ConnectionConstructor!): Connection!
   # createConnections creates 1-many connections in the graph
   createConnections(input: ConnectionConstructors!): Connections!
+  # putConnection create-or-replaces a Connection in the graph
+  putConnection(input: PutConnection): Connection!
+  # putConnections puts a batch of connections in the graph
+  putConnections(input: PutConnections): Connections!
   # editConnection edites a single connection in the graph
   editConnection(input: Edit!): Connection!
   # editConnections edites 0-many connections in the graph
diff --git a/version/version.go b/version/version.go
index 648acd9..5a0354e 100644
--- a/version/version.go
+++ b/version/version.go
@@ -1,3 +1,3 @@
 package version
 
-const Version = "0.12.0"
+const Version = "0.12.1"