From 577cc50e1fd04093f4ce4b08c8f7adbadd48e419 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Sun, 12 Jun 2016 12:18:40 +0200 Subject: [PATCH] edge handling --- .../Books/HTTP/Edge/WorkingWithEdges.mdpp | 30 ++--- .../Books/Manual/Administration/README.mdpp | 78 +---------- .../Books/Manual/GettingStarted/README.mdpp | 17 ++- Documentation/Books/Manual/SUMMARY.md | 3 + .../Rest/Graph edges/API_EDGE_CREATE.md | 88 ------------ .../Rest/Graph edges/API_EDGE_DELETE.md | 65 --------- .../Rest/Graph edges/API_EDGE_READ.md | 54 -------- .../Rest/Graph edges/API_EDGE_READ_HEAD.md | 52 -------- .../Rest/Graph edges/API_EDGE_REPLACE.md | 126 ------------------ .../Rest/Graph edges/API_EDGE_UPDATES.md | 110 --------------- 10 files changed, 29 insertions(+), 594 deletions(-) delete mode 100644 Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_CREATE.md delete mode 100644 Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_DELETE.md delete mode 100644 Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_READ.md delete mode 100644 Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_READ_HEAD.md delete mode 100644 Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_REPLACE.md delete mode 100644 Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_UPDATES.md diff --git a/Documentation/Books/HTTP/Edge/WorkingWithEdges.mdpp b/Documentation/Books/HTTP/Edge/WorkingWithEdges.mdpp index 46549166b6..2bac4077b2 100644 --- a/Documentation/Books/HTTP/Edge/WorkingWithEdges.mdpp +++ b/Documentation/Books/HTTP/Edge/WorkingWithEdges.mdpp @@ -1,27 +1,15 @@ !CHAPTER Working with Edges using REST -This is documentation to ArangoDB's [REST interface for edges](../../Manual/Graphs/Edges/index.html). +This is documentation to ArangoDB's +[REST interface for edges](../../Manual/Graphs/Edges/index.html). - -@startDocuBlock API_EDGE_READ +Edges are documents with two additional attributes: *_from* and *_to*. +These attributes are mandatory and must contain the document-handle +of the from and to vertices of an edge. - -@startDocuBlock API_EDGE_READ_ALL +Use the general document +[REST api](../Document/WorkingWithDocuments.html) +for create/read/update/delete. - -@startDocuBlock API_EDGE_CREATE - - -@startDocuBlock API_EDGE_UPDATES - - -@startDocuBlock API_EDGE_REPLACE - - -@startDocuBlock API_EDGE_DELETE - - -@startDocuBlock API_EDGE_READ_HEAD - - + @startDocuBlock API_EDGE_READINOUTBOUND diff --git a/Documentation/Books/Manual/Administration/README.mdpp b/Documentation/Books/Manual/Administration/README.mdpp index 9107435d1a..4cce9913fd 100644 --- a/Documentation/Books/Manual/Administration/README.mdpp +++ b/Documentation/Books/Manual/Administration/README.mdpp @@ -1,79 +1,3 @@ !CHAPTER Administration -!SECTION Durability Configuration - -!SUBSECTION Global Configuration - -There are global configuration values for durability, which can be adjusted by -specifying the following configuration options: - -@startDocuBlock databaseWaitForSync - - -@startDocuBlock databaseForceSyncProperties - - -@startDocuBlock WalLogfileSyncInterval - - -!SUBSECTION Per-collection configuration - -You can also configure the durability behavior on a per-collection basis. -Use the ArangoDB shell to change these properties. - - -@startDocuBlock collectionProperties - - -!SUBSECTION Per-operation configuration - -Many data-modification operations and also ArangoDB's transactions allow to specify -a *waitForSync* attribute, which when set ensures the operation data has been -synchronized to disk when the operation returns. - -!SECTION Disk-Usage Configuration - -The amount of disk space used by ArangoDB is determined by a few configuration -options. - -!SUBSECTION Global Configuration - -The total amount of disk storage required by ArangoDB is determined by the size of -the write-ahead logfiles plus the sizes of the collection journals and datafiles. - -There are the following options for configuring the number and sizes of the write-ahead -logfiles: - - -@startDocuBlock WalLogfileReserveLogfiles - - - -@startDocuBlock WalLogfileHistoricLogfiles - - - -@startDocuBlock WalLogfileSize - - - -@startDocuBlock WalLogfileAllowOversizeEntries - - - -@startDocuBlock WalLogfileSuppressShapeInformation - - -When data gets copied from the write-ahead logfiles into the journals or datafiles -of collections, files will be created on the collection level. How big these files -are is determined by the following global configuration value: - - -@startDocuBlock databaseMaximalJournalSize - - -!SUBSECTION Per-collection configuration - -The journal size can also be adjusted on a per-collection level using the collection's -*properties* method. - +Most administration can be managed using the *arangosh*. \ No newline at end of file diff --git a/Documentation/Books/Manual/GettingStarted/README.mdpp b/Documentation/Books/Manual/GettingStarted/README.mdpp index 14927dab93..ef33a6bdf4 100644 --- a/Documentation/Books/Manual/GettingStarted/README.mdpp +++ b/Documentation/Books/Manual/GettingStarted/README.mdpp @@ -29,6 +29,21 @@ automatically started. For startup parameters, installation in a cluster and so on, see [Installing](Installing/README.md). +!SUBSECTION Securing the installation + +The default installation contains one database *_system* and a user +named *root*. + +Debian based packages and the Windows installer will ask for a +password during the installation process. For all other installation +packages you need to execute + +``` +shell> arango-secure-installation +``` + +This will asked for a root password and sets this password. + !SUBSECTION Web interface The server itself speaks REST and VelocyStream, but you can use the @@ -45,7 +60,7 @@ see [Troubleshooting](../Troubleshooting/README.md). By default, authentication is enabled. There default user is `root`. Depending on the installation method used, the installation processed either prompted for the root password or the default root -password is empty. +password is empty (see [above](#securing_the_installation). It should look like this: TODO MISSING diff --git a/Documentation/Books/Manual/SUMMARY.md b/Documentation/Books/Manual/SUMMARY.md index eb01ba7d9d..20e9a8220f 100644 --- a/Documentation/Books/Manual/SUMMARY.md +++ b/Documentation/Books/Manual/SUMMARY.md @@ -12,6 +12,7 @@ * [Windows](GettingStarted/Installing/Windows.md) * [Compiling](GettingStarted/Installing/Compiling.md) * [Cluster setup](GettingStarted/Installing/Cluster.md) + * [Authentication](GettingStarted/Authentication.md) * [Using the Web Interface](GettingStarted/WebInterface.md) * [Coming from SQL](GettingStarted/ComingFromSql.md) # * [Coming from MongoDB](GettingStarted/ComingFromMongoDb.md) #TODO @@ -102,6 +103,8 @@ * [Cluster: Local test](Deployment/Local.md) # * [Administration](Administration/README.md) + * [Managing Users](Administration/ManagingUsers.md) + * [Durability](Administration/Durability.md) * [ArangoDB Shell](Administration/Arangosh/README.md) * [Shell Output](Administration/Arangosh/Output.md) * [Configuration](Administration/Arangosh/Configuration.md) diff --git a/Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_CREATE.md b/Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_CREATE.md deleted file mode 100644 index 491548db8b..0000000000 --- a/Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_CREATE.md +++ /dev/null @@ -1,88 +0,0 @@ - -@startDocuBlock API_EDGE_CREATE -@brief creates an edge - -@RESTHEADER{POST /_api/document,Create edge} - -@RESTALLBODYPARAM{edge-document,json,required} -A JSON representation of the edge document must be passed as the body of -the POST request. This JSON object may contain the edge's document key in -the *_key* attribute if needed. - -@RESTQUERYPARAMETERS - -@RESTQUERYPARAM{collection,string,required} -Creates a new edge in the collection identified by *collection* name. - -@RESTQUERYPARAM{waitForSync,boolean,optional} -Wait until the edge document has been synced to disk. - -@RESTQUERYPARAM{from,string,required} -The document handle of the start point must be passed in *from* handle. - -@RESTQUERYPARAM{to,string,required} -The document handle of the end point must be passed in *to* handle. - -@RESTDESCRIPTION -Creates a new edge document in the collection named *collection*. A JSON -representation of the document must be passed as the body of the POST -request. - -In all other respects the method works like *POST /_api/document* for -documents. - -@RESTRETURNCODES - -@RESTRETURNCODE{201} -is returned if the edge was created successfully and *waitForSync* was -*true*. - -@RESTRETURNCODE{202} -is returned if the edge was created successfully and *waitForSync* was -*false*. - -@RESTRETURNCODE{400} -is returned if the body does not contain a valid JSON representation of an -edge, or if the collection specified is not an edge collection. -The response body contains an error document in this case. - -@RESTRETURNCODE{404} -is returned if the collection specified by *collection* is unknown. The -response body contains an error document in this case. - -@EXAMPLES - -Create an edge and read it back: - -@EXAMPLE_ARANGOSH_RUN{RestEdgeCreateEdge} - try { - db._graphs.remove("graph"); - db._drop("edges"); - db._drop("vertices"); - } - catch (e) {} - - var Graph = require("@arangodb/general-graph"); - var g = Graph._create("graph", [Graph._relation("edges", "vertices", "vertices")]); - g.vertices.save({_key: "1"}); - g.vertices.save({_key: "2"}); - var url = "/_api/document/?collection=edges"; - - var response = logCurlRequest("POST", url, { "name": "Emil", _from: "vertices/1", _to: "vertices/2"}); - - assert(response.code === 202); - - logJsonResponse(response); - var body = response.body.replace(/\\/g, ''); - var edge_id = JSON.parse(body)._id; - var response2 = logCurlRequest("GET", "/_api/document/" + edge_id); - - assert(response2.code === 200); - - logJsonResponse(response2); - db._drop("edges"); - db._drop("vertices"); - db._graphs.remove("graph"); -@END_EXAMPLE_ARANGOSH_RUN -@endDocuBlock - diff --git a/Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_DELETE.md b/Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_DELETE.md deleted file mode 100644 index 970e1ece6f..0000000000 --- a/Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_DELETE.md +++ /dev/null @@ -1,65 +0,0 @@ - -@startDocuBlock API_EDGE_DELETE -@brief deletes an edge - -@RESTHEADER{DELETE /_api/document/{document-handle}#deleteEdge, Deletes edge} - -@RESTURLPARAMETERS - -@RESTURLPARAM{document-handle,string,required} -Deletes the edge document identified by *document-handle*. - -@RESTQUERYPARAMETERS - -@RESTQUERYPARAM{rev,string,optional} -You can conditionally delete an edge document based on a target revision id by -using the *rev* query parameter. - -@RESTQUERYPARAM{policy,string,optional} -To control the update behavior in case there is a revision mismatch, you -can use the *policy* parameter. This is the same as when replacing edge -documents (see replacing edge documents for more details). - -@RESTQUERYPARAM{waitForSync,boolean,optional} -Wait until edge document has been synced to disk. - -@RESTHEADERPARAMETERS - -@RESTHEADERPARAM{If-Match,string,optional} -You can conditionally delete an edge document based on a target revision id by -using the *if-match* HTTP header. - -@RESTDESCRIPTION -The body of the response contains a JSON object with the information about -the handle and the revision. The attribute *_id* contains the known -*document-handle* of the deleted edge document, *_key* contains the key which -uniquely identifies a document in a given collection, and the attribute *_rev* -contains the new document revision. - -If the *waitForSync* parameter is not specified or set to -*false*, then the collection's default *waitForSync* behavior is -applied. The *waitForSync* query parameter cannot be used to disable -synchronization for collections that have a default *waitForSync* value -of *true*. - -@RESTRETURNCODES - -@RESTRETURNCODE{200} -is returned if the edge document was deleted successfully and *waitForSync* was -*true*. - -@RESTRETURNCODE{202} -is returned if the edge document was deleted successfully and *waitForSync* was -*false*. - -@RESTRETURNCODE{404} -is returned if the collection or the edge document was not found. -The response body contains an error document in this case. - -@RESTRETURNCODE{412} -is returned if a "If-Match" header or *rev* is given and the found -document has a different version. The response will also contain the found -document's current revision in the *_rev* attribute. Additionally, the -attributes *_id* and *_key* will be returned. -@endDocuBlock - diff --git a/Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_READ.md b/Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_READ.md deleted file mode 100644 index f2a620a15b..0000000000 --- a/Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_READ.md +++ /dev/null @@ -1,54 +0,0 @@ - -@startDocuBlock API_EDGE_READ -@brief reads a single edge - -@RESTHEADER{GET /_api/document/{document-handle}#readEdge, Read edge} - -@RESTURLPARAMETERS - -@RESTURLPARAM{document-handle,string,required} -The handle of the edge document. - -@RESTHEADERPARAMETERS - -@RESTHEADERPARAM{If-None-Match,string,optional} -If the "If-None-Match" header is given, then it must contain exactly one -etag. The edge is returned if it has a different revision than the -given etag. Otherwise an *HTTP 304* is returned. - -@RESTHEADERPARAM{If-Match,string,optional} -If the "If-Match" header is given, then it must contain exactly one -etag. The edge is returned if it has the same revision ad the -given etag. Otherwise a *HTTP 412* is returned. As an alternative -you can supply the etag in an attribute *rev* in the URL. - -@RESTDESCRIPTION -Returns the edge identified by *document-handle*. The returned -edge contains a few special attributes: - -- *_id* contains the document handle - -- *_rev* contains the revision - -- *_from* and *to* contain the document handles of the connected - vertex documents - -@RESTRETURNCODES - -@RESTRETURNCODE{200} -is returned if the edge was found - -@RESTRETURNCODE{304} -is returned if the "If-None-Match" header is given and the edge has -the same version - -@RESTRETURNCODE{404} -is returned if the edge or collection was not found - -@RESTRETURNCODE{412} -is returned if a "If-Match" header or *rev* is given and the found -document has a different version. The response will also contain the found -document's current revision in the *_rev* attribute. Additionally, the -attributes *_id* and *_key* will be returned. -@endDocuBlock - diff --git a/Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_READ_HEAD.md b/Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_READ_HEAD.md deleted file mode 100644 index d42ec6307b..0000000000 --- a/Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_READ_HEAD.md +++ /dev/null @@ -1,52 +0,0 @@ - -@startDocuBlock API_EDGE_READ_HEAD -@brief reads a single edge head - -@RESTHEADER{HEAD /_api/document/{document-handle}readEdgeHead, Read edge header} - -@RESTURLPARAMETERS - -@RESTURLPARAM{document-handle,string,required} -The handle of the edge document. - -@RESTQUERYPARAMETERS - -@RESTQUERYPARAM{rev,string,optional} -You can conditionally fetch an edge document based on a target revision id by -using the *rev* query parameter. - -@RESTHEADERPARAMETERS - -@RESTHEADERPARAM{If-None-Match,string,optional} -If the "If-None-Match" header is given, then it must contain exactly one -etag. If the current document revision is different to the specified etag, -an *HTTP 200* response is returned. If the current document revision is -identical to the specified etag, then an *HTTP 304* is returned. - -@RESTHEADERPARAM{If-Match,string,optional} -You can conditionally fetch an edge document based on a target revision id by -using the *if-match* HTTP header. - -@RESTDESCRIPTION -Like *GET*, but only returns the header fields and not the body. You -can use this call to get the current revision of an edge document or check if -it was deleted. - -@RESTRETURNCODES - -@RESTRETURNCODE{200} -is returned if the edge document was found - -@RESTRETURNCODE{304} -is returned if the "If-None-Match" header is given and the edge document has -same version - -@RESTRETURNCODE{404} -is returned if the edge document or collection was not found - -@RESTRETURNCODE{412} -is returned if a "If-Match" header or *rev* is given and the found -document has a different version. The response will also contain the found -document's current revision in the *etag* header. -@endDocuBlock - diff --git a/Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_REPLACE.md b/Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_REPLACE.md deleted file mode 100644 index 8ab1508c48..0000000000 --- a/Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_REPLACE.md +++ /dev/null @@ -1,126 +0,0 @@ - -@startDocuBlock API_EDGE_REPLACE -@brief replaces an edge - -@RESTHEADER{PUT /_api/document/{document-handle}#replaceEdge, replaces an edge} - -@RESTALLBODYPARAM{edge,json,required} -A JSON representation of the new edge data. Including *_from* and *_to* is mandatory. - -@RESTURLPARAMETERS - -@RESTURLPARAM{document-handle,string,required} -The handle of the edge document. - -@RESTQUERYPARAMETERS - -@RESTQUERYPARAM{waitForSync,boolean,optional} -Wait until edge document has been synced to disk. - -@RESTQUERYPARAM{rev,string,optional} -You can conditionally replace an edge document based on a target revision id by -using the *rev* query parameter. - -@RESTQUERYPARAM{policy,string,optional} -To control the update behavior in case there is a revision mismatch, you -can use the *policy* parameter (see below). - -@RESTHEADERPARAMETERS - -@RESTHEADERPARAM{If-Match,string,optional} -You can conditionally replace an edge document based on a target revision id by -using the *if-match* HTTP header. - -@RESTDESCRIPTION -Completely updates (i.e. replaces) the edge document identified by *document-handle*. -If the edge document exists and can be updated, then a *HTTP 201* is returned -and the "ETag" header field contains the new revision of the edge document. - -If the new edge document passed in the body of the request contains the -*document-handle* in the attribute *_id* and the revision in *_rev*, -these attributes will be ignored. Only the URI and the "ETag" header are -relevant in order to avoid confusion when using proxies. - -Optionally, the query parameter *waitForSync* can be used to force -synchronization of the edge document replacement operation to disk even in case -that the *waitForSync* flag had been disabled for the entire collection. -Thus, the *waitForSync* query parameter can be used to force synchronization -of just specific operations. To use this, set the *waitForSync* parameter -to *true*. If the *waitForSync* parameter is not specified or set to -*false*, then the collection's default *waitForSync* behavior is -applied. The *waitForSync* query parameter cannot be used to disable -synchronization for collections that have a default *waitForSync* value -of *true*. - -The body of the response contains a JSON object with the information about -the handle and the revision. The attribute *_id* contains the known -*document-handle* of the updated edge document, *_key* contains the key which -uniquely identifies a document in a given collection, and the attribute *_rev* -contains the new document revision. - -If the edge document does not exist, then a *HTTP 404* is returned and the -body of the response contains an error document. - -There are two ways for specifying the targeted revision id for -conditional replacements (i.e. replacements that will only be executed if -the revision id found in the database matches the revision id specified -in the request): -- specifying the target revision in the *rev* URL query parameter -- specifying the target revision in the *if-match* HTTP header - -Specifying a target revision is optional, however, if done, only one of the -described mechanisms must be used (either the *rev* query parameter or the -*if-match* HTTP header). -Regardless which mechanism is used, the parameter needs to contain the target -revision id as returned in the *_rev* attribute of an edge document or -by an HTTP *etag* header. - -For example, to conditionally replace an edge document based on a specific revision -id, you can use the following request: - -- PUT /_api/document/*document-handle*?rev=*etag* - -If a target revision id is provided in the request (e.g. via the *etag* value -in the *rev* URL query parameter above), ArangoDB will check that -the revision id of the edge document found in the database is equal to the target -revision id provided in the request. If there is a mismatch between the revision -id, then by default a *HTTP 412* conflict is returned and no replacement is -performed. - -The conditional update behavior can be overridden with the *policy* URL query parameter: - -- PUT /_api/document/*document-handle*?policy=*policy* - -If *policy* is set to *error*, then the behavior is as before: replacements -will fail if the revision id found in the database does not match the target -revision id specified in the request. - -If *policy* is set to *last*, then the replacement will succeed, even if the -revision id found in the database does not match the target revision id specified -in the request. You can use the *last* *policy* to force replacements. - -@RESTRETURNCODES - -@RESTRETURNCODE{201} -is returned if the edge document was replaced successfully and *waitForSync* was -*true*. - -@RESTRETURNCODE{202} -is returned if the edge document was replaced successfully and *waitForSync* was -*false*. - -@RESTRETURNCODE{400} -is returned if the body does not contain a valid JSON representation of an edge -document or if applied to a non-edge collection. The response body contains an -error document in this case. - -@RESTRETURNCODE{404} -is returned if the collection or the edge document was not found - -@RESTRETURNCODE{412} -is returned if a "If-Match" header or *rev* is given and the found -document has a different version. The response will also contain the found -document's current revision in the *_rev* attribute. Additionally, the -attributes *_id* and *_key* will be returned. -@endDocuBlock - diff --git a/Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_UPDATES.md b/Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_UPDATES.md deleted file mode 100644 index c17c11555e..0000000000 --- a/Documentation/DocuBlocks/Rest/Graph edges/API_EDGE_UPDATES.md +++ /dev/null @@ -1,110 +0,0 @@ - -@startDocuBlock API_EDGE_UPDATES -@brief updates an edge - -@RESTHEADER{PATCH /_api/document/{document-handle}#patchEdge, Patches edge} - -@RESTALLBODYPARAM{document,json,required} -A JSON representation of the edge update. - -@RESTURLPARAMETERS - -@RESTURLPARAM{document-handle,string,required} -The handle of the edge document. - -@RESTQUERYPARAMETERS - -@RESTQUERYPARAM{keepNull,boolean,optional} -If the intention is to delete existing attributes with the patch command, -the URL query parameter *keepNull* can be used with a value of *false*. -This will modify the behavior of the patch command to remove any attributes -from the existing edge document that are contained in the patch document with an -attribute value of *null*. - -@RESTQUERYPARAM{mergeObjects,boolean,optional} -Controls whether objects (not arrays) will be merged if present in both the -existing and the patch edge. If set to *false*, the value in the -patch edge will overwrite the existing edge's value. If set to -*true*, objects will be merged. The default is *true*. - -@RESTQUERYPARAM{waitForSync,boolean,optional} -Wait until edge document has been synced to disk. - -@RESTQUERYPARAM{rev,string,optional} -You can conditionally patch an edge document based on a target revision id by -using the *rev* query parameter. - -@RESTQUERYPARAM{policy,string,optional} -To control the update behavior in case there is a revision mismatch, you -can use the *policy* parameter. - -@RESTHEADERPARAMETERS - -@RESTHEADERPARAM{If-Match,string,optional} -You can conditionally patch an edge document based on a target revision id by -using the *if-match* HTTP header. - -@RESTDESCRIPTION -Partially updates the edge document identified by *document-handle*. -The body of the request must contain a JSON document with the attributes -to patch (the patch document). All attributes from the patch document will -be added to the existing edge document if they do not yet exist, and overwritten -in the existing edge document if they do exist there. - -Setting an attribute value to *null* in the patch document will cause a -value of *null* be saved for the attribute by default. - -**Note**: Internal attributes such as *_key*, *_from* and *_to* are immutable -once set and cannot be updated. - -Optionally, the query parameter *waitForSync* can be used to force -synchronization of the edge document update operation to disk even in case -that the *waitForSync* flag had been disabled for the entire collection. -Thus, the *waitForSync* query parameter can be used to force synchronization -of just specific operations. To use this, set the *waitForSync* parameter -to *true*. If the *waitForSync* parameter is not specified or set to -*false*, then the collection's default *waitForSync* behavior is -applied. The *waitForSync* query parameter cannot be used to disable -synchronization for collections that have a default *waitForSync* value -of *true*. - -The body of the response contains a JSON object with the information about -the handle and the revision. The attribute *_id* contains the known -*document-handle* of the updated edge document, *_key* contains the key which -uniquely identifies a document in a given collection, and the attribute *_rev* -contains the new document revision. - -If the edge document does not exist, then a *HTTP 404* is returned and the -body of the response contains an error document. - -You can conditionally update an edge document based on a target revision id by -using either the *rev* query parameter or the *if-match* HTTP header. -To control the update behavior in case there is a revision mismatch, you -can use the *policy* parameter. This is the same as when replacing -edge documents (see replacing documents for details). - -@RESTRETURNCODES - -@RESTRETURNCODE{201} -is returned if the document was patched successfully and *waitForSync* was -*true*. - -@RESTRETURNCODE{202} -is returned if the document was patched successfully and *waitForSync* was -*false*. - -@RESTRETURNCODE{400} -is returned if the body does not contain a valid JSON representation or when -applied on an non-edge collection. The response body contains an error document -in this case. - -@RESTRETURNCODE{404} -is returned if the collection or the edge document was not found - -@RESTRETURNCODE{412} -is returned if a "If-Match" header or *rev* is given and the found -document has a different version. The response will also contain the found -document's current revision in the *_rev* attribute. Additionally, the -attributes *_id* and *_key* will be returned. -@endDocuBlock -