Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to...

414
1.1 1.2 1.3 1.4 1.4.1 1.4.2 1.4.3 1.5 1.5.1 1.5.2 1.5.3 1.6 1.6.1 1.6.2 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.2 1.8.3 1.9 1.10 1.10.1 1.10.2 1.11 1.12 1.13 1.14 1.15 1.16 1.16.1 1.16.2 1.16.3 1.16.4 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.17.5 Table of Contents Introduction General HTTP Handling HTTP Interface Databases To-Endpoint M anagement Notes on Databases Collections Creating Getting Information M odifying Documents Basics and Terminology Working with Documents Edges Address and Etag Working with Edges General Graph M anagement Vertices Edges Traversals AQL Query Cursors Query Results Accessing Cursors AQL Queries AQL Query Cache AQL User Functions Management Simple Queries Async Result Handling Bulk Import / Export JSON Documents Headers & Values Batch Requests Exporting data Indexes Working with Indexes Hash Skiplist Persistent Geo 1

Transcript of Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to...

Page 1: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

1.1

1.2

1.3

1.4

1.4.1

1.4.2

1.4.3

1.5

1.5.1

1.5.2

1.5.3

1.6

1.6.1

1.6.2

1.7

1.7.1

1.7.2

1.8

1.8.1

1.8.2

1.8.3

1.9

1.10

1.10.1

1.10.2

1.11

1.12

1.13

1.14

1.15

1.16

1.16.1

1.16.2

1.16.3

1.16.4

1.17

1.17.1

1.17.2

1.17.3

1.17.4

1.17.5

TableofContentsIntroduction

GeneralHTTPHandling

HTTPInterface

Databases

To-Endpoint

Management

NotesonDatabases

Collections

Creating

GettingInformation

Modifying

Documents

BasicsandTerminology

WorkingwithDocuments

Edges

AddressandEtag

WorkingwithEdges

GeneralGraph

Management

Vertices

Edges

Traversals

AQLQueryCursors

QueryResults

AccessingCursors

AQLQueries

AQLQueryCache

AQLUserFunctionsManagement

SimpleQueries

AsyncResultHandling

BulkImport/Export

JSONDocuments

Headers&Values

BatchRequests

Exportingdata

Indexes

WorkingwithIndexes

Hash

Skiplist

Persistent

Geo

1

Page 2: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

1.17.6

1.18

1.19

1.19.1

1.19.2

1.19.3

1.19.4

1.20

1.21

1.22

1.23

1.23.1

1.23.2

1.23.3

1.24

1.25

1.26

1.27

Fulltext

Transactions

Replication

ReplicationDump

ReplicationLogger

ReplicationApplier

OtherReplicationCommands

Sharding

Monitoring

Endpoints

FoxxServices

Management

Configuration

Miscellaneous

UserManagement

Tasks

Agency

Miscellaneousfunctions

2

Page 3: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

ArangoDBv3.3.3HTTPAPIDocumentationWelcometotheArangoDBHTTPAPIdocumentation!ThisdocumentationisforAPIdevelopers.AsauseroradministratorofArangoDByoushouldnotneedtheinformationprovidedherein.

Ingeneral,asauserofArangoDByouwilluseoneofthelanguagedrivers.

Introduction

3

Page 4: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

GeneralHTTPRequestHandlinginArangoDB

Protocol

ArangoDBexposesitsAPIviaHTTP,makingtheserveraccessibleeasilywithavarietyofclientsandtools(e.g.browsers,curl,telnet).ThecommunicationcanoptionallybeSSL-encrypted.

ArangoDBusesthestandardHTTPmethods(e.g.GET,POST,PUT,DELETE)plusthePATCHmethoddescribedinRFC5789.

MostserverAPIsexpectclientstosendanypayloaddatainJSONformat.DetailsontheexpectedformatandJSONattributescanbefoundinthedocumentationoftheindividualservermethods.

ClientssendingrequeststoArangoDBmustuseeitherHTTP1.0orHTTP1.1.OtherHTTPversionsarenotsupportedbyArangoDBandanyattempttosendadifferentHTTPversionsignaturewillresultintheserverrespondingwithanHTTP505(HTTPversionnotsupported)error.

ArangoDBwillalwaysrespondtoclientrequestswithHTTP1.1.ClientsshouldthereforesupportHTTPversion1.1.

ClientsarerequiredtoincludetheContent-LengthHTTPheaderwiththecorrectcontentlengthineveryrequestthatcanhaveabody(e.g.POST,PUTorPATCH)request.ArangoDBwillnotprocessrequestswithoutaContent-Lengthheader-thuschunkedtransferencodingforPOST-documentsisnotsupported.

HTTPKeep-Alive

ArangoDBsupportsHTTPkeep-alive.IftheclientdoesnotsendaConnectionheaderinitsrequest,andtheclientusesHTTPversion1.1,ArangoDBwillassumetheclientwantstokeepalivetheconnection.Ifclientsdonotwishtousethekeep-alivefeature,theyshouldexplicitlyindicatethatbysendingaConnection:CloseHTTPheaderintherequest.

ArangoDBwillcloseconnectionsautomaticallyforclientsthatsendrequestsusingHTTP1.0,exceptiftheysendanConnection:Keep-Aliveheader.

ThedefaultKeep-Alivetimeoutcanbespecifiedatserverstartusingthe--http.keep-alive-timeoutparameter.

EstablishingTCPconnectionsisexpensive,sinceittakesseveralpingpongsbetweenthecommunicationparties.ThereforeyoucanuseconnectionkeepalivetosendseveralHTTPrequestoveroneTCP-connection;Eachrequestistreatedindependentlybydefinition.Youcanusethisfeaturetobuildupasocalledconnectionpoolwithseveralestablishedconnectionsinyourclientapplication,anddynamicallyre-useoneofthosethenidleconnectionsforsubsequentrequests.

Blockingvs.Non-blockingHTTPRequests

ArangoDBsupportsbothblockingandnon-blockingHTTPrequests.

ArangoDBisamulti-threadedserver,allowingtheprocessingofmultipleclientrequestsatthesametime.Request/responsehandlingandtheactualworkareperformedontheserverinparallelbymultipleworkerthreads.

Still,clientsneedtowaitfortheirrequeststobeprocessedbytheserver,andthuskeeponeconnectionofapooloccupied.Bydefault,theserverwillfullyprocessanincomingrequestandthenreturntheresulttotheclientwhentheoperationisfinished.Theclientmustwaitfortheserver'sHTTPresponsebeforeitcansendadditionalrequestsoverthesameconnection.Forclientsthataresingle-threadedand/orareblockingonI/Othemselves,waitingidlefortheserverresponsemaybenon-optimal.

Toreduceblockingontheclientside,ArangoDBoffersagenericmechanismfornon-blocking,asynchronousexecution:clientscanaddtheHTTPheaderx-arango-async:truetoanyoftheirrequests,markingthemastobeexecutedasynchronouslyontheserver.ArangoDBwillputsuchrequestsintoanin-memorytaskqueueandreturnanHTTP202(accepted)responsetotheclientinstantlyandthusfinishthisHTTP-request.Theserverwillexecutethetasksfromthequeueasynchronouslyasfastaspossible,whileclientscancontinuetodootherwork.Iftheserverqueueisfull(i.e.containsasmanytasksasspecifiedbytheoption"--scheduler.maximal-queue-size"),thentherequestwillberejectedinstantlywithanHTTP500(internalservererror)response.

GeneralHTTPHandling

4

Page 5: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Asynchronousexecutiondecouplestherequest/responsehandlingfromtheactualworktobeperformed,allowingfastserverresponsesandgreatlyreducingwaittimeforclients.Overallthisallowsformuchhigherthroughputthanifclientswouldalwayswaitfortheserver'sresponse.

Keepinmindthattheasynchronousexecutionisjust"fireandforget".ClientswillgetanyoftheirasynchronousrequestsansweredwithagenericHTTP202response.Atthetimetheserversendsthisresponse,itdoesnotknowwhethertherequestedoperationcanbecarriedoutsuccessfully(theactualoperationexecutionwillhappenatsomelaterpoint).Clientsthereforecannotmakeadecisionbasedontheserverresponseandmustrelyontheirrequestsbeingvalidandprocessablebytheserver.

Additionally,theserver'sasynchronoustaskqueueisanin-memorydatastructure,meaningnot-yetprocessedtasksfromthequeuemightbelostincaseofacrash.Clientsshouldthereforenotusetheasynchronousfeaturewhentheyhavestrictdurabilityrequirementsoriftheyrelyontheimmediateresultoftherequesttheysend.

FordetailsonthesubsequentprocessingreadonunderAsyncResulthandling.

Authentication

ClientauthenticationcanbeachievedbyusingtheAuthorizationHTTPheaderinclientrequests.ArangoDBsupportsauthenticationviaHTTPBasicorJWT.

AuthenticationisturnedonbydefaultforallinternaldatabaseAPIsbutturnedoffforcustomFoxxapps.TotoggleauthenticationforincomingrequeststotheinternaldatabaseAPIs,usetheoption--server.authentication.ThisoptionisturnedonbydefaultsoauthenticationisrequiredforthedatabaseAPIs.

PleasenotethatrequestsusingtheHTTPOPTIONSmethodwillbeansweredbyArangoDBinanycase,evenifnoauthenticationdataissentbytheclientoriftheauthenticationdataiswrong.ThisisrequiredforhandlingCORSpreflightrequests(seeCrossOriginResourceSharingrequests).TheresponsetoanHTTPOPTIONSrequestwillbegenericandnotexposeanyprivatedata.

ThereisanadditionaloptiontocontrolauthenticationforcustomFoxxapps.Theoption--server.authentication-system-onlycontrolswhetherauthenticationisrequiredonlyforrequeststotheinternaldatabaseAPIsandtheadmininterface.Itisturnedonbydefault,meaningthatotherAPIs(thisincludescustomFoxxapps)donotrequireauthentication.

ThedefaultvaluesallowexposingapubliccustomFoxxAPIbuiltwithArangoDBtotheoutsideworldwithouttheneedforHTTPauthentication,butstillprotectingtheusageoftheinternaldatabaseAPIs(i.e./_api/,/_admin/)withHTTPauthentication.

Iftheserverisstartedwiththe--server.authentication-system-onlyoptionsettofalse,allincomingrequestswillneedHTTPauthenticationiftheserverisconfiguredtorequireHTTPauthentication(i.e.--server.authenticationtrue).SettingtheoptiontotruewillmaketheserverrequireauthenticationonlyforrequeststotheinternaldatabaseAPIsandwillallowunauthenticatedrequeststoallotherURLs.

Here'sashortsummary:

--server.authenticationtrue--server.authentication-system-onlytrue:thiswillrequireauthenticationforallrequeststotheinternaldatabaseAPIsbutnotcustomFoxxapps.Thisisthedefaultsetting.--server.authenticationtrue--server.authentication-system-onlyfalse:thiswillrequireauthenticationforallrequests(includingcustomFoxxapps).--server.authenticationfalse:authenticationdisabledforallrequests

Wheneverauthenticationisrequiredandtheclienthasnotyetauthenticated,ArangoDBwillreturnHTTP401(Unauthorized).ItwillalsosendtheWWW-Authenticateresponseheader,indicatingthattheclientshouldprompttheuserforusernameandpasswordifsupported.Iftheclientisabrowser,thensendingbackthisheaderwillnormallytriggerthedisplayofthebrowser-sideHTTPauthenticationdialog.AsshowingthebrowserHTTPauthenticationdialogisundesiredinAJAXrequests,ArangoDBcanbetoldtonotsendtheWWW-Authenticateheaderbacktotheclient.WheneveraclientsendstheX-Omit-WWW-AuthenticateHTTPheader(withanarbitraryvalue)toArangoDB,ArangoDBwillonlysendstatuscode401,butnoWWW-Authenticateheader.Thisallowsclientstoimplementcredentialshandlingandbypassingthebrowser'sbuilt-indialog.

AuthenticationviaJWT

ToauthenticateviaJWTyoumustfirstobtainaJWT.TodososendaPOSTrequestto

/_open/auth

GeneralHTTPHandling

5

Page 6: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

containingusernameandpasswordJSON-encodedlikeso:

{"username":"root","password":"rootPassword"}

Uponsuccesstheendpointwillreturna200OKandananswercontainingtheJWTinaJSON-encodedobjectlikeso:

{"jwt":"eyJhbGciOiJIUzI1NiI..x6EfI"}

ThisJWTshouldthenbeusedwithintheAuthorizationHTTPheaderinsubsequentrequests:

Authorization:bearereyJhbGciOiJIUzI1NiI..x6EfI

PleasenotethattheJWTwillexpireafter1monthandneedstobeupdated.

ArangoDBusesastandardJWTauthentication.Thesecretmayeitherbesetusing--server.jwt-secretorwillberandomlygenerateduponserverstartup.

FormoreinformationonJWTpleaseconsultRFC7519andhttps://jwt.io

ErrorHandling

ThefollowingshouldbenotedabouthowArangoDBhandlesclienterrorsinitsHTTPlayer:

clientrequestsusinganHTTPversionsignaturedifferentthanHTTP/1.0orHTTP/1.1willgetanHTTP505(HTTPversionnotsupported)errorinreturn.ArangoDBwillrejectclientrequestswithanegativevalueintheContent-LengthrequestheaderwithHTTP411(LengthRequired).Arangodbdoesn'tsupportPOSTwithtransfer-encoding:chunkedwhichforbidstheContent-Lengthheaderabove.themaximumURLlengthacceptedbyArangoDBis16K.IncomingrequestswithlongerURLswillberejectedwithanHTTP414(Request-URItoolong)error.iftheclientsendsaContent-Lengthheaderwithavaluebiggerthan0foranHTTPGET,HEAD,orDELETErequest,ArangoDBwillprocesstherequest,butwillwriteawarningtoitslogfile.whentheclientsendsaContent-Lengthheaderthathasavaluethatislowerthantheactualsizeofthebodysent,ArangoDBwillrespondwithHTTP400(BadRequest).ifclientssendaContent-Lengthvaluebiggerthantheactualsizeofthebodyoftherequest,ArangoDBwillwaitforabout90secondsfortheclienttocompleteitsrequest.Iftheclientdoesnotsendtheremainingbodydatawithinthistime,ArangoDBwillclosetheconnection.Clientsshouldavoidsendingsuchmalformedrequestsasthiswillblockonetcpconnection,andmayleadtoatemporaryfiledescriptorleak.whenclientssendabodyoraContent-Lengthvaluebiggerthanthemaximumallowedvalue(512MB),ArangoDBwillrespondwithHTTP413(RequestEntityTooLarge).iftheoveralllengthoftheHTTPheadersaclientsendsforonerequestexceedsthemaximumallowedsize(1MB),theserverwillfailwithHTTP431(RequestHeaderFieldsTooLarge).ifclientsrequestanHTTPmethodthatisnotsupportedbytheserver,ArangoDBwillreturnwithHTTP405(MethodNotAllowed).ArangoDBoffersgeneralsupportforthefollowingHTTPmethods:

GETPOSTPUTDELETEHEADPATCHOPTIONS

PleasenotethatnotallserveractionsallowusingalloftheseHTTPmethods.Youshouldlookupupthesupportedmethodsforeachmethodyouintendtouseinthemanual.

RequestsusinganyotherHTTPmethod(suchasforexampleCONNECT,TRACEetc.)willberejectedbyArangoDBasmentionedbefore.

Cross-OriginResourceSharing(CORS)requests

GeneralHTTPHandling

6

Page 7: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

ArangoDBwillautomaticallyhandleCORSrequestsasfollows:

Preflight

Whenabrowseristoldtomakeacross-originrequestthatincludesexplicitheaders,credentialsorusesHTTPmethodsotherthanGETorPOST,itwillfirstperformaso-calledpreflightrequestusingtheOPTIONSmethod.

ArangoDBwillrespondtoOPTIONSrequestswithanHTTP200statusresponsewithanemptybody.Sincepreflightrequestsarenotexpectedtoincludeorevenindicatethepresenceofauthenticationcredentialsevenwhentheywillbepresentintheactualrequest,ArangoDBdoesnotenforceauthenticationforOPTIONSrequestsevenwhenauthenticationisenabled.

ArangoDBwillsetthefollowingheadersintheresponse:

access-control-allow-credentials:willbesettofalsebydefault.Fordetailsonwhenitwillbesettotrueseethenextsectiononcookies.

access-control-allow-headers:willbesettotheexectvalueoftherequest'saccess-control-request-headersheaderoromittedifnosuchheaderwassentintherequest.

access-control-allow-methods:willbesettoalistofallsupportedHTTPheadersregardlessofthetargetendpoint.Inotherwordsthatamethodislistedinthisheaderdoesnotguaranteethatitwillbesupportedbytheendpointintheactualrequest.

access-control-allow-origin:willbesettotheexactvalueoftherequest'soriginheader.

access-control-expose-headers:willbesettoalistofresponseheadersusedbytheArangoDBHTTPAPI.

access-control-max-age:willbesettoanimplementation-specifcvalue.

Actualrequest

IfarequestusinganyotherHTTPmethodthanOPTIONSincludesanoriginheader,ArangoDBwilladdthefollowingheaderstotheresponse:

access-control-allow-credentials:willbesettofalsebydefault.Fordetailsonwhenitwillbesettotrueseethenextsectiononcookies.

access-control-allow-origin:willbesettotheexactvalueoftherequest'soriginheader.

access-control-expose-headers:willbesettoalistofresponseheadersusedbytheArangoDBHTTPAPI.

WhenmakingCORSrequeststoendpointsofFoxxservices,thevalueoftheaccess-control-expose-headersheaderwillinsteadbesettoalistofresponseheadersusedintheresponseitself(butnotincludingtheaccess-control-headers).NotethatFoxxservicesmayoverridethisbehaviour.

Cookiesandauthentication

Inorderfortheclienttobeallowedtocorrectlyprovideauthenticationcredentialsorhandlecookies,ArangoDBneedstosettheaccess-control-allow-credentialsresponseheadertotrueinsteadoffalse.

ArangoDBwillautomaticallysetthisheadertotrueifthevalueoftherequest'soriginheadermatchesatrustedorigininthehttp.trusted-originconfigurationoption.TomakeArangoDBtrustacertainorigin,youcanprovideastartupoptionwhenrunningarangodlikethis:

--http.trusted-origin"http://localhost:8529"

Tospecifymultipletrustedorigins,theoptioncanbespecifiedmultipletimes.Alternativelyyoucanusethespecialvalue"*"totrustanyorigin:

--http.trusted-origin"*"

Notethatbrowserswillnotactuallyincludecredentialsorcookiesincross-originrequestsunlessexplicitlytoldtodoso:

WhenusingtheFetchAPIyouneedtosetthecredentialsoptiontoinclude.

fetch("./",{credentials:"include"}).then(/*…*/)

GeneralHTTPHandling

7

Page 8: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

WhenusingXMLHttpRequestyouneedtosetthewithCredentialsoptiontotrue.

varxhr=newXMLHttpRequest();

xhr.open('GET','https://example.com/',true);

xhr.withCredentials=true;

xhr.send(null);

WhenusingjQueryyouneedtosetthexhrFieldsoption:

$.ajax({

url:'https://example.com',

xhrFields:{

withCredentials:true

}

});

HTTPmethodoverridingArangoDBprovidesastartupoption--http.allow-method-override.ThisoptioncanbesettoallowoverridingtheHTTPrequestmethod(e.g.GET,POST,PUT,DELETE,PATCH)ofarequestusingoneofthefollowingcustomHTTPheaders:

x-http-method-overridex-http-methodx-method-override

ThisallowsusingHTTPclientsthatdonotsupportall"common"HTTPmethodssuchasPUT,PATCHandDELETE.Italsoallowsbypassingproxiesandtoolsthatwouldotherwisejustletcertaintypesofrequests(e.g.GETandPOST)passthrough.

Enablingthisoptionmayimposeasecurityrisk,soitshouldonlybeusedinverycontrolledenvironments.Thusthedefaultvalueforthisoptionisfalse(nomethodoverridingallowed).Youneedtoenableitexplicitlyifyouwanttousethisfeature.

GeneralHTTPHandling

8

Page 9: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceFollowingyouhaveArangoDB'sHTTPInterfaceforDocuments,Databases,Edgesandmore.

TherearealsosomeexamplesprovidedforeveryAPIaction.

YoumayalsousetheinteractiveSwaggerdocumentationintheArangoDBwebinterfacetoexploretheAPIcallsbelow.

HTTPInterface

9

Page 10: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforDatabases

AddressofaDatabase

AnyoperationtriggeredviaArangoDB'sHTTPRESTAPIisexecutedinthecontextofexactlyonedatabase.Toexplicitlyspecifythedatabaseinarequest,therequestURImustcontainthedatabasenameinfrontoftheactualpath:

http://localhost:8529/_db/mydb/...

where...istheactualpathtotheaccessedresource.Intheexample,theresourcewillbeaccessedinthecontextofthedatabasemydb.ActualURLsinthecontextofmydbcouldlooklikethis:

http://localhost:8529/_db/mydb/_api/version

http://localhost:8529/_db/mydb/_api/document/test/12345

http://localhost:8529/_db/mydb/myapp/get

Databases

10

Page 11: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Database-to-EndpointMappingIfadatabasenameispresentintheURIasabove,ArangoDBwillconsultthedatabase-to-endpointmappingforthecurrentendpoint,andvalidateifaccesstothedatabaseisallowedontheendpoint.Iftheendpointisnotrestrictedtoanarrayofdatabases,ArangoDBwillcontinuewiththeregularauthenticationprocedure.Iftheendpointisrestrictedtoanarrayofspecifieddatabases,ArangoDBwillcheckiftherequesteddatabaseisinthearray.Ifnot,therequestwillbeturneddowninstantly.Ifyes,thenArangoDBwillcontinuewiththeregularauthenticationprocedure.

IftherequestURIwashttp://localhost:8529/_db/mydb/...,thentherequesttomydbwillbeallowed(ordisallowed)inthefollowingsituations:

Endpoint-to-databasemappingAccessto*mydb*allowed?

-----------------------------------------------------

[]yes

["_system"]no

["_system","mydb"]yes

["mydb"]yes

["mydb","_system"]yes

["test1","test2"]no

IncasenodatabasenameisspecifiedintherequestURI,ArangoDBwillderivethedatabasenamefromtheendpoint-to-databasemappingoftheendpointtheconnectionwascominginon.

Iftheendpointisnotrestrictedtoanarrayofdatabases,ArangoDBwillassumethe_systemdatabase.Iftheendpointisrestrictedtooneormultipledatabases,ArangoDBwillassumethefirstnamefromthearray.

Followingisanoverviewofwhichdatabasenamewillbeassumedfordifferentendpoint-to-databasemappingsincasenodatabasenameisspecifiedintheURI:

Endpoint-to-databasemappingDatabase

------------------------------------

[]_system

["_system"]_system

["_system","mydb"]_system

["mydb"]mydb

["mydb","_system"]mydb

To-Endpoint

11

Page 12: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

DatabaseManagementThisisanintroductiontoArangoDB'sHTTPinterfaceformanagingdatabases.

TheHTTPinterfacefordatabasesprovidesoperationstocreateanddropindividualdatabases.ThesearemappedtothestandardHTTPmethodsPOSTandDELETE.ThereisalsotheGETmethodtoretrieveanarrayofexistingdatabases.

Pleasenotethatalldatabasemanagementoperationscanonlybeaccessedviathedefaultdatabase(_system)andnoneoftheotherdatabases.

ManagingDatabasesusingHTTP

Informationofthedatabase

retrievesinformationaboutthecurrentdatabase

GET/_api/database/current

Retrievesinformationaboutthecurrentdatabase

TheresponseisaJSONobjectwiththefollowingattributes:

name:thenameofthecurrentdatabase

id:theidofthecurrentdatabase

path:thefilesystempathofthecurrentdatabase

isSystem:whetherornotthecurrentdatabaseisthe_systemdatabase

Example:

shell>curl--dump-http://localhost:8529/_api/database/current

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200,

"result":{

"name":"_system",

"id":"1",

"path":"/tmp/arangosh_JqNjRy/tmp-26045-3007930411/data/databases/database-1",

"isSystem":true

}

}

ReturnCodes

200:isreturnediftheinformationwasretrievedsuccessfully.400:isreturnediftherequestisinvalid.404:isreturnedifthedatabasecouldnotbefound.

Examples

shell>curl--dump-http://localhost:8529/_api/database/current

HTTP/1.1200OK

content-type:application/json;charset=utf-8

Management

12

Page 13: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

x-content-type-options:nosniff

showresponsebody

Listofaccessibledatabases

retrievesalistofalldatabasesthecurrentusercanaccess

GET/_api/database/user

Retrievesthelistofalldatabasesthecurrentusercanaccesswithoutspecifyingadifferentusernameorpassword.

Example:

shell>curl--dump-http://localhost:8529/_api/database/user

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200,

"result":[

"_system"

]

}

ReturnCodes

200:isreturnedifthelistofdatabasewascompiledsuccessfully.400:isreturnediftherequestisinvalid.

Examples

shell>curl--dump-http://localhost:8529/_api/database/user

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Listofdatabases

retrievesalistofallexistingdatabases

GET/_api/database

Retrievesthelistofallexistingdatabases

Note:retrievingthelistofdatabasesisonlypossiblefromwithinthe_systemdatabase.

Note:YoushouldusetheGETuserAPItofetchthelistoftheavailabledatabasesnow.

Example:

shell>curl--dump-http://localhost:8529/_api/database

Management

13

Page 14: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200,

"result":[

"_system"

]

}

ReturnCodes

200:isreturnedifthelistofdatabasewascompiledsuccessfully.400:isreturnediftherequestisinvalid.403:isreturnediftherequestwasnotexecutedinthe_systemdatabase.

Examples

shell>curl--dump-http://localhost:8529/_api/database

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Createdatabase

createsanewdatabase

POST/_api/database

AJSONobjectwiththesepropertiesisrequired:

name:Hastocontainavaliddatabasename.users:Hastobeanarrayofuserobjectstoinitiallycreateforthenewdatabase.Userinformationwillnotbechangedforusersthatalreadyexist.Ifusersisnotspecifiedordoesnotcontainanyusers,adefaultuserrootwillbecreatedwithanemptystringpassword.Thisensuresthatthenewdatabasewillbeaccessibleafteritiscreated.Eachuserobjectcancontainthefollowingattributes:

username:Loginnameoftheusertobecreatedpasswd:Theuserpasswordasastring.Ifnotspecified,itwilldefaulttoanemptystring.active:Aflagindicatingwhethertheuseraccountshouldbeactivatedornot.Thedefaultvalueistrue.Ifsettofalse,theuserwon'tbeabletologintothedatabase.extra:AJSONobjectwithextrauserinformation.ThedatacontainedinextrawillbestoredfortheuserbutnotbeinterpretedfurtherbyArangoDB.

Createsanewdatabase

TheresponseisaJSONobjectwiththeattributeresultsettotrue.

Note:creatinganewdatabaseisonlypossiblefromwithinthe_systemdatabase.

Example:Creatingadatabasenamedexample.

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/database<<EOF

{

"name":"example"

}

Management

14

Page 15: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":201,

"result":true

}

Example:Creatingadatabasenamedmydbwithtwousers.

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/database<<EOF

{

"name":"mydb",

"users":[

{

"username":"admin",

"passwd":"secret",

"active":true

},

{

"username":"tester",

"passwd":"test001",

"active":false

}

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":201,

"result":true

}

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/database<<EOF

{

"name":"example"

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyCreatingadatabasenamedmydbwithtwousers.

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/database<<EOF

{

"name":"mydb",

"users":[

{

Management

15

Page 16: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"username":"admin",

"passwd":"secret",

"active":true

},

{

"username":"tester",

"passwd":"test001",

"active":false

}

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Dropdatabase

dropanexistingdatabase

DELETE/_api/database/{database-name}

PathParameters

database-name(required):Thenameofthedatabase

Dropsthedatabasealongwithalldatastoredinit.

Note:droppingadatabaseisonlypossiblefromwithinthe_systemdatabase.The_systemdatabaseitselfcannotbedropped.

Example:

shell>curl-XDELETE--dump-http://localhost:8529/_api/database/example

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200,

"result":true

}

ReturnCodes

200:isreturnedifthedatabasewasdroppedsuccessfully.400:isreturnediftherequestismalformed.403:isreturnediftherequestwasnotexecutedinthe_systemdatabase.404:isreturnedifthedatabasecouldnotbefound.

Examples

shell>curl-XDELETE--dump-http://localhost:8529/_api/database/example

HTTP/1.1200OK

content-type:application/json;charset=utf-8

Management

16

Page 17: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

x-content-type-options:nosniff

showresponsebody

Management

17

Page 18: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

NotesonDatabasesPleasekeepinmindthateachdatabasecontainsitsownsystemcollections,whichneedtosetupwhenadatabaseiscreated.Thiswillmakethecreationofadatabasetakeawhile.Replicationisconfiguredonaper-databaselevel,meaningthatanyreplicationloggingorapplyingfortheanewdatabasemustbeconfiguredexplicitlyafteranewdatabasehasbeencreated.Foxxapplicationsarealsoavailableonlyinthecontextofthedatabasetheyhavebeeninstalledin.AnewdatabasewillonlyprovideaccesstothesystemapplicationsshippedwithArangoDB(thatisthewebinterfaceatthemoment)andnootherFoxxapplicationsuntiltheyareexplicitlyinstalledfortheparticulardatabase.

Database

ArangoDBcanhandlemultipledatabasesinthesameserverinstance.Databasescanbeusedtologicallygroupandseparatedata.AnArangoDBdatabaseconsistsofcollectionsanddedicateddatabase-specificworkerprocesses.Adatabasecontainsitsowncollections(whichcannotbeaccessedfromotherdatabases),Foxxapplicationsandreplicationloggersandappliers.EachArangoDBdatabasecontainsitsownsystemcollections(e.g._users,_graphs,...).

TherewillalwaysbeatleastonedatabaseinArangoDB.Thisisthedefaultdatabasenamed_system.Thisdatabasecannotbedroppedandprovidesspecialoperationsforcreating,droppingandenumeratingdatabases.Userscancreateadditionaldatabasesandgivethemuniquenamestoaccessthemlater.Databasemanagementoperationscannotbeinitiatedfromoutofuser-defineddatabases.

WhenArangoDBisaccessedviaitsHTTPRESTAPI,thedatabasenameisreadfromthefirstpartoftherequestURIpath(e.g./_db/_system/...).IftherequestURIdoesnotcontainadatabasename,thedatabasenameisautomaticallydeterminedbythealgorithmdescribedinDatabase-to-EndpointMapping.

DatabaseName

AsingleArangoDBinstancecanhandlemultipledatabasesinparallel.Whenmultipledatabasesareused,eachdatabasemustbegivenanuniquename.Thisnameisusedtouniquelyidentifyadatabase.ThedefaultdatabaseinArangoDBisnamedsystem.Thedatabasenameisastringconsistingofonlyletters,digitsandthe(underscore)and-(dash)characters.User-defineddatabasenamesmustalwaysstartwithaletter.Databasenamesarecase-sensitive.

DatabaseOrganization

AsingleArangoDBinstancecanhandlemultipledatabasesinparallel.Bydefault,therewillbeatleastonedatabasewhichisnamed_system.Databasesarephysicallystoredinseparatesub-directoriesunderneaththedatabasedirectory,whichitselfresidesintheinstance'sdatadirectory.

Eachdatabasehasitsownsub-directory,nameddatabase-.Thedatabasedirectorycontainssub-directoriesforthecollectionsofthedatabase,andafilenamedparameter.json.Thisfilecontainsthedatabaseidandname.

InanexampleArangoDBinstancewhichhastwodatabases,thefilesystemlayoutcouldlooklikethis:

data/#theinstance'sdatadirectory

databases/#sub-directorycontainingalldatabases'data

database-<id>/#sub-directoryforasingledatabase

parameter.json#filecontainingdatabaseidandname

collection-<id>/#directorycontainingdataaboutacollection

database-<id>/#sub-directoryforanotherdatabase

parameter.json#filecontainingdatabaseidandname

collection-<id>/#directorycontainingdataaboutacollection

collection-<id>/#directorycontainingdataaboutacollection

Foxxapplicationsarealsoorganizedindatabase-specificdirectoriesinsidetheapplicationpath.Thefilesystemlayoutcouldlooklikethis:

apps/#theinstance'sapplicationdirectory

system/#systemapplications(canbeignored)

databases/#sub-directorycontainingdatabase-specificapplications

<database-name>/#sub-directoryforasingledatabase

<app-name>#sub-directoryforasingleapplication

NotesonDatabases

18

Page 19: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

<app-name>#sub-directoryforasingleapplication

<database-name>/#sub-directoryforanotherdatabase

<app-name>#sub-directoryforasingleapplication

`

NotesonDatabases

19

Page 20: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforCollections

Collections

ThisisanintroductiontoArangoDB'sHTTPinterfaceforcollections.

Collection

Acollectionconsistsofdocuments.Itisuniquelyidentifiedbyitscollectionidentifier.Italsohasauniquenamethatclientsshouldusetoidentifyandaccessit.Collectionscanberenamed.Thiswillchangethecollectionname,butnotthecollectionidentifier.Collectionshaveatypethatisspecifiedbytheuserwhenthecollectioniscreated.Therearecurrentlytwotypes:documentandedge.Thedefaulttypeisdocument.

CollectionIdentifier

Acollectionidentifierletsyourefertoacollectioninadatabase.Itisastringvalueandisuniquewithinthedatabase.UptoincludingArangoDB1.1,thecollectionidentifierhasbeenaclient'sprimarymeanstoaccesscollections.StartingwithArangoDB1.2,clientsshouldinsteaduseacollection'suniquenametoaccessacollectioninsteadofitsidentifier.ArangoDBcurrentlyuses64bitunsignedintegervaluestomaintaincollectionidsinternally.Whenreturningcollectionidstoclients,ArangoDBwillputthemintoastringtoensurethecollectionidisnotclippedbyclientsthatdonotsupportbigintegers.ClientsshouldtreatthecollectionidsreturnedbyArangoDBasopaquestringswhentheystoreoruseitlocally.

Note:collectionidshavebeenreturnedasintegersuptoincludingArangoDB1.1

CollectionName

Acollectionnameidentifiesacollectioninadatabase.Itisastringandisuniquewithinthedatabase.Unlikethecollectionidentifieritissuppliedbythecreatorofthecollection.Thecollectionnamemustconsistofletters,digits,andthe_(underscore)and-(dash)charactersonly.PleaserefertoNamingConventionsinArangoDBformoreinformationonvalidcollectionnames.

KeyGenerator

ArangoDBallowsusingkeygeneratorsforeachcollection.Keygeneratorshavethepurposeofauto-generatingvaluesforthe_keyattributeofadocumentifnonewasspecifiedbytheuser.Bydefault,ArangoDBwillusethetraditionalkeygenerator.Thetraditionalkeygeneratorwillauto-generatekeyvaluesthatarestringswithever-increasingnumbers.Theincrementvaluesitusesarenon-deterministic.

Contrary,theautoincrementkeygeneratorwillauto-generatedeterministickeyvalues.Boththestartvalueandtheincrementvaluecanbedefinedwhenthecollectioniscreated.Thedefaultstartvalueis0andthedefaultincrementis1,meaningthekeyvaluesitwillcreatebydefaultare:

1,2,3,4,5,...

Whencreatingacollectionwiththeautoincrementkeygeneratorandanincrementof5,thegeneratedkeyswouldbe:

1,6,11,16,21,...

Theauto-incrementvaluesareincreasedandhandedoutoneachdocumentinsertattempt.Evenifaninsertfails,theauto-incrementvalueisneverrolledback.Thatmeanstheremayexistgapsinthesequenceofassignedauto-incrementvaluesifinsertsfails.

Thebasicoperations(create,read,update,delete)fordocumentsaremappedtothestandardHTTPmethods(POST,GET,PUT,DELETE).

AddressofaCollection

AllcollectionsinArangoDBhaveanuniqueidentifierandauniquename.ArangoDBinternallyusesthecollection'suniqueidentifiertolookupcollections.ThisidentifierhoweverismanagedbyArangoDBandtheuserhasnocontroloverit.Inordertoallowusersusetheirownnames,eachcollectionalsohasauniquename,whichisspecifiedbytheuser.Toaccessacollectionfromtheuserperspective,the

Collections

20

Page 21: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

collectionnameshouldbeused,i.e.:

http://server:port/_api/collection/collection-name

Forexample:Assumethatthecollectionidentifieris7254820andthecollectionnameisdemo,thentheURLofthatcollectionis:

http://localhost:8529/_api/collection/demo

Collections

21

Page 22: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

CreatingandDeletingCollections

Createcollection

createsacollection

POST/_api/collection

AJSONobjectwiththesepropertiesisrequired:

journalSize:Themaximalsizeofajournalordatafileinbytes.Thevaluemustbeatleast1048576(1MiB).(Thedefaultisaconfigurationparameter)ThisoptionismeaningfulfortheMMFilesstorageengineonly.replicationFactor:(Thedefaultis1):inacluster,thisattributedetermineshowmanycopiesofeachshardarekeptondifferentDBServers.Thevalue1meansthatonlyonecopy(nosynchronousreplication)iskept.Avalueofkmeansthatk-1replicasarekept.AnytwocopiesresideondifferentDBServers.Replicationbetweenthemissynchronous,thatis,everywriteoperationtothe"leader"copywillbereplicatedtoall"follower"replicas,beforethewriteoperationisreportedsuccessful.Ifaserverfails,thisisdetectedautomaticallyandoneoftheserversholdingcopiestakeover,usuallywithoutanerrorbeingreported.keyOptions:

allowUserKeys:ifsettotrue,thenitisallowedtosupplyownkeyvaluesinthe_keyattributeofadocument.Ifsettofalse,thenthekeygeneratorwillsolelyberesponsibleforgeneratingkeysandsupplyingownkeyvaluesinthe_keyattributeofdocumentsisconsideredanerror.type:specifiesthetypeofthekeygenerator.Thecurrentlyavailablegeneratorsaretraditionalandautoincrement.increment:incrementvalueforautoincrementkeygenerator.Notusedforotherkeygeneratortypes.offset:Initialoffsetvalueforautoincrementkeygenerator.Notusedforotherkeygeneratortypes.

name:Thenameofthecollection.waitForSync:Iftruethenthedataissynchronizedtodiskbeforereturningfromadocumentcreate,update,replaceorremovaloperation.(default:false)doCompact:whetherornotthecollectionwillbecompacted(defaultistrue)ThisoptionismeaningfulfortheMMFilesstorageengineonly.isVolatile:Iftruethenthecollectiondataiskeptin-memoryonlyandnotmadepersistent.Unloadingthecollectionwillcausethecollectiondatatobediscarded.Stoppingorre-startingtheserverwillalsocausefulllossofdatainthecollection.SettingthisoptionwillmaketheresultingcollectionbeslightlyfasterthanregularcollectionsbecauseArangoDBdoesnotenforceanysynchronizationtodiskanddoesnotcalculateanyCRCchecksumsfordatafiles(astherearenodatafiles).Thisoptionshouldthereforebeusedforcache-typecollectionsonly,andnotfordatathatcannotbere-createdotherwise.(Thedefaultisfalse)ThisoptionismeaningfulfortheMMFilesstorageengineonly.shardKeys:(Thedefaultis["_key"]):inacluster,thisattributedetermineswhichdocumentattributesareusedtodeterminethetargetshardfordocuments.Documentsaresenttoshardsbasedonthevaluesoftheirshardkeyattributes.Thevaluesofallshardkeyattributesinadocumentarehashed,andthehashvalueisusedtodeterminethetargetshard.Note:Valuesofshardkeyattributescannotbechangedonceset.Thisoptionismeaninglessinasingleserversetup.numberOfShards:(Thedefaultis1):inacluster,thisvaluedeterminesthenumberofshardstocreateforthecollection.Inasingleserversetup,thisoptionismeaningless.isSystem:Iftrue,createasystemcollection.Inthiscasecollection-nameshouldstartwithanunderscore.Endusersshouldnormallycreatenon-systemcollectionsonly.APIimplementorsmayberequiredtocreatesystemcollectionsinveryspecialoccasions,butnormallyaregularcollectionwilldo.(Thedefaultisfalse)type:(Thedefaultis2):thetypeofthecollectiontocreate.Thefollowingvaluesfortypearevalid:

2:documentcollection3:edgescollection

indexBuckets:Thenumberofbucketsintowhichindexesusingahashtablearesplit.Thedefaultis16andthisnumberhastobeapowerof2andlessthanorequalto1024.Forverylargecollectionsoneshouldincreasethistoavoidlongpauseswhenthehashtablehastobeinitiallybuiltorresized,sincebucketsareresizedindividuallyandcanbeinitiallybuiltinparallel.Forexample,64mightbeasensiblevalueforacollectionwith100000000documents.Currently,onlytheedgeindexrespectsthisvalue,butotherindextypesmightfollowinfutureArangoDBversions.Changes(seebelow)areappliedwhenthecollectionisloadedthenexttime.ThisoptionismeaningfulfortheMMFilesstorageengineonly.distributeShardsLike:(Thedefaultis""):inanenterprisecluster,thisattributebindsthespecificsofshardingforthenewlycreatedcollectiontofollowthatofaspecifiedexistingcollection.Note:Usingthisparameterhasconsequencesfortheprototypecollection.Itcannolongerbedropped,beforeshardingimitatingcollectionsaredropped.Equally,backupsandrestoresofimitating

Creating

22

Page 23: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

collectionsalonewillgeneratewarnings,whichcanbeoverridden,aboutmissingshardingprototype.

Createsanewcollectionwithagivenname.Therequestmustcontainanobjectwiththefollowingattributes.

Example:

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/collection<<EOF

{

"name":"testCollectionBasics"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"code":200,

"error":false,

"status":3,

"statusString":"loaded",

"name":"testCollectionBasics",

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"type":2,

"indexBuckets":8,

"globallyUniqueId":"h68719E5AC6E7/9999",

"doCompact":true,

"waitForSync":false,

"id":"9999",

"isSystem":false,

"journalSize":33554432,

"isVolatile":false

}

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/collection<<EOF

{

"name":"testCollectionEdges",

"type":3

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"code":200,

"error":false,

"status":3,

"statusString":"loaded",

"name":"testCollectionEdges",

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"type":3,

"indexBuckets":8,

"globallyUniqueId":"h68719E5AC6E7/10002",

"doCompact":true,

"waitForSync":false,

"id":"10002",

"isSystem":false,

"journalSize":33554432,

"isVolatile":false

}

Creating

23

Page 24: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Example:

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/collection<<EOF

{

"name":"testCollectionUsers",

"keyOptions":{

"type":"autoincrement",

"increment":5,

"allowUserKeys":true

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"code":200,

"error":false,

"status":3,

"statusString":"loaded",

"name":"testCollectionUsers",

"keyOptions":{

"type":"autoincrement",

"allowUserKeys":true,

"offset":0,

"increment":5,

"lastValue":0

},

"type":2,

"indexBuckets":8,

"globallyUniqueId":"h68719E5AC6E7/10013",

"doCompact":true,

"waitForSync":false,

"id":"10013",

"isSystem":false,

"journalSize":33554432,

"isVolatile":false

}

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/collection<<EOF

{

"name":"testCollectionBasics"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/collection<<EOF

{

"name":"testCollectionUsers",

"keyOptions":{

"type":"autoincrement",

"increment":5,

"allowUserKeys":true

}

}

EOF

Creating

24

Page 25: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Dropsacollection

dropsacollection

DELETE/_api/collection/{collection-name}

PathParameters

collection-name(required):Thenameofthecollectiontodrop.

QueryParameters

isSystem(optional):Whetherornotthecollectiontodropisasystemcollection.Thisparametermustbesettotrueinordertodropasystemcollection.

Dropsthecollectionidentifiedbycollection-name.

Ifthecollectionwassuccessfullydropped,anobjectisreturnedwiththefollowingattributes:

error:false

id:Theidentifierofthedroppedcollection.

Example:Usinganidentifier:

shell>curl-XDELETE--dump-http://localhost:8529/_api/collection/10020

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"code":200,

"error":false,

"id":"10020"

}

Example:Usinganame:

shell>curl-XDELETE--dump-http://localhost:8529/_api/collection/products1

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"code":200,

"error":false,

"id":"10027"

}

Creating

25

Page 26: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Example:Droppingasystemcollection

shell>curl-XDELETE--dump-http://localhost:8529/_api/collection/_example?isSystem=true

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"code":200,

"error":false,

"id":"10034"

}

ReturnCodes

400:Ifthecollection-nameismissing,thenaHTTP400isreturned.404:Ifthecollection-nameisunknown,thenaHTTP404isreturned.

Examples

Usinganidentifier:

shell>curl-XDELETE--dump-http://localhost:8529/_api/collection/10020

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyUsinganame:

shell>curl-XDELETE--dump-http://localhost:8529/_api/collection/products1

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyDroppingasystemcollection

shell>curl-XDELETE--dump-http://localhost:8529/_api/collection/_example?

isSystem=true

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Truncatecollection

truncatesacollection

Creating

26

Page 27: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

PUT/_api/collection/{collection-name}/truncate

PathParameters

collection-name(required):Thenameofthecollection.

Removesalldocumentsfromthecollection,butleavestheindexesintact.

Example:

shell>curl-XPUT--dump-http://localhost:8529/_api/collection/products/truncate

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/truncate

{

"code":200,

"error":false,

"status":3,

"name":"products",

"type":2,

"globallyUniqueId":"h68719E5AC6E7/10462",

"isSystem":false,

"id":"10462"

}

ReturnCodes

400:Ifthecollection-nameismissing,thenaHTTP400isreturned.404:Ifthecollection-nameisunknown,thenaHTTP404isreturned.

Examples

shell>curl-XPUT--dump-http://localhost:8529/_api/collection/products/truncate

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/truncate

showresponsebody

Creating

27

Page 28: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

GettingInformationaboutaCollection

Returninformationaboutacollection

returnsacollection

GET/_api/collection/{collection-name}

PathParameters

collection-name(required):Thenameofthecollection.

Theresultisanobjectdescribingthecollectionwiththefollowingattributes:

id:Theidentifierofthecollection.

name:Thenameofthecollection.

status:Thestatusofthecollectionasnumber.

1:newborncollection2:unloaded3:loaded4:intheprocessofbeingunloaded5:deleted6:loading

Everyotherstatusindicatesacorruptedcollection.

type:Thetypeofthecollectionasnumber.

2:documentcollection(normalcase)3:edgescollection

isSystem:Iftruethenthecollectionisasystemcollection.

ReturnCodes

404:Ifthecollection-nameisunknown,thenaHTTP404isreturned.

Readpropertiesofacollection

readsthepropertiesofthespecifiedcollection

GET/_api/collection/{collection-name}/properties

PathParameters

collection-name(required):Thenameofthecollection.

Inadditiontotheabove,theresultwillalwayscontainthewaitForSyncattribute,andthedoCompact,journalSize,andisVolatileattributesfortheMMFilesstorageengine.Thisisachievedbyforcingaloadoftheunderlyingcollection.

waitForSync:Iftruethencreating,changingorremovingdocumentswillwaituntilthedatahasbeensynchronizedtodisk.

doCompact:Whetherornotthecollectionwillbecompacted.ThisoptionisonlypresentfortheMMFilesstorageengine.

journalSize:Themaximalsizesettingforjournals/datafilesinbytes.ThisoptionisonlypresentfortheMMFilesstorageengine.

keyOptions:JSONobjectwhichcontainskeygenerationoptions:

type:specifiesthetypeofthekeygenerator.Thecurrentlyavailablegeneratorsaretraditionalandautoincrement.allowUserKeys:ifsettotrue,thenitisallowedtosupplyownkeyvaluesinthe_keyattributeofadocument.Ifsettofalse,thenthekeygeneratorissolelyresponsibleforgeneratingkeysandsupplyingownkeyvaluesinthe_keyattributeofdocumentsisconsideredanerror.

isVolatile:IftruethenthecollectiondatawillbekeptinmemoryonlyandArangoDBwillnotwriteorsyncthedatatodisk.ThisoptionisonlypresentfortheMMFilesstorageengine.

GettingInformation

28

Page 29: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Inaclustersetup,theresultwillalsocontainthefollowingattributes:

numberOfShards:thenumberofshardsofthecollection.

shardKeys:containsthenamesofdocumentattributesthatareusedtodeterminethetargetshardfordocuments.

replicationFactor:containshowmanycopiesofeachshardarekeptondifferentDBServers.

Example:Usinganidentifier:

shell>curl--dump-http://localhost:8529/_api/collection/10401/properties

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/10401/properties

{

"code":200,

"error":false,

"status":3,

"statusString":"loaded",

"name":"products",

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"type":2,

"indexBuckets":8,

"globallyUniqueId":"h68719E5AC6E7/10401",

"doCompact":true,

"waitForSync":true,

"id":"10401",

"isSystem":false,

"journalSize":33554432,

"isVolatile":false

}

Example:Usinganame:

shell>curl--dump-http://localhost:8529/_api/collection/products/properties

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/properties

{

"code":200,

"error":false,

"status":3,

"statusString":"loaded",

"name":"products",

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"type":2,

"indexBuckets":8,

"globallyUniqueId":"h68719E5AC6E7/10409",

"doCompact":true,

"waitForSync":true,

"id":"10409",

GettingInformation

29

Page 30: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"isSystem":false,

"journalSize":33554432,

"isVolatile":false

}

ReturnCodes

400:Ifthecollection-nameismissing,thenaHTTP400isreturned.404:Ifthecollection-nameisunknown,thenaHTTP404isreturned.

Examples

Usinganidentifier:

shell>curl--dump-http://localhost:8529/_api/collection/10401/properties

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/10401/properties

showresponsebodyUsinganame:

shell>curl--dump-http://localhost:8529/_api/collection/products/properties

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/properties

showresponsebody

Returnnumberofdocumentsinacollection

Countsthedocumentsinacollection

GET/_api/collection/{collection-name}/count

PathParameters

collection-name(required):Thenameofthecollection.

Inadditiontotheabove,theresultalsocontainsthenumberofdocuments.Notethatthiswillalwaysloadthecollectionintomemory.

count:Thenumberofdocumentsinsidethecollection.

Example:Requestingthenumberofdocuments:

shell>curl--dump-http://localhost:8529/_api/collection/products/count

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/count

{

"code":200,

GettingInformation

30

Page 31: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"error":false,

"statusString":"loaded",

"name":"products",

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":10367

},

"journalSize":33554432,

"isVolatile":false,

"status":3,

"count":100,

"doCompact":true,

"globallyUniqueId":"h68719E5AC6E7/10065",

"type":2,

"indexBuckets":8,

"waitForSync":true,

"id":"10065",

"isSystem":false

}

ReturnCodes

400:Ifthecollection-nameismissing,thenaHTTP400isreturned.404:Ifthecollection-nameisunknown,thenaHTTP404isreturned.

Examples

Requestingthenumberofdocuments:

shell>curl--dump-http://localhost:8529/_api/collection/products/count

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/count

showresponsebody

Returnstatisticsforacollection

Fetchthestatisticsofacollection

GET/_api/collection/{collection-name}/figures

PathParameters

collection-name(required):Thenameofthecollection.

Inadditiontotheabove,theresultalsocontainsthenumberofdocumentsandadditionalstatisticalinformationaboutthecollection.Note:Thiswillalwaysloadthecollectionintomemory.

Note:collectiondatathatarestoredinthewrite-aheadlogonlyarenotreportedintheresults.Whenthewrite-aheadlogiscollected,documentsmightbeaddedtojournalsanddatafilesofthecollection,whichmaymodifythefiguresofthecollection.

Additionally,thefilesizesofcollectionandindexparameterJSONfilesarenotreported.Thesefilesshouldnormallyhaveasizeofafewbyteseach.PleasealsonotethatthefileSizevaluesarereportedinbytesandreflectthelogicalfilesizes.Somefilesystemsmayuseoptimisations(e.g.sparsefiles)sothattheactualphysicalfilesizeissomewhatdifferent.Directoriesandsub-directoriesmayalsorequirespaceinthefilesystem,butthisspaceisnotreportedinthefileSizeresults.

Thatmeansthatthefiguresreporteddonotreflecttheactualdiskusageofthecollectionwith100%accuracy.TheactualdiskusageofacollectionisnormallyslightlyhigherthanthesumofthereportedfileSizevalues.StillthesumofthefileSizevaluescanstillbeusedasalowerboundapproximationofthediskusage.

AjsondocumentwiththesePropertiesisreturned:

GettingInformation

31

Page 32: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP200

Returnsinformationaboutthecollection:

count:Thenumberofdocumentscurrentlypresentinthecollection.journalSize:Themaximalsizeofajournalordatafileinbytes.figures:

datafiles:count:Thenumberofdatafiles.fileSize:Thetotalfilesizeofdatafiles(inbytes).

uncollectedLogfileEntries:Thenumberofmarkersinthewrite-aheadlogforthiscollectionthathavenotbeentransferredtojournalsordatafiles.documentReferences:ThenumberofreferencestodocumentsindatafilesthatJavaScriptcodecurrentlyholds.Thisinformationcanbeusedfordebuggingcompactionandunloadissues.compactionStatus:

message:Theactionthatwasperformedwhenthecompactionwaslastrunforthecollection.Thisinformationcanbeusedfordebuggingcompactionissues.time:Thepointintimethecompactionforthecollectionwaslastexecuted.Thisinformationcanbeusedfordebuggingcompactionissues.

compactors:count:Thenumberofcompactorfiles.fileSize:Thetotalfilesizeofallcompactorfiles(inbytes).

dead:count:Thenumberofdeaddocuments.Thisincludesdocumentversionsthathavebeendeletedorreplacedbyanewerversion.Documentsdeletedorreplacedthatarecontainedthewrite-aheadlogonlyarenotreportedinthisfigure.deletion:Thetotalnumberofdeletionmarkers.Deletionmarkersonlycontainedinthewrite-aheadlogarenotreportinginthisfigure.size:Thetotalsizeinbytesusedbyalldeaddocuments.

indexes:count:Thetotalnumberofindexesdefinedforthecollection,includingthepre-definedindexes(e.g.primaryindex).size:Thetotalmemoryallocatedforindexesinbytes.

readcache:count:Thenumberofrevisionsofthiscollectionstoredinthedocumentrevisionscache.size:Thememoryusedforstoringtherevisionsofthiscollectioninthedocumentrevisionscache(inbytes).Thisfiguredoesnotincludethedocumentdatabutonlymappingsfromdocumentrevisionidstocacheentrylocations.

waitingFor:Anoptionalstringvaluethatcontainsinformationaboutwhichobjecttypeisattheheadofthecollection'scleanupqueue.Thisinformationcanbeusedfordebuggingcompactionandunloadissues.alive:

count:Thenumberofcurrentlyactivedocumentsinalldatafilesandjournalsofthecollection.Documentsthatarecontainedinthewrite-aheadlogonlyarenotreportedinthisfigure.size:Thetotalsizeinbytesusedbyallactivedocumentsofthecollection.Documentsthatarecontainedinthewrite-aheadlogonlyarenotreportedinthisfigure.

lastTick:Thetickofthelastmarkerthatwasstoredinajournalofthecollection.Thismightbe0ifthecollectiondoesnotyethaveajournal.journals:

count:Thenumberofjournalfiles.fileSize:Thetotalfilesizeofalljournalfiles(inbytes).

revisions:count:Thenumberofrevisionsofthiscollectionmanagedbythestorageengine.size:Thememoryusedforstoringtherevisionsofthiscollectioninthestorageengine(inbytes).Thisfiguredoesnotincludethedocumentdatabutonlymappingsfromdocumentrevisionidstostorageenginedatafilepositions.

Example:Usinganidentifierandrequestingthefiguresofthecollection:

GettingInformation

32

Page 33: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

shell>curl--dump-http://localhost:8529/_api/collection/products/figures

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/figures

{

"code":200,

"error":false,

"statusString":"loaded",

"name":"products",

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":10379

},

"journalSize":33554432,

"isVolatile":false,

"isSystem":false,

"status":3,

"count":1,

"figures":{

"indexes":{

"count":1,

"size":32128

},

"documentReferences":0,

"waitingFor":"-",

"alive":{

"count":1,

"size":72

},

"dead":{

"count":0,

"size":0,

"deletion":0

},

"compactionStatus":{

"message":"skippedcompactionbecausecollectionhasnodatafiles",

"time":"2018-01-25T19:13:38Z",

"count":0,

"filesCombined":0,

"bytesRead":0,

"bytesWritten":0

},

"datafiles":{

"count":0,

"fileSize":0

},

"journals":{

"count":1,

"fileSize":33554432

},

"compactors":{

"count":0,

"fileSize":0

},

"revisions":{

"count":1,

"size":48192

},

"lastTick":10381,

"uncollectedLogfileEntries":0

},

"doCompact":true,

"globallyUniqueId":"h68719E5AC6E7/10375",

"type":2,

"indexBuckets":8,

"waitForSync":false,

"id":"10375"

}

ReturnCodes

GettingInformation

33

Page 34: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

200:Returnsinformationaboutthecollection:

ResponseBody

count:Thenumberofdocumentscurrentlypresentinthecollection.journalSize:Themaximalsizeofajournalordatafileinbytes.figures:

datafiles:count:Thenumberofdatafiles.fileSize:Thetotalfilesizeofdatafiles(inbytes).uncollectedLogfileEntries:Thenumberofmarkersinthewrite-aheadlogforthiscollectionthathavenotbeentransferredtojournalsordatafiles.lastTick:Thetickofthelastmarkerthatwasstoredinajournalofthecollection.Thismightbe0ifthecollectiondoesnotyethaveajournal.compactionStatus:message:Theactionthatwasperformedwhenthecompactionwaslastrunforthecollection.Thisinformationcanbeusedfordebuggingcompactionissues.time:Thepointintimethecompactionforthecollectionwaslastexecuted.Thisinformationcanbeusedfordebuggingcompactionissues.dead:count:Thenumberofdeaddocuments.Thisincludesdocumentversionsthathavebeendeletedorreplacedbyanewerversion.Documentsdeletedorreplacedthatarecontainedthewrite-aheadlogonlyarenotreportedinthisfigure.deletion:Thetotalnumberofdeletionmarkers.Deletionmarkersonlycontainedinthewrite-aheadlogarenotreportinginthisfigure.size:Thetotalsizeinbytesusedbyalldeaddocuments.compactors:count:Thenumberofcompactorfiles.fileSize:Thetotalfilesizeofallcompactorfiles(inbytes).readcache:count:Thenumberofrevisionsofthiscollectionstoredinthedocumentrevisionscache.size:Thememoryusedforstoringtherevisionsofthiscollectioninthedocumentrevisionscache(inbytes).Thisfiguredoesnotincludethedocumentdatabutonlymappingsfromdocumentrevisionidstocacheentrylocations.waitingFor:Anoptionalstringvaluethatcontainsinformationaboutwhichobjecttypeisattheheadofthecollection'scleanupqueue.Thisinformationcanbeusedfordebuggingcompactionandunloadissues.alive:count:Thenumberofcurrentlyactivedocumentsinalldatafilesandjournalsofthecollection.Documentsthatarecontainedinthewrite-aheadlogonlyarenotreportedinthisfigure.size:Thetotalsizeinbytesusedbyallactivedocumentsofthecollection.Documentsthatarecontainedinthewrite-aheadlogonlyarenotreportedinthisfigure.documentReferences:ThenumberofreferencestodocumentsindatafilesthatJavaScriptcodecurrentlyholds.Thisinformationcanbeusedfordebuggingcompactionandunloadissues.indexes:count:Thetotalnumberofindexesdefinedforthecollection,includingthepre-definedindexes(e.g.primaryindex).size:Thetotalmemoryallocatedforindexesinbytes.journals:count:Thenumberofjournalfiles.fileSize:Thetotalfilesizeofalljournalfiles(inbytes).revisions:count:Thenumberofrevisionsofthiscollectionmanagedbythestorageengine.size:Thememoryusedforstoringtherevisionsofthiscollectioninthestorageengine(inbytes).Thisfiguredoesnotincludethedocumentdatabutonlymappingsfromdocumentrevisionidstostorageenginedatafilepositions.

shell>curl--dump-http://localhost:8529/_api/collection/products/figures

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

GettingInformation

34

Page 35: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

location:/_api/collection/products/figures

showresponsebody

Returncollectionrevisionid

Retrievethecollectionsrevisionid

GET/_api/collection/{collection-name}/revision

PathParameters

collection-name(required):Thenameofthecollection.

Inadditiontotheabove,theresultwillalsocontainthecollection'srevisionid.Therevisionidisaserver-generatedstringthatclientscanusetocheckwhetherdatainacollectionhaschangedsincethelastrevisioncheck.

revision:Thecollectionrevisionidasastring.

Example:Retrievingtherevisionofacollection

shell>curl--dump-http://localhost:8529/_api/collection/products/revision

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/revision

{

"code":200,

"error":false,

"journalSize":33554432,

"isVolatile":false,

"isSystem":false,

"waitForSync":false,

"id":"10417",

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"revision":"0",

"indexBuckets":8,

"type":2,

"statusString":"loaded",

"name":"products",

"globallyUniqueId":"h68719E5AC6E7/10417",

"doCompact":true,

"status":3

}

ReturnCodes

400:Ifthecollection-nameismissing,thenaHTTP400isreturned.404:Ifthecollection-nameisunknown,thenaHTTP404isreturned.

Examples

Retrievingtherevisionofacollection

shell>curl--dump-http://localhost:8529/_api/collection/products/revision

HTTP/1.1200OK

GettingInformation

35

Page 36: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/revision

showresponsebody

Returnchecksumforthecollection

returnsachecksumforthespecifiedcollection

GET/_api/collection/{collection-name}/checksum

PathParameters

collection-name(required):Thenameofthecollection.

QueryParameters

withRevisions(optional):Whetherornottoincludedocumentrevisionidsinthechecksumcalculation.withData(optional):Whetherornottoincludedocumentbodydatainthechecksumcalculation.

Willcalculateachecksumofthemeta-data(keysandoptionallyrevisionids)andoptionallythedocumentdatainthecollection.

ThechecksumcanbeusedtocompareiftwocollectionsondifferentArangoDBinstancescontainthesamecontents.Thecurrentrevisionofthecollectionisreturnedtoosoonecanmakesurethechecksumsarecalculatedforthesamestateofdata.

Bydefault,thechecksumwillonlybecalculatedonthe_keysystemattributeofthedocumentscontainedinthecollection.Foredgecollections,thesystemattributes_fromand_towillalsobeincludedinthecalculation.

BysettingtheoptionalqueryparameterwithRevisionstotrue,thenrevisionids(_revsystemattributes)areincludedinthechecksumming.

ByprovidingtheoptionalqueryparameterwithDatawithavalueoftrue,theuser-defineddocumentattributeswillbeincludedinthecalculationtoo.Note:Includinguser-definedattributeswillmakethechecksummingslower.

TheresponseisaJSONobjectwiththefollowingattributes:

checksum:Thecalculatedchecksumasanumber.

revision:Thecollectionrevisionidasastring.

Note:thismethodisnotavailableinacluster.

Example:Retrievingthechecksumofacollection:

shell>curl--dump-http://localhost:8529/_api/collection/products/checksum

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/checksum

{

"code":200,

"error":false,

"globallyUniqueId":"h68719E5AC6E7/10041",

"isSystem":false,

"revision":"_WQ47VrK--_",

"type":2,

"checksum":"10263933996432733528",

"id":"10041",

"name":"products",

"status":3

}

GettingInformation

36

Page 37: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Example:Retrievingthechecksumofacollectionincludingthecollectiondata,butnottherevisions:

shell>curl--dump-http://localhost:8529/_api/collection/products/checksum?withRevisions=false&withData=true

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/checksum

{

"code":200,

"error":false,

"globallyUniqueId":"h68719E5AC6E7/10053",

"isSystem":false,

"revision":"_WQ47VsK--_",

"type":2,

"checksum":"9794134053781729250",

"id":"10053",

"name":"products",

"status":3

}

ReturnCodes

400:Ifthecollection-nameismissing,thenaHTTP400isreturned.404:Ifthecollection-nameisunknown,thenaHTTP404isreturned.

Examples

Retrievingthechecksumofacollection:

shell>curl--dump-http://localhost:8529/_api/collection/products/checksum

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/checksum

showresponsebodyRetrievingthechecksumofacollectionincludingthecollectiondata,butnottherevisions:

shell>curl--dump-http://localhost:8529/_api/collection/products/checksum?

withRevisions=false&withData=true

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/checksum

showresponsebody

readsallcollections

returnsallcollections

GET/_api/collection

GettingInformation

37

Page 38: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

QueryParameters

excludeSystem(optional):Whetherornotsystemcollectionsshouldbeexcludedfromtheresult.

Returnsanobjectwithanattributecollectionscontaininganarrayofallcollectiondescriptions.Thesameinformationisalsoavailableinthenamesasanobjectwiththecollectionnamesaskeys.

ByprovidingtheoptionalqueryparameterexcludeSystemwithavalueoftrue,allsystemcollectionswillbeexcludedfromtheresponse.

Example:Returninformationaboutallcollections:

shell>curl--dump-http://localhost:8529/_api/collection

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200,

"result":[

{

"id":"28",

"name":"_statisticsRaw",

"status":3,

"type":2,

"isSystem":true,

"globallyUniqueId":"_statisticsRaw"

},

{

"id":"11",

"name":"_modules",

"status":3,

"type":2,

"isSystem":true,

"globallyUniqueId":"_modules"

},

{

"id":"45",

"name":"_queues",

"status":3,

"type":2,

"isSystem":true,

"globallyUniqueId":"_queues"

},

{

"id":"26",

"name":"_aqlfunctions",

"status":3,

"type":2,

"isSystem":true,

"globallyUniqueId":"_aqlfunctions"

},

{

"id":"60",

"name":"_appbundles",

"status":3,

"type":2,

"isSystem":true,

"globallyUniqueId":"_appbundles"

},

{

"id":"2",

"name":"_graphs",

"status":3,

"type":2,

"isSystem":true,

"globallyUniqueId":"_graphs"

},

{

GettingInformation

38

Page 39: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"id":"13",

"name":"_routing",

"status":3,

"type":2,

"isSystem":true,

"globallyUniqueId":"_routing"

},

{

"id":"47",

"name":"_jobs",

"status":3,

"type":2,

"isSystem":true,

"globallyUniqueId":"_jobs"

},

{

"id":"98",

"name":"animals",

"status":3,

"type":2,

"isSystem":false,

"globallyUniqueId":"h68719E5AC6E7/98"

},

{

"id":"43",

"name":"_frontend",

"status":3,

"type":2,

"isSystem":true,

"globallyUniqueId":"_frontend"

},

{

"id":"6",

"name":"_users",

"status":3,

"type":2,

"isSystem":true,

"globallyUniqueId":"_users"

},

{

"id":"33",

"name":"_statistics",

"status":3,

"type":2,

"isSystem":true,

"globallyUniqueId":"_statistics"

},

{

"id":"38",

"name":"_statistics15",

"status":3,

"type":2,

"isSystem":true,

"globallyUniqueId":"_statistics15"

},

{

"id":"55",

"name":"_apps",

"status":3,

"type":2,

"isSystem":true,

"globallyUniqueId":"_apps"

},

{

"id":"92",

"name":"demo",

"status":3,

"type":2,

"isSystem":false,

"globallyUniqueId":"h68719E5AC6E7/92"

}

]

}

ReturnCodes

GettingInformation

39

Page 40: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

200:Thelistofcollections

Examples

Returninformationaboutallcollections:

shell>curl--dump-http://localhost:8529/_api/collection

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

GettingInformation

40

Page 41: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

ModifyingaCollection

Loadcollection

loadsacollection

PUT/_api/collection/{collection-name}/load

PathParameters

collection-name(required):Thenameofthecollection.

Loadsacollectionintomemory.Returnsthecollectiononsuccess.

Therequestbodyobjectmightoptionallycontainthefollowingattribute:

count:Ifset,thiscontrolswhetherthereturnvalueshouldincludethenumberofdocumentsinthecollection.Settingcounttofalsemayspeeduploadingacollection.Thedefaultvalueforcountistrue.

Onsuccessanobjectwiththefollowingattributesisreturned:

id:Theidentifierofthecollection.

name:Thenameofthecollection.

count:Thenumberofdocumentsinsidethecollection.Thisisonlyreturnedifthecountinputparametersissettotrueorhasnotbeenspecified.

status:Thestatusofthecollectionasnumber.

type:Thecollectiontype.Validtypesare:

2:documentcollection3:edgescollection

isSystem:Iftruethenthecollectionisasystemcollection.

Example:

shell>curl-XPUT--dump-http://localhost:8529/_api/collection/products/load

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/load

{

"code":200,

"error":false,

"type":2,

"globallyUniqueId":"h68719E5AC6E7/10426",

"count":0,

"status":3,

"id":"10426",

"isSystem":false,

"name":"products"

}

ReturnCodes

400:Ifthecollection-nameismissing,thenaHTTP400isreturned.404:Ifthecollection-nameisunknown,thenaHTTP404isreturned.

Examples

shell>curl-XPUT--dump-http://localhost:8529/_api/collection/products/load

Modifying

41

Page 42: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/load

showresponsebody

Unloadcollection

unloadsacollection

PUT/_api/collection/{collection-name}/unload

PathParameters

collection-name(required):

Removesacollectionfrommemory.Thiscalldoesnotdeleteanydocuments.Youcanusethecollectionafterwards;inwhichcaseitwillbeloadedintomemory,again.Onsuccessanobjectwiththefollowingattributesisreturned:

id:Theidentifierofthecollection.

name:Thenameofthecollection.

status:Thestatusofthecollectionasnumber.

type:Thecollectiontype.Validtypesare:

2:documentcollection3:edgescollection

isSystem:Iftruethenthecollectionisasystemcollection.

Example:

shell>curl-XPUT--dump-http://localhost:8529/_api/collection/products/unload

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/unload

{

"code":200,

"error":false,

"status":4,

"name":"products",

"type":2,

"globallyUniqueId":"h68719E5AC6E7/10470",

"isSystem":false,

"id":"10470"

}

ReturnCodes

400:Ifthecollection-nameismissing,thenaHTTP400isreturned.404:Ifthecollection-nameisunknown,thenaHTTP404isreturned.

Examples

shell>curl-XPUT--dump-http://localhost:8529/_api/collection/products/unload

HTTP/1.1200OK

Modifying

42

Page 43: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/unload

showresponsebody

LoadIndexesintoMemory

LoadIndexesintoMemory

PUT/_api/collection/{collection-name}/loadIndexesIntoMemory

PathParameters

collection-name(required):

Thisroutetriestocacheallindexentriesofthiscollectionintothemainmemory.Thereforeititeratesoverallindexesofthecollectionandstorestheindexedvalues,nottheentiredocumentdata,inmemory.Alllookupsthatcouldbefoundinthecachearemuchfasterthanlookupsnotstoredinthecachesoyougetaniceperformanceboost.Itisalsoguaranteedthatthecacheisconsistentwiththestoreddata.

ForthetimebeingthisfunctionisonlyusefulonRocksDBstorageengine,asinMMFilesengineallindexesareinmemoryanyways.

OnRocksDBthisfunctionhonorsallmemorylimits,iftheindexesyouwanttoloadaresmallerthanyourmemorylimitthisfunctionguaranteesthatmostindexvaluesarecached.Iftheindexislargerthanyourmemorylimitthisfunctionwillfillupvaluesuptothislimitandforthetimebeingthereisnowaytocontrolwhichindexesofthecollectionshouldhavepriorityoverothers.

Onsucessthisfunctionreturnsanobjectwithattributeresultsettotrue

Example:

shell>curl-XPUT--dump-http://localhost:8529/_api/collection/products/loadIndexesIntoMemory

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/loadIndexesIntoMemory

{

"code":200,

"error":false,

"result":true

}

ReturnCodes

200:Iftheindexeshaveallbeenloaded400:Ifthecollection-nameismissing,thenaHTTP400isreturned.404:Ifthecollection-nameisunknown,thenaHTTP404isreturned.

Examples

shell>curl-XPUT--dump-

http://localhost:8529/_api/collection/products/loadIndexesIntoMemory

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/loadIndexesIntoMemory

Modifying

43

Page 44: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

showresponsebody

Changepropertiesofacollection

changesacollection

PUT/_api/collection/{collection-name}/properties

PathParameters

collection-name(required):Thenameofthecollection.

Changesthepropertiesofacollection.Expectsanobjectwiththeattribute(s)

waitForSync:Iftruethencreatingorchangingadocumentwillwaituntilthedatahasbeensynchronizedtodisk.

journalSize:Themaximalsizeofajournalordatafileinbytes.Thevaluemustbeatleast1048576(1MB).NotethatwhenchangingthejournalSizevalue,itwillonlyhaveaneffectforadditionaljournalsordatafilesthatarecreated.Alreadyexistingjournalsordatafileswillnotbeaffected.

Onsuccessanobjectwiththefollowingattributesisreturned:

id:Theidentifierofthecollection.

name:Thenameofthecollection.

waitForSync:Thenewvalue.

journalSize:Thenewvalue.

status:Thestatusofthecollectionasnumber.

type:Thecollectiontype.Validtypesare:

2:documentcollection3:edgescollection

isSystem:Iftruethenthecollectionisasystemcollection.

isVolatile:IftruethenthecollectiondatawillbekeptinmemoryonlyandArangoDBwillnotwriteorsyncthedatatodisk.

doCompact:Whetherornotthecollectionwillbecompacted.

keyOptions:JSONobjectwhichcontainskeygenerationoptions:

type:specifiesthetypeofthekeygenerator.Thecurrentlyavailablegeneratorsaretraditionalandautoincrement.allowUserKeys:ifsettotrue,thenitisallowedtosupplyownkeyvaluesinthe_keyattributeofadocument.Ifsettofalse,thenthekeygeneratorissolelyresponsibleforgeneratingkeysandsupplyingownkeyvaluesinthe_keyattributeofdocumentsisconsideredanerror.

Note:exceptforwaitForSync,journalSizeandname,collectionpropertiescannotbechangedonceacollectioniscreated.Torenameacollection,therenameendpointmustbeused.

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/collection/products/properties<<EOF

{

"waitForSync":true

}

EOF

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/properties

{

"code":200,

"error":false,

Modifying

44

Page 45: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"status":3,

"statusString":"loaded",

"name":"products",

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"type":2,

"indexBuckets":8,

"globallyUniqueId":"h68719E5AC6E7/10443",

"doCompact":true,

"waitForSync":true,

"id":"10443",

"isSystem":false,

"journalSize":33554432,

"isVolatile":false

}

ReturnCodes

400:Ifthecollection-nameismissing,thenaHTTP400isreturned.404:Ifthecollection-nameisunknown,thenaHTTP404isreturned.

Examples

shell>curl-XPUT--data-binary@---dump-

http://localhost:8529/_api/collection/products/properties<<EOF

{

"waitForSync":true

}

EOF

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/properties

showresponsebody

Renamecollection

renamesacollection

PUT/_api/collection/{collection-name}/rename

PathParameters

collection-name(required):Thenameofthecollectiontorename.

Renamesacollection.Expectsanobjectwiththeattribute(s)

name:Thenewname.

Itreturnsanobjectwiththeattributes

id:Theidentifierofthecollection.

name:Thenewnameofthecollection.

status:Thestatusofthecollectionasnumber.

type:Thecollectiontype.Validtypesare:

2:documentcollection3:edgescollection

Modifying

45

Page 46: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

isSystem:Iftruethenthecollectionisasystemcollection.

Ifrenamingthecollectionsucceeds,thenthecollectionisalsorenamedinallgraphdefinitionsinsidethe_graphscollectioninthecurrentdatabase.

Note:thismethodisnotavailableinacluster.

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/collection/products1/rename<<EOF

{

"name":"newname"

}

EOF

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products1/rename

{

"code":200,

"error":false,

"status":3,

"name":"newname",

"type":2,

"globallyUniqueId":"h68719E5AC6E7/10453",

"isSystem":false,

"id":"10453"

}

ReturnCodes

400:Ifthecollection-nameismissing,thenaHTTP400isreturned.404:Ifthecollection-nameisunknown,thenaHTTP404isreturned.

Examples

shell>curl-XPUT--data-binary@---dump-

http://localhost:8529/_api/collection/products1/rename<<EOF

{

"name":"newname"

}

EOF

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products1/rename

showresponsebody

Rotatejournalofacollection

rotatesthejournalofacollection

PUT/_api/collection/{collection-name}/rotate

PathParameters

collection-name(required):Thenameofthecollection.

Modifying

46

Page 47: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Rotatesthejournalofacollection.Thecurrentjournalofthecollectionwillbeclosedandmadearead-onlydatafile.Thepurposeoftherotatemethodistomakethedatainthefileavailableforcompaction(compactionisonlyperformedforread-onlydatafiles,andnotforjournals).

Savingnewdatainthecollectionsubsequentlywillcreateanewjournalfileautomaticallyifthereisnocurrentjournal.

Itreturnsanobjectwiththeattributes

result:willbetrueifrotationsucceeded

Note:thismethodisspecificfortheMMFilesstorageengine,andthereitisnotavailableinacluster.

Example:Rotatingthejournal:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/collection/products/rotate<<EOF

{

}

EOF

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/rotate

{

"code":200,

"error":false,

"result":true

}

Example:Rotatingifnojournalexists:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/collection/products/rotate<<EOF

{

}

EOF

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"nojournal",

"code":400,

"errorNum":1105

}

ReturnCodes

400:Ifthecollectioncurrentlyhasnojournal,HTTP400isreturned.404:Ifthecollection-nameisunknown,thenaHTTP404isreturned.

Examples

Rotatingthejournal:

shell>curl-XPUT--data-binary@---dump-

http://localhost:8529/_api/collection/products/rotate<<EOF

{

Modifying

47

Page 48: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

}

EOF

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

location:/_api/collection/products/rotate

showresponsebodyRotatingifnojournalexists:

shell>curl-XPUT--data-binary@---dump-

http://localhost:8529/_api/collection/products/rotate<<EOF

{

}

EOF

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Modifying

48

Page 49: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforDocumentsInthischapterwedescribetheRESTAPIofArangoDBfordocuments.

BasicapproachDetailedAPIdescription

Documents

49

Page 50: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

BasicsandTerminology

Documents,Keys,HandlesandRevisions

DocumentsinArangoDBareJSONobjects.Theseobjectscanbenested(toanydepth)andmaycontainlists.Eachdocumenthasauniqueprimarykeywhichidentifiesitwithinitscollection.Furthermore,eachdocumentisuniquelyidentifiedbyitsdocumenthandleacrossallcollectionsinthesamedatabase.Differentrevisionsofthesamedocument(identifiedbyitshandle)canbedistinguishedbytheirdocumentrevision.Anytransactiononlyeverseesasinglerevisionofadocument.

Hereisanexampledocument:

{

"_id":"myusers/3456789",

"_key":"3456789",

"_rev":"14253647",

"firstName":"John",

"lastName":"Doe",

"address":{

"street":"RoadToNowhere1",

"city":"Gotham"

},

"hobbies":[

{name:"swimming",howFavorite:10},

{name:"biking",howFavorite:6},

{name:"programming",howFavorite:4}

]

}

Alldocumentscontainspecialattributes:thedocumenthandleisstoredasastringin_id,thedocument'sprimarykeyin_keyandthedocumentrevisionin_rev.Thevalueofthe_keyattributecanbespecifiedbytheuserwhencreatingadocument._idand_keyvaluesareimmutableoncethedocumenthasbeencreated.The_revvalueismaintainedbyArangoDBautomatically.

DocumentHandle

Adocumenthandleuniquelyidentifiesadocumentinthedatabase.Itisastringandconsistsofthecollection'snameandthedocumentkey(_keyattribute)separatedby/.

DocumentKey

Adocumentkeyuniquelyidentifiesadocumentinthecollectionitisstoredin.Itcanandshouldbeusedbyclientswhenspecificdocumentsarequeried.Thedocumentkeyisstoredinthe_keyattributeofeachdocument.ThekeyvaluesareautomaticallyindexedbyArangoDBinacollection'sprimaryindex.Thuslookingupadocumentbyitskeyisafastoperation.The_keyvalueofadocumentisimmutableoncethedocumenthasbeencreated.Bydefault,ArangoDBwillauto-generateadocumentkeyifno_keyattributeisspecified,andusetheuser-specified_keyotherwise.

Thisbehaviorcanbechangedonaper-collectionlevelbycreatingcollectionswiththekeyOptionsattribute.

UsingkeyOptionsitispossibletodisallowuser-specifiedkeyscompletely,ortoforceaspecificregimeforauto-generatingthe_keyvalues.

DocumentRevision

AsArangoDBsupportsMVCC(MultipleVersionConcurrencyControl),documentscanexistinmorethanonerevision.ThedocumentrevisionistheMVCCtokenusedtospecifyaparticularrevisionofadocument(identifiedbyits_id).Itisastringvaluecurrentlycontaininganintegernumberandisuniquewithinthelistofdocumentrevisionsforasingledocument.Documentrevisionscanbeusedtoconditionallyquery,update,replaceordeletedocumentsinthedatabase.Inordertofindaparticularrevisionofadocument,youneedthedocumenthandleorkey,andthedocumentrevision.

BasicsandTerminology

50

Page 51: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

ArangoDBuses64bitunsignedintegervaluestomaintaindocumentrevisionsinternally.Whenreturningdocumentrevisionstoclients,ArangoDBwillputthemintoastringtoensuretherevisionisnotclippedbyclientsthatdonotsupportbigintegers.ClientsshouldtreattherevisionreturnedbyArangoDBasanopaquestringwhentheystoreoruseitlocally.ThiswillallowArangoDBtochangetheformatofrevisionslaterifthisshouldberequired.Clientscanuserevisionstoperformsimpleequality/non-equalitycomparisons(e.g.tocheckwhetheradocumenthaschangedornot),buttheyshouldnotuserevisionidstoperformgreater/lessthancomparisonswiththemtocheckifadocumentrevisionisolderthanoneanother,evenifthismightworkforsomecases.

DocumentEtag

ArangoDBtriestoadheretotheexistingHTTPstandardasfaraspossible.Tothisend,resultsofsingledocumentquerieshavetheHTTPheaderEtagsettothedocumentrevisionenclosedindoublequotes.

Thebasicoperations(create,read,exists,replace,update,delete)fordocumentsaremappedtothestandardHTTPmethods(POST,GET,HEAD,PUT,PATCHandDELETE).

Ifyoumodifyadocument,youcanusetheIf-Matchfieldtodetectconflicts.TherevisionofadocumentcanbecheckingusingtheHTTPmethodHEAD.

MultipleDocumentsinasingleRequest

BeginningwithArangoDB3.0thebasicdocumentAPIhasbeenextendedtohandlenotonlysingledocumentsbutmultipledocumentsinasinglerequest.Thisiscrucialforperformance,inparticularintheclustersituation,inwhichasinglerequestcaninvolvemultiplenetworkhopswithinthecluster.AnotheradvantageisthatitreducestheoverheadoftheHTTPprotocolandindividualnetworkroundtripsbetweentheclientandtheserver.ThegeneralideatoperformmultipledocumentoperationsinasinglerequestistouseaJSONarrayofobjectsintheplaceofasingledocument.Asaconsequence,documentkeys,handlesandrevisionsforpreconditionshavetobesuppliedembeddedintheindividualdocumentsgiven.Multipledocumentoperationsarerestrictedtoasingledocumentoredgecollections.SeetheAPIdescriptionsfordetails.

NotethattheGET,HEADandDELETEHTTPoperationsgenerallydonotallowtopassamessagebody.Thus,theycannotbeusedtoperformmultipledocumentoperationsinonerequest.However,thereareotherendpointstorequestanddeletemultipledocumentsinonerequest.FIXME:ADDSENSIBLELINKSHERE.

URIofaDocument

AnydocumentcanberetrievedusingitsuniqueURI:

http://server:port/_api/document/<document-handle>

Forexample,assumingthatthedocumenthandleisdemo/362549736,thentheURLofthatdocumentis:

http://localhost:8529/_api/document/demo/362549736

TheaboveURLschemadoesnotspecifyadatabasenameexplicitly,sothedefaultdatabase_systemwillbeused.Toexplicitlyspecifythedatabasecontext,usethefollowingURLschema:

http://server:port/_db/<database-name>/_api/document/<document-handle>

Example:

http://localhost:8529/_db/mydb/_api/document/demo/362549736

Note:ThefollowingexamplesusetheshortURLformatforbrevity.

Thedocumentrevisionisreturnedinthe"Etag"HTTPheaderwhenrequestingadocument.

IfyouobtainadocumentusingGETandyouwanttocheckwhetheranewerrevisionisavailable,thenyoucanusetheIf-None-Matchheader.Ifthedocumentisunchanged,aHTTP412(preconditionfailed)errorisreturned.

BasicsandTerminology

51

Page 52: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Ifyouwanttoquery,replace,updateordeleteadocument,thenyoucanusetheIf-Matchheader.Ifthedocumenthaschanged,thentheoperationisabortedandanHTTP412errorisreturned.

BasicsandTerminology

52

Page 53: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

WorkingwithDocumentsusingREST

Readdocument

readsasingledocument

GET/_api/document/{document-handle}

PathParameters

document-handle(required):Thehandleofthedocument.

HeaderParameters

If-None-Match(optional):Ifthe"If-None-Match"headerisgiven,thenitmustcontainexactlyoneEtag.Thedocumentisreturned,ifithasadifferentrevisionthanthegivenEtag.OtherwiseanHTTP304isreturned.If-Match(optional):Ifthe"If-Match"headerisgiven,thenitmustcontainexactlyoneEtag.Thedocumentisreturned,ifithasthesamerevisionasthegivenEtag.OtherwiseaHTTP412isreturned.

Returnsthedocumentidentifiedbydocument-handle.Thereturneddocumentcontainsthreespecialattributes:_idcontainingthedocumenthandle,_keycontainingkeywhichuniquelyidentifiesadocumentinagivencollectionand_revcontainingtherevision.

Example:Useadocumenthandle:

shell>curl--dump-http://localhost:8529/_api/document/products/11042

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:"_WQ47YXa--_"

{

"_key":"11042",

"_id":"products/11042",

"_rev":"_WQ47YXa--_",

"hello":"world"

}

Example:UseadocumenthandleandanEtag:

shell>curl--header'If-None-Match:"_WQ47Yc2--_"'--dump-http://localhost:8529/_api/document/products/11118

Example:Unknowndocumenthandle:

shell>curl--dump-http://localhost:8529/_api/document/products/unknownhandle

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

WorkingwithDocuments

53

Page 54: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"errorMessage":"collectionnotfound:products",

"code":404,

"errorNum":1203

}

ReturnCodes

200:isreturnedifthedocumentwasfound304:isreturnedifthe"If-None-Match"headerisgivenandthedocumenthasthesameversion404:isreturnedifthedocumentorcollectionwasnotfound412:isreturnedifan"If-Match"headerisgivenandthefounddocumenthasadifferentversion.Theresponsewillalsocontainthefounddocument'scurrentrevisioninthe_revattribute.Additionally,theattributes_idand_keywillbereturned.

Examples

Useadocumenthandle:

shell>curl--dump-http://localhost:8529/_api/document/products/11042

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:"_WQ47YXa--_"

showresponsebodyUseadocumenthandleandanEtag:

shell>curl--header'If-None-Match:"_WQ47Yc2--_"'--dump-

http://localhost:8529/_api/document/products/11118

Unknowndocumenthandle:

shell>curl--dump-http://localhost:8529/_api/document/products/unknownhandle

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Changesin3.0from2.8:

Therevqueryparameterhasbeenwithdrawn.ThesameeffectcanbeachievedwiththeIf-MatchHTTPheader.

Readdocumentheader

readsasingledocumenthead

HEAD/_api/document/{document-handle}

PathParameters

document-handle(required):Thehandleofthedocument.

HeaderParameters

If-None-Match(optional):Ifthe"If-None-Match"headerisgiven,thenitmustcontainexactlyoneEtag.Ifthecurrentdocument

WorkingwithDocuments

54

Page 55: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

revisionisnotequaltothespecifiedEtag,anHTTP200responseisreturned.Ifthecurrentdocumentrevisionisidenticaltothe

specifiedEtag,thenanHTTP304isreturned.If-Match(optional):Ifthe"If-Match"headerisgiven,thenitmustcontainexactlyoneEtag.Thedocumentisreturned,ifithasthesamerevisionasthegivenEtag.OtherwiseaHTTP412isreturned.

LikeGET,butonlyreturnstheheaderfieldsandnotthebody.Youcanusethiscalltogetthecurrentrevisionofadocumentorcheckifthedocumentwasdeleted.

Example:

shell>curl-XHEAD--dump-http://localhost:8529/_api/document/products/11102

ReturnCodes

200:isreturnedifthedocumentwasfound304:isreturnedifthe"If-None-Match"headerisgivenandthedocumenthasthesameversion404:isreturnedifthedocumentorcollectionwasnotfound412:isreturnedifan"If-Match"headerisgivenandthefounddocumenthasadifferentversion.Theresponsewillalsocontainthefounddocument'scurrentrevisionintheEtagheader.

Examples

shell>curl-XHEAD--dump-http://localhost:8529/_api/document/products/11102

Changesin3.0from2.8:

Therevqueryparameterhasbeenwithdrawn.ThesameeffectcanbeachievedwiththeIf-MatchHTTPheader.

Readalldocuments

readsalldocumentsfromcollection

PUT/_api/simple/all-keys

QueryParameters

AJSONobjectwiththesepropertiesisrequired:

type:Thetypeoftheresult.Thefollowingvaluesareallowed:id:returnsanarrayofdocumentids(_idattributes)key:returnsanarrayofdocumentkeys(_keyattributes)path:returnsanarrayofdocumentURIpaths.Thisisthedefault.

collection:Thenameofthecollection.Thisisonlyforbackwardcompatibility.InArangoDBversions<3.0,theURLpathwas/_api/documentandthiswaspassedinviathequeryparameter"collection".Thiscombinationwasremoved.

Returnsanarrayofallkeys,ids,orURIpathsforalldocumentsinthecollectionidentifiedbycollection.Thetypeoftheresultarrayisdeterminedbythetypeattribute.

Notethattheresultshavenodefinedorderandthustheordershouldnotbereliedon.

Example:Returnalldocumentpaths

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/all-keys<<EOF

{

"collection":"products"

WorkingwithDocuments

55

Page 56: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

"/_db/_system/_api/document/products/11084",

"/_db/_system/_api/document/products/11087",

"/_db/_system/_api/document/products/11080"

],

"hasMore":false,

"cached":false,

"extra":{

"stats":{

"writesExecuted":0,

"writesIgnored":0,

"scannedFull":3,

"scannedIndex":0,

"filtered":0,

"httpRequests":0,

"executionTime":0.000125885009765625

},

"warnings":[]

},

"error":false,

"code":201

}

Example:Returnalldocumentkeys

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/all-keys<<EOF

{

"collection":"products",

"type":"id"

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

"products/11062",

"products/11065",

"products/11058"

],

"hasMore":false,

"cached":false,

"extra":{

"stats":{

"writesExecuted":0,

"writesIgnored":0,

"scannedFull":3,

"scannedIndex":0,

"filtered":0,

"httpRequests":0,

"executionTime":0.00013065338134765625

},

"warnings":[]

},

"error":false,

"code":201

}

WorkingwithDocuments

56

Page 57: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Example:Collectiondoesnotexist

shell>curl--dump-http://localhost:8529/_api/document/doesnotexist

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"expectingGET/_api/document/<document-handle>",

"code":404,

"errorNum":1203

}

ReturnCodes

201:Allwentwell.404:Thecollectiondoesnotexist.

Examples

Returnalldocumentpaths

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/all-keys

<<EOF

{

"collection":"products"

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyReturnalldocumentkeys

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/all-keys

<<EOF

{

"collection":"products",

"type":"id"

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyCollectiondoesnotexist

shell>curl--dump-http://localhost:8529/_api/document/doesnotexist

WorkingwithDocuments

57

Page 58: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Changesin3.0from2.8:

ThecollectionnameshouldnowbespecifiedintheURLpath.TheoldwaywiththeURLpath/_api/documentandtherequiredqueryparametercollectionstillworks.

Createdocument

createsdocuments

POST/_api/document/{collection}

PathParameters

collection(required):Thecollectioninwhichthecollectionistobecreated.

RequestBody(required)

AJSONrepresentationofasingledocumentorofanarrayofdocuments.

QueryParameters

collection(optional):Thenameofthecollection.Thisisonlyforbackwardcompatibility.InArangoDBversions<3.0,theURLpathwas/_api/documentandthisqueryparameterwasrequired.Thiscombinationstillworks,buttherecommendedwayistospecifythecollectionintheURLpath.waitForSync(optional):Waituntildocumenthasbeensyncedtodisk.returnNew(optional):Additionallyreturnthecompletenewdocumentundertheattributenewintheresult.silent(optional):Ifsettotrue,anemptyobjectwillbereturnedasresponse.Nometa-datawillbereturnedforthecreateddocument.Thisoptioncanbeusedtosavesomenetworktraffic.

Createsanewdocumentfromthedocumentgiveninthebody,unlessthereisalreadyadocumentwiththe_keygiven.Ifno_keyisgiven,anewunique_keyisgeneratedautomatically.

Thebodycanbeanarrayofdocuments,inwhichcasealldocumentsinthearrayareinsertedwiththesamesemanticsasforasingledocument.TheresultbodywillcontainaJSONarrayofthesamelengthastheinputarray,andeachentrycontainstheresultoftheoperationforthecorrespondinginput.IncaseofanerrortheentryisadocumentwithattributeserrorsettotrueanderrorCodesettotheerrorcodethathashappened.

Possiblygiven_idand_revattributesinthebodyarealwaysignored,theURLpartorthequeryparametercollectionrespectivelycounts.

Ifthedocumentwascreatedsuccessfully,thentheLocationheadercontainsthepathtothenewlycreateddocument.TheEtagheaderfieldcontainstherevisionofthedocument.Bothareonlysetinthesingledocumentcase.

Ifsilentisnotsettotrue,thebodyoftheresponsecontainsaJSONobject(singledocumentcase)withthefollowingattributes:

_idcontainsthedocumenthandleofthenewlycreateddocument_keycontainsthedocumentkey_revcontainsthedocumentrevision

Inthemulticasethebodyisanarrayofsuchobjects.

IfthecollectionparameterwaitForSyncisfalse,thenthecallreturnsassoonasthedocumenthasbeenaccepted.Itwillnotwaituntilthedocumentshavebeensyncedtodisk.

Optionally,thequeryparameterwaitForSynccanbeusedtoforcesynchronizationofthedocumentcreationoperationtodiskevenincasethatthewaitForSyncflaghadbeendisabledfortheentirecollection.Thus,thewaitForSyncqueryparametercanbeusedtoforcesynchronizationofjustthisspecificoperations.Tousethis,setthewaitForSyncparametertotrue.IfthewaitForSyncparameterisnot

WorkingwithDocuments

58

Page 59: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

specifiedorsettofalse,thenthecollection'sdefaultwaitForSyncbehaviorisapplied.ThewaitForSyncqueryparametercannotbeusedtodisablesynchronizationforcollectionsthathaveadefaultwaitForSyncvalueoftrue.

IfthequeryparameterreturnNewistrue,then,foreachgenerateddocument,thecompletenewdocumentisreturnedunderthenewattributeintheresult.

Example:Createadocumentinacollectionnamedproducts.Notethattherevisionidentifiermightormightnotbyequaltotheauto-generatedkey.

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/document/products<<EOF

{"Hello":"World"}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47YT6--_"

location:/_db/_system/_api/document/products/10976

{

"_id":"products/10976",

"_key":"10976",

"_rev":"_WQ47YT6--_"

}

Example:Createadocumentinacollectionnamedproductswithacollection-levelwaitForSyncvalueoffalse.

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/document/products<<EOF

{"Hello":"World"}

EOF

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47YRm--_"

location:/_db/_system/_api/document/products/10950

{

"_id":"products/10950",

"_key":"10950",

"_rev":"_WQ47YRm--_"

}

Example:Createadocumentinacollectionwithacollection-levelwaitForSyncvalueoffalse,butusingthewaitForSyncqueryparameter.

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/document/products?waitForSync=true<<EOF

{"Hello":"World"}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47YW6--_"

location:/_db/_system/_api/document/products/11027

{

"_id":"products/11027",

"_key":"11027",

"_rev":"_WQ47YW6--_"

WorkingwithDocuments

59

Page 60: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

}

Example:Unknowncollectionname

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/document/products<<EOF

{"Hello":"World"}

EOF

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"collectionnotfound:products",

"code":404,

"errorNum":1203

}

Example:Illegaldocument

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/document/products<<EOF

{1:"World"}

EOF

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"VPackErrorerror:Expecting'\"'or'}'",

"code":400,

"errorNum":600

}

Example:Insertmultipledocuments:

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/document/products<<EOF

[{"Hello":"Earth"},{"Hello":"Venus"},{"Hello":"Mars"}]

EOF

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[

{

"_id":"products/10991",

"_key":"10991",

"_rev":"_WQ47YUa--_"

},

{

"_id":"products/10995",

"_key":"10995",

"_rev":"_WQ47YUa--B"

},

{

WorkingwithDocuments

60

Page 61: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"_id":"products/10997",

"_key":"10997",

"_rev":"_WQ47YUa--D"

}

]

Example:UseofreturnNew:

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/document/products?returnNew=true<<EOF

{"Hello":"World"}

EOF

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47YU2--_"

location:/_db/_system/_api/document/products/11012

{

"_id":"products/11012",

"_key":"11012",

"_rev":"_WQ47YU2--_",

"new":{

"_key":"11012",

"_id":"products/11012",

"_rev":"_WQ47YU2--_",

"Hello":"World"

}

}

ReturnCodes

201:isreturnedifthedocumentswerecreatedsuccessfullyandwaitForSyncwastrue.202:isreturnedifthedocumentswerecreatedsuccessfullyandwaitForSyncwasfalse.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofonedocumentoranarrayofdocuments.Theresponsebodycontainsanerrordocumentinthiscase.404:isreturnedifthecollectionspecifiedbycollectionisunknown.Theresponsebodycontainsanerrordocumentinthiscase.409:isreturnedinthesingledocumentcaseifadocumentwiththesamequalifiersinanindexedattributeconflictswithanalreadyexistingdocumentandthusviolatesthatuniqueconstraint.Theresponsebodycontainsanerrordocumentinthiscase.Inthearraycaseonly201or202isreturned,butifanerroroccurred,theadditionalHTTPheaderX-Arango-Error-Codesisset,whichcontainsamapoftheerrorcodesthatoccurredtogetherwiththeirmultiplicities,asin:1205:10,1210:17whichmeansthatin10casestheerror1205"illegaldocumenthandle"andin17casestheerror1210"uniqueconstraintviolated"hashappened.

Examples

Createadocumentinacollectionnamedproducts.Notethattherevisionidentifiermightormightnotbyequaltotheauto-generatedkey.

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/document/products

<<EOF

{"Hello":"World"}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47YT6--_"

location:/_db/_system/_api/document/products/10976

showresponsebody

WorkingwithDocuments

61

Page 62: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Createadocumentinacollectionnamedproductswithacollection-levelwaitForSyncvalueoffalse.

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/document/products

<<EOF

{"Hello":"World"}

EOF

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47YRm--_"

location:/_db/_system/_api/document/products/10950

showresponsebodyCreateadocumentinacollectionwithacollection-levelwaitForSyncvalueoffalse,butusingthewaitForSyncqueryparameter.

shell>curl-XPOST--data-binary@---dump-

http://localhost:8529/_api/document/products?waitForSync=true<<EOF

{"Hello":"World"}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47YW6--_"

location:/_db/_system/_api/document/products/11027

showresponsebodyUnknowncollectionname

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/document/products

<<EOF

{"Hello":"World"}

EOF

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyIllegaldocument

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/document/products

<<EOF

{1:"World"}

EOF

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

WorkingwithDocuments

62

Page 63: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

showresponsebodyInsertmultipledocuments:

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/document/products

<<EOF

[{"Hello":"Earth"},{"Hello":"Venus"},{"Hello":"Mars"}]

EOF

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[

{

"_id":"products/10991",

"_key":"10991",

"_rev":"_WQ47YUa--_"

},

{

"_id":"products/10995",

"_key":"10995",

"_rev":"_WQ47YUa--B"

},

{

"_id":"products/10997",

"_key":"10997",

"_rev":"_WQ47YUa--D"

}

]

UseofreturnNew:

shell>curl-XPOST--data-binary@---dump-

http://localhost:8529/_api/document/products?returnNew=true<<EOF

{"Hello":"World"}

EOF

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47YU2--_"

location:/_db/_system/_api/document/products/11012

showresponsebody

Changesin3.0from2.8:

ThecollectionnameshouldnowbespecifiedintheURLpath.TheoldwaywiththeURLpath/_api/documentandtherequiredqueryparametercollectionstillworks.ThepossibilitytoinsertmultipledocumentswithoneoperationisnewandthequeryparameterreturnNewhasbeenadded.

Replacedocument

replacesadocument

WorkingwithDocuments

63

Page 64: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

PUT/_api/document/{document-handle}

RequestBody(required)

AJSONrepresentationofasingledocument.

PathParameters

document-handle(required):ThisURLparametermustbeadocumenthandle.

QueryParameters

waitForSync(optional):Waituntildocumenthasbeensyncedtodisk.ignoreRevs(optional):Bydefault,orifthisissettotrue,the_revattributesinthegivendocumentisignored.Ifthisissettofalse,thenthe_revattributegiveninthebodydocumentistakenasaprecondition.Thedocumentisonlyreplacedifthecurrentrevisionistheonespecified.returnOld(optional):Returnadditionallythecompletepreviousrevisionofthechangeddocumentundertheattributeoldintheresult.returnNew(optional):Returnadditionallythecompletenewdocumentundertheattributenewintheresult.silent(optional):Ifsettotrue,anemptyobjectwillbereturnedasresponse.Nometa-datawillbereturnedforthereplaceddocument.Thisoptioncanbeusedtosavesomenetworktraffic.

HeaderParameters

If-Match(optional):Youcanconditionallyreplaceadocumentbasedonatargetrevisionidbyusingtheif-matchHTTPheader.

Replacesthedocumentwithhandlewiththeoneinthebody,providedthereissuchadocumentandnopreconditionisviolated.

IftheIf-Matchheaderisspecifiedandtherevisionofthedocumentinthedatabaseisunequaltothegivenrevision,thepreconditionisviolated.

IfIf-MatchisnotgivenandignoreRevsisfalseandthereisa_revattributeinthebodyanditsvaluedoesnotmatchtherevisionofthedocumentinthedatabase,thepreconditionisviolated.

Ifapreconditionisviolated,anHTTP412isreturned.

Ifthedocumentexistsandcanbeupdated,thenanHTTP201oranHTTP202isreturned(dependingonwaitForSync,seebelow),theEtagheaderfieldcontainsthenewrevisionofthedocumentandtheLocationheadercontainsacompleteURLunderwhichthedocumentcanbequeried.

Optionally,thequeryparameterwaitForSynccanbeusedtoforcesynchronizationofthedocumentreplacementoperationtodiskevenincasethatthewaitForSyncflaghadbeendisabledfortheentirecollection.Thus,thewaitForSyncqueryparametercanbeusedtoforcesynchronizationofjustspecificoperations.Tousethis,setthewaitForSyncparametertotrue.IfthewaitForSyncparameterisnotspecifiedorsettofalse,thenthecollection'sdefaultwaitForSyncbehaviorisapplied.ThewaitForSyncqueryparametercannotbeusedtodisablesynchronizationforcollectionsthathaveadefaultwaitForSyncvalueoftrue.

Ifsilentisnotsettotrue,thebodyoftheresponsecontainsaJSONobjectwiththeinformationaboutthehandleandtherevision.Theattribute_idcontainstheknowndocument-handleoftheupdateddocument,_keycontainsthekeywhichuniquelyidentifiesadocumentinagivencollection,andtheattribute_revcontainsthenewdocumentrevision.

IfthequeryparameterreturnOldistrue,thenthecompletepreviousrevisionofthedocumentisreturnedundertheoldattributeintheresult.

IfthequeryparameterreturnNewistrue,thenthecompletenewdocumentisreturnedunderthenewattributeintheresult.

Ifthedocumentdoesnotexist,thenaHTTP404isreturnedandthebodyoftheresponsecontainsanerrordocument.

Example:Usingadocumenthandle

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/document/products/11134<<EOF

{"Hello":"you"}

EOF

WorkingwithDocuments

64

Page 65: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47Yd6--A"

location:/_db/_system/_api/document/products/11134

{

"_id":"products/11134",

"_key":"11134",

"_rev":"_WQ47Yd6--A",

"_oldRev":"_WQ47Yd6---"

}

Example:Unknowndocumenthandle

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/document/products/11170<<EOF

{}

EOF

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"documentnotfound",

"code":404,

"errorNum":1202

}

Example:Producearevisionconflict

shell>curl-XPUT--header'If-Match:"_WQ47YfG--B"'--data-binary@---dump-http://localhost:8529/_api/document/products/11

151<<EOF

{"other":"content"}

EOF

HTTP/1.1412PreconditionFailed

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:"_WQ47YfG--_"

{

"error":true,

"code":412,

"errorNum":1200,

"errorMessage":"preconditionfailed",

"_id":"products/11151",

"_key":"11151",

"_rev":"_WQ47YfG--_"

}

ReturnCodes

201:isreturnedifthedocumentwasreplacedsuccessfullyandwaitForSyncwastrue.202:isreturnedifthedocumentwasreplacedsuccessfullyandwaitForSyncwasfalse.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofadocument.Theresponsebodycontainsanerrordocumentinthiscase.404:isreturnedifthecollectionorthedocumentwasnotfound.412:isreturnedifthepreconditionwasviolated.Theresponsewillalsocontainthefounddocuments'currentrevisionsinthe_revattributes.Additionally,theattributes_idand_keywillbereturned.

WorkingwithDocuments

65

Page 66: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Examples

Usingadocumenthandle

shell>curl-XPUT--data-binary@---dump-

http://localhost:8529/_api/document/products/11134<<EOF

{"Hello":"you"}

EOF

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47Yd6--A"

location:/_db/_system/_api/document/products/11134

showresponsebodyUnknowndocumenthandle

shell>curl-XPUT--data-binary@---dump-

http://localhost:8529/_api/document/products/11170<<EOF

{}

EOF

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyProducearevisionconflict

shell>curl-XPUT--header'If-Match:"_WQ47YfG--B"'--data-binary@---dump-

http://localhost:8529/_api/document/products/11151<<EOF

{"other":"content"}

EOF

HTTP/1.1412PreconditionFailed

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:"_WQ47YfG--_"

showresponsebody

Changesin3.0from2.8:

TherearequitesomechangesinthisincomparisontoVersion2.8,butfewbreakexistingusage:

therevqueryparameterisgone(wasduplicationofIf-Match)thepolicyqueryparameterisgone(wasnon-sensical)theignoreRevsqueryparameterisnew,thedefaulttruegivesthetraditionalbehaviorasin2.8thereturnNewandreturnOldqueryparametersarenew

Thereshouldbeveryfewchangestobehaviorhappeninginreal-worldsituationsordrivers.Essentially,onehastoreplaceusageoftherevqueryparameterbyusageoftheIf-Matchheader.Thenon-sensicalcombinationofIf-Matchgivenandpolicy=lastnolongerworks,butcaneasilybeachievedbyleavingouttheIf-Matchheader.

WorkingwithDocuments

66

Page 67: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

ThecollectionnameshouldnowbespecifiedintheURLpath.TheoldwaywiththeURLpath/_api/documentandtherequiredqueryparametercollectionstillworks.

Replacedocuments

replacesmultipledocuments

PUT/_api/document/{collection}

RequestBody(required)

AJSONrepresentationofanarrayofdocuments.

PathParameters

collection(required):ThisURLparameteristhenameofthecollectioninwhichthedocumentsarereplaced.

QueryParameters

waitForSync(optional):Waituntilthenewdocumentshavebeensyncedtodisk.ignoreRevs(optional):Bydefault,orifthisissettotrue,the_revattributesinthegivendocumentsareignored.Ifthisissettofalse,thenany_revattributegiveninabodydocumentistakenasaprecondition.Thedocumentisonlyreplacedifthecurrentrevisionistheonespecified.returnOld(optional):Returnadditionallythecompletepreviousrevisionofthechangeddocumentsundertheattributeoldintheresult.returnNew(optional):Returnadditionallythecompletenewdocumentsundertheattributenewintheresult.

Replacesmultipledocumentsinthespecifiedcollectionwiththeonesinthebody,thereplaceddocumentsarespecifiedbythe_keyattributesinthebodydocuments.

IfignoreRevsisfalseandthereisa_revattributeinadocumentinthebodyanditsvaluedoesnotmatchtherevisionofthecorrespondingdocumentinthedatabase,thepreconditionisviolated.

Ifthedocumentexistsandcanbeupdated,thenanHTTP201oranHTTP202isreturned(dependingonwaitForSync,seebelow).

Optionally,thequeryparameterwaitForSynccanbeusedtoforcesynchronizationofthedocumentreplacementoperationtodiskevenincasethatthewaitForSyncflaghadbeendisabledfortheentirecollection.Thus,thewaitForSyncqueryparametercanbeusedtoforcesynchronizationofjustspecificoperations.Tousethis,setthewaitForSyncparametertotrue.IfthewaitForSyncparameterisnotspecifiedorsettofalse,thenthecollection'sdefaultwaitForSyncbehaviorisapplied.ThewaitForSyncqueryparametercannotbeusedtodisablesynchronizationforcollectionsthathaveadefaultwaitForSyncvalueoftrue.

ThebodyoftheresponsecontainsaJSONarrayofthesamelengthastheinputarraywiththeinformationaboutthehandleandtherevisionofthereplaceddocuments.Ineachentry,theattribute_idcontainstheknowndocument-handleofeachupdateddocument,_keycontainsthekeywhichuniquelyidentifiesadocumentinagivencollection,andtheattribute_revcontainsthenewdocumentrevision.Incaseofanerrororviolatedprecondition,anerrorobjectwiththeattributeerrorsettotrueandtheattributeerrorCodesettotheerrorcodeisbuilt.

IfthequeryparameterreturnOldistrue,then,foreachgenerateddocument,thecompletepreviousrevisionofthedocumentisreturnedundertheoldattributeintheresult.

IfthequeryparameterreturnNewistrue,then,foreachgenerateddocument,thecompletenewdocumentisreturnedunderthenewattributeintheresult.

Notethatifanypreconditionisviolatedoranerroroccurredwithsomeofthedocuments,thereturncodeisstill201or202,buttheadditionalHTTPheaderX-Arango-Error-Codesisset,whichcontainsamapoftheerrorcodesthatoccurredtogetherwiththeirmultiplicities,asin:1200:17,1205:10whichmeansthatin17casestheerror1200"revisionconflict"andin10casestheerror1205"illegaldocumenthandle"hashappened.

ReturnCodes

201:isreturnedifthedocumentswerereplacedsuccessfullyandwaitForSyncwastrue.202:isreturnedifthedocumentswerereplacedsuccessfullyandwaitForSyncwasfalse.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofanarrayofdocuments.Theresponsebodycontainsanerrordocumentinthiscase.404:isreturnedifthecollectionwasnotfound.

WorkingwithDocuments

67

Page 68: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Changesin3.0from2.8:

Themultidocumentversionisnewin3.0.

Updatedocument

updatesadocument

PATCH/_api/document/{document-handle}

RequestBody(required)

AJSONrepresentationofadocumentupdateasanobject.

PathParameters

document-handle(required):ThisURLparametermustbeadocumenthandle.

QueryParameters

keepNull(optional):Iftheintentionistodeleteexistingattributeswiththepatchcommand,theURLqueryparameterkeepNullcanbeusedwithavalueoffalse.Thiswillmodifythebehaviorofthepatchcommandtoremoveanyattributesfromtheexistingdocumentthatarecontainedinthepatchdocumentwithanattributevalueofnull.mergeObjects(optional):Controlswhetherobjects(notarrays)willbemergedifpresentinboththeexistingandthepatchdocument.Ifsettofalse,thevalueinthepatchdocumentwilloverwritetheexistingdocument'svalue.Ifsettotrue,objectswillbemerged.Thedefaultistrue.waitForSync(optional):Waituntildocumenthasbeensyncedtodisk.ignoreRevs(optional):Bydefault,orifthisissettotrue,the_revattributesinthegivendocumentisignored.Ifthisissettofalse,thenthe_revattributegiveninthebodydocumentistakenasaprecondition.Thedocumentisonlyupdatedifthecurrentrevisionistheonespecified.returnOld(optional):Returnadditionallythecompletepreviousrevisionofthechangeddocumentundertheattributeoldintheresult.returnNew(optional):Returnadditionallythecompletenewdocumentundertheattributenewintheresult.silent(optional):Ifsettotrue,anemptyobjectwillbereturnedasresponse.Nometa-datawillbereturnedfortheupdateddocument.Thisoptioncanbeusedtosavesomenetworktraffic.

HeaderParameters

If-Match(optional):Youcanconditionallyupdateadocumentbasedonatargetrevisionidbyusingtheif-matchHTTPheader.

Partiallyupdatesthedocumentidentifiedbydocument-handle.ThebodyoftherequestmustcontainaJSONdocumentwiththeattributestopatch(thepatchdocument).Allattributesfromthepatchdocumentwillbeaddedtotheexistingdocumentiftheydonotyetexist,andoverwrittenintheexistingdocumentiftheydoexistthere.

Settinganattributevaluetonullinthepatchdocumentwillcauseavalueofnulltobesavedfortheattributebydefault.

IftheIf-Matchheaderisspecifiedandtherevisionofthedocumentinthedatabaseisunequaltothegivenrevision,thepreconditionisviolated.

IfIf-MatchisnotgivenandignoreRevsisfalseandthereisa_revattributeinthebodyanditsvaluedoesnotmatchtherevisionofthedocumentinthedatabase,thepreconditionisviolated.

Ifapreconditionisviolated,anHTTP412isreturned.

Ifthedocumentexistsandcanbeupdated,thenanHTTP201oranHTTP202isreturned(dependingonwaitForSync,seebelow),theEtagheaderfieldcontainsthenewrevisionofthedocument(indoublequotes)andtheLocationheadercontainsacompleteURLunderwhichthedocumentcanbequeried.

Optionally,thequeryparameterwaitForSynccanbeusedtoforcesynchronizationoftheupdateddocumentoperationtodiskevenincasethatthewaitForSyncflaghadbeendisabledfortheentirecollection.Thus,thewaitForSyncqueryparametercanbeusedtoforcesynchronizationofjustspecificoperations.Tousethis,setthewaitForSyncparametertotrue.IfthewaitForSyncparameterisnotspecifiedorsettofalse,thenthecollection'sdefaultwaitForSyncbehaviorisapplied.ThewaitForSyncqueryparametercannotbeusedtodisablesynchronizationforcollectionsthathaveadefaultwaitForSyncvalueoftrue.

WorkingwithDocuments

68

Page 69: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Ifsilentisnotsettotrue,thebodyoftheresponsecontainsaJSONobjectwiththeinformationaboutthehandleandtherevision.Theattribute_idcontainstheknowndocument-handleoftheupdateddocument,_keycontainsthekeywhichuniquelyidentifiesadocumentinagivencollection,andtheattribute_revcontainsthenewdocumentrevision.

IfthequeryparameterreturnOldistrue,thenthecompletepreviousrevisionofthedocumentisreturnedundertheoldattributeintheresult.

IfthequeryparameterreturnNewistrue,thenthecompletenewdocumentisreturnedunderthenewattributeintheresult.

Ifthedocumentdoesnotexist,thenaHTTP404isreturnedandthebodyoftheresponsecontainsanerrordocument.

Example:Patchesanexistingdocumentwithnewcontent.

shell>curl-XPATCH--data-binary@---dump-http://localhost:8529/_api/document/products/10905<<EOF

{

"hello":"world"

}

EOF

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47YN6--B"

location:/_db/_system/_api/document/products/10905

{

"_id":"products/10905",

"_key":"10905",

"_rev":"_WQ47YN6--B",

"_oldRev":"_WQ47YN6--_"

}

shell>curl-XPATCH--data-binary@---dump-http://localhost:8529/_api/document/products/10905<<EOF

{

"numbers":{

"one":1,

"two":2,

"three":3,

"empty":null

}

}

EOF

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47YO---_"

location:/_db/_system/_api/document/products/10905

{

"_id":"products/10905",

"_key":"10905",

"_rev":"_WQ47YO---_",

"_oldRev":"_WQ47YN6--B"

}

shell>curl--dump-http://localhost:8529/_api/document/products/10905

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:"_WQ47YO---_"

{

"_key":"10905",

"_id":"products/10905",

"_rev":"_WQ47YO---_",

"one":"world",

"hello":"world",

"numbers":{

"one":1,

WorkingwithDocuments

69

Page 70: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"two":2,

"three":3,

"empty":null

}

}

shell>curl-XPATCH--data-binary@---dump-http://localhost:8529/_api/document/products/10905?keepNull=false<<EOF

{

"hello":null,

"numbers":{

"four":4

}

}

EOF

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47YOG--_"

location:/_db/_system/_api/document/products/10905

{

"_id":"products/10905",

"_key":"10905",

"_rev":"_WQ47YOG--_",

"_oldRev":"_WQ47YO---_"

}

shell>curl--dump-http://localhost:8529/_api/document/products/10905

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:"_WQ47YOG--_"

{

"_key":"10905",

"_id":"products/10905",

"_rev":"_WQ47YOG--_",

"one":"world",

"numbers":{

"empty":null,

"one":1,

"three":3,

"two":2,

"four":4

}

}

Example:MergingattributesofanobjectusingmergeObjects:

shell>curl--dump-http://localhost:8529/_api/document/products/10928

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:"_WQ47YPK--_"

{

"_key":"10928",

"_id":"products/10928",

"_rev":"_WQ47YPK--_",

"inhabitants":{

"china":1366980000,

"india":1263590000,

"usa":319220000

}

}

shell>curl-XPATCH--data-binary@---dump-http://localhost:8529/_api/document/products/10928?mergeObjects=true<<EOF

{

"inhabitants":{

"indonesia":252164800,

WorkingwithDocuments

70

Page 71: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"brazil":203553000

}

}

EOF

shell>curl--dump-http://localhost:8529/_api/document/products/10928

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:"_WQ47YPS---"

{

"_key":"10928",

"_id":"products/10928",

"_rev":"_WQ47YPS---",

"inhabitants":{

"china":1366980000,

"india":1263590000,

"usa":319220000,

"indonesia":252164800,

"brazil":203553000

}

}

shell>curl-XPATCH--data-binary@---dump-http://localhost:8529/_api/document/products/10928?mergeObjects=false<<EOF

{

"inhabitants":{

"pakistan":188346000

}

}

EOF

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47YPa--_"

location:/_db/_system/_api/document/products/10928

{

"_id":"products/10928",

"_key":"10928",

"_rev":"_WQ47YPa--_",

"_oldRev":"_WQ47YPS---"

}

shell>curl--dump-http://localhost:8529/_api/document/products/10928

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:"_WQ47YPa--_"

{

"_key":"10928",

"_id":"products/10928",

"_rev":"_WQ47YPa--_",

"inhabitants":{

"pakistan":188346000

}

}

ReturnCodes

201:isreturnedifthedocumentwasupdatedsuccessfullyandwaitForSyncwastrue.202:isreturnedifthedocumentwasupdatedsuccessfullyandwaitForSyncwasfalse.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofadocument.Theresponsebodycontainsanerrordocumentinthiscase.404:isreturnedifthecollectionorthedocumentwasnotfound.412:isreturnedifthepreconditionwasviolated.Theresponsewillalsocontainthefounddocuments'currentrevisionsinthe_revattributes.Additionally,theattributes_idand_keywillbereturned.

Examples

Patchesanexistingdocumentwithnewcontent.

WorkingwithDocuments

71

Page 72: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

shell>curl-XPATCH--data-binary@---dump-

http://localhost:8529/_api/document/products/10905<<EOF

{

"hello":"world"

}

EOF

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47YN6--B"

location:/_db/_system/_api/document/products/10905

showresponsebodyMergingattributesofanobjectusingmergeObjects:

shell>curl--dump-http://localhost:8529/_api/document/products/10928

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:"_WQ47YPK--_"

showresponsebody

Changesin3.0from2.8:

TherearequitesomechangesinthisincomparisontoVersion2.8,butfewbreakexistingusage:

therevqueryparameterisgone(wasduplicationofIf-Match)thepolicyqueryparameterisgone(wasnon-sensical)theignoreRevsqueryparameterisnew,thedefaulttruegivesthetraditionalbehaviorasin2.8thereturnNewandreturnOldqueryparametersarenew

Thereshouldbeveryfewchangestobehaviorhappeninginreal-worldsituationsordrivers.Essentially,onehastoreplaceusageoftherevqueryparameterbyusageoftheIf-Matchheader.Thenon-sensicalcombinationofIf-Matchgivenandpolicy=lastnolongerworks,butcaneasilybeachievedbyleavingouttheIf-Matchheader.

ThecollectionnameshouldnowbespecifiedintheURLpath.TheoldwaywiththeURLpath/_api/documentandtherequiredqueryparametercollectionstillworks.

Updatedocuments

updatesmultipledocuments

PATCH/_api/document/{collection}

RequestBody(required)

AJSONrepresentationofanarrayofdocumentupdatesasobjects.

PathParameters

collection(required):ThisURLparameteristhenameofthecollectioninwhichthedocumentsareupdated.

QueryParameters

keepNull(optional):Iftheintentionistodeleteexistingattributeswiththepatchcommand,theURLqueryparameterkeepNullcan

WorkingwithDocuments

72

Page 73: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

beusedwithavalueoffalse.Thiswillmodifythebehaviorofthepatchcommandtoremoveanyattributesfromtheexistingdocumentthatarecontainedinthepatchdocumentwithanattributevalueofnull.mergeObjects(optional):Controlswhetherobjects(notarrays)willbemergedifpresentinboththeexistingandthepatchdocument.Ifsettofalse,thevalueinthepatchdocumentwilloverwritetheexistingdocument'svalue.Ifsettotrue,objectswillbemerged.Thedefaultistrue.waitForSync(optional):Waituntilthenewdocumentshavebeensyncedtodisk.ignoreRevs(optional):Bydefault,orifthisissettotrue,the_revattributesinthegivendocumentsareignored.Ifthisissettofalse,thenany_revattributegiveninabodydocumentistakenasaprecondition.Thedocumentisonlyupdatedifthecurrentrevisionistheonespecified.returnOld(optional):Returnadditionallythecompletepreviousrevisionofthechangeddocumentsundertheattributeoldintheresult.returnNew(optional):Returnadditionallythecompletenewdocumentsundertheattributenewintheresult.

Partiallyupdatesdocuments,thedocumentstoupdatearespecifiedbythe_keyattributesinthebodyobjects.ThebodyoftherequestmustcontainaJSONarrayofdocumentupdateswiththeattributestopatch(thepatchdocuments).Allattributesfromthepatchdocumentswillbeaddedtotheexistingdocumentsiftheydonotyetexist,andoverwrittenintheexistingdocumentsiftheydoexistthere.

Settinganattributevaluetonullinthepatchdocumentswillcauseavalueofnulltobesavedfortheattributebydefault.

IfignoreRevsisfalseandthereisa_revattributeinadocumentinthebodyanditsvaluedoesnotmatchtherevisionofthecorrespondingdocumentinthedatabase,thepreconditionisviolated.

Ifthedocumentexistsandcanbeupdated,thenanHTTP201oranHTTP202isreturned(dependingonwaitForSync,seebelow).

Optionally,thequeryparameterwaitForSynccanbeusedtoforcesynchronizationofthedocumentreplacementoperationtodiskevenincasethatthewaitForSyncflaghadbeendisabledfortheentirecollection.Thus,thewaitForSyncqueryparametercanbeusedtoforcesynchronizationofjustspecificoperations.Tousethis,setthewaitForSyncparametertotrue.IfthewaitForSyncparameterisnotspecifiedorsettofalse,thenthecollection'sdefaultwaitForSyncbehaviorisapplied.ThewaitForSyncqueryparametercannotbeusedtodisablesynchronizationforcollectionsthathaveadefaultwaitForSyncvalueoftrue.

ThebodyoftheresponsecontainsaJSONarrayofthesamelengthastheinputarraywiththeinformationaboutthehandleandtherevisionoftheupdateddocuments.Ineachentry,theattribute_idcontainstheknowndocument-handleofeachupdateddocument,_keycontainsthekeywhichuniquelyidentifiesadocumentinagivencollection,andtheattribute_revcontainsthenewdocumentrevision.Incaseofanerrororviolatedprecondition,anerrorobjectwiththeattributeerrorsettotrueandtheattributeerrorCodesettotheerrorcodeisbuilt.

IfthequeryparameterreturnOldistrue,then,foreachgenerateddocument,thecompletepreviousrevisionofthedocumentisreturnedundertheoldattributeintheresult.

IfthequeryparameterreturnNewistrue,then,foreachgenerateddocument,thecompletenewdocumentisreturnedunderthenewattributeintheresult.

Notethatifanypreconditionisviolatedoranerroroccurredwithsomeofthedocuments,thereturncodeisstill201or202,buttheadditionalHTTPheaderX-Arango-Error-Codesisset,whichcontainsamapoftheerrorcodesthatoccurredtogetherwiththeirmultiplicities,asin:1200:17,1205:10whichmeansthatin17casestheerror1200"revisionconflict"andin10casestheerror1205"illegaldocumenthandle"hashappened.

ReturnCodes

201:isreturnedifthedocumentswereupdatedsuccessfullyandwaitForSyncwastrue.202:isreturnedifthedocumentswereupdatedsuccessfullyandwaitForSyncwasfalse.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofanarrayofdocuments.Theresponsebodycontainsanerrordocumentinthiscase.404:isreturnedifthecollectionwasnotfound.

Changesin3.0from2.8:

Themultidocumentversionisnewin3.0.

Removesadocument

WorkingwithDocuments

73

Page 74: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

removesadocument

DELETE/_api/document/{document-handle}

PathParameters

document-handle(required):Removesthedocumentidentifiedbydocument-handle.

QueryParameters

waitForSync(optional):Waituntildeletionoperationhasbeensyncedtodisk.returnOld(optional):Returnadditionallythecompletepreviousrevisionofthechangeddocumentundertheattributeoldintheresult.silent(optional):Ifsettotrue,anemptyobjectwillbereturnedasresponse.Nometa-datawillbereturnedfortheremoveddocument.Thisoptioncanbeusedtosavesomenetworktraffic.

HeaderParameters

If-Match(optional):Youcanconditionallyremoveadocumentbasedonatargetrevisionidbyusingtheif-matchHTTPheader.

Ifsilentisnotsettotrue,thebodyoftheresponsecontainsaJSONobjectwiththeinformationaboutthehandleandtherevision.Theattribute_idcontainstheknowndocument-handleoftheremoveddocument,_keycontainsthekeywhichuniquelyidentifiesadocumentinagivencollection,andtheattribute_revcontainsthedocumentrevision.

IfthewaitForSyncparameterisnotspecifiedorsettofalse,thenthecollection'sdefaultwaitForSyncbehaviorisapplied.ThewaitForSyncqueryparametercannotbeusedtodisablesynchronizationforcollectionsthathaveadefaultwaitForSyncvalueoftrue.

IfthequeryparameterreturnOldistrue,thenthecompletepreviousrevisionofthedocumentisreturnedundertheoldattributeintheresult.

Example:Usingdocumenthandle:

shell>curl-XDELETE--dump-http://localhost:8529/_api/document/products/10788

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47YCu--_"

location:/_db/_system/_api/document/products/10788

{

"_id":"products/10788",

"_key":"10788",

"_rev":"_WQ47YCu--_"

}

Example:Unknowndocumenthandle:

shell>curl-XDELETE--dump-http://localhost:8529/_api/document/products/10860

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"documentnotfound",

"code":404,

"errorNum":1202

}

WorkingwithDocuments

74

Page 75: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Example:Revisionconflict:

shell>curl-XDELETE--header'If-Match:"_WQ47YEu--B"'--dump-http://localhost:8529/_api/document/products/10805

HTTP/1.1412PreconditionFailed

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:"_WQ47YEu--_"

{

"error":true,

"code":412,

"errorNum":1200,

"errorMessage":"preconditionfailed",

"_id":"products/10805",

"_key":"10805",

"_rev":"_WQ47YEu--_"

}

ReturnCodes

200:isreturnedifthedocumentwasremovedsuccessfullyandwaitForSyncwastrue.202:isreturnedifthedocumentwasremovedsuccessfullyandwaitForSyncwasfalse.404:isreturnedifthecollectionorthedocumentwasnotfound.Theresponsebodycontainsanerrordocumentinthiscase.412:isreturnedifa"If-Match"headerorrevisgivenandthefounddocumenthasadifferentversion.Theresponsewillalsocontainthefounddocument'scurrentrevisioninthe_revattribute.Additionally,theattributes_idand_keywillbereturned.

Examples

Usingdocumenthandle:

shell>curl-XDELETE--dump-http://localhost:8529/_api/document/products/10788

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47YCu--_"

location:/_db/_system/_api/document/products/10788

showresponsebodyUnknowndocumenthandle:

shell>curl-XDELETE--dump-http://localhost:8529/_api/document/products/10860

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyRevisionconflict:

shell>curl-XDELETE--header'If-Match:"_WQ47YEu--B"'--dump-

http://localhost:8529/_api/document/products/10805

HTTP/1.1412PreconditionFailed

x-content-type-options:nosniff

WorkingwithDocuments

75

Page 76: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

content-type:application/json;charset=utf-8

etag:"_WQ47YEu--_"

showresponsebody

Changesin3.0from2.8:

ThereareonlyveryfewchangesinthisincomparisontoVersion2.8:

therevqueryparameterisgone(wasduplicationofIf-Match)thepolicyqueryparameterisgone(wasnon-sensical)thereturnOldqueryparameterisnew

Thereshouldbeveryfewchangestobehaviorhappeninginreal-worldsituationsordrivers.Essentially,onehastoreplaceusageoftherevqueryparameterbyusageoftheIf-Matchheader.Thenon-sensicalcombinationofIf-Matchgivenandpolicy=lastnolongerworks,butcaneasilybeachievedbyleavingouttheIf-Matchheader.

Removesmultipledocuments

removesmultipledocument

DELETE/_api/document/{collection}

RequestBody(required)

AJSONarrayofstringsordocuments.

PathParameters

collection(required):Collectionfromwhichdocumentsareremoved.

QueryParameters

waitForSync(optional):Waituntildeletionoperationhasbeensyncedtodisk.returnOld(optional):Returnadditionallythecompletepreviousrevisionofthechangeddocumentundertheattributeoldintheresult.ignoreRevs(optional):Ifsettotrue,ignoreany_revattributeintheselectors.Norevisioncheckisperformed.

Thebodyoftherequestisanarrayconsistingofselectorsfordocuments.Aselectorcaneitherbeastringwithakeyorastringwithadocumenthandleoranobjectwitha_keyattribute.ThisAPIcallremovesallspecifieddocumentsfromcollection.Iftheselectorisanobjectandhasa_revattribute,itisapreconditionthattheactualrevisionoftheremoveddocumentinthecollectionisthespecifiedone.

Thebodyoftheresponseisanarrayofthesamelengthastheinputarray.Foreachinputselector,theoutputcontainsaJSONobjectwiththeinformationabouttheoutcomeoftheoperation.Ifnoerroroccurred,anobjectisbuiltinwhichtheattribute_idcontainstheknowndocument-handleoftheremoveddocument,_keycontainsthekeywhichuniquelyidentifiesadocumentinagivencollection,andtheattribute_revcontainsthedocumentrevision.Incaseofanerror,anobjectwiththeattributeerrorsettotrueanderrorCodesettotheerrorcodeisbuilt.

IfthewaitForSyncparameterisnotspecifiedorsettofalse,thenthecollection'sdefaultwaitForSyncbehaviorisapplied.ThewaitForSyncqueryparametercannotbeusedtodisablesynchronizationforcollectionsthathaveadefaultwaitForSyncvalueoftrue.

IfthequeryparameterreturnOldistrue,thenthecompletepreviousrevisionofthedocumentisreturnedundertheoldattributeintheresult.

Notethatifanypreconditionisviolatedoranerroroccurredwithsomeofthedocuments,thereturncodeisstill200or202,buttheadditionalHTTPheaderX-Arango-Error-Codesisset,whichcontainsamapoftheerrorcodesthatoccurredtogetherwiththeirmultiplicities,asin:1200:17,1205:10whichmeansthatin17casestheerror1200"revisionconflict"andin10casestheerror1205"illegaldocumenthandle"hashappened.

Example:

WorkingwithDocuments

76

Page 77: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Usingdocumenthandle:

shell>curl-XDELETE--dump-http://localhost:8529/_api/document/products/10843

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47YHa--_"

location:/_db/_system/_api/document/products/10843

{

"_id":"products/10843",

"_key":"10843",

"_rev":"_WQ47YHa--_"

}

Example:Unknowndocumenthandle:

shell>curl-XDELETE--dump-http://localhost:8529/_api/document/products/10887

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"documentnotfound",

"code":404,

"errorNum":1202

}

Example:Revisionconflict:

shell>curl-XDELETE--header'If-Match:"_WQ47YFO--_"'--dump-http://localhost:8529/_api/document/products/10824

HTTP/1.1412PreconditionFailed

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:"_WQ47YFK--_"

{

"error":true,

"code":412,

"errorNum":1200,

"errorMessage":"preconditionfailed",

"_id":"products/10824",

"_key":"10824",

"_rev":"_WQ47YFK--_"

}

ReturnCodes

200:isreturnedifwaitForSyncwastrue.202:isreturnedifwaitForSyncwasfalse.404:isreturnedifthecollectionwasnotfound.Theresponsebodycontainsanerrordocumentinthiscase.

Examples

Usingdocumenthandle:

shell>curl-XDELETE--dump-http://localhost:8529/_api/document/products/10843

WorkingwithDocuments

77

Page 78: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

etag:"_WQ47YHa--_"

location:/_db/_system/_api/document/products/10843

showresponsebodyUnknowndocumenthandle:

shell>curl-XDELETE--dump-http://localhost:8529/_api/document/products/10887

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyRevisionconflict:

shell>curl-XDELETE--header'If-Match:"_WQ47YFO--_"'--dump-

http://localhost:8529/_api/document/products/10824

HTTP/1.1412PreconditionFailed

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:"_WQ47YFK--_"

showresponsebody

Changesin3.0from2.8:

Thisvariantisnewin3.0.NotethatitrequiresabodyintheDELETErequest.

WorkingwithDocuments

78

Page 79: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforEdgesThisisanintroductiontoArangoDB'sRESTinterfaceforedges.

ArangoDBoffersgraphfunctionality;Edgesareonepartofthat.

Edges

79

Page 80: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

AddressandEtagofanEdgeAlldocumentsinArangoDBhaveadocumenthandle.Thishandleuniquelyidentifiesadocument.AnydocumentcanberetrievedusingitsuniqueURI:

http://server:port/_api/document/<document-handle>

Edgesareaspecialvariationofdocuments.ToaccessanedgeusethesameURLformatasforadocument:

http://server:port/_api/document/<document-handle>

Forexample,assumedthatthedocumenthandle,whichisstoredinthe_idattributeoftheedge,isdemo/362549736,thentheURLofthatedgeis:

http://localhost:8529/_api/document/demo/362549736

TheaboveURLschemedoesnotspecifyadatabasenameexplicitly,sothedefaultdatabasewillbeused.Toexplicitlyspecifythedatabasecontext,usethefollowingURLschema:

http://server:port/_db/<database-name>/_api/document/<document-handle>

Example:

http://localhost:8529/_db/mydb/_api/document/demo/362549736

Note:thatthefollowingexamplesusetheshortURLformatforbrevity.

AddressandEtag

80

Page 81: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

WorkingwithEdgesusingRESTThisisdocumentationtoArangoDB'sRESTinterfaceforedges.

Edgesaredocumentswithtwoadditionalattributes:_fromand_to.Theseattributesaremandatoryandmustcontainthedocument-handleofthefromandtoverticesofanedge.

UsethegeneraldocumentRESTapiforcreate/read/update/delete.

Readin-oroutboundedges

getedges

GET/_api/edges/{collection-id}

PathParameters

collection-id(required):Theidofthecollection.

QueryParameters

vertex(required):Theidofthestartvertex.direction(optional):Selectsinoroutdirectionforedges.Ifnotset,anyedgesarereturned.

Returnsanarrayofedgesstartingorendinginthevertexidentifiedbyvertex-handle.

Example:Anydirection

shell>curl--dump-http://localhost:8529/_api/edges/edges?vertex=vertices/1

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"edges":[

{

"_key":"6",

"_id":"edges/6",

"_from":"vertices/2",

"_to":"vertices/1",

"_rev":"_WQ47Ygy---",

"$label":"v2->v1"

},

{

"_key":"7",

"_id":"edges/7",

"_from":"vertices/4",

"_to":"vertices/1",

"_rev":"_WQ47Ygy--A",

"$label":"v4->v1"

},

{

"_key":"5",

"_id":"edges/5",

"_from":"vertices/1",

"_to":"vertices/3",

"_rev":"_WQ47Ygu--H",

"$label":"v1->v3"

}

],

"error":false,

"code":200,

"stats":{

"scannedIndex":3,

WorkingwithEdges

81

Page 82: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"filtered":0

}

}

Example:Inedges

shell>curl--dump-http://localhost:8529/_api/edges/edges?vertex=vertices/1&direction=in

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"edges":[

{

"_key":"6",

"_id":"edges/6",

"_from":"vertices/2",

"_to":"vertices/1",

"_rev":"_WQ47Yj---_",

"$label":"v2->v1"

},

{

"_key":"7",

"_id":"edges/7",

"_from":"vertices/4",

"_to":"vertices/1",

"_rev":"_WQ47Yj---B",

"$label":"v4->v1"

}

],

"error":false,

"code":200,

"stats":{

"scannedIndex":2,

"filtered":0

}

}

Example:Outedges

shell>curl--dump-http://localhost:8529/_api/edges/edges?vertex=vertices/1&direction=out

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"edges":[

{

"_key":"5",

"_id":"edges/5",

"_from":"vertices/1",

"_to":"vertices/3",

"_rev":"_WQ47Yjy--H",

"$label":"v1->v3"

}

],

"error":false,

"code":200,

"stats":{

"scannedIndex":1,

"filtered":0

}

WorkingwithEdges

82

Page 83: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

}

ReturnCodes

200:isreturnediftheedgecollectionwasfoundandedgeswereretrieved.400:isreturnediftherequestcontainsinvalidparameters.404:isreturnediftheedgecollectionwasnotfound.

Examples

Anydirection

shell>curl--dump-http://localhost:8529/_api/edges/edges?vertex=vertices/1

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyInedges

shell>curl--dump-http://localhost:8529/_api/edges/edges?vertex=vertices/1&direction=in

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyOutedges

shell>curl--dump-http://localhost:8529/_api/edges/edges?

vertex=vertices/1&direction=out

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

WorkingwithEdges

83

Page 84: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

GeneralGraphsThischapterdescribestheRESTinterfaceforthemulti-collectiongraphmodule.Itallowsyoutodefineagraphthatisspreadacrossseveraledgeanddocumentcollections.Thereisnoneedtoincludethereferencedcollectionswithinthequery,thismodulewillhandleitforyou.

GeneralGraph

84

Page 85: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

ManageyourgraphsThegraphmoduleprovidesfunctionsdealingwithgraphstructures.ExampleswillexplaintheRESTAPIonthesocialgraph:

Listallgraphs

Listsallgraphsknowntothegraphmodule.

GET/_api/gharial

Listsallgraphnamesstoredinthisdatabase.

Example:

shell>curl--dump-http://localhost:8529/_api/gharial

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"graphs":[

{

"_key":"routeplanner",

"_id":"_graphs/routeplanner",

"_rev":"_WQ47RH2--_",

"orphanCollections":[],

"edgeDefinitions":[

{

"collection":"germanHighway",

"from":[

"germanCity"

],

"to":[

"germanCity"

]

},

{

"collection":"frenchHighway",

"from":[

"frenchCity"

],

"to":[

"frenchCity"

]

},

{

"collection":"internationalHighway",

"from":[

"frenchCity",

"germanCity"

],

"to":[

"frenchCity",

"germanCity"

]

}

],

"numberOfShards":1,

"replicationFactor":1

},

{

"_key":"social",

"_id":"_graphs/social",

"_rev":"_WQ47Q8C--_",

Management

85

Page 86: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"orphanCollections":[],

"edgeDefinitions":[

{

"collection":"relation",

"from":[

"female",

"male"

],

"to":[

"female",

"male"

]

}

],

"numberOfShards":1,

"replicationFactor":1

}

],

"code":200

}

ReturnCodes

200:Isreturnedifthemoduleisavailableandthegraphscouldbelisted.

Examples

shell>curl--dump-http://localhost:8529/_api/gharial

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Createagraph

Createanewgraphinthegraphmodule.

POST/_api/gharial

Thecreationofagraphrequiresthenameofthegraphandadefinitionofitsedges.Seealsoedgedefinitions.

AJSONobjectwiththesepropertiesisrequired:

orphanCollections:Anarrayofadditionalvertexcollections.edgeDefinitions:Anarrayofdefinitionsfortheedgename:Nameofthegraph.isSmart:Defineifthecreatedgraphshouldbesmart.ThisonlyhaseffectinEnterpriseversion.options:

smartGraphAttribute:Theattributenamethatisusedtosmartlyshardtheverticesofagraph.EveryvertexinthisGraphhastohavethisattribute.Cannotbemodifiedlater.numberOfShards:Thenumberofshardsthatisusedforeverycollectionwithinthisgraph.Cannotbemodifiedlater.

Example:

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/gharial<<EOF

{

"name":"myGraph",

"edgeDefinitions":[

{

"collection":"edges",

"from":[

"startVertices"

Management

86

Page 87: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

],

"to":[

"endVertices"

]

}

]

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47OnC--_

{

"error":false,

"graph":{

"name":"myGraph",

"edgeDefinitions":[

{

"collection":"edges",

"from":[

"startVertices"

],

"to":[

"endVertices"

]

}

],

"orphanCollections":[],

"isSmart":false,

"numberOfShards":0,

"replicationFactor":1,

"smartGraphAttribute":"",

"_id":"_graphs/myGraph",

"_rev":"_WQ47OnC--_"

},

"code":202

}

Example:

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/gharial<<EOF

{

"name":"myGraph",

"edgeDefinitions":[

{

"collection":"edges",

"from":[

"startVertices"

],

"to":[

"endVertices"

]

}

],

"isSmart":true,

"options":{

"numberOfShards":9,

"smartGraphAttribute":"region"

}

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47PHG--_

{

"error":false,

"graph":{

Management

87

Page 88: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"name":"myGraph",

"edgeDefinitions":[

{

"collection":"edges",

"from":[

"startVertices"

],

"to":[

"endVertices"

]

}

],

"orphanCollections":[],

"isSmart":false,

"numberOfShards":0,

"replicationFactor":1,

"smartGraphAttribute":"",

"_id":"_graphs/myGraph",

"_rev":"_WQ47PHG--_"

},

"code":202

}

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/gharial<<EOF

{

"name":"myGraph",

"edgeDefinitions":[

{

"collection":"edges",

"from":[

"startVertices"

],

"to":[

"endVertices"

]

}

]

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47OnC--_

showresponsebody

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/gharial<<EOF

{

"name":"myGraph",

"edgeDefinitions":[

{

"collection":"edges",

"from":[

"startVertices"

],

"to":[

"endVertices"

]

}

Management

88

Page 89: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

],

"isSmart":true,

"options":{

"numberOfShards":9,

"smartGraphAttribute":"region"

}

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47PHG--_

showresponsebody

Getagraph

Getagraphfromthegraphmodule.

GET/_api/gharial/{graph-name}

Getsagraphfromthecollection_graphs.Returnsthedefinitioncontentofthisgraph.

Example:

shell>curl--dump-http://localhost:8529/_api/gharial/myGraph

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47Qli--_

{

"error":false,

"graph":{

"name":"myGraph",

"edgeDefinitions":[

{

"collection":"edges",

"from":[

"startVertices"

],

"to":[

"endVertices"

]

}

],

"orphanCollections":[],

"isSmart":false,

"numberOfShards":1,

"replicationFactor":1,

"smartGraphAttribute":"",

"_id":"_graphs/myGraph",

"_rev":"_WQ47Qli--_"

},

"code":200

}

PathParameters

graph-name(required):Thenameofthegraph.

ReturnCodes

Management

89

Page 90: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

200:Returnedifthegraphcouldbefound.404:Returnedifnographwiththisnamecouldbefound.

Examples

shell>curl--dump-http://localhost:8529/_api/gharial/myGraph

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47Qli--_

showresponsebody

Dropagraph

deleteanexistinggraph

DELETE/_api/gharial/{graph-name}

Removesagraphfromthecollection_graphs.

Example:

shell>curl-XDELETE--dump-http://localhost:8529/_api/gharial/social?dropCollections=true

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"removed":true,

"code":202

}

PathParameters

graph-name(required):Thenameofthegraph.

QueryParameters

dropCollections(optional):Dropcollectionsofthisgraphaswell.Collectionswillonlybedroppediftheyarenotusedinothergraphs.

ReturnCodes

201:IsreturnedifthegraphcouldbedroppedandwaitForSyncisenabledforthe_graphscollection.202:ReturnedifthegraphcouldbedroppedandwaitForSyncisdisabledforthe_graphscollection.404:Returnedifnographwiththisnamecouldbefound.

Examples

shell>curl-XDELETE--dump-http://localhost:8529/_api/gharial/social?

dropCollections=true

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

Management

90

Page 91: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

showresponsebody

Listvertexcollections

Listsallvertexcollectionsusedinthisgraph.

GET/_api/gharial/{graph-name}/vertex

Listsallvertexcollectionswithinthisgraph.

Example:

shell>curl--dump-http://localhost:8529/_api/gharial/social/vertex

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"collections":[

"female",

"male"

],

"code":200

}

PathParameters

graph-name(required):Thenameofthegraph.

ReturnCodes

200:Isreturnedifthecollectionscouldbelisted.404:Returnedifnographwiththisnamecouldbefound.

Examples

shell>curl--dump-http://localhost:8529/_api/gharial/social/vertex

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Addvertexcollection

Addanadditionalvertexcollectiontothegraph.

POST/_api/gharial/{graph-name}/vertex

Addsavertexcollectiontothesetofcollectionsofthegraph.Ifthecollectiondoesnotexist,itwillbecreated.

Example:

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/gharial/social/vertex<<EOF

{

"collection":"otherVertices"

}

EOF

Management

91

Page 92: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47N8y--_

{

"error":false,

"graph":{

"name":"social",

"edgeDefinitions":[

{

"collection":"relation",

"from":[

"female",

"male"

],

"to":[

"female",

"male"

]

}

],

"orphanCollections":[

"otherVertices"

],

"isSmart":false,

"numberOfShards":1,

"replicationFactor":1,

"smartGraphAttribute":"",

"_id":"_graphs/social",

"_rev":"_WQ47N8y--_"

},

"code":202

}

PathParameters

graph-name(required):Thenameofthegraph.

ReturnCodes

201:ReturnediftheedgecollectioncouldbeaddedsuccessfullyandwaitForSyncistrue.202:ReturnediftheedgecollectioncouldbeaddedsuccessfullyandwaitForSyncisfalse.404:Returnedifnographwiththisnamecouldbefound.

Examples

shell>curl-XPOST--data-binary@---dump-

http://localhost:8529/_api/gharial/social/vertex<<EOF

{

"collection":"otherVertices"

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47N8y--_

showresponsebody

Removevertexcollection

Removeavertexcollectionformthegraph.

Management

92

Page 93: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

DELETE/_api/gharial/{graph-name}/vertex/{collection-name}

Removesavertexcollectionfromthegraphandoptionallydeletesthecollection,ifitisnotusedinanyothergraph.

Example:Youcanremovevertexcollectionsthatarenotusedinanyedgecollection:

shell>curl-XDELETE--dump-http://localhost:8529/_api/gharial/social/vertex/otherVertices

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47T_e--_

{

"error":false,

"graph":{

"name":"social",

"edgeDefinitions":[

{

"collection":"relation",

"from":[

"female",

"male"

],

"to":[

"female",

"male"

]

}

],

"orphanCollections":[],

"isSmart":false,

"numberOfShards":1,

"replicationFactor":1,

"smartGraphAttribute":"",

"_id":"_graphs/social",

"_rev":"_WQ47T_e--_"

},

"code":202

}

Example:Youcannotremovevertexcollectionsthatareusedinedgecollections:

shell>curl-XDELETE--dump-http://localhost:8529/_api/gharial/social/vertex/male

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorNum":1928,

"errorMessage":"notinorphancollection",

"code":400

}

PathParameters

graph-name(required):Thenameofthegraph.collection-name(required):Thenameofthevertexcollection.

QueryParameters

Management

93

Page 94: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

dropCollection(optional):Dropthecollectionaswell.Collectionwillonlybedroppedifitisnotusedinothergraphs.

ReturnCodes

201:ReturnedifthevertexcollectionwasremovedfromthegraphsuccessfullyandwaitForSyncistrue.202:ReturnediftherequestwassuccessfulbutwaitForSyncisfalse.400:Returnedifthevertexcollectionisstillusedinanedgedefinition.Inthiscaseitcannotberemovedfromthegraphyet,ithastoberemovedfromtheedgedefinitionfirst.404:Returnedifnographwiththisnamecouldbefound.

Examples

Youcanremovevertexcollectionsthatarenotusedinanyedgecollection:

shell>curl-XDELETE--dump-

http://localhost:8529/_api/gharial/social/vertex/otherVertices

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47T_e--_

showresponsebodyYoucannotremovevertexcollectionsthatareusedinedgecollections:

shell>curl-XDELETE--dump-http://localhost:8529/_api/gharial/social/vertex/male

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Listedgedefinitions

Listsalledgedefinitions

GET/_api/gharial/{graph-name}/edge

Listsalledgecollectionswithinthisgraph.

Example:

shell>curl--dump-http://localhost:8529/_api/gharial/social/edge

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"collections":[

"relation"

],

"code":200

}

PathParameters

Management

94

Page 95: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

graph-name(required):Thenameofthegraph.

ReturnCodes

200:Isreturnediftheedgedefinitionscouldbelisted.404:Returnedifnographwiththisnamecouldbefound.

Examples

shell>curl--dump-http://localhost:8529/_api/gharial/social/edge

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Addedgedefinition

Addanewedgedefinitiontothegraph

POST/_api/gharial/{graph-name}/edge

Addsanadditionaledgedefinitiontothegraph.

Thisedgedefinitionhastocontainacollectionandanarrayofeachfromandtovertexcollections.Anedgedefinitioncanonlybeaddedifthisdefinitioniseithernotusedinanyothergraph,oritisusedwithexactlythesamedefinition.Itisnotpossibletostoreadefinition"e"from"v1"to"v2"intheonegraph,and"e"from"v2"to"v1"intheothergraph.

AJSONobjectwiththesepropertiesisrequired:

to(string):Oneormanyvertexcollectionsthatcancontaintargetvertices.from(string):Oneormanyvertexcollectionsthatcancontainsourcevertices.collection:Thenameoftheedgecollectiontobeused.

Example:

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/gharial/social/edge<<EOF

{

"collection":"works_in",

"from":[

"female",

"male"

],

"to":[

"city"

]

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47Mr6--_

{

"error":false,

"graph":{

"name":"social",

"edgeDefinitions":[

{

"collection":"relation",

"from":[

"female",

"male"

Management

95

Page 96: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

],

"to":[

"female",

"male"

]

},

{

"collection":"works_in",

"from":[

"female",

"male"

],

"to":[

"city"

]

}

],

"orphanCollections":[],

"isSmart":false,

"numberOfShards":1,

"replicationFactor":1,

"smartGraphAttribute":"",

"_id":"_graphs/social",

"_rev":"_WQ47Mr6--_"

},

"code":202

}

PathParameters

graph-name(required):Thenameofthegraph.

ReturnCodes

201:ReturnedifthedefinitioncouldbeaddedsuccessfullyandwaitForSyncisenabledforthe_graphscollection.202:ReturnedifthedefinitioncouldbeaddedsuccessfullyandwaitForSyncisdisabledforthe_graphscollection.400:Returnedifthedefininitioncouldnotbeadded,theedgecollectionisusedinanothergraphwithadifferentsignature.404:Returnedifnographwiththisnamecouldbefound.

Examples

shell>curl-XPOST--data-binary@---dump-

http://localhost:8529/_api/gharial/social/edge<<EOF

{

"collection":"works_in",

"from":[

"female",

"male"

],

"to":[

"city"

]

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47Mr6--_

showresponsebody

Replaceanedgedefinition

Management

96

Page 97: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Replaceanexistingedgedefinition

PUT/_api/gharial/{graph-name}/edge/{definition-name}

Changeonespecificedgedefinition.Thiswillmodifyalloccurrencesofthisdefinitioninallgraphsknowntoyourdatabase.

AJSONobjectwiththesepropertiesisrequired:

to(string):Oneormanyvertexcollectionsthatcancontaintargetvertices.from(string):Oneormanyvertexcollectionsthatcancontainsourcevertices.collection:Thenameoftheedgecollectiontobeused.

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/gharial/social/edge/relation<<EOF

{

"collection":"relation",

"from":[

"female",

"male",

"animal"

],

"to":[

"female",

"male",

"animal"

]

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47TS6--_

{

"error":false,

"graph":{

"name":"social",

"edgeDefinitions":[

{

"collection":"relation",

"from":[

"animal",

"female",

"male"

],

"to":[

"animal",

"female",

"male"

]

}

],

"orphanCollections":[],

"isSmart":false,

"numberOfShards":1,

"replicationFactor":1,

"smartGraphAttribute":"",

"_id":"_graphs/social",

"_rev":"_WQ47TS6--_"

},

"code":202

}

PathParameters

graph-name(required):Thenameofthegraph.definition-name(required):Thenameoftheedgecollectionusedinthedefinition.

ReturnCodes

Management

97

Page 98: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

201:ReturnediftherequestwassuccessfulandwaitForSyncistrue.202:ReturnediftherequestwassuccessfulbutwaitForSyncisfalse.400:Returnedifnoedgedefinitionwiththisnameisfoundinthegraph.404:Returnedifnographwiththisnamecouldbefound.

Examples

shell>curl-XPUT--data-binary@---dump-

http://localhost:8529/_api/gharial/social/edge/relation<<EOF

{

"collection":"relation",

"from":[

"female",

"male",

"animal"

],

"to":[

"female",

"male",

"animal"

]

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47TS6--_

showresponsebody

Removeanedgedefinitionfromthegraph

Removeanedgedefinitionformthegraph

DELETE/_api/gharial/{graph-name}/edge/{definition-name}

Removeoneedgedefinitionfromthegraph.Thiswillonlyremovetheedgecollection,thevertexcollectionsremainuntouchedandcanstillbeusedinyourqueries.

Example:

shell>curl-XDELETE--dump-http://localhost:8529/_api/gharial/social/edge/relation

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47QNS--_

{

"error":false,

"graph":{

"name":"social",

"edgeDefinitions":[],

"orphanCollections":[

"female",

"male"

],

"isSmart":false,

"numberOfShards":1,

Management

98

Page 99: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"replicationFactor":1,

"smartGraphAttribute":"",

"_id":"_graphs/social",

"_rev":"_WQ47QNS--_"

},

"code":202

}

PathParameters

graph-name(required):Thenameofthegraph.definition-name(required):Thenameoftheedgecollectionusedinthedefinition.

QueryParameters

dropCollection(optional):Dropthecollectionaswell.Collectionwillonlybedroppedifitisnotusedinothergraphs.

ReturnCodes

201:ReturnediftheedgedefinitioncouldberemovedfromthegraphandwaitForSyncistrue.202:ReturnediftheedgedefinitioncouldberemovedfromthegraphandwaitForSyncisfalse.400:Returnedifnoedgedefinitionwiththisnameisfoundinthegraph.404:Returnedifnographwiththisnamecouldbefound.

Examples

shell>curl-XDELETE--dump-http://localhost:8529/_api/gharial/social/edge/relation

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47QNS--_

showresponsebody

Management

99

Page 100: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HandlingVerticesExampleswillexplaintheRESTAPItothegraphmoduleonthesocialgraph:

Createavertex

createanewvertex

POST/_api/gharial/{graph-name}/vertex/{collection-name}

Addsavertextothegivencollection.

Example:

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/gharial/social/vertex/male<<EOF

{

"name":"Francis"

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47NdC--_

{

"error":false,

"vertex":{

"_id":"male/8068",

"_key":"8068",

"_rev":"_WQ47NdC--_"

},

"code":202

}

PathParameters

graph-name(required):Thenameofthegraph.collection-name(required):Thenameofthevertexcollectionthevertexbelongsto.

QueryParameters

waitForSync(optional):Defineiftherequestshouldwaituntilsyncedtodisk.

RequestBody(required)

ThebodyhastobetheJSONobjecttobestored.

ReturnCodes

201:ReturnedifthevertexcouldbeaddedandwaitForSyncistrue.202:ReturnediftherequestwassuccessfulbutwaitForSyncisfalse.404:Returnedifnographornovertexcollectionwiththisnamecouldbefound.

Examples

shell>curl-XPOST--data-binary@---dump-

http://localhost:8529/_api/gharial/social/vertex/male<<EOF

{

"name":"Francis"

}

Vertices

100

Page 101: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47NdC--_

showresponsebody

Getavertex

fetchesanexistingvertex

GET/_api/gharial/{graph-name}/vertex/{collection-name}/{vertex-key}

Getsavertexfromthegivencollection.

Example:

shell>curl--dump-http://localhost:8529/_api/gharial/social/vertex/female/alice

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47Qx6--_

{

"error":false,

"vertex":{

"_key":"alice",

"_id":"female/alice",

"_rev":"_WQ47Qx6--_",

"name":"Alice"

},

"code":200

}

PathParameters

graph-name(required):Thenameofthegraph.collection-name(required):Thenameofthevertexcollectionthevertexbelongsto.vertex-key(required):The_keyattributeofthevertex.

HeaderParameters

if-match(optional):Ifthe"If-Match"headerisgiven,thenitmustcontainexactlyoneEtag.Thedocumentisreturned,ifithasthesamerevisionasthegivenEtag.OtherwiseaHTTP412isreturned.AsanalternativeyoucansupplytheEtaginanattributerevintheURL.

ReturnCodes

200:Returnedifthevertexcouldbefound.404:Returnedifnographwiththisname,novertexcollectionornovertexwiththisidcouldbefound.412:Returnedifif-matchheaderisgiven,butthedocumentsrevisionisdifferent.

Examples

shell>curl--dump-http://localhost:8529/_api/gharial/social/vertex/female/alice

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

Vertices

101

Page 102: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

etag:_WQ47Qx6--_

showresponsebody

Modifyavertex

replaceanexistingvertex

PATCH/_api/gharial/{graph-name}/vertex/{collection-name}/{vertex-key}

Updatesthedataofthespecificvertexinthecollection.

Example:

shell>curl-XPATCH--data-binary@---dump-http://localhost:8529/_api/gharial/social/vertex/female/alice<<EOF

{

"age":26

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47SSm--_

{

"error":false,

"vertex":{

"_id":"female/alice",

"_key":"alice",

"_rev":"_WQ47SSm--_",

"_oldRev":"_WQ47SSa--B"

},

"code":202

}

PathParameters

graph-name(required):Thenameofthegraph.collection-name(required):Thenameofthevertexcollectionthevertexbelongsto.vertex-key(required):The_keyattributeofthevertex.

QueryParameters

waitForSync(optional):Defineiftherequestshouldwaituntilsyncedtodisk.keepNull(optional):Defineifvaluessettonullshouldbestored.Bydefaultthekeyisnotremovedfromthedocument.

HeaderParameters

if-match(optional):Ifthe"If-Match"headerisgiven,thenitmustcontainexactlyoneEtag.Thedocumentisupdated,ifithasthesamerevisionasthegivenEtag.OtherwiseaHTTP412isreturned.AsanalternativeyoucansupplytheEtaginanattributerevintheURL.

RequestBody(required)

ThebodyhastocontainaJSONobjectcontainingexactlytheattributesthatshouldbereplaced.

ReturnCodes

200:Returnedifthevertexcouldbeupdated.202:ReturnediftherequestwassuccessfulbutwaitForSyncisfalse.404:Returnedifnographwiththisname,novertexcollectionornovertexwiththisidcouldbefound.412:Returnedifif-matchheaderisgiven,butthedocumentsrevisionisdifferent.

Examples

Vertices

102

Page 103: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

shell>curl-XPATCH--data-binary@---dump-

http://localhost:8529/_api/gharial/social/vertex/female/alice<<EOF

{

"age":26

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47SSm--_

showresponsebody

Replaceavertex

replacesanexistingvertex

PUT/_api/gharial/{graph-name}/vertex/{collection-name}/{vertex-key}

Replacesthedataofavertexinthecollection.

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/gharial/social/vertex/female/alice<<EOF

{

"name":"AliceCooper",

"age":26

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47TpK--_

{

"error":false,

"vertex":{

"_id":"female/alice",

"_key":"alice",

"_rev":"_WQ47TpK--_",

"_oldRev":"_WQ47Toy--B"

},

"code":202

}

PathParameters

graph-name(required):Thenameofthegraph.collection-name(required):Thenameofthevertexcollectionthevertexbelongsto.vertex-key(required):The_keyattributeofthevertex.

QueryParameters

waitForSync(optional):Defineiftherequestshouldwaituntilsyncedtodisk.

HeaderParameters

if-match(optional):Ifthe"If-Match"headerisgiven,thenitmustcontainexactlyoneEtag.Thedocumentisupdated,ifithasthesamerevisionasthegivenEtag.OtherwiseaHTTP412isreturned.AsanalternativeyoucansupplytheEtaginanattributerevintheURL.

Vertices

103

Page 104: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

RequestBody(required)

ThebodyhastobetheJSONobjecttobestored.

ReturnCodes

200:Returnedifthevertexcouldbereplaced.202:ReturnediftherequestwassuccessfulbutwaitForSyncisfalse.404:Returnedifnographwiththisname,novertexcollectionornovertexwiththisidcouldbefound.412:Returnedifif-matchheaderisgiven,butthedocumentsrevisionisdifferent.

Examples

shell>curl-XPUT--data-binary@---dump-

http://localhost:8529/_api/gharial/social/vertex/female/alice<<EOF

{

"name":"AliceCooper",

"age":26

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47TpK--_

showresponsebody

Removeavertex

removesavertexfromagraph

DELETE/_api/gharial/{graph-name}/vertex/{collection-name}/{vertex-key}

Removesavertexfromthecollection.

Example:

shell>curl-XDELETE--dump-http://localhost:8529/_api/gharial/social/vertex/female/alice

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"removed":true,

"code":202

}

PathParameters

graph-name(required):Thenameofthegraph.collection-name(required):Thenameofthevertexcollectionthevertexbelongsto.vertex-key(required):The_keyattributeofthevertex.

QueryParameters

waitForSync(optional):Defineiftherequestshouldwaituntilsyncedtodisk.

HeaderParameters

Vertices

104

Page 105: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

if-match(optional):Ifthe"If-Match"headerisgiven,thenitmustcontainexactlyoneEtag.Thedocumentisupdated,ifithasthesamerevisionasthegivenEtag.OtherwiseaHTTP412isreturned.AsanalternativeyoucansupplytheEtaginanattributerevintheURL.

ReturnCodes

200:Returnedifthevertexcouldberemoved.202:ReturnediftherequestwassuccessfulbutwaitForSyncisfalse.404:Returnedifnographwiththisname,novertexcollectionornovertexwiththisidcouldbefound.412:Returnedifif-matchheaderisgiven,butthedocumentsrevisionisdifferent.

Examples

shell>curl-XDELETE--dump-

http://localhost:8529/_api/gharial/social/vertex/female/alice

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Vertices

105

Page 106: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HandlingEdgesExampleswillexplaintheRESTAPIformanipulatingedgesofthegraphmoduleontheknowsgraph:

Createanedge

Createsanedgeinanexistinggraph

POST/_api/gharial/{graph-name}/edge/{collection-name}

Createsanewedgeinthecollection.Withinthebodythehastocontaina_fromand_tovaluereferencingtovalidverticesinthegraph.Furthermoretheedgehastobevalidinthedefinitionofthisedgecollection.

Example:

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/gharial/social/edge/relation<<EOF

{

"type":"friend",

"_from":"female/alice",

"_to":"female/diana"

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47Mfu--_

{

"error":false,

"edge":{

"_id":"relation/7889",

"_key":"7889",

"_rev":"_WQ47Mfu--_"

},

"code":202

}

PathParameters

graph-name(required):Thenameofthegraph.collection-name(required):Thenameoftheedgecollectiontheedgebelongsto.

QueryParameters

waitForSync(optional):Defineiftherequestshouldwaituntilsyncedtodisk._from(required):_to(required):

RequestBody(required)

ThebodyhastobetheJSONobjecttobestored.

ReturnCodes

201:Returnediftheedgecouldbecreated.202:ReturnediftherequestwassuccessfulbutwaitForSyncisfalse.404:Returnedifnographwiththisname,noedgecollectionornoedgewiththisidcouldbefound.

Examples

shell>curl-XPOST--data-binary@---dump-

Edges

106

Page 107: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

http://localhost:8529/_api/gharial/social/edge/relation<<EOF

{

"type":"friend",

"_from":"female/alice",

"_to":"female/diana"

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47Mfu--_

showresponsebody

Getanedge

fetchanedge

GET/_api/gharial/{graph-name}/edge/{collection-name}/{edge-key}

Getsanedgefromthegivencollection.

Example:

shell>curl--dump-http://localhost:8529/_api/gharial/social/edge/relation/8613

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47QdC--D

{

"error":false,

"edge":{

"_key":"8613",

"_id":"relation/8613",

"_from":"female/alice",

"_to":"male/bob",

"_rev":"_WQ47QdC--D",

"type":"married",

"vertex":"alice"

},

"code":200

}

PathParameters

graph-name(required):Thenameofthegraph.collection-name(required):Thenameoftheedgecollectiontheedgebelongsto.edge-key(required):The_keyattributeofthevertex.

HeaderParameters

if-match(optional):Ifthe"If-Match"headerisgiven,thenitmustcontainexactlyoneEtag.Thedocumentisreturned,ifithasthesamerevisionasthegivenEtag.OtherwiseaHTTP412isreturned.AsanalternativeyoucansupplytheEtaginanattributerevintheURL.

ReturnCodes

200:Returnediftheedgecouldbefound.404:Returnedifnographwiththisname,noedgecollectionornoedgewiththisidcouldbefound.

Edges

107

Page 108: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

412:Returnedifif-matchheaderisgiven,butthedocumentsrevisionisdifferent.

Examples

shell>curl--dump-http://localhost:8529/_api/gharial/social/edge/relation/8613

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47QdC--D

showresponsebodyExampleswillexplaintheAPIonthesocialgraph:

Modifyanedge

modifyanexistingedge

PATCH/_api/gharial/{graph-name}/edge/{collection-name}/{edge-key}

Updatesthedataofthespecificedgeinthecollection.

Example:

shell>curl-XPATCH--data-binary@---dump-http://localhost:8529/_api/gharial/social/edge/relation/9263<<EOF

{

"since":"01.01.2001"

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47Sgy--_

{

"error":false,

"edge":{

"_id":"relation/9263",

"_key":"9263",

"_rev":"_WQ47Sgy--_",

"_oldRev":"_WQ47Sgm--H"

},

"code":202

}

PathParameters

graph-name(required):Thenameofthegraph.collection-name(required):Thenameoftheedgecollectiontheedgebelongsto.edge-key(required):The_keyattributeofthevertex.

QueryParameters

waitForSync(optional):Defineiftherequestshouldwaituntilsyncedtodisk.keepNull(optional):Defineifvaluessettonullshouldbestored.Bydefaultthekeyisnotremovedfromthedocument.

RequestBody(required)

ThebodyhastobeaJSONobjectcontainingtheattributestobeupdated.

ReturnCodes

Edges

108

Page 109: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

200:Returnediftheedgecouldbeupdated.202:ReturnediftherequestwassuccessfulbutwaitForSyncisfalse.404:Returnedifnographwiththisname,noedgecollectionornoedgewiththisidcouldbefound.

Examples

shell>curl-XPATCH--data-binary@---dump-

http://localhost:8529/_api/gharial/social/edge/relation/9263<<EOF

{

"since":"01.01.2001"

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47Sgy--_

showresponsebody

Replaceanedge

replacethecontentofanexistingedge

PUT/_api/gharial/{graph-name}/edge/{collection-name}/{edge-key}

Replacesthedataofanedgeinthecollection.

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/gharial/social/edge/relation/9340<<EOF

{

"type":"divorced",

"_from":"female/alice",

"_to":"male/bob"

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47SvK--_

{

"error":false,

"edge":{

"_id":"relation/9340",

"_key":"9340",

"_rev":"_WQ47SvK--_",

"_oldRev":"_WQ47SvC--H"

},

"code":202

}

PathParameters

graph-name(required):Thenameofthegraph.collection-name(required):Thenameoftheedgecollectiontheedgebelongsto.edge-key(required):The_keyattributeofthevertex.

QueryParameters

Edges

109

Page 110: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

waitForSync(optional):Defineiftherequestshouldwaituntilsyncedtodisk.

HeaderParameters

if-match(optional):Ifthe"If-Match"headerisgiven,thenitmustcontainexactlyoneEtag.Thedocumentisupdated,ifithasthesamerevisionasthegivenEtag.OtherwiseaHTTP412isreturned.AsanalternativeyoucansupplytheEtaginanattributerevintheURL.

RequestBody(required)

ThebodyhastobetheJSONobjecttobestored.

ReturnCodes

201:ReturnediftherequestwassuccessfulbutwaitForSyncistrue.202:ReturnediftherequestwassuccessfulbutwaitForSyncisfalse.404:Returnedifnographwiththisname,noedgecollectionornoedgewiththisidcouldbefound.412:Returnedifif-matchheaderisgiven,butthedocumentsrevisionisdifferent.

Examples

shell>curl-XPUT--data-binary@---dump-

http://localhost:8529/_api/gharial/social/edge/relation/9340<<EOF

{

"type":"divorced",

"_from":"female/alice",

"_to":"male/bob"

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

content-type:application/json;charset=utf-8

etag:_WQ47SvK--_

showresponsebody

Removeanedge

removesanedgefromgraph

DELETE/_api/gharial/{graph-name}/edge/{collection-name}/{edge-key}

Removesanedgefromthecollection.

Example:

shell>curl-XDELETE--dump-http://localhost:8529/_api/gharial/social/edge/relation/8310

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"removed":true,

"code":202

}

PathParameters

Edges

110

Page 111: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

graph-name(required):Thenameofthegraph.collection-name(required):Thenameoftheedgecollectiontheedgebelongsto.edge-key(required):The_keyattributeofthevertex.

QueryParameters

waitForSync(optional):Defineiftherequestshouldwaituntilsyncedtodisk.

HeaderParameters

if-match(optional):Ifthe"If-Match"headerisgiven,thenitmustcontainexactlyoneEtag.Thedocumentisupdated,ifithasthesamerevisionasthegivenEtag.OtherwiseaHTTP412isreturned.AsanalternativeyoucansupplytheEtaginanattributerevintheURL.

ReturnCodes

200:Returnediftheedgecouldberemoved.202:ReturnediftherequestwassuccessfulbutwaitForSyncisfalse.404:Returnedifnographwiththisname,noedgecollectionornoedgewiththisidcouldbefound.412:Returnedifif-matchheaderisgiven,butthedocumentsrevisionisdifferent.

Examples

shell>curl-XDELETE--dump-

http://localhost:8529/_api/gharial/social/edge/relation/8310

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Edges

111

Page 112: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforTraversals

Traversals

ArangoDB'sgraphtraversalsareexecutedontheserver.Traversalscanbeinitiatedbyclientsbysendingthetraversaldescriptionforexecutiontotheserver.

TraversalsinArangoDBareusedtowalkoveragraphstoredinoneedgecollection.Itcaneasilybedescribedwhichedgesofthegraphshouldbefollowedandwhichactionsshouldbeperformedoneachvisitedvertex.Furthermoretheorderingofvisitingthenodescanbespecified,forinstancedepth-firstorbreadth-firstsearchareoffered.

ExecutingTraversalsviaHTTP

executesatraversal

executeaserver-sidetraversal

POST/_api/traversal

Startsatraversalstartingfromagivenvertexandfollowing.edgescontainedinagivenedgeCollection.Therequestmustcontainthefollowingattributes.

AJSONobjectwiththesepropertiesisrequired:

sort:body(JavaScript)codeofacustomcomparisonfunctionfortheedges.Thesignatureofthisfunctionis(l,r)->integer(wherelandrareedges)andmustreturn-1iflissmallerthan,+1iflisgreaterthan,and0iflandrareequal.Thereasonforthisisthefollowing:Theorderofedgesreturnedforacertainvertexisundefined.Thisisbecausethereisnonaturalorderofedgesforavertexwithmultipleconnectededges.Toexplicitlydefinetheorderinwhichedgesonthevertexarefollowed,youcanspecifyanedgecomparatorfunctionwiththisattribute.NotethatthevalueherehastobeastringtoconformtotheJSONstandard,whichinturnisparsedasfunctionbodyontheserverside.Furthermorenotethatthisattributeisonlyusedforthestandardexpanders.Ifyouuseyourcustomexpanderyouhavetodothesortingyourselfwithintheexpandercode.direction:directionfortraversal

ifset,mustbeeither"outbound" ,"inbound" ,or"any"ifnotset,theexpanderattributemustbespecified

minDepth:ANDedwithanyexistingfilters):visitsonlynodesinatleastthegivendepthstartVertex:idofthestartVertex,e.g."users/foo" .visitor:body(JavaScript)codeofcustomvisitorfunctionfunctionsignature:(config,result,vertex,path,connected)->voidThevisitorfunctioncandoanything,butitsreturnvalueisignored.Topopulatearesult,usetheresultvariablebyreference.Notethattheconnectedargumentisonlypopulatedwhentheorderattributeissetto"preorder-expander" .itemOrder:itemiterationordercanbe"forward" or"backward"strategy:traversalstrategycanbe"depthfirst" or"breadthfirst"filter:defaultistoincludeallnodes:body(JavaScriptcode)ofcustomfilterfunctionfunctionsignature:(config,vertex,path)->mixedcanreturnfourdifferentstringvalues:

"exclude" ->thisvertexwillnotbevisited."prune" ->theedgesofthisvertexwillnotbefollowed."" orundefined->visitthevertexandfollowit'sedges.Array->containinganycombinationoftheabove.Ifthereisatleastone"exclude" or"prune" respectivlyiscontained,it'seffectwilloccur.

init:body(JavaScript)codeofcustomresultinitializationfunctionfunctionsignature:(config,result)->voidinitializeanyvaluesinresultwithwhatisrequiredmaxIterations:Maximumnumberofiterationsineachtraversal.Thisnumbercanbesettopreventendlessloopsintraversalofcyclicgraphs.WhenatraversalperformsasmanyiterationsasthemaxIterationsvalue,thetraversalwillabortwithanerror.IfmaxIterationsisnotset,aserver-definedvaluemaybeused.maxDepth:ANDedwithanyexistingfiltersvisitsonlynodesinatmostthegivendepthuniqueness:specifiesuniquenessforverticesandedgesvisited.Ifset,mustbeanobjectlikethis:"uniqueness":{"vertices":"none"|"global"|"path","edges":"none"|"global"|"path"}

Traversals

112

Page 113: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

order:traversalordercanbe"preorder" ,"postorder" or"preorder-expander"graphName:nameofthegraphthatcontainstheedges.EitheredgeCollectionorgraphNamehastobegiven.IncasebothvaluesaresetthegraphNameisprefered.expander:body(JavaScript)codeofcustomexpanderfunctionmustbesetifdirectionattributeisnotsetfunctionsignature:(config,vertex,path)->arrayexpandermustreturnanarrayoftheconnectionsforvertexeachconnectionisanobjectwiththeattributesedgeandvertexedgeCollection:nameofthecollectionthatcontainstheedges.

IftheTraversalissuccessfullyexecutedHTTP200willbereturned.Additionallytheresultobjectwillbereturnedbythetraversal.

Forsuccessfultraversals,thereturnedJSONobjecthasthefollowingproperties:

error:booleanflagtoindicateifanerroroccurred(falseinthiscase)

code:theHTTPstatuscode

result:thereturnvalueofthetraversal

Ifthetraversalspecificationiseithermissingormalformed,theserverwillrespondwithHTTP400.

ThebodyoftheresponsewillthencontainaJSONobjectwithadditionalerrordetails.Theobjecthasthefollowingattributes:

error:booleanflagtoindicatethatanerroroccurred(trueinthiscase)

code:theHTTPstatuscode

errorNum:theservererrornumber

errorMessage:adescriptiveerrormessage

Example:InthefollowingexamplestheunderlyinggraphwillcontainfivepersonsAlice,Bob,Charlie,DaveandEve.Wewillhavethefollowingdirectedrelations:

AliceknowsBobBobknowsCharlieBobknowsDaveEveknowsAliceEveknowsBob

ThestartingvertexwillalwaysbeAlice.

Followonlyoutboundedges

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"outbound"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":{

"visited":{

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gHO--B",

"name":"Alice"

},

{

Traversals

113

Page 114: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gHO--D",

"name":"Bob"

},

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47gHO--F",

"name":"Charlie"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47gHS--_",

"name":"Dave"

}

],

"paths":[

{

"edges":[],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gHO--B",

"name":"Alice"

}

]

},

{

"edges":[

{

"_key":"14017",

"_id":"knows/14017",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47gHS--D",

"vertex":"alice"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gHO--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gHO--D",

"name":"Bob"

}

]

},

{

"edges":[

{

"_key":"14017",

"_id":"knows/14017",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47gHS--D",

"vertex":"alice"

},

{

"_key":"14021",

"_id":"knows/14021",

"_from":"persons/bob",

"_to":"persons/charlie",

"_rev":"_WQ47gHS--F",

"vertex":"bob"

}

],

"vertices":[

Traversals

114

Page 115: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gHO--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gHO--D",

"name":"Bob"

},

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47gHO--F",

"name":"Charlie"

}

]

},

{

"edges":[

{

"_key":"14017",

"_id":"knows/14017",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47gHS--D",

"vertex":"alice"

},

{

"_key":"14024",

"_id":"knows/14024",

"_from":"persons/bob",

"_to":"persons/dave",

"_rev":"_WQ47gHS--H",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gHO--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gHO--D",

"name":"Bob"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47gHS--_",

"name":"Dave"

}

]

}

]

}

},

"error":false,

"code":200

}

Example:Followonlyinboundedges

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

Traversals

115

Page 116: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"inbound"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":{

"visited":{

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47g-K--_",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47g-K--H",

"name":"Eve"

}

],

"paths":[

{

"edges":[],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47g-K--_",

"name":"Alice"

}

]

},

{

"edges":[

{

"_key":"13676",

"_id":"knows/13676",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47g-O--_",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47g-K--_",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47g-K--H",

"name":"Eve"

}

]

}

]

}

},

"error":false,

"code":200

}

Traversals

116

Page 117: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Example:Followanydirectionofedges

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"any",

"uniqueness":{

"vertices":"none",

"edges":"global"

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":{

"visited":{

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fuu--_",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fuu--B",

"name":"Bob"

},

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47fuu--D",

"name":"Charlie"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47fuu--F",

"name":"Dave"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fuu--H",

"name":"Eve"

},

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fuu--_",

"name":"Alice"

}

],

"paths":[

{

"edges":[],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fuu--_",

"name":"Alice"

}

]

},

{

Traversals

117

Page 118: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"edges":[

{

"_key":"13099",

"_id":"knows/13099",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47fuy--_",

"vertex":"alice"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fuu--_",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fuu--B",

"name":"Bob"

}

]

},

{

"edges":[

{

"_key":"13099",

"_id":"knows/13099",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47fuy--_",

"vertex":"alice"

},

{

"_key":"13103",

"_id":"knows/13103",

"_from":"persons/bob",

"_to":"persons/charlie",

"_rev":"_WQ47fuy--B",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fuu--_",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fuu--B",

"name":"Bob"

},

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47fuu--D",

"name":"Charlie"

}

]

},

{

"edges":[

{

"_key":"13099",

"_id":"knows/13099",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47fuy--_",

"vertex":"alice"

},

{

Traversals

118

Page 119: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"_key":"13106",

"_id":"knows/13106",

"_from":"persons/bob",

"_to":"persons/dave",

"_rev":"_WQ47fuy--D",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fuu--_",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fuu--B",

"name":"Bob"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47fuu--F",

"name":"Dave"

}

]

},

{

"edges":[

{

"_key":"13099",

"_id":"knows/13099",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47fuy--_",

"vertex":"alice"

},

{

"_key":"13112",

"_id":"knows/13112",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47fuy--H",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fuu--_",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fuu--B",

"name":"Bob"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fuu--H",

"name":"Eve"

}

]

},

{

"edges":[

{

"_key":"13099",

"_id":"knows/13099",

"_from":"persons/alice",

"_to":"persons/bob",

Traversals

119

Page 120: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"_rev":"_WQ47fuy--_",

"vertex":"alice"

},

{

"_key":"13112",

"_id":"knows/13112",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47fuy--H",

"vertex":"eve"

},

{

"_key":"13109",

"_id":"knows/13109",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47fuy--F",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fuu--_",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fuu--B",

"name":"Bob"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fuu--H",

"name":"Eve"

},

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fuu--_",

"name":"Alice"

}

]

}

]

}

},

"error":false,

"code":200

}

Example:ExcludingCharlieandBob

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"outbound",

"filter":"if(vertex.name===\"Bob\"||vertex.name===\"Charlie\"){return\"exclude\";}return;"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

Traversals

120

Page 121: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"result":{

"visited":{

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47f5W--_",

"name":"Alice"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47f5W--F",

"name":"Dave"

}

],

"paths":[

{

"edges":[],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47f5W--_",

"name":"Alice"

}

]

},

{

"edges":[

{

"_key":"13505",

"_id":"knows/13505",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47f5W--J",

"vertex":"alice"

},

{

"_key":"13512",

"_id":"knows/13512",

"_from":"persons/bob",

"_to":"persons/dave",

"_rev":"_WQ47f5a--B",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47f5W--_",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47f5W--B",

"name":"Bob"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47f5W--F",

"name":"Dave"

}

]

}

]

}

},

"error":false,

"code":200

}

Traversals

121

Page 122: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Example:DonotfollowedgesfromBob

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"outbound",

"filter":"if(vertex.name===\"Bob\"){return\"prune\";}return;"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":{

"visited":{

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47f7m--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47f7m--D",

"name":"Bob"

}

],

"paths":[

{

"edges":[],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47f7m--B",

"name":"Alice"

}

]

},

{

"edges":[

{

"_key":"13588",

"_id":"knows/13588",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47f7q--_",

"vertex":"alice"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47f7m--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47f7m--D",

"name":"Bob"

}

]

}

]

}

Traversals

122

Page 123: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

},

"error":false,

"code":200

}

Example:Visitonlynodesinadepthofatleast2

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"outbound",

"minDepth":2

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":{

"visited":{

"vertices":[

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47gF---D",

"name":"Charlie"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47gF---F",

"name":"Dave"

}

],

"paths":[

{

"edges":[

{

"_key":"13934",

"_id":"knows/13934",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47gF---J",

"vertex":"alice"

},

{

"_key":"13938",

"_id":"knows/13938",

"_from":"persons/bob",

"_to":"persons/charlie",

"_rev":"_WQ47gF---L",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gF---_",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gF---B",

"name":"Bob"

},

Traversals

123

Page 124: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47gF---D",

"name":"Charlie"

}

]

},

{

"edges":[

{

"_key":"13934",

"_id":"knows/13934",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47gF---J",

"vertex":"alice"

},

{

"_key":"13941",

"_id":"knows/13941",

"_from":"persons/bob",

"_to":"persons/dave",

"_rev":"_WQ47gF---N",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gF---_",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gF---B",

"name":"Bob"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47gF---F",

"name":"Dave"

}

]

}

]

}

},

"error":false,

"code":200

}

Example:Visitonlynodesinadepthofatmost1

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"outbound",

"maxDepth":1

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

Traversals

124

Page 125: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"result":{

"visited":{

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gAa--_",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gAa--B",

"name":"Bob"

}

],

"paths":[

{

"edges":[],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gAa--_",

"name":"Alice"

}

]

},

{

"edges":[

{

"_key":"13745",

"_id":"knows/13745",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47gAa--J",

"vertex":"alice"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gAa--_",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gAa--B",

"name":"Bob"

}

]

}

]

}

},

"error":false,

"code":200

}

Example:Usingavisitorfunctiontoreturnvertexidsonly

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"outbound",

"visitor":"result.visited.vertices.push(vertex._id);"

Traversals

125

Page 126: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":{

"visited":{

"vertices":[

"persons/alice",

"persons/bob",

"persons/charlie",

"persons/dave"

],

"paths":[]

}

},

"error":false,

"code":200

}

Example:Countallvisitednodesandreturnalistofnodesonly

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"outbound",

"init":"result.visited=0;result.myVertices=[];",

"visitor":"result.visited++;result.myVertices.push(vertex);"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":{

"visited":4,

"myVertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gMS--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gMS--D",

"name":"Bob"

},

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47gMS--F",

"name":"Charlie"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47gMS--H",

"name":"Dave"

}

]

},

"error":false,

Traversals

126

Page 127: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"code":200

}

Example:ExpandonlyinboundedgesofAliceandoutboundedgesofEve

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"expander":"varconnections=[];if(vertex.name===\"Alice\"){config.datasource.getInEdges(vertex).forEach(function(e)

{connections.push({vertex:require(\"internal\").db._document(e._from),edge:e});});}if(vertex.name===\"Eve\"){config.da

tasource.getOutEdges(vertex).forEach(function(e){connections.push({vertex:require(\"internal\").db._document(e._to),edge:e

});});}returnconnections;"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":{

"visited":{

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gOq--_",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47gOq--H",

"name":"Eve"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gOq--B",

"name":"Bob"

}

],

"paths":[

{

"edges":[],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gOq--_",

"name":"Alice"

}

]

},

{

"edges":[

{

"_key":"14302",

"_id":"knows/14302",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47gOq--P",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

Traversals

127

Page 128: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"_rev":"_WQ47gOq--_",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47gOq--H",

"name":"Eve"

}

]

},

{

"edges":[

{

"_key":"14302",

"_id":"knows/14302",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47gOq--P",

"vertex":"eve"

},

{

"_key":"14305",

"_id":"knows/14305",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47gOu--_",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gOq--_",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47gOq--H",

"name":"Eve"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gOq--B",

"name":"Bob"

}

]

}

]

}

},

"error":false,

"code":200

}

Example:Followthedepthfirststrategy

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"any",

"strategy":"depthfirst"

}

EOF

HTTP/1.1200OK

Traversals

128

Page 129: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":{

"visited":{

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fyS--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fyS--D",

"name":"Bob"

},

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47fyS--F",

"name":"Charlie"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47fyS--H",

"name":"Dave"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fyW--_",

"name":"Eve"

},

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fyS--B",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fyW--_",

"name":"Eve"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fyS--D",

"name":"Bob"

},

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47fyS--F",

"name":"Charlie"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47fyS--H",

"name":"Dave"

},

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fyS--B",

"name":"Alice"

}

],

"paths":[

{

Traversals

129

Page 130: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"edges":[],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fyS--B",

"name":"Alice"

}

]

},

{

"edges":[

{

"_key":"13302",

"_id":"knows/13302",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47fyW--B",

"vertex":"alice"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fyS--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fyS--D",

"name":"Bob"

}

]

},

{

"edges":[

{

"_key":"13302",

"_id":"knows/13302",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47fyW--B",

"vertex":"alice"

},

{

"_key":"13306",

"_id":"knows/13306",

"_from":"persons/bob",

"_to":"persons/charlie",

"_rev":"_WQ47fyW--D",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fyS--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fyS--D",

"name":"Bob"

},

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47fyS--F",

"name":"Charlie"

}

]

},

Traversals

130

Page 131: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"edges":[

{

"_key":"13302",

"_id":"knows/13302",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47fyW--B",

"vertex":"alice"

},

{

"_key":"13309",

"_id":"knows/13309",

"_from":"persons/bob",

"_to":"persons/dave",

"_rev":"_WQ47fyW--F",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fyS--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fyS--D",

"name":"Bob"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47fyS--H",

"name":"Dave"

}

]

},

{

"edges":[

{

"_key":"13302",

"_id":"knows/13302",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47fyW--B",

"vertex":"alice"

},

{

"_key":"13315",

"_id":"knows/13315",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47fyW--J",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fyS--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fyS--D",

"name":"Bob"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fyW--_",

Traversals

131

Page 132: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"name":"Eve"

}

]

},

{

"edges":[

{

"_key":"13302",

"_id":"knows/13302",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47fyW--B",

"vertex":"alice"

},

{

"_key":"13315",

"_id":"knows/13315",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47fyW--J",

"vertex":"eve"

},

{

"_key":"13312",

"_id":"knows/13312",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47fyW--H",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fyS--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fyS--D",

"name":"Bob"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fyW--_",

"name":"Eve"

},

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fyS--B",

"name":"Alice"

}

]

},

{

"edges":[

{

"_key":"13312",

"_id":"knows/13312",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47fyW--H",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fyS--B",

"name":"Alice"

},

Traversals

132

Page 133: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fyW--_",

"name":"Eve"

}

]

},

{

"edges":[

{

"_key":"13312",

"_id":"knows/13312",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47fyW--H",

"vertex":"eve"

},

{

"_key":"13315",

"_id":"knows/13315",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47fyW--J",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fyS--B",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fyW--_",

"name":"Eve"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fyS--D",

"name":"Bob"

}

]

},

{

"edges":[

{

"_key":"13312",

"_id":"knows/13312",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47fyW--H",

"vertex":"eve"

},

{

"_key":"13315",

"_id":"knows/13315",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47fyW--J",

"vertex":"eve"

},

{

"_key":"13306",

"_id":"knows/13306",

"_from":"persons/bob",

"_to":"persons/charlie",

"_rev":"_WQ47fyW--D",

"vertex":"bob"

}

],

"vertices":[

Traversals

133

Page 134: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fyS--B",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fyW--_",

"name":"Eve"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fyS--D",

"name":"Bob"

},

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47fyS--F",

"name":"Charlie"

}

]

},

{

"edges":[

{

"_key":"13312",

"_id":"knows/13312",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47fyW--H",

"vertex":"eve"

},

{

"_key":"13315",

"_id":"knows/13315",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47fyW--J",

"vertex":"eve"

},

{

"_key":"13309",

"_id":"knows/13309",

"_from":"persons/bob",

"_to":"persons/dave",

"_rev":"_WQ47fyW--F",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fyS--B",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fyW--_",

"name":"Eve"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fyS--D",

"name":"Bob"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47fyS--H",

Traversals

134

Page 135: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"name":"Dave"

}

]

},

{

"edges":[

{

"_key":"13312",

"_id":"knows/13312",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47fyW--H",

"vertex":"eve"

},

{

"_key":"13315",

"_id":"knows/13315",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47fyW--J",

"vertex":"eve"

},

{

"_key":"13302",

"_id":"knows/13302",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47fyW--B",

"vertex":"alice"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fyS--B",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fyW--_",

"name":"Eve"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fyS--D",

"name":"Bob"

},

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fyS--B",

"name":"Alice"

}

]

}

]

}

},

"error":false,

"code":200

}

Example:Usingpostorderordering

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

Traversals

135

Page 136: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"graphName":"knows_graph",

"direction":"any",

"order":"postorder"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":{

"visited":{

"vertices":[

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47gJa--F",

"name":"Charlie"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47gJa--H",

"name":"Dave"

},

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gJa--B",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47gJa--J",

"name":"Eve"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gJa--D",

"name":"Bob"

},

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47gJa--F",

"name":"Charlie"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47gJa--H",

"name":"Dave"

},

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gJa--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gJa--D",

"name":"Bob"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47gJa--J",

"name":"Eve"

},

{

"_key":"alice",

Traversals

136

Page 137: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"_id":"persons/alice",

"_rev":"_WQ47gJa--B",

"name":"Alice"

}

],

"paths":[

{

"edges":[

{

"_key":"14100",

"_id":"knows/14100",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47gJa--L",

"vertex":"alice"

},

{

"_key":"14104",

"_id":"knows/14104",

"_from":"persons/bob",

"_to":"persons/charlie",

"_rev":"_WQ47gJa--N",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gJa--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gJa--D",

"name":"Bob"

},

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47gJa--F",

"name":"Charlie"

}

]

},

{

"edges":[

{

"_key":"14100",

"_id":"knows/14100",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47gJa--L",

"vertex":"alice"

},

{

"_key":"14107",

"_id":"knows/14107",

"_from":"persons/bob",

"_to":"persons/dave",

"_rev":"_WQ47gJe--_",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gJa--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gJa--D",

Traversals

137

Page 138: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"name":"Bob"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47gJa--H",

"name":"Dave"

}

]

},

{

"edges":[

{

"_key":"14100",

"_id":"knows/14100",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47gJa--L",

"vertex":"alice"

},

{

"_key":"14113",

"_id":"knows/14113",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47gJe--D",

"vertex":"eve"

},

{

"_key":"14110",

"_id":"knows/14110",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47gJe--B",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gJa--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gJa--D",

"name":"Bob"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47gJa--J",

"name":"Eve"

},

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gJa--B",

"name":"Alice"

}

]

},

{

"edges":[

{

"_key":"14100",

"_id":"knows/14100",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47gJa--L",

"vertex":"alice"

},

{

"_key":"14113",

Traversals

138

Page 139: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"_id":"knows/14113",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47gJe--D",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gJa--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gJa--D",

"name":"Bob"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47gJa--J",

"name":"Eve"

}

]

},

{

"edges":[

{

"_key":"14100",

"_id":"knows/14100",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47gJa--L",

"vertex":"alice"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gJa--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gJa--D",

"name":"Bob"

}

]

},

{

"edges":[

{

"_key":"14110",

"_id":"knows/14110",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47gJe--B",

"vertex":"eve"

},

{

"_key":"14113",

"_id":"knows/14113",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47gJe--D",

"vertex":"eve"

},

{

"_key":"14104",

"_id":"knows/14104",

"_from":"persons/bob",

Traversals

139

Page 140: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"_to":"persons/charlie",

"_rev":"_WQ47gJa--N",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gJa--B",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47gJa--J",

"name":"Eve"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gJa--D",

"name":"Bob"

},

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47gJa--F",

"name":"Charlie"

}

]

},

{

"edges":[

{

"_key":"14110",

"_id":"knows/14110",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47gJe--B",

"vertex":"eve"

},

{

"_key":"14113",

"_id":"knows/14113",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47gJe--D",

"vertex":"eve"

},

{

"_key":"14107",

"_id":"knows/14107",

"_from":"persons/bob",

"_to":"persons/dave",

"_rev":"_WQ47gJe--_",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gJa--B",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47gJa--J",

"name":"Eve"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gJa--D",

Traversals

140

Page 141: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"name":"Bob"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47gJa--H",

"name":"Dave"

}

]

},

{

"edges":[

{

"_key":"14110",

"_id":"knows/14110",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47gJe--B",

"vertex":"eve"

},

{

"_key":"14113",

"_id":"knows/14113",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47gJe--D",

"vertex":"eve"

},

{

"_key":"14100",

"_id":"knows/14100",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47gJa--L",

"vertex":"alice"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gJa--B",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47gJa--J",

"name":"Eve"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gJa--D",

"name":"Bob"

},

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gJa--B",

"name":"Alice"

}

]

},

{

"edges":[

{

"_key":"14110",

"_id":"knows/14110",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47gJe--B",

"vertex":"eve"

},

{

"_key":"14113",

Traversals

141

Page 142: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"_id":"knows/14113",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47gJe--D",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gJa--B",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47gJa--J",

"name":"Eve"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47gJa--D",

"name":"Bob"

}

]

},

{

"edges":[

{

"_key":"14110",

"_id":"knows/14110",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47gJe--B",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gJa--B",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47gJa--J",

"name":"Eve"

}

]

},

{

"edges":[],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47gJa--B",

"name":"Alice"

}

]

}

]

}

},

"error":false,

"code":200

}

Example:

Traversals

142

Page 143: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Usingbackwarditem-ordering:

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"any",

"itemOrder":"backward"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":{

"visited":{

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fwe--B",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fwi--B",

"name":"Eve"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fwe--D",

"name":"Bob"

},

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fwe--B",

"name":"Alice"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47fwi--_",

"name":"Dave"

},

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47fwe--F",

"name":"Charlie"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fwe--D",

"name":"Bob"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fwi--B",

"name":"Eve"

},

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fwe--B",

"name":"Alice"

},

{

"_key":"dave",

Traversals

143

Page 144: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"_id":"persons/dave",

"_rev":"_WQ47fwi--_",

"name":"Dave"

},

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47fwe--F",

"name":"Charlie"

}

],

"paths":[

{

"edges":[],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fwe--B",

"name":"Alice"

}

]

},

{

"edges":[

{

"_key":"13203",

"_id":"knows/13203",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47fwi--J",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fwe--B",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fwi--B",

"name":"Eve"

}

]

},

{

"edges":[

{

"_key":"13203",

"_id":"knows/13203",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47fwi--J",

"vertex":"eve"

},

{

"_key":"13206",

"_id":"knows/13206",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47fwi--L",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fwe--B",

"name":"Alice"

},

{

Traversals

144

Page 145: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fwi--B",

"name":"Eve"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fwe--D",

"name":"Bob"

}

]

},

{

"edges":[

{

"_key":"13203",

"_id":"knows/13203",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47fwi--J",

"vertex":"eve"

},

{

"_key":"13206",

"_id":"knows/13206",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47fwi--L",

"vertex":"eve"

},

{

"_key":"13193",

"_id":"knows/13193",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47fwi--D",

"vertex":"alice"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fwe--B",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fwi--B",

"name":"Eve"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fwe--D",

"name":"Bob"

},

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fwe--B",

"name":"Alice"

}

]

},

{

"edges":[

{

"_key":"13203",

"_id":"knows/13203",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47fwi--J",

"vertex":"eve"

Traversals

145

Page 146: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

},

{

"_key":"13206",

"_id":"knows/13206",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47fwi--L",

"vertex":"eve"

},

{

"_key":"13200",

"_id":"knows/13200",

"_from":"persons/bob",

"_to":"persons/dave",

"_rev":"_WQ47fwi--H",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fwe--B",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fwi--B",

"name":"Eve"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fwe--D",

"name":"Bob"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47fwi--_",

"name":"Dave"

}

]

},

{

"edges":[

{

"_key":"13203",

"_id":"knows/13203",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47fwi--J",

"vertex":"eve"

},

{

"_key":"13206",

"_id":"knows/13206",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47fwi--L",

"vertex":"eve"

},

{

"_key":"13197",

"_id":"knows/13197",

"_from":"persons/bob",

"_to":"persons/charlie",

"_rev":"_WQ47fwi--F",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

Traversals

146

Page 147: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"_rev":"_WQ47fwe--B",

"name":"Alice"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fwi--B",

"name":"Eve"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fwe--D",

"name":"Bob"

},

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47fwe--F",

"name":"Charlie"

}

]

},

{

"edges":[

{

"_key":"13193",

"_id":"knows/13193",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47fwi--D",

"vertex":"alice"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fwe--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fwe--D",

"name":"Bob"

}

]

},

{

"edges":[

{

"_key":"13193",

"_id":"knows/13193",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47fwi--D",

"vertex":"alice"

},

{

"_key":"13206",

"_id":"knows/13206",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47fwi--L",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fwe--B",

"name":"Alice"

},

{

Traversals

147

Page 148: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fwe--D",

"name":"Bob"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fwi--B",

"name":"Eve"

}

]

},

{

"edges":[

{

"_key":"13193",

"_id":"knows/13193",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47fwi--D",

"vertex":"alice"

},

{

"_key":"13206",

"_id":"knows/13206",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47fwi--L",

"vertex":"eve"

},

{

"_key":"13203",

"_id":"knows/13203",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47fwi--J",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fwe--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fwe--D",

"name":"Bob"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47fwi--B",

"name":"Eve"

},

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fwe--B",

"name":"Alice"

}

]

},

{

"edges":[

{

"_key":"13193",

"_id":"knows/13193",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47fwi--D",

"vertex":"alice"

Traversals

148

Page 149: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

},

{

"_key":"13200",

"_id":"knows/13200",

"_from":"persons/bob",

"_to":"persons/dave",

"_rev":"_WQ47fwi--H",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fwe--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fwe--D",

"name":"Bob"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47fwi--_",

"name":"Dave"

}

]

},

{

"edges":[

{

"_key":"13193",

"_id":"knows/13193",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47fwi--D",

"vertex":"alice"

},

{

"_key":"13197",

"_id":"knows/13197",

"_from":"persons/bob",

"_to":"persons/charlie",

"_rev":"_WQ47fwi--F",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47fwe--B",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47fwe--D",

"name":"Bob"

},

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47fwe--F",

"name":"Charlie"

}

]

}

]

}

},

"error":false,

"code":200

Traversals

149

Page 150: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

}

Example:Edgesshouldonlybeincludedonceglobally,butnodesareincludedeverytimetheyarevisited

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"any",

"uniqueness":{

"vertices":"none",

"edges":"global"

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":{

"visited":{

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47f2q--A",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47f2q--C",

"name":"Bob"

},

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47f2q--E",

"name":"Charlie"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47f2q--G",

"name":"Dave"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47f2q--I",

"name":"Eve"

},

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47f2q--A",

"name":"Alice"

}

],

"paths":[

{

"edges":[],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47f2q--A",

"name":"Alice"

Traversals

150

Page 151: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

}

]

},

{

"edges":[

{

"_key":"13411",

"_id":"knows/13411",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47f2q--K",

"vertex":"alice"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47f2q--A",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47f2q--C",

"name":"Bob"

}

]

},

{

"edges":[

{

"_key":"13411",

"_id":"knows/13411",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47f2q--K",

"vertex":"alice"

},

{

"_key":"13415",

"_id":"knows/13415",

"_from":"persons/bob",

"_to":"persons/charlie",

"_rev":"_WQ47f2u--_",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47f2q--A",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47f2q--C",

"name":"Bob"

},

{

"_key":"charlie",

"_id":"persons/charlie",

"_rev":"_WQ47f2q--E",

"name":"Charlie"

}

]

},

{

"edges":[

{

"_key":"13411",

"_id":"knows/13411",

"_from":"persons/alice",

"_to":"persons/bob",

Traversals

151

Page 152: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"_rev":"_WQ47f2q--K",

"vertex":"alice"

},

{

"_key":"13418",

"_id":"knows/13418",

"_from":"persons/bob",

"_to":"persons/dave",

"_rev":"_WQ47f2u--B",

"vertex":"bob"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47f2q--A",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47f2q--C",

"name":"Bob"

},

{

"_key":"dave",

"_id":"persons/dave",

"_rev":"_WQ47f2q--G",

"name":"Dave"

}

]

},

{

"edges":[

{

"_key":"13411",

"_id":"knows/13411",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47f2q--K",

"vertex":"alice"

},

{

"_key":"13424",

"_id":"knows/13424",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47f2u--F",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47f2q--A",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47f2q--C",

"name":"Bob"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47f2q--I",

"name":"Eve"

}

]

},

{

"edges":[

{

Traversals

152

Page 153: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"_key":"13411",

"_id":"knows/13411",

"_from":"persons/alice",

"_to":"persons/bob",

"_rev":"_WQ47f2q--K",

"vertex":"alice"

},

{

"_key":"13424",

"_id":"knows/13424",

"_from":"persons/eve",

"_to":"persons/bob",

"_rev":"_WQ47f2u--F",

"vertex":"eve"

},

{

"_key":"13421",

"_id":"knows/13421",

"_from":"persons/eve",

"_to":"persons/alice",

"_rev":"_WQ47f2u--D",

"vertex":"eve"

}

],

"vertices":[

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47f2q--A",

"name":"Alice"

},

{

"_key":"bob",

"_id":"persons/bob",

"_rev":"_WQ47f2q--C",

"name":"Bob"

},

{

"_key":"eve",

"_id":"persons/eve",

"_rev":"_WQ47f2q--I",

"name":"Eve"

},

{

"_key":"alice",

"_id":"persons/alice",

"_rev":"_WQ47f2q--A",

"name":"Alice"

}

]

}

]

}

},

"error":false,

"code":200

}

Example:Iftheunderlyinggraphiscyclic,maxIterationsshouldbeset

TheunderlyinggraphhastwoverticesAliceandBob.Withthedirectededges:

AliceknowsBobBobknowsAlice

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"any",

Traversals

153

Page 154: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"uniqueness":{

"vertices":"none",

"edges":"none"

},

"maxIterations":5

}

EOF

HTTP/1.1500InternalServerError

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"code":500,

"errorNum":1909,

"errorMessage":"toomanyiterations-tryincreasingthevalueof'maxIterations'"

}

ReturnCodes

200:IfthetraversalisfullyexecutedHTTP200willbereturned.400:Ifthetraversalspecificationiseithermissingormalformed,theserverwillrespondwithHTTP400.404:TheserverwillrespondedwithHTTP404ifthespecifiededgecollectiondoesnotexist,orthespecifiedstartvertexcannotbefound.500:TheserverwillrespondedwithHTTP500whenanerroroccursinsidethetraversalorifatraversalperformsmorethanmaxIterationsiterations.

Examples

InthefollowingexamplestheunderlyinggraphwillcontainfivepersonsAlice,Bob,Charlie,DaveandEve.Wewillhavethefollowingdirectedrelations:

AliceknowsBobBobknowsCharlieBobknowsDaveEveknowsAliceEveknowsBobThestartingvertexwillalwaysbeAlice.Followonlyoutboundedges

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"outbound"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyFollowonlyinboundedges

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"inbound"

}

EOF

Traversals

154

Page 155: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyFollowanydirectionofedges

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"any",

"uniqueness":{

"vertices":"none",

"edges":"global"

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyExcludingCharlieandBob

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"outbound",

"filter":"if(vertex.name===\"Bob\"||vertex.name===\"Charlie\"){return

\"exclude\";}return;"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyDonotfollowedgesfromBob

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"outbound",

"filter":"if(vertex.name===\"Bob\"){return\"prune\";}return;"

}

EOF

Traversals

155

Page 156: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyVisitonlynodesinadepthofatleast2

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"outbound",

"minDepth":2

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyVisitonlynodesinadepthofatmost1

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"outbound",

"maxDepth":1

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyUsingavisitorfunctiontoreturnvertexidsonly

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"outbound",

"visitor":"result.visited.vertices.push(vertex._id);"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

Traversals

156

Page 157: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

showresponsebodyCountallvisitednodesandreturnalistofnodesonly

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"outbound",

"init":"result.visited=0;result.myVertices=[];",

"visitor":"result.visited++;result.myVertices.push(vertex);"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyExpandonlyinboundedgesofAliceandoutboundedgesofEve

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"expander":"varconnections=[];if(vertex.name===\"Alice\")

{config.datasource.getInEdges(vertex).forEach(function(e){connections.push({vertex:

require(\"internal\").db._document(e._from),edge:e});});}if(vertex.name===\"Eve\")

{config.datasource.getOutEdges(vertex).forEach(function(e){connections.push({vertex:

require(\"internal\").db._document(e._to),edge:e});});}returnconnections;"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyFollowthedepthfirststrategy

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"any",

"strategy":"depthfirst"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

Traversals

157

Page 158: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

showresponsebodyUsingpostorderordering

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"any",

"order":"postorder"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyUsingbackwarditem-ordering:

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"any",

"itemOrder":"backward"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyEdgesshouldonlybeincludedonceglobally,butnodesareincludedeverytimetheyarevisited

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"any",

"uniqueness":{

"vertices":"none",

"edges":"global"

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

Traversals

158

Page 159: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

showresponsebodyIftheunderlyinggraphiscyclic,maxIterationsshouldbesetTheunderlyinggraphhastwoverticesAliceandBob.Withthedirectededges:

AliceknowsBobBobknowsAlice

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/traversal<<EOF

{

"startVertex":"persons/alice",

"graphName":"knows_graph",

"direction":"any",

"uniqueness":{

"vertices":"none",

"edges":"none"

},

"maxIterations":5

}

EOF

HTTP/1.1500InternalServerError

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyAllexampleswereusingthisgraph:

Traversals

159

Page 160: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforAQLQueryCursors

DatabaseCursors

ThisisanintroductiontoArangoDB'sHTTPInterfaceforQueries.ResultsofAQLandsimplequeriesarereturnedascursorsinordertobatchthecommunicationbetweenserverandclient.Eachcallreturnsanumberofdocumentsinabatchandanindicationifthecurrentbatchhasbeenthefinalbatch.Dependingonthequery,thetotalnumberofdocumentsintheresultsetmightormightnotbeknowninadvance.Inordertofreeserverresourcestheclientshoulddeletethecursorassoonasitisnolongerneeded.

Toexecuteaquery,thequerydetailsneedtobeshippedfromtheclienttotheserverviaanHTTPPOSTrequest.

AQLQueryCursors

160

Page 161: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

RetrievingqueryresultsSelectqueriesareexecutedon-the-flyontheserverandtheresultsetwillbereturnedbacktotheclient.

Therearetwowaystheclientcangettheresultsetfromtheserver:

InasingleroundtripUsingacursor

Singleroundtrip

Theserverwillonlytransferacertainnumberofresultdocumentsbacktotheclientinoneroundtrip.ThisnumberiscontrollablebytheclientbysettingthebatchSizeattributewhenissuingthequery.

Ifthecompleteresultcanbetransferredtotheclientinonego,theclientdoesnotneedtoissueanyfurtherrequest.TheclientcancheckwhetherithasretrievedthecompleteresultsetbycheckingthehasMoreattributeoftheresultset.Ifitissettofalse,thentheclienthasfetchedthecompleteresultsetfromtheserver.Inthiscasenoserversidecursorwillbecreated.

>curl--data@--XPOST--dump-http://localhost:8529/_api/cursor

{"query":"FORuINusersLIMIT2RETURNu","count":true,"batchSize":2}

HTTP/1.1201Created

Content-type:application/json

{

"hasMore":false,

"error":false,

"result":[

{

"name":"user1",

"_rev":"210304551",

"_key":"210304551",

"_id":"users/210304551"

},

{

"name":"user2",

"_rev":"210304552",

"_key":"210304552",

"_id":"users/210304552"

}

],

"code":201,

"count":2

}

Usingacursor

Iftheresultsetcontainsmoredocumentsthanshouldbetransferredinasingleroundtrip(i.e.assetviathebatchSizeattribute),theserverwillreturnthefirstfewdocumentsandcreateatemporarycursor.Thecursoridentifierwillalsobereturnedtotheclient.Theserverwillputthecursoridentifierintheidattributeoftheresponseobject.Furthermore,thehasMoreattributeoftheresponseobjectwillbesettotrue.Thisisanindicationfortheclientthatthereareadditionalresultstofetchfromtheserver.

Examples:

Createandextractfirstbatch:

>curl--data@--XPOST--dump-http://localhost:8529/_api/cursor

{"query":"FORuINusersLIMIT5RETURNu","count":true,"batchSize":2}

HTTP/1.1201Created

Content-type:application/json

{

"hasMore":true,

"error":false,

"id":"26011191",

QueryResults

161

Page 162: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"result":[

{

"name":"user1",

"_rev":"258801191",

"_key":"258801191",

"_id":"users/258801191"

},

{

"name":"user2",

"_rev":"258801192",

"_key":"258801192",

"_id":"users/258801192"

}

],

"code":201,

"count":5

}

Extractnextbatch,stillhavemore:

>curl-XPUT--dump-http://localhost:8529/_api/cursor/26011191

HTTP/1.1200OK

Content-type:application/json

{

"hasMore":true,

"error":false,

"id":"26011191",

"result":[

{

"name":"user3",

"_rev":"258801193",

"_key":"258801193",

"_id":"users/258801193"

},

{

"name":"user4",

"_rev":"258801194",

"_key":"258801194",

"_id":"users/258801194"

}

],

"code":200,

"count":5

}

Extractnextbatch,done:

>curl-XPUT--dump-http://localhost:8529/_api/cursor/26011191

HTTP/1.1200OK

Content-type:application/json

{

"hasMore":false,

"error":false,

"result":[

{

"name":"user5",

"_rev":"258801195",

"_key":"258801195",

"_id":"users/258801195"

}

],

"code":200,

"count":5

}

DonotdothisbecausehasMorenowhasavalueoffalse:

>curl-XPUT--dump-http://localhost:8529/_api/cursor/26011191

QueryResults

162

Page 163: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1404NotFound

Content-type:application/json

{

"errorNum":1600,

"errorMessage":"cursornotfound:disposedorunknowncursor",

"error":true,

"code":404

}

Modifyingdocuments

The_api/cursorendpointcanalsobeusedtoexecutemodifyingqueries.

ThefollowingexampleappendsavalueintothearrayarrayValueofthedocumentwithkeytestinthecollectiondocuments.Normalupdatebehavioristoreplacetheattributecompletely,andusinganupdateAQLquerywiththePUSH()functionallowstoappendtothearray.

curl--data@--XPOST--dumphttp://127.0.0.1:8529/_api/cursor

{"query":"FORdocINdocumentsFILTERdoc._key==@myKeyUPDATEdoc._keyWITH{arrayValue:PUSH(doc.arrayValue,@value)}IN

documents","bindVars":{"myKey":"test","value":42}}

HTTP/1.1201Created

Content-type:application/json;charset=utf-8

{

"result":[],

"hasMore":false,

"extra":{

"stats":{

"writesExecuted":1,

"writesIgnored":0,

"scannedFull":0,

"scannedIndex":1,

"filtered":0

},

"warnings":[]

},

"error":false,

"code":201

}

Settingamemorylimit

Tosetamemorylimitforthequery,thememoryLimitoptioncanbepassedtotheserver.Thememorylimitspecifiesthemaximumnumberofbytesthatthequeryisallowedtouse.WhenasingleAQLqueryreachesthespecifiedlimitvalue,thequerywillbeabortedwitharesourcelimitexceededexception.Inacluster,thememoryaccountingisdonepershard,sothelimitvalueiseffectivelyamemorylimitperquerypershard.

>curl--data@--XPOST--dump-http://localhost:8529/_api/cursor

{"query":"FORiIN1..100000SORTiRETURNi","memoryLimit":100000}

HTTP/1.1500InternalServerError

Server:ArangoDB

Connection:Keep-Alive

Content-Type:application/json;charset=utf-8

Content-Length:115

{"error":true,"errorMessage":"querywouldusemorememorythanallowed(whileexecuting)","code":500,"errorNum":32}

Ifnomemorylimitisspecified,thentheserverdefaultvalue(controlledbystartupoption--query.memory-limitwillbeusedforrestrictingthemaximumamountofmemorythequerycanuse.Amemorylimitvalueof0meansthatthemaximumamountofmemoryforthequeryisnotrestricted.

QueryResults

163

Page 164: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

AccessingCursorsviaHTTP

Createcursor

createacursorandreturnthefirstresults

POST/_api/cursorAJSONobjectdescribingthequeryandqueryparameters.

AJSONobjectwiththesepropertiesisrequired:

count:indicateswhetherthenumberofdocumentsintheresultsetshouldbereturnedinthe"count"attributeoftheresult.Calculatingthe"count"attributemighthaveaperformanceimpactforsomequeriesinthefuturesothisoptionisturnedoffbydefault,and"count"isonlyreturnedwhenrequested.batchSize:maximumnumberofresultdocumentstobetransferredfromtheservertotheclientinoneroundtrip.Ifthisattributeisnotset,aserver-controlleddefaultvaluewillbeused.AbatchSizevalueof0isdisallowed.cache:flagtodeterminewhethertheAQLquerycacheshallbeused.Ifsettofalse,thenanyquerycachelookupwillbeskippedforthequery.Ifsettotrue,itwillleadtothequerycachebeingcheckedforthequeryifthequerycachemodeiseitheronordemand.memoryLimit:themaximumnumberofmemory(measuredinbytes)thatthequeryisallowedtouse.Ifset,thenthequerywillfailwitherror"resourcelimitexceeded"incaseitallocatestoomuchmemory.Avalueof0indicatesthatthereisnomemorylimit.ttl:Thetime-to-liveforthecursor(inseconds).Thecursorwillberemovedontheserverautomaticallyafterthespecifiedamountoftime.Thisisusefultoensuregarbagecollectionofcursorsthatarenotfullyfetchedbyclients.Ifnotset,aserver-definedvaluewillbeused.query:containsthequerystringtobeexecutedbindVars(object):key/valuepairsrepresentingthebindparameters.options:

failOnWarning:Whensettotrue,thequerywillthrowanexceptionandabortinsteadofproducingawarning.Thisoptionshouldbeusedduringdevelopmenttocatchpotentialissuesearly.Whentheattributeissettofalse,warningswillnotbepropagatedtoexceptionsandwillbereturnedwiththequeryresult.Thereisalsoaserverconfigurationoption--query.fail-on-warningforsettingthedefaultvalueforfailOnWarningsoitdoesnotneedtobesetonaper-querylevel.profile:Ifsettotrue,thentheadditionalqueryprofilinginformationwillbereturnedinthesub-attributeprofileoftheextrareturnattributeifthequeryresultisnotservedfromthequerycache.maxTransactionSize:Transactionsizelimitinbytes.HonoredbytheRocksDBstorageengineonly.skipInaccessibleCollections:AQLqueries(especiallygraphtraversals)willtreatcollectiontowhichauserhasnoaccessrightsasifthesecollectionswereempty.Insteadofreturningaforbiddenaccesserror,yourquerieswillexecutenormally.Thisisintendedtohelpwithcertainuse-cases:AgraphcontainsseveralcollectionsanddifferentusersexecuteAQLqueriesonthatgraph.Youcannownaturallylimittheaccessibleresultsbychangingtheaccessrightsofusersoncollections.ThisfeatureisonlyavailableintheEnterpriseEdition.maxWarningCount:Limitsthemaximumnumberofwarningsaquerywillreturn.Thenumberofwarningsaquerywillreturnislimitedto10bydefault,butthatnumbercanbeincreasedordecreasedbysettingthisattribute.intermediateCommitCount:Maximumnumberofoperationsafterwhichanintermediatecommitisperformedautomatically.HonoredbytheRocksDBstorageengineonly.satelliteSyncWait:ThisenterpriseparameterallowstoconfigurehowlongaDBServerwillhavetimetobringthesatellitecollectionsinvolvedinthequeryintosync.Thedefaultvalueis60.0(seconds).Whenthemaxtimehasbeenreachedthequerywillbestopped.fullCount:ifsettotrueandthequerycontainsaLIMITclause,thentheresultwillhaveanextraattributewiththesub-attributesstatsandfullCount,{...,"extra":{"stats":{"fullCount":123}}}.ThefullCountattributewillcontainthenumberofdocumentsintheresultbeforethelastLIMITinthequerywasapplied.Itcanbeusedtocountthenumberofdocumentsthatmatchcertainfiltercriteria,butonlyreturnasubsetofthem,inonego.ItisthussimilartoMySQL'sSQL_CALC_FOUND_ROWShint.NotethatsettingtheoptionwilldisableafewLIMIToptimizationsandmayleadtomoredocumentsbeingprocessed,andthusmakequeriesrunlonger.NotethatthefullCountattributewillonlybepresentintheresultifthequeryhasaLIMITclauseandtheLIMITclauseisactuallyusedinthequery.intermediateCommitSize:Maximumtotalsizeofoperationsafterwhichanintermediatecommitisperformedautomatically.HonoredbytheRocksDBstorageengineonly.optimizer.rules(string):Alistofto-be-includedorto-be-excludedoptimizerrulescanbeputintothisattribute,tellingtheoptimizertoincludeorexcludespecificrules.Todisablearule,prefixitsnamewitha-,toenablearule,prefixitwitha+.Thereisalsoapseudo-ruleall,whichwillmatchalloptimizerrules.

AccessingCursors

164

Page 165: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

maxPlans:LimitsthemaximumnumberofplansthatarecreatedbytheAQLqueryoptimizer.

Thequerydetailsincludethequerystringplusoptionalqueryoptionsandbindparameters.ThesevaluesneedtobepassedinaJSONrepresentationinthebodyofthePOSTrequest.

AjsondocumentwiththesePropertiesisreturned:

HTTP201isreturnediftheresultsetcanbecreatedbytheserver.

count:thetotalnumberofresultdocumentsavailable(onlyavailableifthequerywasexecutedwiththecountattributeset)code:theHTTPstatuscodeextra:anoptionalJSONobjectwithextrainformationaboutthequeryresultcontainedinitsstatssub-attribute.Fordata-modificationqueries,theextra.statssub-attributewillcontainthenumberofmodifieddocumentsandthenumberofdocumentsthatcouldnotbemodifiedduetoanerror(ifignoreErrorsqueryoptionisspecified)cached:abooleanflagindicatingwhetherthequeryresultwasservedfromthequerycacheornot.Ifthequeryresultisservedfromthequerycache,theextrareturnattributewillnotcontainanystatssub-attributeandnoprofilesub-attribute.hasMore:Abooleanindicatorwhethertherearemoreresultsavailableforthecursorontheserverresult(anonymousjsonobject):anarrayofresultdocuments(mightbeemptyifqueryhasnoresults)error:Aflagtoindicatethatanerroroccurred(falseinthiscase)id:idoftemporarycursorcreatedontheserver(optional,seeabove)

AjsondocumentwiththesePropertiesisreturned:

HTTP400isreturnediftheJSONrepresentationismalformedorthequeryspecificationismissingfromtherequest.IftheJSONrepresentationismalformedorthequeryspecificationismissingfromtherequest,theserverwillrespondwithHTTP400.ThebodyoftheresponsewillcontainaJSONobjectwithadditionalerrordetails.Theobjecthasthefollowingattributes:

errorMessage:adescriptiveerrormessageIfthequeryspecificationiscomplete,theserverwillprocessthequery.Ifanerroroccursduringqueryprocessing,theserverwillrespondwithHTTP400.Again,thebodyoftheresponsewillcontaindetailsabouttheerror.Alistofqueryerrorscanbefoundhere.errorNum:theservererrornumbercode:theHTTPstatuscodeerror:booleanflagtoindicatethatanerroroccurred(trueinthiscase)

Example:Executeaqueryandextracttheresultinasinglego

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"FORpINproductsLIMIT2RETURNp",

"count":true,

"batchSize":2

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

{

"_key":"10541",

"_id":"products/10541",

"_rev":"_WQ47Xre--B",

"hello2":"world1"

AccessingCursors

165

Page 166: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

},

{

"_key":"10537",

"_id":"products/10537",

"_rev":"_WQ47Xre--_",

"hello1":"world1"

}

],

"hasMore":false,

"count":2,

"cached":false,

"extra":{

"stats":{

"writesExecuted":0,

"writesIgnored":0,

"scannedFull":2,

"scannedIndex":0,

"filtered":0,

"httpRequests":0,

"executionTime":0.00009870529174804688

},

"warnings":[]

},

"error":false,

"code":201

}

Example:Executeaqueryandextractapartoftheresult

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"FORpINproductsLIMIT5RETURNp",

"count":true,

"batchSize":2

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":201,

"result":[

{

"_key":"10525",

"_id":"products/10525",

"_rev":"_WQ47Xqa--F",

"hello5":"world1"

},

{

"_key":"10512",

"_id":"products/10512",

"_rev":"_WQ47XqW--_",

"hello1":"world1"

}

],

"hasMore":true,

"id":"10528",

"count":5,

"extra":{

"stats":{

"writesExecuted":0,

"writesIgnored":0,

"scannedFull":5,

"scannedIndex":0,

"filtered":0,

"httpRequests":0,

"executionTime":0.00009226799011230469

AccessingCursors

166

Page 167: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

},

"warnings":[]

},

"cached":false

}

Example:Usingthequeryoption"fullCount"

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"FORiIN1..1000FILTERi>500LIMIT10RETURNi",

"count":true,

"options":{

"fullCount":true

}

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

501,

502,

503,

504,

505,

506,

507,

508,

509,

510

],

"hasMore":false,

"count":10,

"cached":false,

"extra":{

"stats":{

"writesExecuted":0,

"writesIgnored":0,

"scannedFull":0,

"scannedIndex":0,

"filtered":500,

"httpRequests":0,

"fullCount":500,

"executionTime":0.00023555755615234375

},

"warnings":[]

},

"error":false,

"code":201

}

Example:Enablinganddisablingoptimizerrules

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"FORiIN1..10LETa=1LETb=2FILTERa+b==3RETURNi",

"count":true,

"options":{

"maxPlans":1,

"optimizer":{

AccessingCursors

167

Page 168: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"rules":[

"-all",

"+remove-unnecessary-filters"

]

}

}

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

1,

2,

3,

4,

5,

6,

7,

8,

9,

10

],

"hasMore":false,

"count":10,

"cached":false,

"extra":{

"stats":{

"writesExecuted":0,

"writesIgnored":0,

"scannedFull":0,

"scannedIndex":0,

"filtered":0,

"httpRequests":0,

"executionTime":0.00011301040649414062

},

"warnings":[]

},

"error":false,

"code":201

}

Example:Executeadata-modificationqueryandretrievethenumberofmodifieddocuments

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"FORpINproductsREMOVEpINproducts"

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[],

"hasMore":false,

"cached":false,

"extra":{

"stats":{

"writesExecuted":2,

"writesIgnored":0,

"scannedFull":2,

"scannedIndex":0,

"filtered":0,

"httpRequests":0,

"executionTime":0.0001289844512939453

AccessingCursors

168

Page 169: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

},

"warnings":[]

},

"error":false,

"code":201

}

Example:Executeadata-modificationquerywithoptionignoreErrors

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"REMOVE'bar'INproductsOPTIONS{ignoreErrors:true}"

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[],

"hasMore":false,

"cached":false,

"extra":{

"stats":{

"writesExecuted":0,

"writesIgnored":1,

"scannedFull":0,

"scannedIndex":0,

"filtered":0,

"httpRequests":0,

"executionTime":0.00011205673217773438

},

"warnings":[]

},

"error":false,

"code":201

}

Example:Badquery-Missingbody

shell>curl-XPOST--dump-http://localhost:8529/_api/cursor

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"queryisempty",

"code":400,

"errorNum":1502

}

Example:Badquery-Unknowncollection

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

AccessingCursors

169

Page 170: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"query":"FORuINunknowncollLIMIT2RETURNu",

"count":true,

"batchSize":2

}

EOF

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"AQL:collectionnotfound:unknowncoll(whileparsing)",

"code":404,

"errorNum":1203

}

Example:Badquery-Executeadata-modificationquerythatattemptstoremoveanon-existingdocument

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"REMOVE'foo'INproducts"

}

EOF

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"AQL:documentnotfound(whileexecuting)",

"code":404,

"errorNum":1202

}

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"FORpINproductsLIMIT2RETURNp",

"count":true,

"batchSize":2

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyExecuteaqueryandextractapartoftheresult

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"FORpINproductsLIMIT5RETURNp",

"count":true,

"batchSize":2

}

EOF

AccessingCursors

170

Page 171: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyUsingthequeryoption"fullCount"

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"FORiIN1..1000FILTERi>500LIMIT10RETURNi",

"count":true,

"options":{

"fullCount":true

}

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyEnablinganddisablingoptimizerrules

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"FORiIN1..10LETa=1LETb=2FILTERa+b==3RETURNi",

"count":true,

"options":{

"maxPlans":1,

"optimizer":{

"rules":[

"-all",

"+remove-unnecessary-filters"

]

}

}

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyExecuteadata-modificationqueryandretrievethenumberofmodifieddocuments

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"FORpINproductsREMOVEpINproducts"

}

EOF

AccessingCursors

171

Page 172: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyExecuteadata-modificationquerywithoptionignoreErrors

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"REMOVE'bar'INproductsOPTIONS{ignoreErrors:true}"

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyBadquery-Missingbody

shell>curl-XPOST--dump-http://localhost:8529/_api/cursor

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyBadquery-Unknowncollection

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"FORuINunknowncollLIMIT2RETURNu",

"count":true,

"batchSize":2

}

EOF

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyBadquery-Executeadata-modificationquerythatattemptstoremoveanon-existingdocument

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"REMOVE'foo'INproducts"

}

EOF

AccessingCursors

172

Page 173: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Readnextbatchfromcursor

returnthenextresultsfromanexistingcursor

PUT/_api/cursor/{cursor-identifier}

PathParameters

cursor-identifier(required):Thenameofthecursor

Ifthecursorisstillalive,returnsanobjectwiththefollowingattributes:

id:thecursor-identifierresult:alistofdocumentsforthecurrentbatchhasMore:falseifthiswasthelastbatchcount:ifpresentthetotalnumberofelements

NotethatevenifhasMorereturnstrue,thenextcallmightstillreturnnodocuments.If,however,hasMoreisfalse,thenthecursorisexhausted.OncethehasMoreattributehasavalueoffalse,theclientcanstop.

Example:Validrequestfornextbatch

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"FORpINproductsLIMIT5RETURNp",

"count":true,

"batchSize":2

}

EOF

shell>curl-XPUT--dump-http://localhost:8529/_api/cursor/10636

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200,

"result":[

{

"_key":"10627",

"_id":"products/10627",

"_rev":"_WQ47XwS--D",

"hello3":"world1"

},

{

"_key":"10624",

"_id":"products/10624",

"_rev":"_WQ47XwS--B",

"hello2":"world1"

}

],

"hasMore":true,

"id":"10636",

"count":5,

"extra":{

"stats":{

"writesExecuted":0,

AccessingCursors

173

Page 174: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"writesIgnored":0,

"scannedFull":5,

"scannedIndex":0,

"filtered":0,

"httpRequests":0,

"executionTime":0.000133514404296875

},

"warnings":[]

},

"cached":false

}

Example:Missingidentifier

shell>curl-XPUT--dump-http://localhost:8529/_api/cursor

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"expectingPUT/_api/cursor/<cursor-id>",

"code":400,

"errorNum":400

}

Example:Unknownidentifier

shell>curl-XPUT--dump-http://localhost:8529/_api/cursor/123123

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"cursornotfound",

"code":404,

"errorNum":1600

}

ReturnCodes

200:TheserverwillrespondwithHTTP200incaseofsuccess.400:Ifthecursoridentifierisomitted,theserverwillrespondwithHTTP404.404:Ifnocursorwiththespecifiedidentifiercanbefound,theserverwillrespondwithHTTP404.

Examples

Validrequestfornextbatch

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"FORpINproductsLIMIT5RETURNp",

"count":true,

"batchSize":2

}

EOF

AccessingCursors

174

Page 175: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

shell>curl-XPUT--dump-http://localhost:8529/_api/cursor/10636

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyMissingidentifier

shell>curl-XPUT--dump-http://localhost:8529/_api/cursor

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyUnknownidentifier

shell>curl-XPUT--dump-http://localhost:8529/_api/cursor/123123

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Deletecursor

disposeanexistingcursor

DELETE/_api/cursor/{cursor-identifier}

PathParameters

cursor-identifier(required):Theidofthecursor

Deletesthecursorandfreestheresourcesassociatedwithit.

Thecursorwillautomaticallybedestroyedontheserverwhentheclienthasretrievedalldocumentsfromit.TheclientcanalsoexplicitlydestroythecursoratanyearliertimeusinganHTTPDELETErequest.ThecursoridmustbeincludedaspartoftheURL.

Note:theserverwillalsodestroyabandonedcursorsautomaticallyafteracertainserver-controlledtimeouttoavoidresourceleakage.

Example:

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"FORpINproductsLIMIT5RETURNp",

"count":true,

"batchSize":2

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

AccessingCursors

175

Page 176: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"error":false,

"code":201,

"result":[

{

"_key":"10557",

"_id":"products/10557",

"_rev":"_WQ47Xsm--B",

"hello2":"world1"

},

{

"_key":"10566",

"_id":"products/10566",

"_rev":"_WQ47Xsq--B",

"hello5":"world1"

}

],

"hasMore":true,

"id":"10569",

"count":5,

"extra":{

"stats":{

"writesExecuted":0,

"writesIgnored":0,

"scannedFull":5,

"scannedIndex":0,

"filtered":0,

"httpRequests":0,

"executionTime":0.00009655952453613281

},

"warnings":[]

},

"cached":false

}

shell>curl-XDELETE--dump-http://localhost:8529/_api/cursor/10569

ReturnCodes

202:isreturnediftheserverisawareofthecursor.404:isreturnediftheserverisnotawareofthecursor.Itisalsoreturnedifacursorisusedafterithasbeendestroyed.

Examples

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"FORpINproductsLIMIT5RETURNp",

"count":true,

"batchSize":2

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

AccessingCursors

176

Page 177: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforAQLQueries

Explainingandparsingqueries

ArangoDBhasanHTTPinterfacetosyntacticallyvalidateAQLqueries.Furthermore,itoffersanHTTPinterfacetoretrievetheexecutionplanforanyvalidAQLquery.

BothfunctionalitiesdonotactuallyexecutethesuppliedAQLquery,butonlyinspectitandreturnmetainformationaboutit.

ExplainanAQLquery

explainanAQLqueryandreturninformationaboutit

POST/_api/explainAJSONobjectdescribingthequeryandqueryparameters.

AJSONobjectwiththesepropertiesisrequired:

query:thequerywhichyouwantexplained;Ifthequeryreferencesanybindvariables,thesemustalsobepassedintheattributebindVars.Additionaloptionsforthequerycanbepassedintheoptionsattribute.options:

optimizer.rules(string):anarrayofto-be-includedorto-be-excludedoptimizerrulescanbeputintothisattribute,tellingtheoptimizertoincludeorexcludespecificrules.Todisablearule,prefixitsnamewitha-,toenablearule,prefixitwitha+.Thereisalsoapseudo-ruleall,whichwillmatchalloptimizerrules.maxNumberOfPlans:anoptionalmaximumnumberofplansthattheoptimizerisallowedtogenerate.Settingthisattributetoalowvalueallowstoputacapontheamountofworktheoptimizerdoes.allPlans:ifsettotrue,allpossibleexecutionplanswillbereturned.Thedefaultisfalse,meaningonlytheoptimalplanwillbereturned.

bindVars(object):key/valuepairsrepresentingthebindparameters.

ToexplainhowanAQLquerywouldbeexecutedontheserver,thequerystringcanbesenttotheserverviaanHTTPPOSTrequest.Theserverwillthenvalidatethequeryandcreateanexecutionplanforit.Theexecutionplanwillbereturned,butthequerywillnotbeexecuted.

Theexecutionplanthatisreturnedbytheservercanbeusedtoestimatetheprobableperformanceofthequery.Thoughtheactualperformancewilldependonmanydifferentfactors,theexecutionplannormallycanprovidesomeroughestimatesontheamountofworktheserverneedstodoinordertoactuallyrunthequery.

Bydefault,theexplainoperationwillreturntheoptimalplanaschosenbythequeryoptimizerTheoptimalplanistheplanwiththelowesttotalestimatedcost.Theplanwillbereturnedintheattributeplanoftheresponseobject.IftheoptionallPlansisspecifiedintherequest,theresultwillcontainallplanscreatedbytheoptimizer.Theplanswillthenbereturnedintheattributeplans.

Theresultwillalsocontainanattributewarnings,whichisanarrayofwarningsthatoccurredduringoptimizationorexecutionplancreation.Additionally,astatsattributeiscontainedintheresultwithsomeoptimizerstatistics.IfallPlansissettofalse,theresultwillcontainanattributecacheablethatstateswhetherthequeryresultscanbecachedontheserverifthequeryresultcachewereused.ThecacheableattributeisnotpresentwhenallPlansissettotrue.

EachplanintheresultisaJSONobjectwiththefollowingattributes:

nodes:thearrayofexecutionnodesoftheplan.Thearrayofavailablenodetypescanbefoundhere

estimatedCost:thetotalestimatedcostfortheplan.Iftherearemultipleplans,theoptimizerwillchoosetheplanwiththelowesttotalcost.

collections:anarrayofcollectionsusedinthequery

rules:anarrayofrulestheoptimizerapplied.Anoverviewoftheavailablerulescanbefoundhere

variables:arrayofvariablesusedinthequery(note:thismaycontaininternalvariablescreatedbytheoptimizer)

Example:

AQLQueries

177

Page 178: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Validquery

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/explain<<EOF

{

"query":"FORpINproductsRETURNp"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"plan":{

"nodes":[

{

"type":"SingletonNode",

"dependencies":[],

"id":1,

"estimatedCost":1,

"estimatedNrItems":1

},

{

"type":"EnumerateCollectionNode",

"dependencies":[

1

],

"id":2,

"estimatedCost":12,

"estimatedNrItems":10,

"database":"_system",

"collection":"products",

"random":false,

"satellite":false,

"outVariable":{

"id":0,

"name":"p"

}

},

{

"type":"ReturnNode",

"dependencies":[

2

],

"id":3,

"estimatedCost":22,

"estimatedNrItems":10,

"inVariable":{

"id":0,

"name":"p"

}

}

],

"rules":[],

"collections":[

{

"name":"products",

"type":"read"

}

],

"variables":[

{

"id":0,

"name":"p"

}

],

"estimatedCost":22,

"estimatedNrItems":10,

"initialize":true

},

"cacheable":true,

"warnings":[],

"stats":{

"rulesExecuted":30,

"rulesSkipped":0,

AQLQueries

178

Page 179: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"plansCreated":1

},

"error":false,

"code":200

}

Example:Aplanwithsomeoptimizerrulesapplied

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/explain<<EOF

{

"query":"FORpINproductsLETa=p.idFILTERa==4LETname=p.nameSORTp.idLIMIT1RETURNname"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"plan":{

"nodes":[

{

"type":"SingletonNode",

"dependencies":[],

"id":1,

"estimatedCost":1,

"estimatedNrItems":1

},

{

"type":"IndexNode",

"dependencies":[

1

],

"id":11,

"estimatedCost":4.321928094887362,

"estimatedNrItems":1,

"database":"_system",

"collection":"products",

"satellite":false,

"outVariable":{

"id":0,

"name":"p"

},

"indexes":[

{

"id":"11343",

"type":"skiplist",

"fields":[

"id"

],

"unique":false,

"sparse":false,

"deduplicate":true

}

],

"condition":{

"type":"n-aryor",

"subNodes":[

{

"type":"n-aryand",

"subNodes":[

{

"type":"compare==",

"subNodes":[

{

"type":"attributeaccess",

"name":"id",

"subNodes":[

{

"type":"reference",

AQLQueries

179

Page 180: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"name":"p",

"id":0

}

]

},

{

"type":"value",

"value":4

}

]

}

]

}

]

},

"reverse":false

},

{

"type":"CalculationNode",

"dependencies":[

11

],

"id":4,

"estimatedCost":5.321928094887362,

"estimatedNrItems":1,

"expression":{

"type":"compare==",

"subNodes":[

{

"type":"attributeaccess",

"name":"id",

"subNodes":[

{

"type":"reference",

"name":"p",

"id":0

}

]

},

{

"type":"value",

"value":4

}

]

},

"outVariable":{

"id":4,

"name":"3"

},

"canThrow":false,

"expressionType":"simple"

},

{

"type":"FilterNode",

"dependencies":[

4

],

"id":5,

"estimatedCost":6.321928094887362,

"estimatedNrItems":1,

"inVariable":{

"id":4,

"name":"3"

}

},

{

"type":"LimitNode",

"dependencies":[

5

],

"id":9,

"estimatedCost":7.321928094887362,

"estimatedNrItems":1,

"offset":0,

"limit":1,

"fullCount":false

AQLQueries

180

Page 181: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

},

{

"type":"CalculationNode",

"dependencies":[

9

],

"id":6,

"estimatedCost":8.321928094887362,

"estimatedNrItems":1,

"expression":{

"type":"attributeaccess",

"name":"name",

"subNodes":[

{

"type":"reference",

"name":"p",

"id":0

}

]

},

"outVariable":{

"id":2,

"name":"name"

},

"canThrow":false,

"expressionType":"attribute"

},

{

"type":"ReturnNode",

"dependencies":[

6

],

"id":10,

"estimatedCost":9.321928094887362,

"estimatedNrItems":1,

"inVariable":{

"id":2,

"name":"name"

}

}

],

"rules":[

"move-calculations-up",

"remove-redundant-calculations",

"remove-unnecessary-calculations",

"move-calculations-up-2",

"use-indexes",

"use-index-for-sort",

"remove-unnecessary-calculations-2",

"move-calculations-down"

],

"collections":[

{

"name":"products",

"type":"read"

}

],

"variables":[

{

"id":6,

"name":"5"

},

{

"id":4,

"name":"3"

},

{

"id":2,

"name":"name"

},

{

"id":1,

"name":"a"

},

{

"id":0,

AQLQueries

181

Page 182: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"name":"p"

}

],

"estimatedCost":9.321928094887362,

"estimatedNrItems":1,

"initialize":true

},

"cacheable":true,

"warnings":[],

"stats":{

"rulesExecuted":30,

"rulesSkipped":0,

"plansCreated":1

},

"error":false,

"code":200

}

Example:Usingsomeoptions

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/explain<<EOF

{

"query":"FORpINproductsLETa=p.idFILTERa==4LETname=p.nameSORTp.idLIMIT1RETURNname",

"options":{

"maxNumberOfPlans":2,

"allPlans":true,

"optimizer":{

"rules":[

"-all",

"+use-index-for-sort",

"+use-index-range"

]

}

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"plans":[

{

"nodes":[

{

"type":"SingletonNode",

"dependencies":[],

"id":1,

"estimatedCost":1,

"estimatedNrItems":1

},

{

"type":"IndexNode",

"dependencies":[

1

],

"id":11,

"estimatedCost":11,

"estimatedNrItems":10,

"database":"_system",

"collection":"products",

"satellite":false,

"outVariable":{

"id":0,

"name":"p"

},

"indexes":[

{

"id":"11389",

AQLQueries

182

Page 183: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"type":"skiplist",

"fields":[

"id"

],

"unique":false,

"sparse":false,

"deduplicate":true

}

],

"condition":{

},

"reverse":false

},

{

"type":"CalculationNode",

"dependencies":[

11

],

"id":3,

"estimatedCost":21,

"estimatedNrItems":10,

"expression":{

"type":"attributeaccess",

"name":"id",

"subNodes":[

{

"type":"reference",

"name":"p",

"id":0

}

]

},

"outVariable":{

"id":1,

"name":"a"

},

"canThrow":false,

"expressionType":"attribute"

},

{

"type":"CalculationNode",

"dependencies":[

3

],

"id":4,

"estimatedCost":31,

"estimatedNrItems":10,

"expression":{

"type":"compare==",

"subNodes":[

{

"type":"reference",

"name":"a",

"id":1

},

{

"type":"value",

"value":4

}

]

},

"outVariable":{

"id":4,

"name":"3"

},

"canThrow":false,

"expressionType":"simple"

},

{

"type":"FilterNode",

"dependencies":[

4

],

"id":5,

"estimatedCost":41,

"estimatedNrItems":10,

AQLQueries

183

Page 184: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"inVariable":{

"id":4,

"name":"3"

}

},

{

"type":"CalculationNode",

"dependencies":[

5

],

"id":6,

"estimatedCost":51,

"estimatedNrItems":10,

"expression":{

"type":"attributeaccess",

"name":"name",

"subNodes":[

{

"type":"reference",

"name":"p",

"id":0

}

]

},

"outVariable":{

"id":2,

"name":"name"

},

"canThrow":false,

"expressionType":"attribute"

},

{

"type":"CalculationNode",

"dependencies":[

6

],

"id":7,

"estimatedCost":61,

"estimatedNrItems":10,

"expression":{

"type":"attributeaccess",

"name":"id",

"subNodes":[

{

"type":"reference",

"name":"p",

"id":0

}

]

},

"outVariable":{

"id":6,

"name":"5"

},

"canThrow":false,

"expressionType":"attribute"

},

{

"type":"LimitNode",

"dependencies":[

7

],

"id":9,

"estimatedCost":62,

"estimatedNrItems":1,

"offset":0,

"limit":1,

"fullCount":false

},

{

"type":"ReturnNode",

"dependencies":[

9

],

"id":10,

"estimatedCost":63,

AQLQueries

184

Page 185: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"estimatedNrItems":1,

"inVariable":{

"id":2,

"name":"name"

}

}

],

"rules":[

"use-index-for-sort"

],

"collections":[

{

"name":"products",

"type":"read"

}

],

"variables":[

{

"id":6,

"name":"5"

},

{

"id":4,

"name":"3"

},

{

"id":2,

"name":"name"

},

{

"id":1,

"name":"a"

},

{

"id":0,

"name":"p"

}

],

"estimatedCost":63,

"estimatedNrItems":1,

"initialize":true

}

],

"warnings":[],

"stats":{

"rulesExecuted":1,

"rulesSkipped":29,

"plansCreated":1

},

"error":false,

"code":200

}

Example:Returningallplans

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/explain<<EOF

{

"query":"FORpINproductsFILTERp.id==25RETURNp",

"options":{

"allPlans":true

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"plans":[

AQLQueries

185

Page 186: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"nodes":[

{

"type":"SingletonNode",

"dependencies":[],

"id":1,

"estimatedCost":1,

"estimatedNrItems":1

},

{

"type":"IndexNode",

"dependencies":[

1

],

"id":6,

"estimatedCost":1.99,

"estimatedNrItems":1,

"database":"_system",

"collection":"products",

"satellite":false,

"outVariable":{

"id":0,

"name":"p"

},

"indexes":[

{

"id":"11305",

"type":"hash",

"fields":[

"id"

],

"selectivityEstimate":1,

"unique":false,

"sparse":false,

"deduplicate":true

}

],

"condition":{

"type":"n-aryor",

"subNodes":[

{

"type":"n-aryand",

"subNodes":[

{

"type":"compare==",

"subNodes":[

{

"type":"attributeaccess",

"name":"id",

"subNodes":[

{

"type":"reference",

"name":"p",

"id":0

}

]

},

{

"type":"value",

"value":25

}

]

}

]

}

]

},

"reverse":false

},

{

"type":"ReturnNode",

"dependencies":[

6

],

"id":5,

"estimatedCost":2.99,

AQLQueries

186

Page 187: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"estimatedNrItems":1,

"inVariable":{

"id":0,

"name":"p"

}

}

],

"rules":[

"use-indexes",

"remove-filter-covered-by-index",

"remove-unnecessary-calculations-2"

],

"collections":[

{

"name":"products",

"type":"read"

}

],

"variables":[

{

"id":2,

"name":"1"

},

{

"id":0,

"name":"p"

}

],

"estimatedCost":2.99,

"estimatedNrItems":1,

"initialize":true

}

],

"warnings":[],

"stats":{

"rulesExecuted":30,

"rulesSkipped":0,

"plansCreated":1

},

"error":false,

"code":200

}

Example:Aquerythatproducesawarning

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/explain<<EOF

{

"query":"FORiIN1..10RETURN1/0"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"plan":{

"nodes":[

{

"type":"SingletonNode",

"dependencies":[],

"id":1,

"estimatedCost":1,

"estimatedNrItems":1

},

{

"type":"CalculationNode",

"dependencies":[

1

],

AQLQueries

187

Page 188: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"id":2,

"estimatedCost":2,

"estimatedNrItems":1,

"expression":{

"type":"range",

"subNodes":[

{

"type":"value",

"value":1

},

{

"type":"value",

"value":10

}

]

},

"outVariable":{

"id":2,

"name":"1"

},

"canThrow":false,

"expressionType":"simple"

},

{

"type":"CalculationNode",

"dependencies":[

2

],

"id":4,

"estimatedCost":3,

"estimatedNrItems":1,

"expression":{

"type":"value",

"value":null

},

"outVariable":{

"id":4,

"name":"3"

},

"canThrow":false,

"expressionType":"json"

},

{

"type":"EnumerateListNode",

"dependencies":[

4

],

"id":3,

"estimatedCost":13,

"estimatedNrItems":10,

"inVariable":{

"id":2,

"name":"1"

},

"outVariable":{

"id":0,

"name":"i"

}

},

{

"type":"ReturnNode",

"dependencies":[

3

],

"id":5,

"estimatedCost":23,

"estimatedNrItems":10,

"inVariable":{

"id":4,

"name":"3"

}

}

],

"rules":[

"move-calculations-up",

"move-calculations-up-2"

AQLQueries

188

Page 189: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

],

"collections":[],

"variables":[

{

"id":4,

"name":"3"

},

{

"id":2,

"name":"1"

},

{

"id":0,

"name":"i"

}

],

"estimatedCost":23,

"estimatedNrItems":10,

"initialize":true

},

"cacheable":false,

"warnings":[

{

"code":1562,

"message":"divisionbyzero"

}

],

"stats":{

"rulesExecuted":30,

"rulesSkipped":0,

"plansCreated":1

},

"error":false,

"code":200

}

Example:Invalidquery(missingbindparameter)

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/explain<<EOF

{

"query":"[email protected]"

}

EOF

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"novaluespecifiedfordeclaredbindparameter'id'(whileparsing)",

"code":400,

"errorNum":1551

}

Example:ThedatareturnedintheplanattributeoftheresultcontainsoneelementperAQLtop-levelstatement(i.e.FOR,RETURN,FILTERetc.).Ifthequeryoptimizerremovedsomeunnecessarystatements,theresultmightalsocontainlesselementsthanthereweretop-levelstatementsintheAQLquery.

Thefollowingexampleshowsaquerywithanon-sensiblefilterconditionthattheoptimizerhasremovedsothattherearelesstop-levelstatements.

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/explain<<EOF

AQLQueries

189

Page 190: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{"query":"FORiIN[1,2,3]FILTER1==2RETURNi"}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"plan":{

"nodes":[

{

"type":"SingletonNode",

"dependencies":[],

"id":1,

"estimatedCost":1,

"estimatedNrItems":1

},

{

"type":"CalculationNode",

"dependencies":[

1

],

"id":2,

"estimatedCost":2,

"estimatedNrItems":1,

"expression":{

"type":"array",

"subNodes":[

{

"type":"value",

"value":1

},

{

"type":"value",

"value":2

},

{

"type":"value",

"value":3

}

]

},

"outVariable":{

"id":2,

"name":"1"

},

"canThrow":false,

"expressionType":"json"

},

{

"type":"NoResultsNode",

"dependencies":[

2

],

"id":7,

"estimatedCost":0.5,

"estimatedNrItems":0

},

{

"type":"EnumerateListNode",

"dependencies":[

7

],

"id":3,

"estimatedCost":0.5,

"estimatedNrItems":0,

"inVariable":{

"id":2,

"name":"1"

},

"outVariable":{

"id":0,

"name":"i"

}

},

{

AQLQueries

190

Page 191: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"type":"ReturnNode",

"dependencies":[

3

],

"id":6,

"estimatedCost":0.5,

"estimatedNrItems":0,

"inVariable":{

"id":0,

"name":"i"

}

}

],

"rules":[

"move-calculations-up",

"move-filters-up",

"remove-unnecessary-filters",

"remove-unnecessary-calculations"

],

"collections":[],

"variables":[

{

"id":4,

"name":"3"

},

{

"id":2,

"name":"1"

},

{

"id":0,

"name":"i"

}

],

"estimatedCost":0.5,

"estimatedNrItems":0,

"initialize":true

},

"cacheable":true,

"warnings":[],

"stats":{

"rulesExecuted":30,

"rulesSkipped":0,

"plansCreated":1

},

"error":false,

"code":200

}

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/explain<<EOF

{

"query":"FORpINproductsRETURNp"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyAplanwithsomeoptimizerrulesapplied

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/explain<<EOF

{

"query":"FORpINproductsLETa=p.idFILTERa==4LETname=p.nameSORTp.id

LIMIT1RETURNname"

AQLQueries

191

Page 192: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyUsingsomeoptions

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/explain<<EOF

{

"query":"FORpINproductsLETa=p.idFILTERa==4LETname=p.nameSORTp.id

LIMIT1RETURNname",

"options":{

"maxNumberOfPlans":2,

"allPlans":true,

"optimizer":{

"rules":[

"-all",

"+use-index-for-sort",

"+use-index-range"

]

}

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyReturningallplans

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/explain<<EOF

{

"query":"FORpINproductsFILTERp.id==25RETURNp",

"options":{

"allPlans":true

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyAquerythatproducesawarning

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/explain<<EOF

AQLQueries

192

Page 193: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"query":"FORiIN1..10RETURN1/0"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyInvalidquery(missingbindparameter)

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/explain<<EOF

{

"query":"[email protected]"

}

EOF

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyThedatareturnedintheplanattributeoftheresultcontainsoneelementperAQLtop-levelstatement(i.e.FOR,RETURN,FILTERetc.).Ifthequeryoptimizerremovedsomeunnecessarystatements,theresultmightalsocontainlesselementsthanthereweretop-levelstatementsintheAQLquery.Thefollowingexampleshowsaquerywithanon-sensiblefilterconditionthattheoptimizerhasremovedsothattherearelesstop-levelstatements.

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/explain<<EOF

{"query":"FORiIN[1,2,3]FILTER1==2RETURNi"}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

ParseanAQLquery

parseanAQLqueryandreturninformationaboutit

POST/_api/query

Thisendpointisforqueryvalidationonly.Toactuallyquerythedatabase,see/api/cursor.

AJSONobjectwiththesepropertiesisrequired:

query:Tovalidateaquerystringwithoutexecutingit,thequerystringcanbepassedtotheserverviaanHTTPPOSTrequest.

Example:aValidquery

AQLQueries

193

Page 194: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/query<<EOF

{"query":"[email protected]"}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200,

"parsed":true,

"collections":[

"products"

],

"bindVars":[

"name"

],

"ast":[

{

"type":"root",

"subNodes":[

{

"type":"for",

"subNodes":[

{

"type":"variable",

"name":"p",

"id":0

},

{

"type":"collection",

"name":"products"

}

]

},

{

"type":"filter",

"subNodes":[

{

"type":"compare==",

"subNodes":[

{

"type":"attributeaccess",

"name":"name",

"subNodes":[

{

"type":"reference",

"name":"p",

"id":0

}

]

},

{

"type":"parameter",

"name":"name"

}

]

}

]

},

{

"type":"limit",

"subNodes":[

{

"type":"value",

"value":0

},

{

"type":"value",

"value":2

}

]

},

{

"type":"return",

AQLQueries

194

Page 195: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"subNodes":[

{

"type":"attributeaccess",

"name":"n",

"subNodes":[

{

"type":"reference",

"name":"p",

"id":0

}

]

}

]

}

]

}

]

}

Example:anInvalidquery

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/query<<EOF

{"query":"[email protected]"}

EOF

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"syntaxerror,unexpectedassignmentnear'[email protected]'atposition1:33",

"code":400,

"errorNum":1501

}

ReturnCodes

200:Ifthequeryisvalid,theserverwillrespondwithHTTP200andreturnthenamesofthebindparametersitfoundinthequery(ifany)inthebindVarsattributeoftheresponse.Itwillalsoreturnanarrayofthecollectionsusedinthequeryinthecollectionsattribute.Ifaquerycanbeparsedsuccessfully,theastattributeofthereturnedJSONwillcontaintheabstractsyntaxtreerepresentationofthequery.TheformatoftheastissubjecttochangeinfutureversionsofArangoDB,butitcanbeusedtoinspecthowArangoDBinterpretsagivenquery.Notethattheabstractsyntaxtreewillbereturnedwithoutanyoptimizationsappliedtoit.400:TheserverwillrespondwithHTTP400incaseofamalformedrequest,orifthequerycontainsaparseerror.ThebodyoftheresponsewillcontaintheerrordetailsembeddedinaJSONobject.

Examples

aValidquery

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/query<<EOF

{"query":"[email protected]"}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyanInvalidquery

AQLQueries

195

Page 196: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/query<<EOF

{"query":"[email protected]"}

EOF

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Querytracking

ArangoDBhasanHTTPinterfaceforretrievingthelistsofcurrentlyexecutingAQLqueriesandthelistofslowAQLqueries.InordertomakemeaningfuluseoftheseAPIs,querytrackingneedstobeenabledinthedatabasetheHTTPrequestisexecutedfor.

ReturnsthepropertiesfortheAQLquerytracking

returnstheconfigurationfortheAQLquerytracking

GET/_api/query/properties

Returnsthecurrentquerytrackingconfiguration.TheconfigurationisaJSONobjectwiththefollowingproperties:

enabled:ifsettotrue,thenquerieswillbetracked.Ifsettofalse,neitherqueriesnorslowquerieswillbetracked.

trackSlowQueries:ifsettotrue,thenslowquerieswillbetrackedinthelistofslowqueriesiftheirruntimeexceedsthevaluesetinslowQueryThreshold.Inorderforslowqueriestobetracked,theenabledpropertymustalsobesettotrue.

trackBindVars:ifsettotrue,thenbindvariablesusedinquerieswillbetracked.

maxSlowQueries:themaximumnumberofslowqueriestokeepinthelistofslowqueries.Ifthelistofslowqueriesisfull,theoldestentryinitwillbediscardedwhenadditionalslowqueriesoccur.

slowQueryThreshold:thethresholdvaluefortreatingaqueryasslow.Aquerywitharuntimegreaterorequaltothisthresholdvaluewillbeputintothelistofslowquerieswhenslowquerytrackingisenabled.ThevalueforslowQueryThresholdisspecifiedinseconds.

maxQueryStringLength:themaximumquerystringlengthtokeepinthelistofqueries.Querystringscanhavearbitrarylengths,andthispropertycanbeusedtosavememoryincaseverylongquerystringsareused.Thevalueisspecifiedinbytes.

ReturnCodes

200:Isreturnedifpropertieswereretrievedsuccessfully.400:TheserverwillrespondwithHTTP400incaseofamalformedrequest,

ChangesthepropertiesfortheAQLquerytracking

changestheconfigurationfortheAQLquerytracking

PUT/_api/query/properties

AJSONobjectwiththesepropertiesisrequired:

maxSlowQueries:Themaximumnumberofslowqueriestokeepinthelistofslowqueries.Ifthelistofslowqueriesisfull,theoldestentryinitwillbediscardedwhenadditionalslowqueriesoccur.slowQueryThreshold:Thethresholdvaluefortreatingaqueryasslow.Aquerywitharuntimegreaterorequaltothisthresholdvaluewillbeputintothelistofslowquerieswhenslowquerytrackingisenabled.ThevalueforslowQueryThresholdisspecifiedinseconds.enabled:Ifsettotrue,thenquerieswillbetracked.Ifsettofalse,neitherqueriesnorslowquerieswillbetracked.maxQueryStringLength:Themaximumquerystringlengthtokeepinthelistofqueries.Querystringscanhavearbitrarylengths,andthispropertycanbeusedtosavememoryincaseverylongquerystringsareused.Thevalueisspecifiedinbytes.trackSlowQueries:Ifsettotrue,thenslowquerieswillbetrackedinthelistofslowqueriesiftheirruntimeexceedsthevalueset

AQLQueries

196

Page 197: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

inslowQueryThreshold.Inorderforslowqueriestobetracked,theenabledpropertymustalsobesettotrue.

trackBindVars:Ifsettotrue,thenthebindvariablesusedinquerieswillbetrackedalongwithqueries.

ThepropertiesneedtobepassedintheattributepropertiesinthebodyoftheHTTPrequest.propertiesneedstobeaJSONobject.

Afterthepropertieshavebeenchanged,thecurrentsetofpropertieswillbereturnedintheHTTPresponse.

ReturnCodes

200:Isreturnedifthepropertieswerechangedsuccessfully.400:TheserverwillrespondwithHTTP400incaseofamalformedrequest,

ReturnsthecurrentlyrunningAQLqueries

returnsalistofcurrentlyrunningAQLqueries

GET/_api/query/current

ReturnsanarraycontainingtheAQLqueriescurrentlyrunningintheselecteddatabase.EachqueryisaJSONobjectwiththefollowingattributes:

id:thequery'sid

query:thequerystring(potentiallytruncated)

bindVars:thebindparametervaluesusedbythequery

started:thedateandtimewhenthequerywasstarted

runTime:thequery'sruntimeuptothepointthelistofquerieswasqueried

state:thequery'scurrentexecutionstate(asastring)

ReturnCodes

200:Isreturnedwhenthelistofqueriescanberetrievedsuccessfully.400:TheserverwillrespondwithHTTP400incaseofamalformedrequest,

ReturnsthelistofslowAQLqueries

returnsalistofslowrunningAQLqueries

GET/_api/query/slow

ReturnsanarraycontainingthelastAQLqueriesthatarefinishedandhaveexceededtheslowquerythresholdintheselecteddatabase.ThemaximumamountofqueriesinthelistcanbecontrolledbysettingthequerytrackingpropertymaxSlowQueries.ThethresholdfortreatingaqueryasslowcanbeadjustedbysettingthequerytrackingpropertyslowQueryThreshold.

EachqueryisaJSONobjectwiththefollowingattributes:

id:thequery'sid

query:thequerystring(potentiallytruncated)

bindVars:thebindparametervaluesusedbythequery

started:thedateandtimewhenthequerywasstarted

runTime:thequery'stotalruntime

state:thequery'scurrentexecutionstate(willalwaysbe"finished"forthelistofslowqueries)

ReturnCodes

200:Isreturnedwhenthelistofqueriescanberetrievedsuccessfully.400:TheserverwillrespondwithHTTP400incaseofamalformedrequest,

ClearsthelistofslowAQLqueries

AQLQueries

197

Page 198: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

clearsthelistofslowAQLqueries

DELETE/_api/query/slow

ClearsthelistofslowAQLqueries

ReturnCodes

200:TheserverwillrespondwithHTTP200whenthelistofquerieswasclearedsuccessfully.400:TheserverwillrespondwithHTTP400incaseofamalformedrequest.

Killingqueries

RunningAQLqueriescanalsobekilledontheserver.ArangoDBprovidesakillfacilityviaanHTTPinterface.Tokillarunningquery,itsid(asreturnedforthequeryinthelistofcurrentlyrunningqueries)mustbespecified.Thekillflagofthequerywillthenbeset,andthequerywillbeabortedassoonasitreachesacancelationpoint.

KillsarunningAQLquery

killsanAQLquery

DELETE/_api/query/{query-id}

PathParameters

query-id(required):Theidofthequery.

Killsarunningquery.Thequerywillbeterminatedatthenextcancelationpoint.

ReturnCodes

200:TheserverwillrespondwithHTTP200whenthequerywasstillrunningwhenthekillrequestwasexecutedandthequery'skillflagwasset.400:TheserverwillrespondwithHTTP400incaseofamalformedrequest.404:TheserverwillrespondwithHTTP404whennoquerywiththespecifiedidwasfound.

AQLQueries

198

Page 199: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfacefortheAQLquerycacheThissectiondescribestheAPImethodsforcontrollingtheAQLquerycache.

ClearsanyresultsintheAQLquerycache

clearstheAQLquerycache

DELETE/_api/query-cache

clearsthequerycache

ReturnCodes

200:TheserverwillrespondwithHTTP200whenthecachewasclearedsuccessfully.400:TheserverwillrespondwithHTTP400incaseofamalformedrequest.

ReturnstheglobalpropertiesfortheAQLquerycache

returnstheglobalconfigurationfortheAQLquerycache

GET/_api/query-cache/properties

ReturnstheglobalAQLquerycacheconfiguration.TheconfigurationisaJSONobjectwiththefollowingproperties:

mode:themodetheAQLquerycacheoperatesin.Themodeisoneofthefollowingvalues:off,onordemand.

maxResults:themaximumnumberofqueryresultsthatwillbestoredperdatabase-specificcache.

ReturnCodes

200:Isreturnedifthepropertiescanberetrievedsuccessfully.400:TheserverwillrespondwithHTTP400incaseofamalformedrequest,

GloballyadjuststheAQLqueryresultcacheproperties

changestheconfigurationfortheAQLquerycache

PUT/_api/query-cache/properties

Afterthepropertieshavebeenchanged,thecurrentsetofpropertieswillbereturnedintheHTTPresponse.

Note:changingthepropertiesmayinvalidateallresultsinthecache.TheglobalpropertiesforAQLquerycache.ThepropertiesneedtobepassedintheattributepropertiesinthebodyoftheHTTPrequest.propertiesneedstobeaJSONobjectwiththefollowingproperties:

AJSONobjectwiththesepropertiesisrequired:

mode:themodetheAQLquerycacheshouldoperatein.Possiblevaluesareoff,onordemand.maxResults:themaximumnumberofqueryresultsthatwillbestoredperdatabase-specificcache.

ReturnCodes

200:Isreturnedifthepropertieswerechangedsuccessfully.400:TheserverwillrespondwithHTTP400incaseofamalformedrequest,

AQLQueryCache

199

Page 200: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforAQLUserFunctionsManagement

AQLUserFunctionsManagement

ThisisanintroductiontoArangoDB'sHTTPinterfaceformanagingAQLuserfunctions.AQLuserfunctionsareameanstoextendthefunctionalityofArangoDB'squerylanguage(AQL)withuser-definedJavaScriptcode.

ForanoverviewofhowAQLuserfunctionsandtheirimplications,pleaserefertotheExtendingAQLchapter.

TheHTTPinterfaceprovidesanAPIforadding,deleting,andlistingpreviouslyregisteredAQLuserfunctions.

Alluserfunctionsmanagedthroughthisinterfacewillbestoredinthesystemcollection_aqlfunctions.Documentsinthiscollectionshouldnotbeaccesseddirectly,butonlyviathededicatedinterfaces.

CreateAQLuserfunction

createanewAQLuserfunction

POST/_api/aqlfunction

AJSONobjectwiththesepropertiesisrequired:

isDeterministic:anoptionalbooleanvaluetoindicatethatthefunctionresultsarefullydeterministic(functionreturnvaluesolelydependsontheinputvalueandreturnvalueisthesameforrepeatedcallswithsameinput).TheisDeterministicattributeiscurrentlynotusedbutmaybeusedlaterforoptimisations.code:astringrepresentationofthefunctionbody.name:thefullyqualifiednameoftheuserfunctions.

Incaseofsuccess,thereturnedJSONobjecthasthefollowingproperties:

error:booleanflagtoindicatethatanerroroccurred(falseinthiscase)

code:theHTTPstatuscode

ThebodyoftheresponsewillcontainaJSONobjectwithadditionalerrordetails.Theobjecthasthefollowingattributes:

error:booleanflagtoindicatethatanerroroccurred(trueinthiscase)

code:theHTTPstatuscode

errorNum:theservererrornumber

errorMessage:adescriptiveerrormessage

Example:

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/aqlfunction<<EOF

{

"name":"myfunctions::temperature::celsiustofahrenheit",

"code":"function(celsius){returncelsius*1.8+32;}"

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":201

}

ReturnCodes

AQLUserFunctionsManagement

200

Page 201: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

200:Ifthefunctionalreadyexistedandwasreplacedbythecall,theserverwillrespondwithHTTP200.201:Ifthefunctioncanberegisteredbytheserver,theserverwillrespondwithHTTP201.400:IftheJSONrepresentationismalformedormandatorydataismissingfromtherequest,theserverwillrespondwithHTTP400.

Examples

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/aqlfunction<<EOF

{

"name":"myfunctions::temperature::celsiustofahrenheit",

"code":"function(celsius){returncelsius*1.8+32;}"

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":201

}

RemoveexistingAQLuserfunction

removeanexistingAQLuserfunction

DELETE/_api/aqlfunction/{name}

PathParameters

name(required):thenameoftheAQLuserfunction.

QueryParameters

group(optional):Ifsettotrue,thenthefunctionnameprovidedinnameistreatedasanamespaceprefix,andallfunctionsinthespecifiednamespacewillbedeleted.Ifsettofalse,thefunctionnameprovidedinnamemustbefullyqualified,includinganynamespaces.

RemovesanexistingAQLuserfunction,identifiedbyname.

Incaseofsuccess,thereturnedJSONobjecthasthefollowingproperties:

error:booleanflagtoindicatethatanerroroccurred(falseinthiscase)

code:theHTTPstatuscode

ThebodyoftheresponsewillcontainaJSONobjectwithadditionalerrordetails.Theobjecthasthefollowingattributes:

error:booleanflagtoindicatethatanerroroccurred(trueinthiscase)

code:theHTTPstatuscode

errorNum:theservererrornumber

errorMessage:adescriptiveerrormessage

Example:deletesafunction:

shell>curl-XDELETE--dump-http://localhost:8529/_api/aqlfunction/square::x::y

AQLUserFunctionsManagement

201

Page 202: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200

}

Example:functionnotfound:

shell>curl-XDELETE--dump-http://localhost:8529/_api/aqlfunction/myfunction::x::y

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"code":404,

"errorNum":1582,

"errorMessage":"userfunction'%s()'notfound"

}

ReturnCodes

200:Ifthefunctioncanberemovedbytheserver,theserverwillrespondwithHTTP200.400:Iftheuserfunctionnameismalformed,theserverwillrespondwithHTTP400.404:Ifthespecifieduseruserfunctiondoesnotexist,theserverwillrespondwithHTTP404.

Examples

deletesafunction:

shell>curl-XDELETE--dump-http://localhost:8529/_api/aqlfunction/square::x::y

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200

}

functionnotfound:

shell>curl-XDELETE--dump-http://localhost:8529/_api/aqlfunction/myfunction::x::y

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

ReturnregisteredAQLuserfunctions

AQLUserFunctionsManagement

202

Page 203: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

getsallreqisteredAQLuserfunctions

GET/_api/aqlfunction

QueryParameters

namespace(optional):ReturnsallregisteredAQLuserfunctionsfromnamespacenamespace.

ReturnsallregisteredAQLuserfunctions.

ThecallwillreturnaJSONarraywithalluserfunctionsfound.Eachuserfunctionwillatleasthavethefollowingattributes:

name:Thefullyqualifiednameoftheuserfunction

code:Astringrepresentationofthefunctionbody

Example:

shell>curl--dump-http://localhost:8529/_api/aqlfunction

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[

{

"name":"myfunctions::temperature::celsiustofahrenheit",

"code":"function(celsius){returncelsius*1.8+32;}"

}

]

ReturnCodes

200:ifsuccessHTTP200isreturned.

Examples

shell>curl--dump-http://localhost:8529/_api/aqlfunction

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[

{

"name":"myfunctions::temperature::celsiustofahrenheit",

"code":"function(celsius){returncelsius*1.8+32;}"

}

]

AQLUserFunctionsManagement

203

Page 204: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforSimpleQueries

SimpleQueries

ThisisanintroductiontoArangoDB'sHTTPinterfaceforsimplequeries.

Simplequeriescanbeusedifthequeryconditionisstraightforwardsimple,i.e.,adocumentreference,alldocuments,aquery-by-example,orasimplegeoquery.Inasimplequeryyoucanspecifyexactlyonecollectionandonecondition.Theresultcanthenbesortedandcanbesplitintopages.

WorkingwithSimplesQueriesusingHTTPTolimittheamountofresultstobetransferredinonebatch,simplequeriessupportabatchSizeparameterthatcanoptionallybeusedtotelltheservertolimitthenumberofresultstobetransferredinonebatchtoacertainvalue.Ifthequeryhasmoreresultsthanweretransferredinonego,moreresultsarewaitingontheserversotheycanbefetchedsubsequently.IfnovalueforthebatchSizeparameterisspecified,theserverwilluseareasonabledefaultvalue.

Iftheserverhasmoredocumentsthanshouldbereturnedinasinglebatch,theserverwillsetthehasMoreattributeintheresult.Itwillalsoreturntheidoftheserver-sidecursorintheidattributeintheresult.ThisidcanbeusedwiththecursorAPItofetchanyoutstandingresultsfromtheserveranddisposetheserver-sidecursorafterwards.

Returnalldocuments

returnsalldocumentsofacollection

PUT/_api/simple/all

RequestBody(required)

Containsthequery.

Returnsalldocumentsofacollections.ThecallexpectsaJSONobjectasbodywiththefollowingattributes:

collection:Thenameofthecollectiontoquery.

skip:Thenumberofdocumentstoskipinthequery(optional).

limit:Themaximalamountofdocumentstoreturn.Theskipisappliedbeforethelimitrestriction.(optional)

Returnsacursorcontainingtheresult,seeHttpCursorfordetails.

Example:Limittheamountofdocumentsusinglimit

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/all<<EOF

{"collection":"products","skip":2,"limit":2}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

{

"_key":"12142",

"_id":"products/12142",

"_rev":"_WQ47fae--_",

"Hello1":"World1"

},

{

"_key":"12155",

SimpleQueries

204

Page 205: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"_id":"products/12155",

"_rev":"_WQ47fae--H",

"Hello5":"World5"

}

],

"hasMore":false,

"count":2,

"cached":false,

"extra":{

"stats":{

"writesExecuted":0,

"writesIgnored":0,

"scannedFull":4,

"scannedIndex":0,

"filtered":0,

"httpRequests":0,

"executionTime":0.00009989738464355469

},

"warnings":[]

},

"error":false,

"code":201

}

Example:UsingabatchSizevalue

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/all<<EOF

{"collection":"products","batchSize":3}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":201,

"result":[

{

"_key":"12113",

"_id":"products/12113",

"_rev":"_WQ47fZ2--_",

"Hello1":"World1"

},

{

"_key":"12120",

"_id":"products/12120",

"_rev":"_WQ47fZ6--B",

"Hello3":"World3"

},

{

"_key":"12123",

"_id":"products/12123",

"_rev":"_WQ47fZ6--D",

"Hello4":"World4"

}

],

"hasMore":true,

"id":"12129",

"count":5,

"extra":{

"stats":{

"writesExecuted":0,

"writesIgnored":0,

"scannedFull":5,

"scannedIndex":0,

"filtered":0,

"httpRequests":0,

"executionTime":0.00010585784912109375

},

SimpleQueries

205

Page 206: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"warnings":[]

},

"cached":false

}

ReturnCodes

201:isreturnedifthequerywasexecutedsuccessfully.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofaquery.Theresponsebodycontainsanerrordocumentinthiscase.404:isreturnedifthecollectionspecifiedbycollectionisunknown.Theresponsebodycontainsanerrordocumentinthiscase.

Examples

Limittheamountofdocumentsusinglimit

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/all<<EOF

{"collection":"products","skip":2,"limit":2}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyUsingabatchSizevalue

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/all<<EOF

{"collection":"products","batchSize":3}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Simplequeryby-example

returnsalldocumentsofacollectionmatchingagivenexample

PUT/_api/simple/by-example

AJSONobjectwiththesepropertiesisrequired:

skip:Thenumberofdocumentstoskipinthequery(optional).batchSize:maximumnumberofresultdocumentstobetransferredfromtheservertotheclientinoneroundtrip.Ifthisattributeisnotset,aserver-controlleddefaultvaluewillbeused.AbatchSizevalueof0isdisallowed.limit:Themaximalamountofdocumentstoreturn.Theskipisappliedbeforethelimitrestriction.(optional)example:Theexampledocument.collection:Thenameofthecollectiontoquery.

Thiswillfindalldocumentsmatchingagivenexample.

Returnsacursorcontainingtheresult,seeHttpCursorfordetails.

Example:

SimpleQueries

206

Page 207: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Matchinganattribute

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/by-example<<EOF

{

"collection":"products",

"example":{

"i":1

}

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

{

"_key":"12208",

"_id":"products/12208",

"_rev":"_WQ47fbm--_",

"a":{

"k":2,

"j":2

},

"i":1

},

{

"_key":"12202",

"_id":"products/12202",

"_rev":"_WQ47fbi--B",

"a":{

"j":1

},

"i":1

},

{

"_key":"12198",

"_id":"products/12198",

"_rev":"_WQ47fbi--_",

"a":{

"k":1,

"j":1

},

"i":1

},

{

"_key":"12205",

"_id":"products/12205",

"_rev":"_WQ47fbi--D",

"i":1

}

],

"hasMore":false,

"count":4,

"error":false,

"code":201

}

Example:Matchinganattributewhichisasub-document

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/by-example<<EOF

{

"collection":"products",

"example":{

"a.j":1

}

}

EOF

SimpleQueries

207

Page 208: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

{

"_key":"12228",

"_id":"products/12228",

"_rev":"_WQ47fcK--B",

"a":{

"j":1

},

"i":1

},

{

"_key":"12224",

"_id":"products/12224",

"_rev":"_WQ47fcK--_",

"a":{

"k":1,

"j":1

},

"i":1

}

],

"hasMore":false,

"count":2,

"error":false,

"code":201

}

Example:Matchinganattributewithinasub-document

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/by-example<<EOF

{

"collection":"products",

"example":{

"a":{

"j":1

}

}

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

{

"_key":"12254",

"_id":"products/12254",

"_rev":"_WQ47fcq--B",

"a":{

"j":1

},

"i":1

}

],

"hasMore":false,

"count":1,

"error":false,

"code":201

}

ReturnCodes

SimpleQueries

208

Page 209: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

201:isreturnedifthequerywasexecutedsuccessfully.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofaquery.Theresponsebodycontainsanerrordocumentinthiscase.404:isreturnedifthecollectionspecifiedbycollectionisunknown.Theresponsebodycontainsanerrordocumentinthiscase.

Examples

Matchinganattribute

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/by-example

<<EOF

{

"collection":"products",

"example":{

"i":1

}

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyMatchinganattributewhichisasub-document

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/by-example

<<EOF

{

"collection":"products",

"example":{

"a.j":1

}

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyMatchinganattributewithinasub-document

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/by-example

<<EOF

{

"collection":"products",

"example":{

"a":{

"j":1

}

}

}

EOF

SimpleQueries

209

Page 210: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Finddocumentsmatchinganexample

returnsonedocumentofacollectionmatchingagivenexample

PUT/_api/simple/first-example

AJSONobjectwiththesepropertiesisrequired:

example:Theexampledocument.collection:Thenameofthecollectiontoquery.

Thiswillreturnthefirstdocumentmatchingagivenexample.

ReturnsaresultcontainingthedocumentorHTTP404ifnodocumentmatchedtheexample.

Ifmorethanonedocumentinthecollectionmatchesthespecifiedexample,onlyoneofthesedocumentswillbereturned,anditisundefinedwhichofthematchingdocumentsisreturned.

Example:Ifamatchingdocumentwasfound

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/first-example<<EOF

{

"collection":"products",

"example":{

"i":1

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"document":{

"_key":"12286",

"_id":"products/12286",

"_rev":"_WQ47fdO--F",

"a":{

"k":2,

"j":2

},

"i":1

},

"error":false,

"code":200

}

Example:Ifnodocumentwasfound

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/first-example<<EOF

{

SimpleQueries

210

Page 211: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"collection":"products",

"example":{

"l":1

}

}

EOF

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"code":404,

"errorNum":404,

"errorMessage":"nomatch"

}

ReturnCodes

200:isreturnedwhenthequerywassuccessfullyexecuted.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofaquery.Theresponsebodycontainsanerrordocumentinthiscase.404:isreturnedifthecollectionspecifiedbycollectionisunknown.Theresponsebodycontainsanerrordocumentinthiscase.

Examples

Ifamatchingdocumentwasfound

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/first-

example<<EOF

{

"collection":"products",

"example":{

"i":1

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyIfnodocumentwasfound

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/first-

example<<EOF

{

"collection":"products",

"example":{

"l":1

}

}

EOF

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

SimpleQueries

211

Page 212: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

showresponsebody

Finddocumentsbytheirkeys

fetchesmultipledocumentsbytheirkeys

PUT/_api/simple/lookup-by-keys

AJSONobjectwiththesepropertiesisrequired:

keys(string):arraywiththe_keysofdocumentstoremove.collection:Thenameofthecollectiontolookinforthedocuments

Looksupthedocumentsinthespecifiedcollectionusingthearrayofkeysprovided.Alldocumentsforwhichamatchingkeywasspecifiedinthekeysarrayandthatexistinthecollectionwillbereturned.Keysforwhichnodocumentcanbefoundintheunderlyingcollectionareignored,andnoexceptionwillbethrownforthem.

ThebodyoftheresponsecontainsaJSONobjectwithadocumentsattribute.Thedocumentsattributeisanarraycontainingthematchingdocuments.Theorderinwhichmatchingdocumentsarepresentintheresultarrayisunspecified.

Example:Lookingupexistingdocuments

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/lookup-by-keys<<EOF

{

"keys":[

"test0",

"test1",

"test2",

"test3",

"test4",

"test5",

"test6",

"test7",

"test8",

"test9"

],

"collection":"test"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"documents":[

{

"_key":"test0",

"_id":"test/test0",

"_rev":"_WQ47ffG--_",

"value":0

},

{

"_key":"test1",

"_id":"test/test1",

"_rev":"_WQ47ffK--_",

"value":1

},

{

"_key":"test2",

"_id":"test/test2",

"_rev":"_WQ47ffK--B",

"value":2

},

{

"_key":"test3",

"_id":"test/test3",

"_rev":"_WQ47ffK--D",

SimpleQueries

212

Page 213: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"value":3

},

{

"_key":"test4",

"_id":"test/test4",

"_rev":"_WQ47ffK--F",

"value":4

},

{

"_key":"test5",

"_id":"test/test5",

"_rev":"_WQ47ffK--H",

"value":5

},

{

"_key":"test6",

"_id":"test/test6",

"_rev":"_WQ47ffK--J",

"value":6

},

{

"_key":"test7",

"_id":"test/test7",

"_rev":"_WQ47ffK--L",

"value":7

},

{

"_key":"test8",

"_id":"test/test8",

"_rev":"_WQ47ffK--N",

"value":8

},

{

"_key":"test9",

"_id":"test/test9",

"_rev":"_WQ47ffO--_",

"value":9

}

],

"error":false,

"code":200

}

Example:Lookingupnon-existingdocuments

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/lookup-by-keys<<EOF

{

"keys":[

"foo",

"bar",

"baz"

],

"collection":"test"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"documents":[],

"error":false,

"code":200

}

ReturnCodes

200:isreturnediftheoperationwascarriedoutsuccessfully.

SimpleQueries

213

Page 214: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

404:isreturnedifthecollectionwasnotfound.Theresponsebodycontainsanerrordocumentinthiscase.405:isreturnediftheoperationwascalledwithadifferentHTTPMETHODthanPUT.

Examples

Lookingupexistingdocuments

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/lookup-by-

keys<<EOF

{

"keys":[

"test0",

"test1",

"test2",

"test3",

"test4",

"test5",

"test6",

"test7",

"test8",

"test9"

],

"collection":"test"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyLookingupnon-existingdocuments

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/lookup-by-

keys<<EOF

{

"keys":[

"foo",

"bar",

"baz"

],

"collection":"test"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Returnarandomdocument

returnsarandomdocumentfromacollection

SimpleQueries

214

Page 215: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

PUT/_api/simple/any

Returnsarandomdocumentfromacollection.ThecallexpectsaJSONobjectasbodywiththefollowingattributes:

AJSONobjectwiththesepropertiesisrequired:

collection:Theidentifierornameofthecollectiontoquery.ReturnsaJSONobjectwiththedocumentstoredintheattributedocumentifthecollectioncontainsatleastonedocument.Ifthecollectionisempty,thedocumentattrbutecontainsnull.

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/any<<EOF

{

"collection":"products"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"document":{

"_key":"12170",

"_id":"products/12170",

"_rev":"_WQ47fbC--_",

"Hello1":"World1"

},

"error":false,

"code":200

}

ReturnCodes

200:isreturnedifthequerywasexecutedsuccessfully.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofaquery.Theresponsebodycontainsanerrordocumentinthiscase.404:isreturnedifthecollectionspecifiedbycollectionisunknown.Theresponsebodycontainsanerrordocumentinthiscase.

Examples

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/any<<EOF

{

"collection":"products"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Removedocumentsbytheirkeys

removesmultipledocumentsbytheirkeys

PUT/_api/simple/remove-by-keys

AJSONobjectwiththesepropertiesisrequired:

keys(string):arraywiththe_keysofdocumentstoremove.options:

SimpleQueries

215

Page 216: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

returnOld:ifsettotrueandsilentaboveisfalse,thentheaboveinformationabouttheremoveddocumentscontainsthecompleteremoveddocuments.silent:ifsettofalse,thentheresultwillcontainanadditionalattributeoldwhichcontainsanarraywithoneentryforeachremoveddocument.Bydefault,theseentrieswillhavethe_id,_keyand_revattributes.waitForSync:ifsettotrue,thenallremovaloperationswillinstantlybesynchronizedtodisk.Ifthisisnotspecified,thenthecollection'sdefaultsyncbehaviorwillbeapplied.

collection:Thenameofthecollectiontolookinforthedocumentstoremove

Looksupthedocumentsinthespecifiedcollectionusingthearrayofkeysprovided,andremovesalldocumentsfromthecollectionwhosekeysarecontainedinthekeysarray.Keysforwhichnodocumentcanbefoundintheunderlyingcollectionareignored,andnoexceptionwillbethrownforthem.

ThebodyoftheresponsecontainsaJSONobjectwithinformationhowmanydocumentswereremoved(andhowmanywerenot).Theremovedattributewillcontainthenumberofactuallyremoveddocuments.Theignoredattributewillcontainthenumberofkeysintherequestforwhichnomatchingdocumentcouldbefound.

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/remove-by-keys<<EOF

{

"keys":[

"test0",

"test1",

"test2",

"test3",

"test4",

"test5",

"test6",

"test7",

"test8",

"test9"

],

"collection":"test"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"removed":10,

"ignored":0,

"error":false,

"code":200

}

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/remove-by-keys<<EOF

{

"keys":[

"foo",

"bar",

"baz"

],

"collection":"test"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

SimpleQueries

216

Page 217: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"removed":0,

"ignored":3,

"error":false,

"code":200

}

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/remove-by-

keys<<EOF

{

"keys":[

"test0",

"test1",

"test2",

"test3",

"test4",

"test5",

"test6",

"test7",

"test8",

"test9"

],

"collection":"test"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/remove-by-

keys<<EOF

{

"keys":[

"foo",

"bar",

"baz"

],

"collection":"test"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Removedocumentsbyexample

removesalldocumentsofacollectionthatmatchanexample

PUT/_api/simple/remove-by-example

AJSONobjectwiththesepropertiesisrequired:

SimpleQueries

217

Page 218: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

example:Anexampledocumentthatallcollectiondocumentsarecomparedagainst.collection:Thenameofthecollectiontoremovefrom.options:

limit:anoptionalvaluethatdetermineshowmanydocumentstodeleteatmost.Iflimitisspecifiedbutislessthanthenumberofdocumentsinthecollection,itisundefinedwhichofthedocumentswillbedeleted.waitForSync:ifsettotrue,thenallremovaloperationswillinstantlybesynchronizedtodisk.Ifthisisnotspecified,thenthecollection'sdefaultsyncbehaviorwillbeapplied.

Thiswillfindalldocumentsinthecollectionthatmatchthespecifiedexampleobject.

Note:thelimitattributeisnotsupportedonshardedcollections.Usingitwillresultinanerror.

Returnsthenumberofdocumentsthatweredeleted.

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/remove-by-example<<EOF

{

"collection":"products",

"example":{

"a":{

"j":1

}

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"deleted":1,

"error":false,

"code":200

}

Example:UsingParameter:waitForSyncandlimit

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/remove-by-example<<EOF

{

"collection":"products",

"example":{

"a":{

"j":1

}

},

"waitForSync":true,

"limit":2

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"deleted":1,

"error":false,

"code":200

}

SimpleQueries

218

Page 219: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Example:UsingParameter:waitForSyncandlimitwithnewsignature

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/remove-by-example<<EOF

{

"collection":"products",

"example":{

"a":{

"j":1

}

},

"options":{

"waitForSync":true,

"limit":2

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"deleted":1,

"error":false,

"code":200

}

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/remove-by-

example<<EOF

{

"collection":"products",

"example":{

"a":{

"j":1

}

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyUsingParameter:waitForSyncandlimit

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/remove-by-

example<<EOF

{

"collection":"products",

"example":{

"a":{

"j":1

}

},

"waitForSync":true,

"limit":2

}

SimpleQueries

219

Page 220: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyUsingParameter:waitForSyncandlimitwithnewsignature

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/remove-by-

example<<EOF

{

"collection":"products",

"example":{

"a":{

"j":1

}

},

"options":{

"waitForSync":true,

"limit":2

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Replacedocumentsbyexample

replacesthebodyofalldocumentsofacollectionthatmatchanexample

PUT/_api/simple/replace-by-example

AJSONobjectwiththesepropertiesisrequired:

options:limit:anoptionalvaluethatdetermineshowmanydocumentstoreplaceatmost.Iflimitisspecifiedbutislessthanthenumberofdocumentsinthecollection,itisundefinedwhichofthedocumentswillbereplaced.waitForSync:ifsettotrue,thenallremovaloperationswillinstantlybesynchronizedtodisk.Ifthisisnotspecified,thenthecollection'sdefaultsyncbehaviorwillbeapplied.

example:Anexampledocumentthatallcollectiondocumentsarecomparedagainst.collection:Thenameofthecollectiontoreplacewithin.newValue:Thereplacementdocumentthatwillgetinsertedinplaceofthe"old"documents.

Thiswillfindalldocumentsinthecollectionthatmatchthespecifiedexampleobject,andreplacetheentiredocumentbodywiththenewvaluespecified.Notethatdocumentmeta-attributessuchas_id,_key,_from,_toetc.cannotbereplaced.

Note:thelimitattributeisnotsupportedonshardedcollections.Usingitwillresultinanerror.

Returnsthenumberofdocumentsthatwerereplaced.

Example:

SimpleQueries

220

Page 221: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/replace-by-example<<EOF

{

"collection":"products",

"example":{

"a":{

"j":1

}

},

"newValue":{

"foo":"bar"

},

"limit":3

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"replaced":1,

"error":false,

"code":200

}

Example:UsingnewSignatureforattributesWaitForSyncandlimit

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/replace-by-example<<EOF

{

"collection":"products",

"example":{

"a":{

"j":1

}

},

"newValue":{

"foo":"bar"

},

"options":{

"limit":3,

"waitForSync":true

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"replaced":1,

"error":false,

"code":200

}

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/replace-by-

example<<EOF

{

"collection":"products",

"example":{

"a":{

"j":1

}

},

SimpleQueries

221

Page 222: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"newValue":{

"foo":"bar"

},

"limit":3

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyUsingnewSignatureforattributesWaitForSyncandlimit

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/replace-by-

example<<EOF

{

"collection":"products",

"example":{

"a":{

"j":1

}

},

"newValue":{

"foo":"bar"

},

"options":{

"limit":3,

"waitForSync":true

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Updatedocumentsbyexample

partiallyupdatesthebodyofalldocumentsofacollectionthatmatchanexample

PUT/_api/simple/update-by-example

AJSONobjectwiththesepropertiesisrequired:

options:keepNull:Thisparametercanbeusedtomodifythebehaviorwhenhandlingnullvalues.Normally,nullvaluesarestoredinthedatabase.BysettingthekeepNullparametertofalse,thisbehaviorcanbechangedsothatallattributesindatawithnullvalueswillberemovedfromtheupdateddocument.mergeObjects:Controlswhetherobjects(notarrays)willbemergedifpresentinboththeexistingandthepatchdocument.Ifsettofalse,thevalueinthepatchdocumentwilloverwritetheexistingdocument'svalue.Ifsettotrue,objectswillbemerged.Thedefaultistrue.limit:anoptionalvaluethatdetermineshowmanydocumentstoupdateatmost.Iflimitisspecifiedbutislessthanthe

SimpleQueries

222

Page 223: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

numberofdocumentsinthecollection,itisundefinedwhichofthedocumentswillbeupdated.waitForSync:ifsettotrue,thenallremovaloperationswillinstantlybesynchronizedtodisk.Ifthisisnotspecified,thenthecollection'sdefaultsyncbehaviorwillbeapplied.

example:Anexampledocumentthatallcollectiondocumentsarecomparedagainst.collection:Thenameofthecollectiontoupdatewithin.newValue:Adocumentcontainingalltheattributestoupdateinthefounddocuments.

Thiswillfindalldocumentsinthecollectionthatmatchthespecifiedexampleobject,andpartiallyupdatethedocumentbodywiththenewvaluespecified.Notethatdocumentmeta-attributessuchas_id,_key,_from,_toetc.cannotbereplaced.

Note:thelimitattributeisnotsupportedonshardedcollections.Usingitwillresultinanerror.

Returnsthenumberofdocumentsthatwereupdated.

Example:usingoldsyntaxforoptions

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/update-by-example<<EOF

{

"collection":"products",

"example":{

"a":{

"j":1

}

},

"newValue":{

"a":{

"j":22

}

},

"limit":3

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"updated":1,

"error":false,

"code":200

}

Example:usingnewsignatureforoptions

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/update-by-example<<EOF

{

"collection":"products",

"example":{

"a":{

"j":1

}

},

"newValue":{

"a":{

"j":22

}

},

"options":{

"limit":3,

"waitForSync":true

}

SimpleQueries

223

Page 224: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"updated":1,

"error":false,

"code":200

}

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/update-by-

example<<EOF

{

"collection":"products",

"example":{

"a":{

"j":1

}

},

"newValue":{

"a":{

"j":22

}

},

"limit":3

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyusingnewsignatureforoptions

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/update-by-

example<<EOF

{

"collection":"products",

"example":{

"a":{

"j":1

}

},

"newValue":{

"a":{

"j":22

}

},

"options":{

"limit":3,

"waitForSync":true

}

}

SimpleQueries

224

Page 225: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Simplerangequery

returnsalldocumentsofacollectionwithinarange

PUT/_api/simple/range

AJSONobjectwiththesepropertiesisrequired:

right:Theupperbound.attribute:Theattributepathtocheck.collection:Thenameofthecollectiontoquery.limit:Themaximalamountofdocumentstoreturn.Theskipisappliedbeforethelimitrestriction.(optional)closed:Iftrue,useintervalincludingleftandright,otherwiseexcluderight,butincludeleft.skip:Thenumberofdocumentstoskipinthequery(optional).left:Thelowerbound.

Thiswillfindalldocumentswithinagivenrange.Inordertoexecutearangequery,askip-listindexonthequeriedattributemustbepresent.

Returnsacursorcontainingtheresult,seeHttpCursorfordetails.

Note:therangesimplequeryisdeprecatedasofArangoDB2.6.ThefunctionmayberemovedinfutureversionsofArangoDB.ThepreferredwayforretrievingdocumentsfromacollectionwithinaspecificrangeistouseanAQLqueryasfollows:

FORdocIN@@collection

FILTERdoc.value>=@left&&doc.value<@right

LIMIT@skip,@limit

RETURNdoc`

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/range<<EOF

{

"collection":"products",

"attribute":"i",

"left":2,

"right":4

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

{

"_key":"12528",

"_id":"products/12528",

"_rev":"_WQ47fie--B",

"i":2

},

{

"_key":"12531",

"_id":"products/12531",

"_rev":"_WQ47fie--D",

SimpleQueries

225

Page 226: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"i":3

}

],

"hasMore":false,

"count":2,

"error":false,

"code":201

}

ReturnCodes

201:isreturnedifthequerywasexecutedsuccessfully.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofaquery.Theresponsebodycontainsanerrordocumentinthiscase.404:isreturnedifthecollectionspecifiedbycollectionisunknownornosuitableindexfortherangequeryispresent.Theresponsebodycontainsanerrordocumentinthiscase.

Examples

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/range<<EOF

{

"collection":"products",

"attribute":"i",

"left":2,

"right":4

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Returnsdocumentsnearacoordinate

returnsalldocumentsofacollectionnearagivenlocation

PUT/_api/simple/near

AJSONobjectwiththesepropertiesisrequired:

distance:Ifgiven,theattributekeyusedtoreturnthedistancetothegivencoordinate.(optional).Ifspecified,distancesarereturnedinmeters.skip:Thenumberofdocumentstoskipinthequery.(optional)longitude:Thelongitudeofthecoordinate.limit:Themaximalamountofdocumentstoreturn.Theskipisappliedbeforethelimitrestriction.Thedefaultis100.(optional)collection:Thenameofthecollectiontoquery.latitude:Thelatitudeofthecoordinate.geo:Ifgiven,theidentifierofthegeo-indextouse.(optional)

Thedefaultwillfindatmost100documentsnearthegivencoordinate.Thereturnedarrayissortedaccordingtothedistance,withthenearestdocumentbeingfirstinthereturnarray.Ifthereareneardocumentsofequaldistance,documentsarechosenrandomlyfromthissetuntilthelimitisreached.

Inordertousethenearoperator,ageoindexmustbedefinedforthecollection.Thisindexalsodefineswhichattributeholdsthecoordinatesforthedocument.Ifyouhavemorethanonegeo-spatialindex,youcanusethegeofieldtoselectaparticularindex.

Returnsacursorcontainingtheresult,seeHttpCursorfordetails.

SimpleQueries

226

Page 227: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Note:thenearsimplequeryisdeprecatedasofArangoDB2.6.ThisAPImayberemovedinfutureversionsofArangoDB.ThepreferredwayforretrievingdocumentsfromacollectionusingthenearoperatoristoissueanAQLqueryusingtheNEARfunctionasfollows:

FORdocINNEAR(@@collection,@latitude,@longitude,@limit)

RETURNdoc`

Example:Withoutdistance

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/near<<EOF

{

"collection":"products",

"latitude":0,

"longitude":0,

"skip":1,

"limit":2

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

{

"_key":"12441",

"_id":"products/12441",

"_rev":"_WQ47fgq--D",

"name":"Name/0.002/",

"loc":[

0.002,

0

]

},

{

"_key":"12435",

"_id":"products/12435",

"_rev":"_WQ47fgq--_",

"name":"Name/-0.002/",

"loc":[

-0.002,

0

]

}

],

"hasMore":false,

"count":2,

"error":false,

"code":201

}

Example:Withdistance

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/near<<EOF

{

"collection":"products",

"latitude":0,

"longitude":0,

"skip":1,

"limit":3,

"distance":"distance"

}

SimpleQueries

227

Page 228: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

{

"distance":222.38985328911744,

"_id":"products/12486",

"_key":"12486",

"_rev":"_WQ47fhq--D",

"loc":[

-0.002,

0

],

"name":"Name/-0.002/"

},

{

"distance":222.38985328911744,

"_id":"products/12492",

"_key":"12492",

"_rev":"_WQ47fhq--H",

"loc":[

0.002,

0

],

"name":"Name/0.002/"

},

{

"distance":444.779706578235,

"_id":"products/12483",

"_key":"12483",

"_rev":"_WQ47fhq--B",

"loc":[

-0.004,

0

],

"name":"Name/-0.004/"

}

],

"hasMore":false,

"count":3,

"error":false,

"code":201

}

ReturnCodes

201:isreturnedifthequerywasexecutedsuccessfully.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofaquery.Theresponsebodycontainsanerrordocumentinthiscase.404:isreturnedifthecollectionspecifiedbycollectionisunknown.Theresponsebodycontainsanerrordocumentinthiscase.

Examples

Withoutdistance

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/near<<EOF

{

"collection":"products",

"latitude":0,

"longitude":0,

"skip":1,

"limit":2

}

EOF

SimpleQueries

228

Page 229: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyWithdistance

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/near<<EOF

{

"collection":"products",

"latitude":0,

"longitude":0,

"skip":1,

"limit":3,

"distance":"distance"

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Finddocumentswithinaradiusaroundacoordinate

returnsalldocumentsofacollectionwithinagivenradius

PUT/_api/simple/within

AJSONobjectwiththesepropertiesisrequired:

distance:Ifgiven,theattributekeyusedtoreturnthedistancetothegivencoordinate.(optional).Ifspecified,distancesarereturnedinmeters.skip:Thenumberofdocumentstoskipinthequery.(optional)longitude:Thelongitudeofthecoordinate.radius:Themaximalradius(inmeters).collection:Thenameofthecollectiontoquery.latitude:Thelatitudeofthecoordinate.limit:Themaximalamountofdocumentstoreturn.Theskipisappliedbeforethelimitrestriction.Thedefaultis100.(optional)geo:Ifgiven,theidentifierofthegeo-indextouse.(optional)

Thiswillfindalldocumentswithinagivenradiusaroundthecoordinate(latitude,longitude).Thereturnedlistissortedbydistance.

Inordertousethewithinoperator,ageoindexmustbedefinedforthecollection.Thisindexalsodefineswhichattributeholdsthecoordinatesforthedocument.Ifyouhavemorethanonegeo-spatialindex,youcanusethegeofieldtoselectaparticularindex.

Returnsacursorcontainingtheresult,seeHttpCursorfordetails.

Note:thewithinsimplequeryisdeprecatedasofArangoDB2.6.ThisAPImayberemovedinfutureversionsofArangoDB.ThepreferredwayforretrievingdocumentsfromacollectionusingthenearoperatoristoissueanAQLqueryusingtheWITHINfunctionasfollows:

FORdocINWITHIN(@@collection,@latitude,@longitude,@radius,@distanceAttributeName)

RETURNdoc

SimpleQueries

229

Page 230: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Example:Withoutdistance

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/near<<EOF

{

"collection":"products",

"latitude":0,

"longitude":0,

"skip":1,

"limit":2,

"radius":500

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

{

"_key":"12854",

"_id":"products/12854",

"_rev":"_WQ47foi--_",

"name":"Name/0.002/",

"loc":[

0.002,

0

]

},

{

"_key":"12848",

"_id":"products/12848",

"_rev":"_WQ47foe--H",

"name":"Name/-0.002/",

"loc":[

-0.002,

0

]

}

],

"hasMore":false,

"count":2,

"error":false,

"code":201

}

Example:Withdistance

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/near<<EOF

{

"collection":"products",

"latitude":0,

"longitude":0,

"skip":1,

"limit":3,

"distance":"distance",

"radius":300

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

SimpleQueries

230

Page 231: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"distance":222.38985328911744,

"_id":"products/12899",

"_key":"12899",

"_rev":"_WQ47fpW--B",

"loc":[

-0.002,

0

],

"name":"Name/-0.002/"

},

{

"distance":222.38985328911744,

"_id":"products/12905",

"_key":"12905",

"_rev":"_WQ47fpW--F",

"loc":[

0.002,

0

],

"name":"Name/0.002/"

},

{

"distance":444.779706578235,

"_id":"products/12896",

"_key":"12896",

"_rev":"_WQ47fpW--_",

"loc":[

-0.004,

0

],

"name":"Name/-0.004/"

}

],

"hasMore":false,

"count":3,

"error":false,

"code":201

}

ReturnCodes

201:isreturnedifthequerywasexecutedsuccessfully.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofaquery.Theresponsebodycontainsanerrordocumentinthiscase.404:isreturnedifthecollectionspecifiedbycollectionisunknown.Theresponsebodycontainsanerrordocumentinthiscase.

Examples

Withoutdistance

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/near<<EOF

{

"collection":"products",

"latitude":0,

"longitude":0,

"skip":1,

"limit":2,

"radius":500

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

SimpleQueries

231

Page 232: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

showresponsebodyWithdistance

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/near<<EOF

{

"collection":"products",

"latitude":0,

"longitude":0,

"skip":1,

"limit":3,

"distance":"distance",

"radius":300

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Withinrectanglequery

returnsalldocumentsofacollectionwithinarectangle

PUT/_api/simple/within-rectangle

AJSONobjectwiththesepropertiesisrequired:

latitude1:Thelatitudeofthefirstrectanglecoordinate.skip:Thenumberofdocumentstoskipinthequery.(optional)latitude2:Thelatitudeofthesecondrectanglecoordinate.longitude2:Thelongitudeofthesecondrectanglecoordinate.longitude1:Thelongitudeofthefirstrectanglecoordinate.limit:Themaximalamountofdocumentstoreturn.Theskipisappliedbeforethelimitrestriction.Thedefaultis100.(optional)collection:Thenameofthecollectiontoquery.geo:Ifgiven,theidentifierofthegeo-indextouse.(optional)

Thiswillfindalldocumentswithinthespecifiedrectangle(determinedbythegivencoordinates(latitude1,longitude1,latitude2,longitude2).

Inordertousethewithin-rectanglequery,ageoindexmustbedefinedforthecollection.Thisindexalsodefineswhichattributeholdsthecoordinatesforthedocument.Ifyouhavemorethanonegeo-spatialindex,youcanusethegeofieldtoselectaparticularindex.

Returnsacursorcontainingtheresult,seeHttpCursorfordetails.

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/within-rectangle<<EOF

{

"collection":"products",

"latitude1":0,

"longitude1":0,

"latitude2":0.2,

"longitude2":0.2,

"skip":1,

"limit":2

}

EOF

SimpleQueries

232

Page 233: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

{

"_key":"12965",

"_id":"products/12965",

"_rev":"_WQ47fqO--F",

"name":"Name/0.008/",

"loc":[

0.008,

0

]

},

{

"_key":"12962",

"_id":"products/12962",

"_rev":"_WQ47fqO--D",

"name":"Name/0.006/",

"loc":[

0.006,

0

]

}

],

"hasMore":false,

"count":2,

"error":false,

"code":201

}

ReturnCodes

201:isreturnedifthequerywasexecutedsuccessfully.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofaquery.Theresponsebodycontainsanerrordocumentinthiscase.404:isreturnedifthecollectionspecifiedbycollectionisunknown.Theresponsebodycontainsanerrordocumentinthiscase.

Examples

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/within-

rectangle<<EOF

{

"collection":"products",

"latitude1":0,

"longitude1":0,

"latitude2":0.2,

"longitude2":0.2,

"skip":1,

"limit":2

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Fulltextindexquery

returnsdocumentsofacollectionasaresultofafulltextquery

SimpleQueries

233

Page 234: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

PUT/_api/simple/fulltext

AJSONobjectwiththesepropertiesisrequired:

index:Theidentifierofthefulltext-indextouse.attribute:Theattributethatcontainsthetexts.collection:Thenameofthecollectiontoquery.limit:Themaximalamountofdocumentstoreturn.Theskipisappliedbeforethelimitrestriction.(optional)skip:Thenumberofdocumentstoskipinthequery(optional).query:Thefulltextquery.PleaserefertoFulltextqueriesfordetails.

Thiswillfindalldocumentsfromthecollectionthatmatchthefulltextqueryspecifiedinquery.

Inordertousethefulltextoperator,afulltextindexmustbedefinedforthecollectionandthespecifiedattribute.

Returnsacursorcontainingtheresult,seeHttpCursorfordetails.

Note:thefulltextsimplequeryisdeprecatedasofArangoDB2.6.ThisAPImayberemovedinfutureversionsofArangoDB.ThepreferredwayforretrievingdocumentsfromacollectionusingthenearoperatoristoissueanAQLqueryusingtheFULLTEXTAQLfunctionasfollows:

FORdocINFULLTEXT(@@collection,@attributeName,@queryString,@limit)

RETURNdoc

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/fulltext<<EOF

{

"collection":"products",

"attribute":"text",

"query":"word"

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

{

"_key":"12326",

"_id":"products/12326",

"_rev":"_WQ47feO--_",

"text":"thistextcontainsword"

},

{

"_key":"12330",

"_id":"products/12330",

"_rev":"_WQ47feS--_",

"text":"thistextalsohasaword"

}

],

"hasMore":false,

"count":2,

"error":false,

"code":201

}

ReturnCodes

201:isreturnedifthequerywasexecutedsuccessfully.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofaquery.Theresponsebodycontainsanerrordocumentinthiscase.404:isreturnedifthecollectionspecifiedbycollectionisunknown.Theresponsebodycontainsanerrordocumentinthiscase.

Examples

SimpleQueries

234

Page 235: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/fulltext

<<EOF

{

"collection":"products",

"attribute":"text",

"query":"word"

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

SimpleQueries

235

Page 236: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforAsyncResultsManagement

RequestExecution

ArangoDBprovidesvariousmethodsofexecutingclientrequests.Clientscanchoosetheappropriatemethodonaper-requestlevelbasedontheirthroughput,controlflow,anddurabilityrequirements.

Blockingexecution

ArangoDBisamulti-threadedserver,allowingtheprocessingofmultipleclientrequestsatthesametime.Communicationhandlingandtheactualworkcanbeperformedbymultipleworkerthreadsinparallel.

ThoughmultipleclientscanconnectandsendtheirrequestsinparalleltoArangoDB,clientsmayneedtowaitfortheirrequeststobeprocessed.

Bydefault,theserverwillfullyprocessanincomingrequestandthenreturntheresulttotheclient.Theclientmustwaitfortheserver'sresponsebeforeitcansendadditionalrequestsovertheconnection.Forclientsthataresingle-threadedornotevent-driven,waitingforthefullserverresponsemaybenon-optimal.

Furthermore,pleasenotethateveniftheclientclosestheHTTPconnection,therequestrunningontheserverwillstillcontinueuntilitiscompleteandonlythennoticethattheclientnolongerlistens.Thusclosingtheconnectiondoesnothelptoabortalongrunningquery!SeebelowunderAsyncExecutionandlaterResultRetrievalandHttpJobPutCancelfordetails.

FireandForget

Tomitigateclientblockingissues,ArangoDBsinceversion1.4.offersagenericmechanismfornon-blockingrequests:ifclientsaddtheHTTPheaderx-arango-async:truetotheirrequests,ArangoDBwillputtherequestintoanin-memorytaskqueueandreturnanHTTP202(accepted)responsetotheclientinstantly.Theserverwillexecutethetasksfromthequeueasynchronously,decouplingtheclientrequestsandtheactualwork.

Thisallowsformuchhigherthroughputthanifclientswouldwaitfortheserver'sresponse.Thedownsideisthattheresponsethatissenttotheclientisalwaysthesame(agenericHTTP202)andclientscannotmakeadecisionbasedontheactualoperation'sresultatthispoint.Infact,theoperationmighthavenotevenbeenexecutedatthetimethegenericresponsehasreachedtheclient.Clientscanthusnotrelyontheirrequestshavingbeenprocessedsuccessfully.

Theasynchronoustaskqueueontheserverisnotpersisted,meaningnot-yetprocessedtasksfromthequeuewillbelostincaseofacrash.However,theclientwillnotknowwhethertheywereprocessedornot.

Clientsshouldthusnotsendtheextraheaderwhentheyhavestrictdurabilityrequirementsoriftheyrelyonresultofthesentoperationforfurtheractions.

Themaximumnumberofqueuedtasksisdeterminedbythestartupoption-scheduler.maximal-queue-size.Ifmorethanthisnumberoftasksarealreadyqueued,theserverwillrejecttherequestwithanHTTP500error.

Finally,pleasenotethatitisnotpossibletocancelsuchafireandforgetjob,sinceyouwon'tgetanyhandletoidentifyitlateron.Ifyouneedtocancelrequests,useAsyncExecutionandlaterResultRetrievalandHttpJobPutCancelbelow.

AsyncExecutionandlaterResultRetrieval

ByaddingtheHTTPheaderx-arango-async:storetoarequest,clientscaninstructtheArangoDBservertoexecutetheoperationasynchronouslyasabove,butalsostoretheoperationresultinmemoryforalaterretrieval.TheserverwillreturnajobidintheHTTPresponseheaderx-arango-async-id.TheclientcanusethisidinconjunctionwiththeHTTPAPIat/_api/job,whichisdescribedindetailinthismanual.

ClientscanasktheArangoDBserverviatheasyncjobsAPIwhichresultsarereadyforretrieval,andwhicharenot.ClientscanalsousetheasyncjobsAPItoretrievetheoriginalresultsofanalreadyexecutedasyncjobbypassingittheoriginallyreturnedjobid.Theserverwillthenreturnthejobresultasifthejobwasexecutednormally.Furthermore,clientscancancelrunningasyncjobsbytheirjobid,seeHttpJobPutCancel.

AsyncResultHandling

236

Page 237: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

ArangoDBwillkeepallresultsofjobsinitiatedwiththex-arango-async:storeheader.Resultsareremovedfromtheserveronlyifaclientexplicitlyaskstheserverforaspecificresult.

TheasyncjobsAPIalsoprovidesmethodsforgarbagecollectionthatclientscanusetogetridof"old"notfetchedresults.ClientsshouldcallthismethodperiodicallybecauseArangoDBdoesnotartificiallylimitthenumberofnot-yet-fetchedresults.

Itisthusaclientresponsibilitytostoreonlyasmanyresultsasneededandtofetchavailableresultsassoonaspossible,oratleasttocleanupnotfetchedresultsfromtimetotime.

Thejobqueueandtheresultsarekeptinmemoryonlyontheserver,sotheywillbelostincaseofacrash.

Cancelingasynchronousjobs

AsmentionedaboveitispossibletocancelanasynchronouslyrunningjobusingitsjobID.ThisisdonewithaPUTrequestasdescribedinHttpJobPutCancel.

However,afewwordsofexplanationaboutwhathappensbehindthescenesareinorder.Firstly,arunningasyncquerycaninternallybeexecutedbyC++codeorbyJavaScriptcode.ForexampleCRUDoperationsareexecuteddirectlyinC++,whereasAQLqueriesandtransactionsareexecutedbyJavaScriptcode.ThejobcancelationonlyworksforJavaScriptcode,sincethemechanismusedissimplytotriggeranuncatchableexceptionintheJavaScriptthread,whichwillbecaughtontheC++level,whichinturnleadstothecancelationofthejob.Noresultcanberetrievedlater,sincealldataabouttherequestisdiscarded.

Ifyoucancelajobrunningonacoordinatorofacluster(Sharding),thenonlythecoderunningonthecoordinatorisstopped,theremayremaintaskswithintheclusterwhichhavealreadybeendistributedtotheDBserversanditiscurrentlynotpossibletocancelthemaswell.

AsyncExecutionandAuthentication

Ifarequestrequiresauthentication,theauthenticationprocedureisrunbeforequeueing.Therequestwillonlybequeuedifitvalidcredentialsandtheauthenticationsucceeds.Iftherequestdoesnotcontainvalidcredentials,itwillnotbequeuedbutrejectedinstantlyinthesamewayasa"regular",non-queuedrequest.

ManagingAsyncResultsviaHTTP

Returnresultofanasyncjob

fetchesajobresultandremovesitfromthequeue

PUT/_api/job/{job-id}

PathParameters

job-id(required):Theasyncjobid.

Returnstheresultofanasyncjobidentifiedbyjob-id.Iftheasyncjobresultispresentontheserver,theresultwillberemovedfromthelistofresult.Thatmeansthismethodcanbecalledforeachjob-idonce.Themethodwillreturntheoriginaljobresult'sheadersandbody,plustheadditionalHTTPheaderx-arango-async-job-id.Ifthisheaderispresent,thenthejobwasfoundandtheresponsecontainstheoriginaljob'sresult.Iftheheaderisnotpresent,thejobwasnotfoundandtheresponsecontainsstatusinformationfromthejobmanager.

Example:Notprovidingajob-id:

shell>curl-XPUT--dump-http://localhost:8529/_api/job

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"badparameter",

AsyncResultHandling

237

Page 238: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"code":400,

"errorNum":400

}

Example:Providingajob-idforanon-existingjob:

shell>curl-XPUT--dump-http://localhost:8529/_api/job/notthere

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"notfound",

"code":404,

"errorNum":404

}

Example:FetchingtheresultofanHTTPGETjob:

shell>curl-XPUT--header'x-arango-async:store'--dump-http://localhost:8529/_api/version

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883033

content-type:text/plain;charset=utf-8

shell>curl-XPUT--dump-http://localhost:8529/_api/job/151690759883033

HTTP/1.1200OK

x-content-type-options:nosniff

x-arango-async-id:151690759883033

content-type:application/json;charset=utf-8

{

"server":"arango",

"version":"3.3.3",

"license":"community"

}

Example:FetchingtheresultofanHTTPPOSTjobthatfailed:

shell>curl-XPUT--header'x-arango-async:store'--data-binary@---dump-http://localhost:8529/_api/collection<<EOF

{

"name":"thisnameisinvalid"

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883038

content-type:text/plain;charset=utf-8

shell>curl-XPUT--dump-http://localhost:8529/_api/job/151690759883038

HTTP/1.1400BadRequest

x-content-type-options:nosniff

AsyncResultHandling

238

Page 239: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

x-arango-async-id:151690759883038

content-type:application/json;charset=utf-8

{

"error":true,

"errorMessage":"expectedPUT/_api/collection/<collection-name>/<action>",

"code":400,

"errorNum":400

}

ReturnCodes

204:isreturnedifthejobrequestedviajob-idisstillinthequeueofpending(ornotyetfinished)jobs.Inthiscase,nox-arango-async-idHTTPheaderwillbereturned.400:isreturnedifnojob-idwasspecifiedintherequest.Inthiscase,nox-arango-async-idHTTPheaderwillbereturned.404:isreturnedifthejobwasnotfoundoralreadydeletedorfetchedfromthejobresultlist.Inthiscase,nox-arango-async-idHTTPheaderwillbereturned.

Examples

Notprovidingajob-id:

shell>curl-XPUT--dump-http://localhost:8529/_api/job

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyProvidingajob-idforanon-existingjob:

shell>curl-XPUT--dump-http://localhost:8529/_api/job/notthere

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyFetchingtheresultofanHTTPGETjob:

shell>curl-XPUT--header'x-arango-async:store'--dump-

http://localhost:8529/_api/version

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883033

content-type:text/plain;charset=utf-8

shell>curl-XPUT--dump-http://localhost:8529/_api/job/151690759883033

HTTP/1.1200OK

x-content-type-options:nosniff

x-arango-async-id:151690759883033

content-type:application/json;charset=utf-8

showresponsebody

AsyncResultHandling

239

Page 240: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

FetchingtheresultofanHTTPPOSTjobthatfailed:

shell>curl-XPUT--header'x-arango-async:store'--data-binary@---dump-

http://localhost:8529/_api/collection<<EOF

{

"name":"thisnameisinvalid"

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883038

content-type:text/plain;charset=utf-8

shell>curl-XPUT--dump-http://localhost:8529/_api/job/151690759883038

HTTP/1.1400BadRequest

x-content-type-options:nosniff

x-arango-async-id:151690759883038

content-type:application/json;charset=utf-8

showresponsebody

Cancelasyncjob

cancelsanasyncjob

PUT/_api/job/{job-id}/cancel

PathParameters

job-id(required):Theasyncjobid.

Cancelsthecurrentlyrunningjobidentifiedbyjob-id.Notethatitstillmighttakesometimetoactuallycanceltherunningasyncjob.

Example:

shell>curl-XPOST--header'x-arango-async:store'--data-binary@---dump-http://localhost:8529/_api/cursor<<EOF

{

"query":"FORiIN1..10FORjIN1..10LETx=sleep(1.0)FILTERi==5&&j==5RETURN42"

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759882996

content-type:text/plain;charset=utf-8

shell>curl--dump-http://localhost:8529/_api/job/pending

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[

"151690759882996"

]

shell>curl-XPUT--dump-http://localhost:8529/_api/job/151690759882996/cancel

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

AsyncResultHandling

240

Page 241: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"result":true

}

shell>curl--dump-http://localhost:8529/_api/job/pending

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[

"151690759882996"

]

ReturnCodes

200:cancelhasbeeninitiated.400:isreturnedifnojob-idwasspecifiedintherequest.Inthiscase,nox-arango-async-idHTTPheaderwillbereturned.404:isreturnedifthejobwasnotfoundoralreadydeletedorfetchedfromthejobresultlist.Inthiscase,nox-arango-async-idHTTPheaderwillbereturned.

Examples

shell>curl-XPOST--header'x-arango-async:store'--data-binary@---dump-

http://localhost:8529/_api/cursor<<EOF

{

"query":"FORiIN1..10FORjIN1..10LETx=sleep(1.0)FILTERi==5&&j==5

RETURN42"

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759882996

content-type:text/plain;charset=utf-8

shell>curl--dump-http://localhost:8529/_api/job/pending

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[

"151690759882996"

]

shell>curl-XPUT--dump-http://localhost:8529/_api/job/151690759882996/cancel

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Deletesasyncjob

deletesanasyncjobresult

DELETE/_api/job/{type}

PathParameters

AsyncResultHandling

241

Page 242: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

type(required):Thetypeofjobstodelete.typecanbe:all:Deletesalljobsresults.Currentlyexecutingorqueuedasyncjobswillnotbestoppedbythiscall.expired:Deletesexpiredresults.Todeterminetheexpirationstatusofaresult,passthestampqueryparameter.stampneedstobeaUNIXtimestamp,andallasyncjobresultscreatedatalowertimestampwillbedeleted.anactualjob-id:Inthiscase,thecallwillremovetheresultofthespecifiedasyncjob.Ifthejobiscurrentlyexecutingorqueued,itwillnotbeaborted.

QueryParameters

stamp(optional):AUNIXtimestampspecifyingtheexpirationthresholdwhentypeisexpired.

Deleteseitheralljobresults,expiredjobresults,ortheresultofaspecificjob.Clientscanusethismethodtoperformaneventualgarbagecollectionofjobresults.

Example:Deletingalljobs:

shell>curl-XPUT--header'x-arango-async:store'--dump-http://localhost:8529/_api/version

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883005

content-type:text/plain;charset=utf-8

shell>curl-XDELETE--dump-http://localhost:8529/_api/job/all

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":true

}

Example:Deletingexpiredjobs:

shell>curl-XPUT--header'x-arango-async:store'--dump-http://localhost:8529/_api/version

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883010

content-type:text/plain;charset=utf-8

shell>curl--dump-http://localhost:8529/_admin/time

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"time":1516907616.271038,

"error":false,

"code":200

}

shell>curl-XDELETE--dump-http://localhost:8529/_api/job/expired?stamp=1516907616.271038

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":true

}

AsyncResultHandling

242

Page 243: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

shell>curl--dump-http://localhost:8529/_api/job/pending

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[]

Example:Deletingtheresultofaspecificjob:

shell>curl-XPUT--header'x-arango-async:store'--dump-http://localhost:8529/_api/version

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883019

content-type:text/plain;charset=utf-8

shell>curl-XDELETE--dump-http://localhost:8529/_api/job/151690759883019

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":true

}

Example:Deletingtheresultofanon-existingjob:

shell>curl-XDELETE--dump-http://localhost:8529/_api/job/AreYouThere

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"notfound",

"code":404,

"errorNum":404

}

ReturnCodes

200:isreturnedifthedeletionoperationwascarriedoutsuccessfully.Thiscodewillalsobereturnedifnoresultsweredeleted.400:isreturnediftypeisnotspecifiedorhasaninvalidvalue.404:isreturnediftypeisajob-idbutnoasyncjobwiththespecifiedidwasfound.

Examples

Deletingalljobs:

shell>curl-XPUT--header'x-arango-async:store'--dump-

http://localhost:8529/_api/version

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883005

content-type:text/plain;charset=utf-8

AsyncResultHandling

243

Page 244: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

shell>curl-XDELETE--dump-http://localhost:8529/_api/job/all

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":true

}

Deletingexpiredjobs:

shell>curl-XPUT--header'x-arango-async:store'--dump-

http://localhost:8529/_api/version

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883010

content-type:text/plain;charset=utf-8

shell>curl--dump-http://localhost:8529/_admin/time

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyDeletingtheresultofaspecificjob:

shell>curl-XPUT--header'x-arango-async:store'--dump-

http://localhost:8529/_api/version

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883019

content-type:text/plain;charset=utf-8

shell>curl-XDELETE--dump-http://localhost:8529/_api/job/151690759883019

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":true

}

Deletingtheresultofanon-existingjob:

shell>curl-XDELETE--dump-http://localhost:8529/_api/job/AreYouThere

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

AsyncResultHandling

244

Page 245: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

x-content-type-options:nosniff

showresponsebody

Returnsasyncjob

Returnsthestatusofaspecificjob

GET/_api/job/{job-id}

PathParameters

job-id(required):Theasyncjobid.

Returnstheprocessingstatusofthespecifiedjob.TheprocessingstatuscanbedeterminedbypeekingintotheHTTPresponsecodeoftheresponse.

Example:Queryingthestatusofadonejob:

shell>curl-XPUT--header'x-arango-async:store'--dump-http://localhost:8529/_api/version

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883060

content-type:text/plain;charset=utf-8

shell>curl-XPUT--dump-http://localhost:8529/_api/job/151690759883060

HTTP/1.1200OK

x-content-type-options:nosniff

x-arango-async-id:151690759883060

content-type:application/json;charset=utf-8

{

"server":"arango",

"version":"3.3.3",

"license":"community"

}

Example:Queryingthestatusofapendingjob:(thereforewecreatealongrunngingjob...)

shell>curl-XPOST--header'x-arango-async:store'--data-binary@---dump-http://localhost:8529/_api/transaction<<EOF

{

"collections":{

"read":[

"_frontend"

]

},

"action":"function(){require('internal').sleep(15.0);}"

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883065

content-type:text/plain;charset=utf-8

shell>curl--dump-http://localhost:8529/_api/job/151690759883065

HTTP/1.1204NoContent

content-type:text/plain;charset=utf-8

AsyncResultHandling

245

Page 246: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

x-content-type-options:nosniff

ReturnCodes

200:isreturnedifthejobrequestedviajob-idhasbeenexecutedanditsresultisreadytofetch.204:isreturnedifthejobrequestedviajob-idisstillinthequeueofpending(ornotyetfinished)jobs.404:isreturnedifthejobwasnotfoundoralreadydeletedorfetchedfromthejobresultlist.

Examples

Queryingthestatusofadonejob:

shell>curl-XPUT--header'x-arango-async:store'--dump-

http://localhost:8529/_api/version

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883060

content-type:text/plain;charset=utf-8

shell>curl-XPUT--dump-http://localhost:8529/_api/job/151690759883060

HTTP/1.1200OK

x-content-type-options:nosniff

x-arango-async-id:151690759883060

content-type:application/json;charset=utf-8

showresponsebodyQueryingthestatusofapendingjob:(thereforewecreatealongrunngingjob...)

shell>curl-XPOST--header'x-arango-async:store'--data-binary@---dump-

http://localhost:8529/_api/transaction<<EOF

{

"collections":{

"read":[

"_frontend"

]

},

"action":"function(){require('internal').sleep(15.0);}"

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883065

content-type:text/plain;charset=utf-8

shell>curl--dump-http://localhost:8529/_api/job/151690759883065

HTTP/1.1204NoContent

content-type:text/plain;charset=utf-8

x-content-type-options:nosniff

Returnslistofasyncjobs

AsyncResultHandling

246

Page 247: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Returnstheidsofjobresultswithaspecificstatus

GET/_api/job/{type}

PathParameters

type(required):Thetypeofjobstoreturn.Thetypecanbeeitherdoneorpending.Settingthetypetodonewillmakethemethodreturntheidsofalreadycompletedasyncjobsforwhichresultscanbefetched.Settingthetypetopendingwillreturntheidsofnotyetfinishedasyncjobs.

QueryParameters

count(optional):Themaximumnumberofidstoreturnpercall.Ifnotspecified,aserver-definedmaximumvaluewillbeused.

Returnsthelistofidsofasyncjobswithaspecificstatus(eitherdoneorpending).Thelistcanbeusedbytheclienttogetanoverviewofthejobsystemstatusandtoretrievecompletedjobresultslater.

Example:Fetchingthelistofdonejobs:

shell>curl-XPUT--header'x-arango-async:store'--dump-http://localhost:8529/_api/version

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883043

content-type:text/plain;charset=utf-8

shell>curl--dump-http://localhost:8529/_api/job/done

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[

"151690759883043"

]

Example:Fetchingthelistofpendingjobs:

shell>curl-XPUT--header'x-arango-async:store'--dump-http://localhost:8529/_api/version

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883048

content-type:text/plain;charset=utf-8

shell>curl--dump-http://localhost:8529/_api/job/pending

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[]

Example:Queryingthestatusofapendingjob:(wecreateasleepjobtherefore...)

shell>curl-XPOST--header'x-arango-async:store'--data-binary@---dump-http://localhost:8529/_api/transaction<<EOF

{

"collections":{

AsyncResultHandling

247

Page 248: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"read":[

"_frontend"

]

},

"action":"function(){require('internal').sleep(15.0);}"

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883053

content-type:text/plain;charset=utf-8

shell>curl--dump-http://localhost:8529/_api/job/pending

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[

"151690759883053"

]

shell>curl-XDELETE--dump-http://localhost:8529/_api/job/151690759883053

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":true

}

ReturnCodes

200:isreturnedifthelistcanbecompiledsuccessfully.Note:thelistmightbeempty.400:isreturnediftypeisnotspecifiedorhasaninvalidvalue.

Examples

Fetchingthelistofdonejobs:

shell>curl-XPUT--header'x-arango-async:store'--dump-

http://localhost:8529/_api/version

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883043

content-type:text/plain;charset=utf-8

shell>curl--dump-http://localhost:8529/_api/job/done

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[

"151690759883043"

]

Fetchingthelistofpendingjobs:

shell>curl-XPUT--header'x-arango-async:store'--dump-

http://localhost:8529/_api/version

HTTP/1.1202Accepted

AsyncResultHandling

248

Page 249: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

x-content-type-options:nosniff

x-arango-async-id:151690759883048

content-type:text/plain;charset=utf-8

shell>curl--dump-http://localhost:8529/_api/job/pending

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[]

Queryingthestatusofapendingjob:(wecreateasleepjobtherefore...)

shell>curl-XPOST--header'x-arango-async:store'--data-binary@---dump-

http://localhost:8529/_api/transaction<<EOF

{

"collections":{

"read":[

"_frontend"

]

},

"action":"function(){require('internal').sleep(15.0);}"

}

EOF

HTTP/1.1202Accepted

x-content-type-options:nosniff

x-arango-async-id:151690759883053

content-type:text/plain;charset=utf-8

shell>curl--dump-http://localhost:8529/_api/job/pending

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[

"151690759883053"

]

shell>curl-XDELETE--dump-http://localhost:8529/_api/job/151690759883053

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":true

}

AsyncResultHandling

249

Page 250: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforBulkImportsArangoDBprovidesanHTTPinterfacetoimportmultipledocumentsatonceintoacollection.Thisisknownasabulkimport.

ThedatauploadedmustbeprovidedinJSONformat.Therearetwomechanismstoimportthedata:

self-containedJSONdocuments:inthiscase,eachdocumentcontainsallattributenamesandvalues.Attributenamesmaybecompletelydifferentamongthedocumentsuploadedattributenamesplusdocumentdata:inthiscase,thefirstarraymustcontaintheattributenamesofthedocumentsthatfollow.Thefollowingarrayscontainingonlytheattributevalues.Attributevalueswillbemappedtotheattributenamesbypositions.

Theendpointaddressis/_api/importforbothinputmechanisms.DatamustbesenttothisURLusinganHTTPPOSTrequest.ThedatatoimportmustbecontainedinthebodyofthePOSTrequest.

Thecollectionqueryparametermustbeusedtospecifythetargetcollectionfortheimport.Importingdataintoanon-existingcollectionwillproduceanerror.

ThewaitForSyncqueryparametercanbesettotruetomaketheimportonlyreturnifalldocumentshavebeensyncedtodisk.

Thecompletequeryparametercanbesettotruetomaketheentireimportfailifanyoftheuploadeddocumentsisinvalidandcannotbeimported.Inthiscase,nodocumentswillbeimportedbytheimportrun,evenifafailurehappensattheendoftheimport.

Ifcompletehasavalueotherthantrue,validdocumentswillbeimportedwhileinvaliddocumentswillberejected,meaningonlysomeoftheuploadeddocumentsmighthavebeenimported.

ThedetailsqueryparametercanbesettotruetomaketheimportAPIreturndetailsaboutdocumentsthatcouldnotbeimported.Ifdetailsistrue,thentheresultwillalsocontainadetailsattributewhichisanarrayofdetailederrormessages.Ifthedetailsissettofalseoromitted,nodetailswillbereturned.

importsdocumentvalues

importsdocumentsfromJSON-encodedlists

POST/_api/import#document

RequestBody(required)

ThebodymustconsistofJSON-encodedarraysofattributevalues,withonelineperdocument.ThefirstrowoftherequestmustbeaJSON-encodedarrayofattributenames.Theseattributenamesareusedforthedatainthesubsequentlines.

QueryParameters

collection(required):Thecollectionname.fromPrefix(optional):Anoptionalprefixforthevaluesin_fromattributes.Ifspecified,thevalueisautomaticallyprependedtoeach_frominputvalue.Thisallowsspecifyingjustthekeysfor_from.toPrefix(optional):Anoptionalprefixforthevaluesin_toattributes.Ifspecified,thevalueisautomaticallyprependedtoeach_toinputvalue.Thisallowsspecifyingjustthekeysfor_to.overwrite(optional):Ifthisparameterhasavalueoftrueoryes,thenalldatainthecollectionwillberemovedpriortotheimport.Notethatanyexistingindexdefinitionswillbepreseved.waitForSync(optional):Waituntildocumentshavebeensyncedtodiskbeforereturning.onDuplicate(optional):Controlswhatactioniscarriedoutincaseofauniquekeyconstraintviolation.Possiblevaluesare:error:thiswillnotimportthecurrentdocumentbecauseoftheuniquekeyconstraintviolation.Thisisthedefaultsetting.update:thiswillupdateanexistingdocumentinthedatabasewiththedataspecifiedintherequest.Attributesoftheexistingdocumentthatarenotpresentintherequestwillbepreseved.replace:thiswillreplaceanexistingdocumentinthedatabasewiththedataspecifiedintherequest.ignore:thiswillnotupdateanexistingdocumentandsimplyignoretheerrorcausedbytheuniquekeyconstraintviolation.Notethatupdate,replaceandignorewillonlyworkwhentheimportdocumentintherequestcontainsthe_keyattribute.updateandreplacemayalsofailbecauseofsecondaryuniquekeyconstraintviolations.complete(optional):Ifsettotrueoryes,itwillmakethewholeimportfailifanyerroroccurs.Otherwisetheimportwillcontinueevenifsomedocumentscannotbeimported.details(optional):Ifsettotrueoryes,theresultwillincludeanattributedetailswithdetailsaboutdocumentsthatcouldnot

BulkImport/Export

250

Page 251: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

beimported.

NOTESwaggerexampleswon'tworkduetotheanchor.

Createsdocumentsinthecollectionidentifiedbycollection-name.ThefirstlineoftherequestbodymustcontainaJSON-encodedarrayofattributenames.AllfollowinglinesintherequestbodymustcontainJSON-encodedarraysofattributevalues.Eachlineisinterpretedasaseparatedocument,andthevaluesspecifiedwillbemappedtothearrayofattributenamesspecifiedinthefirstheaderline.

TheresponseisaJSONobjectwiththefollowingattributes:

created:numberofdocumentsimported.

errors:numberofdocumentsthatwerenotimportedduetoanerror.

empty:numberofemptylinesfoundintheinput(willonlycontainavaluegreaterzerofortypesdocumentsorauto).

updated:numberofupdated/replaceddocuments(incaseonDuplicatewassettoeitherupdateorreplace).

ignored:numberoffailedbutignoredinsertoperations(incaseonDuplicatewassettoignore).

details:ifqueryparameterdetailsissettotrue,theresultwillcontainadetailsattributewhichisanarraywithmoredetailedinformationaboutwhichdocumentscouldnotbeinserted.

Example:Importingtwodocuments,withattributes_key,value1andvalue2each.Onelineintheimportdataisempty

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?collection=products<<EOF

["_key","value1","value2"]

["abc",25,"test"]

["foo","bar","baz"]

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"created":2,

"errors":0,

"empty":1,

"updated":0,

"ignored":0

}

Example:Importingintoanedgecollection,withattributes_from,_toandname

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?collection=links<<EOF

["_from","_to","name"]

["products/123","products/234","somename"]

["products/332","products/abc","othername"]

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"created":2,

"errors":0,

"empty":0,

BulkImport/Export

251

Page 252: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"updated":0,

"ignored":0

}

Example:Importingintoanedgecollection,omitting_fromor_to

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?collection=links&details=true<<EOF

["name"]

["somename"]

["othername"]

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"created":0,

"errors":2,

"empty":0,

"updated":0,

"ignored":0,

"details":[

"atposition1:missing'_from'or'_to'attribute,offendingdocument:{\"name\":\"somename\"}",

"atposition2:missing'_from'or'_to'attribute,offendingdocument:{\"name\":\"othername\"}"

]

}

Example:Violatingauniqueconstraint,butallowpartialimports

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?collection=products&details=true<<EOF

["_key","value1","value2"]

["abc",25,"test"]

["abc","bar","baz"]

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"created":1,

"errors":1,

"empty":0,

"updated":0,

"ignored":0,

"details":[

"atposition1:creatingdocumentfailedwitherror'uniqueconstraintviolated',offendingdocument:{\"_key\":\"abc\",\"v

alue1\":\"bar\",\"value2\":\"baz\"}"

]

}

Example:Violatingauniqueconstraint,notallowingpartialimports

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?collection=products&complete=true<<EOF

["_key","value1","value2"]

BulkImport/Export

252

Page 253: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

["abc",25,"test"]

["abc","bar","baz"]

EOF

HTTP/1.1409Conflict

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"uniqueconstraintviolated",

"code":409,

"errorNum":1210

}

Example:Usinganon-existingcollection

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?collection=products<<EOF

["_key","value1","value2"]

["abc",25,"test"]

["foo","bar","baz"]

EOF

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"collectionnotfound:products",

"code":404,

"errorNum":1203

}

Example:Usingamalformedbody

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?collection=products<<EOF

{"_key":"foo","value1":"bar"}

EOF

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"noJSONarrayfoundinsecondline",

"code":400,

"errorNum":400

}

ReturnCodes

201:isreturnedifalldocumentscouldbeimportedsuccessfully.400:isreturnediftypecontainsaninvalidvalue,nocollectionisspecified,thedocumentsareincorrectlyencoded,ortherequestismalformed.404:isreturnedifcollectionorthe_fromor_toattributesofanimportededgerefertoanunknowncollection.409:isreturnediftheimportwouldtriggerauniquekeyviolationandcompleteissettotrue.500:isreturnediftheservercannotauto-generateadocumentkey(outofkeyserror)foradocumentwithnouser-definedkey.

Examples

BulkImport/Export

253

Page 254: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Importingtwodocuments,withattributes_key,value1andvalue2each.Onelineintheimportdataisempty

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?

collection=products<<EOF

["_key","value1","value2"]

["abc",25,"test"]

["foo","bar","baz"]

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyImportingintoanedgecollection,withattributes_from,_toandname

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?

collection=links<<EOF

["_from","_to","name"]

["products/123","products/234","somename"]

["products/332","products/abc","othername"]

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyImportingintoanedgecollection,omitting_fromor_to

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?

collection=links&details=true<<EOF

["name"]

["somename"]

["othername"]

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyViolatingauniqueconstraint,butallowpartialimports

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?

collection=products&details=true<<EOF

["_key","value1","value2"]

["abc",25,"test"]

["abc","bar","baz"]

EOF

BulkImport/Export

254

Page 255: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyViolatingauniqueconstraint,notallowingpartialimports

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?

collection=products&complete=true<<EOF

["_key","value1","value2"]

["abc",25,"test"]

["abc","bar","baz"]

EOF

HTTP/1.1409Conflict

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyUsinganon-existingcollection

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?

collection=products<<EOF

["_key","value1","value2"]

["abc",25,"test"]

["foo","bar","baz"]

EOF

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyUsingamalformedbody

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?

collection=products<<EOF

{"_key":"foo","value1":"bar"}

EOF

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

importsdocumentsfromJSON

importsdocumentsfromJSON

POST/_api/import#json

BulkImport/Export

255

Page 256: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

RequestBody(required)

ThebodymusteitherbeaJSON-encodedarrayofobjectsorastringwithmultipleJSONobjectsseparatedbynewlines.

QueryParameters

type(required):Determineshowthebodyoftherequestwillbeinterpreted.typecanhavethefollowingvalues:documents:whenthistypeisused,eachlineintherequestbodyisexpectedtobeanindividualJSON-encodeddocument.MultipleJSONobjectsintherequestbodyneedtobeseparatedbynewlines.list:whenthistypeisused,therequestbodymustcontainasingleJSON-encodedarrayofindividualobjectstoimport.auto:ifset,thiswillautomaticallydeterminethebodytype(eitherdocumentsorlist).collection(required):Thecollectionname.fromPrefix(optional):Anoptionalprefixforthevaluesin_fromattributes.Ifspecified,thevalueisautomaticallyprependedtoeach_frominputvalue.Thisallowsspecifyingjustthekeysfor_from.toPrefix(optional):Anoptionalprefixforthevaluesin_toattributes.Ifspecified,thevalueisautomaticallyprependedtoeach_toinputvalue.Thisallowsspecifyingjustthekeysfor_to.overwrite(optional):Ifthisparameterhasavalueoftrueoryes,thenalldatainthecollectionwillberemovedpriortotheimport.Notethatanyexistingindexdefinitionswillbepreseved.waitForSync(optional):Waituntildocumentshavebeensyncedtodiskbeforereturning.onDuplicate(optional):Controlswhatactioniscarriedoutincaseofauniquekeyconstraintviolation.Possiblevaluesare:error:thiswillnotimportthecurrentdocumentbecauseoftheuniquekeyconstraintviolation.Thisisthedefaultsetting.update:thiswillupdateanexistingdocumentinthedatabasewiththedataspecifiedintherequest.Attributesoftheexistingdocumentthatarenotpresentintherequestwillbepreseved.replace:thiswillreplaceanexistingdocumentinthedatabasewiththedataspecifiedintherequest.ignore:thiswillnotupdateanexistingdocumentandsimplyignoretheerrorcausedbyauniquekeyconstraintviolation.Notethatthatupdate,replaceandignorewillonlyworkwhentheimportdocumentintherequestcontainsthe_keyattribute.updateandreplacemayalsofailbecauseofsecondaryuniquekeyconstraintviolations.complete(optional):Ifsettotrueoryes,itwillmakethewholeimportfailifanyerroroccurs.Otherwisetheimportwillcontinueevenifsomedocumentscannotbeimported.details(optional):Ifsettotrueoryes,theresultwillincludeanattributedetailswithdetailsaboutdocumentsthatcouldnotbeimported.

NOTESwaggerexampleswon'tworkduetotheanchor.

Createsdocumentsinthecollectionidentifiedbycollection-name.TheJSONrepresentationsofthedocumentsmustbepassedasthebodyofthePOSTrequest.Therequestbodycaneitherconsistofmultiplelines,witheachlinebeingasinglestand-aloneJSONobject,orasingeJSONarraywithsub-objects.

TheresponseisaJSONobjectwiththefollowingattributes:

created:numberofdocumentsimported.

errors:numberofdocumentsthatwerenotimportedduetoanerror.

empty:numberofemptylinesfoundintheinput(willonlycontainavaluegreaterzerofortypesdocumentsorauto).

updated:numberofupdated/replaceddocuments(incaseonDuplicatewassettoeitherupdateorreplace).

ignored:numberoffailedbutignoredinsertoperations(incaseonDuplicatewassettoignore).

details:ifqueryparameterdetailsissettotrue,theresultwillcontainadetailsattributewhichisanarraywithmoredetailedinformationaboutwhichdocumentscouldnotbeinserted.

Example:ImportingdocumentswithheterogenousattributesfromaJSONarray

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?collection=products&type=list<<EOF

[

{

"_key":"abc",

"value1":25,

BulkImport/Export

256

Page 257: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"value2":"test",

"allowed":true

},

{

"_key":"foo",

"name":"baz"

},

{

"name":{

"detailed":"detailedname",

"short":"shortname"

}

}

]

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"created":3,

"errors":0,

"empty":0,

"updated":0,

"ignored":0

}

Example:ImportingdocumentsfromindividualJSONlines

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?collection=products&type=documents<<EOF

{"_key":"abc","value1":25,"value2":"test","allowed":true}

{"_key":"foo","name":"baz"}

{"name":{"detailed":"detailedname","short":"shortname"}}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"created":3,

"errors":0,

"empty":1,

"updated":0,

"ignored":0

}

Example:Usingtheautotypedetection

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?collection=products&type=auto<<EOF

[

{

"_key":"abc",

"value1":25,

"value2":"test",

"allowed":true

},

{

"_key":"foo",

BulkImport/Export

257

Page 258: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"name":"baz"

},

{

"name":{

"detailed":"detailedname",

"short":"shortname"

}

}

]

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"created":3,

"errors":0,

"empty":0,

"updated":0,

"ignored":0

}

Example:Importingintoanedgecollection,withattributes_from,_toandname

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?collection=links&type=documents<<EOF

{"_from":"products/123","_to":"products/234"}

{"_from":"products/332","_to":"products/abc","name":"othername"}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"created":2,

"errors":0,

"empty":0,

"updated":0,

"ignored":0

}

Example:Importingintoanedgecollection,omitting_fromor_to

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?collection=links&type=list&details=true<<EOF

[

{

"name":"somename"

}

]

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"created":0,

"errors":1,

"empty":0,

"updated":0,

BulkImport/Export

258

Page 259: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"ignored":0,

"details":[

"atposition1:missing'_from'or'_to'attribute,offendingdocument:{\"name\":\"somename\"}"

]

}

Example:Violatingauniqueconstraint,butallowpartialimports

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?collection=products&type=documents&details=true

<<EOF

{"_key":"abc","value1":25,"value2":"test"}

{"_key":"abc","value1":"bar","value2":"baz"}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"created":1,

"errors":1,

"empty":0,

"updated":0,

"ignored":0,

"details":[

"atposition1:creatingdocumentfailedwitherror'uniqueconstraintviolated',offendingdocument:{\"_key\":\"abc\",\"v

alue1\":\"bar\",\"value2\":\"baz\"}"

]

}

Example:Violatingauniqueconstraint,notallowingpartialimports

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?collection=products&type=documents&complete=tru

e<<EOF

{"_key":"abc","value1":25,"value2":"test"}

{"_key":"abc","value1":"bar","value2":"baz"}

EOF

HTTP/1.1409Conflict

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"uniqueconstraintviolated",

"code":409,

"errorNum":1210

}

Example:Usinganon-existingcollection

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?collection=products&type=documents<<EOF

{"name":"test"}

EOF

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

BulkImport/Export

259

Page 260: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"collectionnotfound:products",

"code":404,

"errorNum":1203

}

Example:Usingamalformedbody

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?collection=products&type=list<<EOF

{}

EOF

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"expectingaJSONarrayintherequest",

"code":400,

"errorNum":400

}

ReturnCodes

201:isreturnedifalldocumentscouldbeimportedsuccessfully.400:isreturnediftypecontainsaninvalidvalue,nocollectionisspecified,thedocumentsareincorrectlyencoded,ortherequestismalformed.404:isreturnedifcollectionorthe_fromor_toattributesofanimportededgerefertoanunknowncollection.409:isreturnediftheimportwouldtriggerauniquekeyviolationandcompleteissettotrue.500:isreturnediftheservercannotauto-generateadocumentkey(outofkeyserror)foradocumentwithnouser-definedkey.

Examples

ImportingdocumentswithheterogenousattributesfromaJSONarray

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?

collection=products&type=list<<EOF

[

{

"_key":"abc",

"value1":25,

"value2":"test",

"allowed":true

},

{

"_key":"foo",

"name":"baz"

},

{

"name":{

"detailed":"detailedname",

"short":"shortname"

}

}

]

BulkImport/Export

260

Page 261: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyImportingdocumentsfromindividualJSONlines

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?

collection=products&type=documents<<EOF

{"_key":"abc","value1":25,"value2":"test","allowed":true}

{"_key":"foo","name":"baz"}

{"name":{"detailed":"detailedname","short":"shortname"}}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyUsingtheautotypedetection

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?

collection=products&type=auto<<EOF

[

{

"_key":"abc",

"value1":25,

"value2":"test",

"allowed":true

},

{

"_key":"foo",

"name":"baz"

},

{

"name":{

"detailed":"detailedname",

"short":"shortname"

}

}

]

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

BulkImport/Export

261

Page 262: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Importingintoanedgecollection,withattributes_from,_toandname

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?

collection=links&type=documents<<EOF

{"_from":"products/123","_to":"products/234"}

{"_from":"products/332","_to":"products/abc","name":"othername"}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyImportingintoanedgecollection,omitting_fromor_to

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?

collection=links&type=list&details=true<<EOF

[

{

"name":"somename"

}

]

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyViolatingauniqueconstraint,butallowpartialimports

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?

collection=products&type=documents&details=true<<EOF

{"_key":"abc","value1":25,"value2":"test"}

{"_key":"abc","value1":"bar","value2":"baz"}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyViolatingauniqueconstraint,notallowingpartialimports

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?

collection=products&type=documents&complete=true<<EOF

{"_key":"abc","value1":25,"value2":"test"}

{"_key":"abc","value1":"bar","value2":"baz"}

EOF

HTTP/1.1409Conflict

content-type:application/json;charset=utf-8

BulkImport/Export

262

Page 263: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

x-content-type-options:nosniff

showresponsebodyUsinganon-existingcollection

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?

collection=products&type=documents<<EOF

{"name":"test"}

EOF

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyUsingamalformedbody

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/import?

collection=products&type=list<<EOF

{}

EOF

HTTP/1.1400BadRequest

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

BulkImport/Export

263

Page 264: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

ImportingSelf-ContainedJSONDocumentsThisimportmethodallowsuploadingself-containedJSONdocuments.ThedocumentsmustbeuploadedinthebodyoftheHTTPPOSTrequest.Eachlineofthebodywillbeinterpretedasonestand-alonedocument.Emptylinesinthebodyareallowedbutwillbeskipped.Usingthisformat,thedocumentsareimportedline-wise.

Exampleinputdata:{"_key":"key1",...}{"_key":"key2",...}...

Tousethismethod,thetypequeryparametershouldbesettodocuments.

Itisalsopossibletouploadself-containedJSONdocumentsthatareembeddedintoaJSONarray.Eachelementfromthearraywillbetreatedasadocumentandbeimported.

Exampleinputdataforthiscase:

[

{"_key":"key1",...},

{"_key":"key2",...},

...

]

Thisformatdoesnotrequireeachdocumenttobeonaseparateline,andanywhitespaceintheJSONdataisallowed.ItcanbeusedtoimportaJSON-formattedresultarray(e.g.fromarangosh)backintoArangoDB.UsingthisformatrequiresArangoDBtoparsethecompletearrayandkeepitinmemoryforthedurationoftheimport.Thismightbemoreresource-intensivethantheline-wiseprocessing.

Tousethismethod,thetypequeryparametershouldbesettoarray.

Settingthetypequeryparametertoautowillmaketheserverauto-detectwhetherthedataareline-wiseJSONdocuments(type=documents)oraJSONarray(type=array).

Examples

curl--data-binary@--XPOST--dump-"http://localhost:8529/_api/import?type=documents&collection=test"

{"name":"test","gender":"male","age":39}

{"type":"bird","name":"robin"}

HTTP/1.1201Created

Server:ArangoDB

Connection:Keep-Alive

Content-type:application/json;charset=utf-8

{"error":false,"created":2,"empty":0,"errors":0}

TheserverwillrespondwithanHTTP201ifeverythingwentwell.Thenumberofdocumentsimportedwillbereturnedinthecreatedattributeoftheresponse.Ifanydocumentswereskippedorincorrectlyformatted,thiswillbereturnedintheerrorsattribute.Therewillalsobeanattributeemptyintheresponse,whichwillcontainavalueof0.

Ifthedetailsparameterwassettotrueintherequest,theresponsewillalsocontainanattributedetailswhichisanarrayofdetailsabouterrorsthatoccurredontheserversideduringtheimport.Thisarraymightbeemptyifnoerrorsoccurred.

JSONDocuments

264

Page 265: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

ImportingHeadersandValuesWhenusingthistypeofimport,theattributenamesofthedocumentstobeimportedarespecifiedseparatefromtheactualdocumentvaluedata.ThefirstlineoftheHTTPPOSTrequestbodymustbeaJSONarraycontainingtheattributenamesforthedocumentsthatfollow.Thefollowinglinesareinterpretedasthedocumentdata.EachdocumentmustbeaJSONarrayofvalues.Noattributenamesareneededorallowedinthisdatasection.

Examples

curl--data-binary@--XPOST--dump-"http://localhost:8529/_api/import?collection=test"

["firstName","lastName","age","gender"]

["Joe","Public",42,"male"]

["Jane","Doe",31,"female"]

HTTP/1.1201Created

Server:ArangoDB

Connection:Keep-Alive

Content-type:application/json;charset=utf-8

{"error":false,"created":2,"empty":0,"errors":0}

TheserverwillagainrespondwithanHTTP201ifeverythingwentwell.Thenumberofdocumentsimportedwillbereturnedinthecreatedattributeoftheresponse.Ifanydocumentswereskippedorincorrectlyformatted,thiswillbereturnedintheerrorsattribute.Thenumberofemptylinesintheinputfilewillbereturnedintheemptyattribute.

Ifthedetailsparameterwassettotrueintherequest,theresponsewillalsocontainanattributedetailswhichisanarrayofdetailsabouterrorsthatoccurredontheserversideduringtheimport.Thisarraymightbeemptyifnoerrorsoccurred.

ImportingintoEdgeCollections

Pleasenotethatwhenimportingdocumentsintoanedgecollection,itismandatorythatallimporteddocumentscontainthe_fromand_toattributes,andthatthesecontainreferencestoexistingcollections.

Headers&Values

265

Page 266: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforBatchRequestsClientsnormallysendindividualoperationstoArangoDBinindividualHTTPrequests.Thisisstraightforwardandsimple,buthasthedisadvantagethatthenetworkoverheadcanbesignificantifmanysmallrequestsareissuedinarow.

Tomitigatethisproblem,ArangoDBoffersabatchrequestAPIthatclientscanusetosendmultipleoperationsinonebatchtoArangoDB.ThismethodisespeciallyusefulwhentheclienthastosendmanyHTTPrequestswithasmallbody/payloadandtheindividualrequestresultsdonotdependoneachother.

ClientscanuseArangoDB'sbatchAPIbyissuingamultipartHTTPPOSTrequesttotheURL/_api/batchhandler.ThehandlerwillaccepttherequestiftheContent-typeismultipart/form-dataandaboundarystringisspecified.ArangoDBwillthendecomposethebatchrequestintoitsindividualpartsusingthisboundary.Thisalsomeansthattheboundarystringitselfmustnotbecontainedinanyoftheparts.WhenArangoDBhassplitthemultipartrequestintoitsindividualparts,itwillprocessallpartssequentiallyasifitwereastandalonerequest.Whenallpartsareprocessed,ArangoDBwillgenerateamultipartHTTPresponsethatcontainsonepartforeachpartoperationresult.Forexample,ifyousendamultipartrequestwith5parts,ArangoDBwillsendbackamultipartresponsewith5partsaswell.

Theserverexpectseachpartmessagetostartwithexactlythefollowing"header":

Content-type:application/x-arango-batchpart

YoucanoptionallyspecifyaContent-Id"header"touniquelyidentifyeachpartmessage.TheserverwillreturntheContent-Idinitsresponseifitisspecified.Otherwise,theserverwillnotsendaContent-Id"header"back.TheserverwillnotvalidatetheuniquenessoftheContent-Id.AfterthemandatoryContent-typeandtheoptionalContent-Idheader,twoWindowslinebreaks(i.e.\r\n\r\n)mustfollow.Anydeviationofthisstructuremightleadtothepartbeingrejectedorincorrectlyinterpreted.Thepartrequestpayload,formattedasaregularHTTPrequest,mustfollowthetwoWindowslinebreaksliteraldirectly.

NotethattheliteralContent-type:application/x-arango-batchparttechnicallyistheheaderoftheMIMEpart,andtheHTTPrequest(includingitsheaders)isthebodypartoftheMIMEpart.

AnactualpartrequestshouldstartwiththeHTTPmethod,thecalledURL,andtheHTTPprotocolversionasusual,followedbyarbitraryHTTPheaders.Itsbodyshouldfollowaftertheusual\r\n\r\nliteral.PartrequestsarethereforeregularHTTPrequests,onlyembeddedinsideamultipartmessage.

Thefollowingexamplewillsendabatchwith3individualdocumentcreationoperations.TheboundaryusedinthisexampleisXXXsubpartXXX.

Examples

>curl-XPOST--data-binary@---header"Content-type:multipart/form-data;boundary=XXXsubpartXXX"http://localhost:8529/_api

/batch

--XXXsubpartXXX

Content-type:application/x-arango-batchpart

Content-Id:1

POST/_api/document?collection=xyzHTTP/1.1

{"a":1,"b":2,"c":3}

--XXXsubpartXXX

Content-type:application/x-arango-batchpart

Content-Id:2

POST/_api/document?collection=xyzHTTP/1.1

{"a":1,"b":2,"c":3,"d":4}

--XXXsubpartXXX

Content-type:application/x-arango-batchpart

Content-Id:3

POST/_api/document?collection=xyzHTTP/1.1

{"a":1,"b":2,"c":3,"d":4,"e":5}

--XXXsubpartXXX--

BatchRequests

266

Page 267: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Theserverwillthenrespondwithonemultipartmessage,containingtheoverallstatusandtheindividualresultsforthepartoperations.Theoverallstatusshouldbe200excepttherewasanerrorwhileinspectingandprocessingthemultipartmessage.Theoverallstatusthereforedoesnotindicatethesuccessofeachpartoperation,butonlyindicateswhetherthemultipartmessagecouldbehandledsuccessfully.

Eachpartoperationwillreturnitsownstatusvalue.AsthepartoperationresultsareregularHTTPresponses(justincludedinonemultipartresponse),thepartoperationstatusisreturnedasaHTTPstatuscode.Thestatuscodesofthepartoperationsareexactlythesameasifyoucalledtheindividualoperationsstandalone.EachpartoperationmightalsoreturnarbitraryHTTPheadersandabody/payload:

Examples

HTTP/1.1200OK

Connection:Keep-Alive

Content-type:multipart/form-data;boundary=XXXsubpartXXX

Content-length:1055

--XXXsubpartXXX

Content-type:application/x-arango-batchpart

Content-Id:1

HTTP/1.1202Accepted

Content-type:application/json;charset=utf-8

Etag:"9514299"

Content-length:53

{"error":false,"_id":"xyz/9514299","_key":"9514299","_rev":"9514299"}

--XXXsubpartXXX

Content-type:application/x-arango-batchpart

Content-Id:2

HTTP/1.1202Accepted

Content-type:application/json;charset=utf-8

Etag:"9579835"

Content-length:53

{"error":false,"_id":"xyz/9579835","_key":"9579835","_rev":"9579835"}

--XXXsubpartXXX

Content-type:application/x-arango-batchpart

Content-Id:3

HTTP/1.1202Accepted

Content-type:application/json;charset=utf-8

Etag:"9645371"

Content-length:53

{"error":false,"_id":"xyz/9645371","_key":"9645371","_rev":"9645371"}

--XXXsubpartXXX--

Intheaboveexample,theserverreturnedanoverallstatuscodeof200,andeachpartresponsecontainsitsownstatusvalue(202intheexample):

WhenconstructingthemultipartHTTPresponse,theserverwillusethesameboundarythattheclientsupplied.Ifanyofthepartresponseshasastatuscodeof400orgreater,theserverwillalsoreturnanHTTPheaderx-arango-errorscontainingtheoverallnumberofpartrequeststhatproducederrors:

Examples

>curl-XPOST--data-binary@---header"Content-type:multipart/form-data;boundary=XXXsubpartXXX"http://localhost:8529/_api

/batch

--XXXsubpartXXX

Content-type:application/x-arango-batchpart

POST/_api/document?collection=nonexisting

{"a":1,"b":2,"c":3}

--XXXsubpartXXX

Content-type:application/x-arango-batchpart

POST/_api/document?collection=xyz

BatchRequests

267

Page 268: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{"a":1,"b":2,"c":3,"d":4}

--XXXsubpartXXX--

Inthisexample,theoverallresponsecodeis200,butassomeofthepartrequestfailed(withstatuscode404),thex-arango-errorsheaderoftheoverallresponseis1:

Examples

HTTP/1.1200OK

x-arango-errors:1

Content-type:multipart/form-data;boundary=XXXsubpartXXX

Content-length:711

--XXXsubpartXXX

Content-type:application/x-arango-batchpart

HTTP/1.1404NotFound

Content-type:application/json;charset=utf-8

Content-length:111

{"error":true,"code":404,"errorNum":1203,"errorMessage":"collection\/_api\/collection\/nonexistingnotfound"}

--XXXsubpartXXX

Content-type:application/x-arango-batchpart

HTTP/1.1202Accepted

Content-type:application/json;charset=utf-8

Etag:"9841979"

Content-length:53

{"error":false,"_id":"xyz/9841979","_key":"9841979","_rev":"9841979"}

--XXXsubpartXXX--

PleasenotethatthedatabaseusedforallpartoperationsofabatchrequestisdeterminedbyscanningtheoriginalURL(theURLthatcontains/_api/batch).Itisnotpossibletooverridethedatabasenameinpartoperationsofabatch.Whendoingso,anyotherdatabasenameusedinabatchpartwillbeignored.

executesabatchrequest

executesabatchrequest

POST/_api/batch

RequestBody(required)

Themultipartbatchrequest,consistingoftheenvelopeandtheindividualbatchparts.

Executesabatchrequest.AbatchrequestcancontainanynumberofotherrequeststhatcanbesenttoArangoDBinisolation.Thebenefitofusingbatchrequestsisthatbatchingrequestsrequireslessclient/serverroundtripsthanwhensendingisolatedrequests.

Allpartsofabatchrequestareexecutedseriallyontheserver.Theserverwillreturntheresultsofallpartsinasingleresponsewhenallpartsarefinished.

Technically,abatchrequestisamultipartHTTPrequest,withcontent-typemultipart/form-data.Abatchrequestconsistsofanenvelopeandtheindividualbatchpartactions.Batchpartactionsare"regular"HTTPrequests,includingfullheaderandanoptionalbody.Multiplebatchpartsareseparatedbyaboundaryidentifier.Theboundaryidentifierisdeclaredinthebatchenvelope.TheMIMEcontent-typeforeachindividualbatchpartmustbeapplication/x-arango-batchpart.

Pleasenotethatwhenconstructingtheindividualbatchparts,youmustuseCRLF(\\)asthelineterminatorasinregularHTTPmessages.

TheresponsesentbytheserverwillbeanHTTP200response,withanoptionalerrorsummaryheaderx-arango-errors.ThisheadercontainsthenumberofbatchpartoperationsthatfailedwithanHTTPerrorcodeofatleast400.Thisheaderisonlypresentintheresponseifthenumberoferrorsisgreaterthanzero.

Theresponsesentbytheserverisamultipartresponse,too.ItcontainstheindividualHTTPresponsesforallbatchparts,includingthefullHTTPresultheader(withstatuscodeandotherpotentialheaders)andanoptionalresultbody.Theindividualbatchpartsintheresultareseperatedusingthesameboundaryvalueasspecifiedintherequest.

BatchRequests

268

Page 269: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Theorderofbatchpartsintheresponsewillbethesameasintheoriginalclientrequest.ClientcanadditionallyusetheContent-IdMIMEheaderinabatchparttodefineanindividualidforeachbatchpart.Theserverwillreturnthisidisthebatchpartresponses,too.

Example:Sendingabatchrequestwithfivebatchparts:

GET/_api/version

DELETE/_api/collection/products

POST/_api/collection/products

GET/_api/collection/products/figures

DELETE/_api/collection/products

Theboundary(SomeBoundaryValue)ispassedtotheserverintheHTTPContent-TypeHTTPheader.Pleasenotethereplyisnotdisplayedallaccurate.

shell>curl-XPOST--header'Content-Type:multipart/form-data;boundary=SomeBoundaryValue'--data-binary@---dump-http://l

ocalhost:8529/_api/batch<<EOF

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

Content-Id:myId1

GET/_api/versionHTTP/1.1

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

Content-Id:myId2

DELETE/_api/collection/productsHTTP/1.1

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

Content-Id:someId

POST/_api/collection/productsHTTP/1.1

{"name":"products"}

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

Content-Id:nextId

GET/_api/collection/products/figuresHTTP/1.1

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

Content-Id:otherId

DELETE/_api/collection/productsHTTP/1.1

--SomeBoundaryValue--

EOF

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:multipart/form-data;boundary=SomeBoundaryValue

x-arango-errors:1

"--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

Content-Id:myId1

HTTP/1.1200OK

Server:

Connection:

Content-Type:application/json;charset=utf-8

Content-Length:59

BatchRequests

269

Page 270: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{\"server\":\"arango\",\"version\":\"3.3.3\",\"license\":\"community\"}

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

Content-Id:myId2

HTTP/1.1404NotFound

Server:

Connection:

Content-Type:application/json;charset=utf-8

Content-Length:79

{\"error\":true,\"errorMessage\":\"collectionnotfound\",\"code\":404,\"errorNum\":1203}

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

Content-Id:someId

HTTP/1.1200OK

Server:

Connection:

Content-Type:application/json;charset=utf-8

Content-Length:324

{\"code\":200,\"error\":false,\"status\":3,\"statusString\":\"loaded\",\"name\":\"products\",\"keyOptions\":{\"type\":\"traditi

onal\",\"allowUserKeys\":true,\"lastValue\":0},\"type\":2,\"indexBuckets\":8,\"globallyUniqueId\":\"h68719E5AC6E7/9990\",\"doCo

mpact\":true,\"waitForSync\":false,\"id\":\"9990\",\"isSystem\":false,\"journalSize\":33554432,\"isVolatile\":false}

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

Content-Id:nextId

HTTP/1.1200OK

Server:

Location:/_api/collection/products/figures

Connection:

Content-Type:application/json;charset=utf-8

Content-Length:831

{\"code\":200,\"error\":false,\"statusString\":\"loaded\",\"name\":\"products\",\"keyOptions\":{\"type\":\"traditional\",\"allo

wUserKeys\":true,\"lastValue\":0},\"journalSize\":33554432,\"isVolatile\":false,\"isSystem\":false,\"status\":3,\"count\":0,\"f

igures\":{\"indexes\":{\"count\":1,\"size\":32128},\"documentReferences\":0,\"waitingFor\":\"-\",\"alive\":{\"count\":0,\"size\

":0},\"dead\":{\"count\":0,\"size\":0,\"deletion\":0},\"compactionStatus\":{\"message\":\"compactionnotyetstarted\",\"time\"

:\"2018-01-25T19:13:37Z\",\"count\":0,\"filesCombined\":0,\"bytesRead\":0,\"bytesWritten\":0},\"datafiles\":{\"count\":0,\"file

Size\":0},\"journals\":{\"count\":0,\"fileSize\":0},\"compactors\":{\"count\":0,\"fileSize\":0},\"revisions\":{\"count\":0,\"si

ze\":48192},\"lastTick\":0,\"uncollectedLogfileEntries\":0},\"doCompact\":true,\"globallyUniqueId\":\"h68719E5AC6E7/9990\",\"ty

pe\":2,\"indexBuckets\":8,\"waitForSync\":false,\"id\":\"9990\"}

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

Content-Id:otherId

HTTP/1.1200OK

Server:

Connection:

Content-Type:application/json;charset=utf-8

Content-Length:38

{\"code\":200,\"error\":false,\"id\":\"9990\"}

--SomeBoundaryValue--"

Example:Sendingabatchrequest,settingtheboundaryimplicitly(theserverwillinthiscasetrytofindtheboundaryatthebeginningoftherequestbody).

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/batch<<EOF

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

DELETE/_api/collection/notexisting1HTTP/1.1

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

DELETE_api/collection/notexisting2HTTP/1.1

BatchRequests

270

Page 271: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

--SomeBoundaryValue--

EOF

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:

x-arango-errors:2

"--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

HTTP/1.1404NotFound

Server:

Connection:

Content-Type:application/json;charset=utf-8

Content-Length:79

{\"error\":true,\"errorMessage\":\"collectionnotfound\",\"code\":404,\"errorNum\":1203}

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

HTTP/1.1404NotFound

Server:

Connection:

Content-Type:application/json;charset=utf-8

Content-Length:101

{\"error\":true,\"code\":404,\"errorNum\":404,\"errorMessage\":\"unknownpath'_api/collection/notexisting2'\"}

--SomeBoundaryValue--"

ReturnCodes

200:isreturnedifthebatchwasreceivedsuccessfully.HTTP200isreturnedevenifoneormultiplebatchpartactionsfailed.400:isreturnedifthebatchenvelopeismalformedorincorrectlyformatted.Thiscodewillalsobereturnedifthecontent-typeoftheoverallbatchrequestortheindividualMIMEpartsisnotasexpected.405:isreturnedwhenaninvalidHTTPmethodisused.

Examples

Sendingabatchrequestwithfivebatchparts:

GET/_api/versionDELETE/_api/collection/productsPOST/_api/collection/productsGET/_api/collection/products/figuresDELETE/_api/collection/productsTheboundary(SomeBoundaryValue)ispassedtotheserverintheHTTPContent-TypeHTTPheader.Pleasenotethereplyisnotdisplayedallaccurate.

shell>curl-XPOST--header'Content-Type:multipart/form-data;

boundary=SomeBoundaryValue'--data-binary@---dump-http://localhost:8529/_api/batch

<<EOF

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

Content-Id:myId1

GET/_api/versionHTTP/1.1

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

Content-Id:myId2

DELETE/_api/collection/productsHTTP/1.1

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

Content-Id:someId

BatchRequests

271

Page 272: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

POST/_api/collection/productsHTTP/1.1

{"name":"products"}

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

Content-Id:nextId

GET/_api/collection/products/figuresHTTP/1.1

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

Content-Id:otherId

DELETE/_api/collection/productsHTTP/1.1

--SomeBoundaryValue--

EOF

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:multipart/form-data;boundary=SomeBoundaryValue

x-arango-errors:1

"--SomeBoundaryValue\r\nContent-Type:application/x-arango-batchpart\r\nContent-Id:

myId1\r\n\r\nHTTP/1.1200OK\r\nServer:\r\nConnection:\r\nContent-Type:

application/json;charset=utf-8\r\nContent-Length:

59\r\n\r\n{\"server\":\"arango\",\"version\":\"3.3.3\",\"license\":\"community\"}\r\n--

SomeBoundaryValue\r\nContent-Type:application/x-arango-batchpart\r\nContent-Id:

myId2\r\n\r\nHTTP/1.1404NotFound\r\nServer:\r\nConnection:\r\nContent-Type:

application/json;charset=utf-8\r\nContent-Length:

79\r\n\r\n{\"error\":true,\"errorMessage\":\"collectionnot

found\",\"code\":404,\"errorNum\":1203}\r\n--SomeBoundaryValue\r\nContent-Type:

application/x-arango-batchpart\r\nContent-Id:someId\r\n\r\nHTTP/1.1200OK\r\nServer:

\r\nConnection:\r\nContent-Type:application/json;charset=utf-8\r\nContent-Length:

324\r\n\r\n{\"code\":200,\"error\":false,\"status\":3,\"statusString\":\"loaded\",\"name\"

:\"products\",\"keyOptions\":

{\"type\":\"traditional\",\"allowUserKeys\":true,\"lastValue\":0},\"type\":2,\"indexBucket

s\":8,\"globallyUniqueId\":\"h68719E5AC6E7/9990\",\"doCompact\":true,\"waitForSync\":false

,\"id\":\"9990\",\"isSystem\":false,\"journalSize\":33554432,\"isVolatile\":false}\r\n--

SomeBoundaryValue\r\nContent-Type:application/x-arango-batchpart\r\nContent-Id:

nextId\r\n\r\nHTTP/1.1200OK\r\nServer:\r\nLocation:

/_api/collection/products/figures\r\nConnection:\r\nContent-Type:application/json;

charset=utf-8\r\nContent-Length:

831\r\n\r\n{\"code\":200,\"error\":false,\"statusString\":\"loaded\",\"name\":\"products\"

,\"keyOptions\":

{\"type\":\"traditional\",\"allowUserKeys\":true,\"lastValue\":0},\"journalSize\":33554432

,\"isVolatile\":false,\"isSystem\":false,\"status\":3,\"count\":0,\"figures\":

{\"indexes\":{\"count\":1,\"size\":32128},\"documentReferences\":0,\"waitingFor\":\"-

\",\"alive\":{\"count\":0,\"size\":0},\"dead\":

{\"count\":0,\"size\":0,\"deletion\":0},\"compactionStatus\":{\"message\":\"compactionnot

yetstarted\",\"time\":\"2018-01-

25T19:13:37Z\",\"count\":0,\"filesCombined\":0,\"bytesRead\":0,\"bytesWritten\":0},\"dataf

iles\":{\"count\":0,\"fileSize\":0},\"journals\":

{\"count\":0,\"fileSize\":0},\"compactors\":{\"count\":0,\"fileSize\":0},\"revisions\":

{\"count\":0,\"size\":48192},\"lastTick\":0,\"uncollectedLogfileEntries\":0},\"doCompact\"

:true,\"globallyUniqueId\":\"h68719E5AC6E7/9990\",\"type\":2,\"indexBuckets\":8,\"waitForS

ync\":false,\"id\":\"9990\"}\r\n--SomeBoundaryValue\r\nContent-Type:application/x-arango-

BatchRequests

272

Page 273: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

batchpart\r\nContent-Id:otherId\r\n\r\nHTTP/1.1200OK\r\nServer:\r\nConnection:

\r\nContent-Type:application/json;charset=utf-8\r\nContent-Length:

38\r\n\r\n{\"code\":200,\"error\":false,\"id\":\"9990\"}\r\n--SomeBoundaryValue--"

Sendingabatchrequest,settingtheboundaryimplicitly(theserverwillinthiscasetrytofindtheboundaryatthebeginningoftherequestbody).

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/batch<<EOF

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

DELETE/_api/collection/notexisting1HTTP/1.1

--SomeBoundaryValue

Content-Type:application/x-arango-batchpart

DELETE_api/collection/notexisting2HTTP/1.1

--SomeBoundaryValue--

EOF

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:

x-arango-errors:2

"--SomeBoundaryValue\r\nContent-Type:application/x-arango-batchpart\r\n\r\nHTTP/1.1404

NotFound\r\nServer:\r\nConnection:\r\nContent-Type:application/json;charset=utf-

8\r\nContent-Length:79\r\n\r\n{\"error\":true,\"errorMessage\":\"collectionnot

found\",\"code\":404,\"errorNum\":1203}\r\n--SomeBoundaryValue\r\nContent-Type:

application/x-arango-batchpart\r\n\r\nHTTP/1.1404NotFound\r\nServer:\r\nConnection:

\r\nContent-Type:application/json;charset=utf-8\r\nContent-Length:

101\r\n\r\n{\"error\":true,\"code\":404,\"errorNum\":404,\"errorMessage\":\"unknownpath

'_api/collection/notexisting2'\"}\r\n--SomeBoundaryValue--"

BatchRequests

273

Page 274: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforExportingDocuments

Createexportcursor

exportalldocumentsfromacollection,usingacursor

POST/_api/export

AJSONobjectwiththesepropertiesisrequired:

count:booleanflagthatindicateswhetherthenumberofdocumentsintheresultsetshouldbereturnedinthe"count"attributeoftheresult(optional).Calculatingthe"count"attributemightinthefuturehaveaperformanceimpactsothisoptionisturnedoffbydefault,and"count"isonlyreturnedwhenrequested.restrict:

fields(string):Containsanarrayofattributenamestoincludeorexclude.Matchingofattributenamesforinclusionorexclusionwillbedoneonthetoplevelonly.Specifyingnamesofnestedattributesisnotsupportedatthemoment.type:hastobebesettoeitherincludeorexcludedependingonwhichyouwanttouse

batchSize:maximumnumberofresultdocumentstobetransferredfromtheservertotheclientinoneroundtrip(optional).Ifthisattributeisnotset,aserver-controlleddefaultvaluewillbeused.flush:ifsettotrue,aWALflushoperationwillbeexecutedpriortotheexport.TheflushoperationwillstartcopyingdocumentsfromtheWALtothecollection'sdatafiles.TherewillbeanadditionalwaittimeofuptoflushWaitsecondsaftertheflushtoallowtheWALcollectortochangetheadjusteddocumentmeta-datatopointintothedatafiles,too.Thedefaultvalueisfalse(i.e.noflush)somostrecentlyinsertedorupdateddocumentsfromthecollectionmightbemissingintheexport.flushWait:maximumwaittimeinsecondsafteraflushoperation.Thedefaultvalueis10.Thisoptiononlyhasaneffectwhenflushissettotrue.limit:anoptionallimitvalue,determiningthemaximumnumberofdocumentstobeincludedinthecursor.Omittingthelimitattributeorsettingitto0willleadtonolimitbeingused.Ifalimitisused,itisundefinedwhichdocumentsfromthecollectionwillbeincludedintheexportandwhichwillbeexcluded.Thisisbecausethereisnonaturalorderofdocumentsinacollection.ttl:anoptionaltime-to-liveforthecursor(inseconds).Thecursorwillberemovedontheserverautomaticallyafterthespecifiedamountoftime.Thisisusefultoensuregarbagecollectionofcursorsthatarenotfullyfetchedbyclients.Ifnotset,aserver-definedvaluewillbeused.

Acalltothismethodcreatesacursorcontainingalldocumentsinthespecifiedcollection.Incontrasttootherdata-producingAPIs,theinternaldatastructuresproducedbytheexportAPIaremorelightweight,soitisthepreferredwaytoretrievealldocumentsfromacollection.

Documentsarereturnedinasimilarmannerasinthe/_api/cursorRESTAPI.Ifalldocumentsofthecollectionfitintothefirstbatch,thennocursorwillbecreated,andtheresultobject'shasMoreattributewillbesettofalse.Ifnotalldocumentsfitintothefirstbatch,thentheresultobject'shasMoreattributewillbesettotrue,andtheidattributeoftheresultwillcontainacursorid.

Theorderinwhichthedocumentsarereturnedisnotspecified.

Bydefault,onlythosedocumentsfromthecollectionwillbereturnedthatarestoredinthecollection'sdatafiles.Documentsthatarepresentinthewrite-aheadlog(WAL)atthetimetheexportisrunwillnotbeexported.

Toexportthesedocumentsaswell,thecallercanissueaWALflushrequestbeforecallingtheexportAPIorsettheflushattribute.SettingtheflushoptionwilltriggeraWALflushbeforetheexportsodocumentsgetcopiedfromtheWALtothecollectiondatafiles.

Iftheresultsetcanbecreatedbytheserver,theserverwillrespondwithHTTP201.ThebodyoftheresponsewillcontainaJSONobjectwiththeresultset.

ThereturnedJSONobjecthasthefollowingproperties:

error:booleanflagtoindicatethatanerroroccurred(falseinthiscase)

code:theHTTPstatuscode

result:anarrayofresultdocuments(mightbeemptyifthecollectionwasempty)

hasMore:abooleanindicatorwhethertherearemoreresultsavailableforthecursorontheserver

count:thetotalnumberofresultdocumentsavailable(onlyavailableifthequerywasexecutedwiththecountattributeset)

Exportingdata

274

Page 275: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

id:idoftemporarycursorcreatedontheserver(optional,seeabove)

IftheJSONrepresentationismalformedorthequeryspecificationismissingfromtherequest,theserverwillrespondwithHTTP400.

ThebodyoftheresponsewillcontainaJSONobjectwithadditionalerrordetails.Theobjecthasthefollowingattributes:

error:booleanflagtoindicatethatanerroroccurred(trueinthiscase)

code:theHTTPstatuscode

errorNum:theservererrornumber

errorMessage:adescriptiveerrormessage

Clientsshouldalwaysdeleteanexportcursorresultasearlyaspossiblebecausealingeringexportcursorwillpreventtheunderlyingcollectionfrombeingcompactedorunloaded.Bydefault,unusedcursorswillbedeletedautomaticallyafteraserver-definedidletime,andclientscanadjustthisidletimebysettingthettlvalue.

Note:thisAPIiscurrentlynotsupportedonclustercoordinators.

Exportingdata

275

Page 276: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforIndexes

Indexes

ThisisanintroductiontoArangoDB'sHTTPinterfaceforindexesingeneral.Therearespecialsectionsforvariousindextypes.

Index

Indexesareusedtoallowfastaccesstodocuments.Foreachcollectionthereisalwaystheprimaryindexwhichisahashindexforthedocumentkey(_keyattribute).Thisindexcannotbedroppedorchanged.edgecollectionswillalsohaveanautomaticallycreatededgesindex,whichcannotbemodified.Thisindexprovidesquickaccesstodocumentsviathe_fromand_toattributes.

Mostuser-landindexescanbecreatedbydefiningthenamesoftheattributeswhichshouldbeindexed.Someindextypesallowindexingjustoneattribute(e.g.fulltextindex)whereasotherindextypesallowindexingmultipleattributes.

Usingthesystemattribute_idinuser-definedindexesisnotsupportedbyanyindextype.

IndexHandle

Anindexhandleuniquelyidentifiesanindexinthedatabase.Itisastringandconsistsofacollectionnameandanindexidentifierseparatedby/.GeoIndex:Ageoindexisusedtofindplacesonthesurfaceoftheearthfast.HashIndex:Ahashindexisusedtofinddocumentsbasedonexamples.Ahashindexcanbecreatedforoneormultipledocumentattributes.Ahashindexwillonlybeusedbyqueriesifallindexedattributesarepresentintheexampleorsearchquery,andifallattributesarecomparedusingtheequality(==operator).Thatmeansthehashindexdoesnotsupportrangequeries.

Iftheindexisdeclaredunique,thenaccesstotheindexedattributesshouldbefast.Theperformancedegradesiftheindexedattribute(s)contain(s)onlyveryfewdistinctvalues.

EdgesIndex

Anedgesindexisautomaticallycreatedforedgecollections.Itcontainsconnectionsbetweenvertexdocumentsandisinvokedwhentheconnectingedgesofavertexarequeried.Thereisnowaytoexplicitlycreateordeleteedgeindexes.

SkiplistIndex

Askiplistisasortedindexthatcanbeusedtofindindividualdocumentsorrangesofdocuments.

PersistentIndex

Apersistentindexisasortedindexthatcanbeusedforfindingindividualdocumentsorrangesofdocuments.Inconstrasttotheotherindexes,thecontentsofapersistentindexarestoredondiskandthusdonotneedtoberebuiltinmemoryfromthedocumentswhenthecollectionisloaded.

FulltextIndex:

Afulltextindexcanbeusedtofindwords,orprefixesofwordsinsidedocuments.Afulltextindexcanbesetononeattributeonly,andwillindexallwordscontainedindocumentsthathaveatextualvalueinthisattribute.Onlywordswitha(specifiable)minimumlengthareindexed.Wordtokenizationisdoneusingthewordboundaryanalysisprovidedbylibicu,whichistakingintoaccounttheselectedlanguageprovidedatserverstart.Wordsareindexedintheirlower-casedform.Theindexsupportscompletematchqueries(fullwords)andprefixqueries.

Thebasicoperations(create,read,update,delete)fordocumentsaremappedtothestandardHTTPmethods(POST,GET,PUT,DELETE).

AddressofanIndex

Indexes

276

Page 277: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

AllindexesinArangoDBhaveanuniquehandle.ThisindexhandleidentifiesanindexandismanagedbyArangoDB.AllindexesarefoundundertheURI

http://server:port/_api/index/index-handle

Forexample:Assumethattheindexhandleisdemo/63563528thentheURLofthatindexis:

http://localhost:8529/_api/index/demo/63563528

Indexes

277

Page 278: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

WorkingwithIndexesusingHTTP

Readindex

returnsanindex

GET/_api/index/{index-handle}

PathParameters

index-handle(required):Theindex-handle.

Theresultisanobjectdescribingtheindex.Ithasatleastthefollowingattributes:

id:theidentifieroftheindex

type:theindextype

Allotherattributesaretype-dependent.Forexample,someindexesprovideuniqueorsparseflags,whereasothersdon't.SomeindexesalsoprovideaselectivityestimateintheselectivityEstimateattributeoftheresult.

Example:

shell>curl--dump-http://localhost:8529/_api/index/products/0

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"fields":[

"_key"

],

"id":"products/0",

"selectivityEstimate":1,

"sparse":false,

"type":"primary",

"unique":true,

"error":false,

"code":200

}

ReturnCodes

200:Iftheindexexists,thenaHTTP200isreturned.404:Iftheindexdoesnotexist,thenaHTTP404isreturned.

Examples

shell>curl--dump-http://localhost:8529/_api/index/products/0

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Createindex

createsanindex

WorkingwithIndexes

278

Page 279: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

POST/_api/index#general

QueryParameters

collection(required):Thecollectionname.

RequestBody(required)

NOTESwaggerexampleswon'tworkduetotheanchor.

Createsanewindexinthecollectioncollection.Expectsanobjectcontainingtheindexdetails.

Thetypeoftheindextobecreatedmustspecifiedinthetypeattributeoftheindexdetails.Dependingontheindextype,additionalotherattributesmayneedtospecifiedintherequestinordertocreatetheindex.

Indexesrequirethetobeindexedattribute(s)inthefieldsattributeoftheindexdetails.Dependingontheindextype,asingleattributeormultipleattributescanbeindexed.Inthelattercase,anarrayofstringsisexpected.

Indexingthesystemattribute_idisnotsupportedforuser-definedindexes.Manuallycreatinganindexusing_idasanindexattributewillfailwithanerror.

Someindexescanbecreatedasuniqueornon-uniquevariants.Uniquenesscanbecontrolledformostindexesbyspecifyingtheuniqueflagintheindexdetails.Settingittotruewillcreateauniqueindex.Settingittofalseoromittingtheuniqueattributewillcreateanon-uniqueindex.

Note:Thefollowingindextypesdonotsupportuniqueness,andusingtheuniqueattributewiththesetypesmayleadtoanerror:

geoindexesfulltextindexes

Note:Uniqueindexesonnon-shardkeysarenotsupportedinacluster.

Hash,skiplistandpersistentindexescanoptionallybecreatedinasparsevariant.Asparseindexwillbecreatedifthesparseattributeintheindexdetailsissettotrue.Sparseindexesdonotindexdocumentsforwhichanyoftheindexattributesiseithernotsetorisnull.

Theoptionalattributededuplicateissupportedbyarrayindexesoftypehashorskiplist.Itcontrolswhetherinsertingduplicateindexvaluesfromthesamedocumentintoauniquearrayindexwillleadtoauniqueconstrainterrorornot.Thedefaultvalueistrue,soonlyasingleinstanceofeachnon-uniqueindexvaluewillbeinsertedintotheindexperdocument.Tryingtoinsertavalueintotheindexthatalreadyexistsintheindexwillalwaysfail,regardlessofthevalueofthisattribute.

ReturnCodes

200:Iftheindexalreadyexists,thenanHTTP200isreturned.201:Iftheindexdoesnotalreadyexistandcouldbecreated,thenanHTTP201isreturned.400:Ifaninvalidindexdescriptionispostedorattributesareusedthatthetargetindexwillnotsupport,thenanHTTP400isreturned.404:Ifcollectionisunknown,thenanHTTP404isreturned.

Deleteindex

deletesanindex

DELETE/_api/index/{index-handle}

PathParameters

index-handle(required):Theindexhandle.

Deletesanindexwithindex-handle.

Example:

shell>curl-XDELETE--dump-http://localhost:8529/_api/index/products/11938

HTTP/1.1200OK

content-type:application/json;charset=utf-8

WorkingwithIndexes

279

Page 280: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

x-content-type-options:nosniff

{

"id":"products/11938",

"error":false,

"code":200

}

ReturnCodes

200:Iftheindexcouldbedeleted,thenanHTTP200isreturned.404:Iftheindex-handleisunknown,thenanHTTP404isreturned.

Examples

shell>curl-XDELETE--dump-http://localhost:8529/_api/index/products/11938

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Readallindexesofacollection

returnsallindexesofacollection

GET/_api/index

QueryParameters

collection(required):Thecollectionname.

Returnsanobjectwithanattributeindexescontaininganarrayofallindexdescriptionsforthegivencollection.Thesameinformationisalsoavailableintheidentifiersasanobjectwiththeindexhandlesaskeys.

Example:Returninformationaboutallindexes

shell>curl--dump-http://localhost:8529/_api/index?collection=products

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200,

"indexes":[

{

"fields":[

"_key"

],

"id":"products/0",

"selectivityEstimate":1,

"sparse":false,

"type":"primary",

"unique":true

},

{

"deduplicate":true,

"fields":[

"name"

],

WorkingwithIndexes

280

Page 281: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"id":"products/11780",

"selectivityEstimate":1,

"sparse":false,

"type":"hash",

"unique":false

},

{

"deduplicate":true,

"fields":[

"price"

],

"id":"products/11783",

"sparse":true,

"type":"skiplist",

"unique":false

}

],

"identifiers":{

"products/0":{

"fields":[

"_key"

],

"id":"products/0",

"selectivityEstimate":1,

"sparse":false,

"type":"primary",

"unique":true

},

"products/11780":{

"deduplicate":true,

"fields":[

"name"

],

"id":"products/11780",

"selectivityEstimate":1,

"sparse":false,

"type":"hash",

"unique":false

},

"products/11783":{

"deduplicate":true,

"fields":[

"price"

],

"id":"products/11783",

"sparse":true,

"type":"skiplist",

"unique":false

}

}

}

ReturnCodes

200:returnsaJSONobjectcontainingalistofindexesonthatcollection.

Examples

Returninformationaboutallindexes

shell>curl--dump-http://localhost:8529/_api/index?collection=products

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

WorkingwithIndexes

281

Page 282: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

WorkingwithHashIndexesIfasuitablehashindexexists,then/_api/simple/by-examplewillusethisindextoexecuteaquery-by-example.

Createhashindex

createsahashindex

POST/_api/index#hash

QueryParameters

collection-name(required):Thecollectionname.

AJSONobjectwiththesepropertiesisrequired:

fields(string):anarrayofattributepaths.unique:iftrue,thencreateauniqueindex.type:mustbeequalto"hash" .sparse:iftrue,thencreateasparseindex.deduplicate:iffalse,thededuplicationofarrayvaluesisturnedoff.

NOTESwaggerexampleswon'tworkduetotheanchor.

Createsahashindexforthecollectioncollection-nameifitdoesnotalreadyexist.Thecallexpectsanobjectcontainingtheindexdetails.

Inasparseindexalldocumentswillbeexcludedfromtheindexthatdonotcontainatleastoneofthespecifiedindexattributes(i.e.fields)orthathaveavalueofnullinanyofthespecifiedindexattributes.Suchdocumentswillnotbeindexed,andnotbetakenintoaccountforuniquenesschecksiftheuniqueflagisset.

Inanon-sparseindex,thesedocumentswillbeindexed(fornon-presentindexedattributes,avalueofnullwillbeused)andwillbetakenintoaccountforuniquenesschecksiftheuniqueflagisset.

Note:uniqueindexesonnon-shardkeysarenotsupportedinacluster.

Example:Creatinganuniqueconstraint

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?collection=products<<EOF

{

"type":"hash",

"unique":true,

"fields":[

"a",

"b"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"deduplicate":true,

"fields":[

"a",

"b"

],

"id":"products/11882",

"isNewlyCreated":true,

"selectivityEstimate":1,

"sparse":false,

"type":"hash",

Hash

282

Page 283: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"unique":true,

"error":false,

"code":201

}

Example:Creatinganon-uniquehashindex

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?collection=products<<EOF

{

"type":"hash",

"unique":false,

"fields":[

"a",

"b"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"deduplicate":true,

"fields":[

"a",

"b"

],

"id":"products/11840",

"isNewlyCreated":true,

"selectivityEstimate":1,

"sparse":false,

"type":"hash",

"unique":false,

"error":false,

"code":201

}

Example:Creatingasparseindex

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?collection=products<<EOF

{

"type":"hash",

"unique":false,

"sparse":true,

"fields":[

"a"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"deduplicate":true,

"fields":[

"a"

],

"id":"products/11896",

"isNewlyCreated":true,

"selectivityEstimate":1,

"sparse":true,

Hash

283

Page 284: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"type":"hash",

"unique":false,

"error":false,

"code":201

}

ReturnCodes

200:Iftheindexalreadyexists,thenaHTTP200isreturned.201:Iftheindexdoesnotalreadyexistandcouldbecreated,thenaHTTP201isreturned.400:Ifthecollectionalreadycontainsdocumentsandyoutrytocreateauniquehashindexinsuchawaythattherearedocumentsviolatingtheuniqueness,thenaHTTP400isreturned.404:Ifthecollection-nameisunknown,thenaHTTP404isreturned.

Examples

Creatinganuniqueconstraint

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?

collection=products<<EOF

{

"type":"hash",

"unique":true,

"fields":[

"a",

"b"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyCreatinganon-uniquehashindex

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?

collection=products<<EOF

{

"type":"hash",

"unique":false,

"fields":[

"a",

"b"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyCreatingasparseindex

Hash

284

Page 285: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?

collection=products<<EOF

{

"type":"hash",

"unique":false,

"sparse":true,

"fields":[

"a"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Simplequeryby-example

returnsalldocumentsofacollectionmatchingagivenexample

PUT/_api/simple/by-example

AJSONobjectwiththesepropertiesisrequired:

skip:Thenumberofdocumentstoskipinthequery(optional).batchSize:maximumnumberofresultdocumentstobetransferredfromtheservertotheclientinoneroundtrip.Ifthisattributeisnotset,aserver-controlleddefaultvaluewillbeused.AbatchSizevalueof0isdisallowed.limit:Themaximalamountofdocumentstoreturn.Theskipisappliedbeforethelimitrestriction.(optional)example:Theexampledocument.collection:Thenameofthecollectiontoquery.

Thiswillfindalldocumentsmatchingagivenexample.

Returnsacursorcontainingtheresult,seeHttpCursorfordetails.

Example:Matchinganattribute

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/by-example<<EOF

{

"collection":"products",

"example":{

"i":1

}

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

{

"_key":"12208",

"_id":"products/12208",

"_rev":"_WQ47fbm--_",

"a":{

"k":2,

Hash

285

Page 286: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"j":2

},

"i":1

},

{

"_key":"12202",

"_id":"products/12202",

"_rev":"_WQ47fbi--B",

"a":{

"j":1

},

"i":1

},

{

"_key":"12198",

"_id":"products/12198",

"_rev":"_WQ47fbi--_",

"a":{

"k":1,

"j":1

},

"i":1

},

{

"_key":"12205",

"_id":"products/12205",

"_rev":"_WQ47fbi--D",

"i":1

}

],

"hasMore":false,

"count":4,

"error":false,

"code":201

}

Example:Matchinganattributewhichisasub-document

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/by-example<<EOF

{

"collection":"products",

"example":{

"a.j":1

}

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

{

"_key":"12228",

"_id":"products/12228",

"_rev":"_WQ47fcK--B",

"a":{

"j":1

},

"i":1

},

{

"_key":"12224",

"_id":"products/12224",

"_rev":"_WQ47fcK--_",

"a":{

"k":1,

"j":1

},

Hash

286

Page 287: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"i":1

}

],

"hasMore":false,

"count":2,

"error":false,

"code":201

}

Example:Matchinganattributewithinasub-document

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/by-example<<EOF

{

"collection":"products",

"example":{

"a":{

"j":1

}

}

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

{

"_key":"12254",

"_id":"products/12254",

"_rev":"_WQ47fcq--B",

"a":{

"j":1

},

"i":1

}

],

"hasMore":false,

"count":1,

"error":false,

"code":201

}

ReturnCodes

201:isreturnedifthequerywasexecutedsuccessfully.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofaquery.Theresponsebodycontainsanerrordocumentinthiscase.404:isreturnedifthecollectionspecifiedbycollectionisunknown.Theresponsebodycontainsanerrordocumentinthiscase.

Examples

Matchinganattribute

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/by-example

<<EOF

{

"collection":"products",

"example":{

"i":1

}

}

EOF

Hash

287

Page 288: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyMatchinganattributewhichisasub-document

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/by-example

<<EOF

{

"collection":"products",

"example":{

"a.j":1

}

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyMatchinganattributewithinasub-document

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/by-example

<<EOF

{

"collection":"products",

"example":{

"a":{

"j":1

}

}

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Finddocumentsmatchinganexample

returnsonedocumentofacollectionmatchingagivenexample

PUT/_api/simple/first-example

AJSONobjectwiththesepropertiesisrequired:

example:Theexampledocument.collection:Thenameofthecollectiontoquery.

Hash

288

Page 289: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Thiswillreturnthefirstdocumentmatchingagivenexample.

ReturnsaresultcontainingthedocumentorHTTP404ifnodocumentmatchedtheexample.

Ifmorethanonedocumentinthecollectionmatchesthespecifiedexample,onlyoneofthesedocumentswillbereturned,anditisundefinedwhichofthematchingdocumentsisreturned.

Example:Ifamatchingdocumentwasfound

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/first-example<<EOF

{

"collection":"products",

"example":{

"i":1

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"document":{

"_key":"12286",

"_id":"products/12286",

"_rev":"_WQ47fdO--F",

"a":{

"k":2,

"j":2

},

"i":1

},

"error":false,

"code":200

}

Example:Ifnodocumentwasfound

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/first-example<<EOF

{

"collection":"products",

"example":{

"l":1

}

}

EOF

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"code":404,

"errorNum":404,

"errorMessage":"nomatch"

}

ReturnCodes

200:isreturnedwhenthequerywassuccessfullyexecuted.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofaquery.Theresponsebodycontainsanerrordocument

Hash

289

Page 290: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

inthiscase.404:isreturnedifthecollectionspecifiedbycollectionisunknown.Theresponsebodycontainsanerrordocumentinthiscase.

Examples

Ifamatchingdocumentwasfound

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/first-

example<<EOF

{

"collection":"products",

"example":{

"i":1

}

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyIfnodocumentwasfound

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/first-

example<<EOF

{

"collection":"products",

"example":{

"l":1

}

}

EOF

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Hash

290

Page 291: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

WorkingwithSkiplistIndexesIfasuitableskip-listindexexists,then/_api/simple/rangeandotheroperationswillusethisindextoexecutequeries.

Createskiplist

createsaskip-list

POST/_api/index#skiplist

QueryParameters

collection-name(required):Thecollectionname.

AJSONobjectwiththesepropertiesisrequired:

fields(string):anarrayofattributepaths.unique:iftrue,thencreateauniqueindex.type:mustbeequalto"skiplist" .sparse:iftrue,thencreateasparseindex.deduplicate:iffalse,thededuplicationofarrayvaluesisturnedoff.

Createsaskip-listindexforthecollectioncollection-name,ifitdoesnotalreadyexist.Thecallexpectsanobjectcontainingtheindexdetails.

Inasparseindexalldocumentswillbeexcludedfromtheindexthatdonotcontainatleastoneofthespecifiedindexattributes(i.e.fields)orthathaveavalueofnullinanyofthespecifiedindexattributes.Suchdocumentswillnotbeindexed,andnotbetakenintoaccountforuniquenesschecksiftheuniqueflagisset.

Inanon-sparseindex,thesedocumentswillbeindexed(fornon-presentindexedattributes,avalueofnullwillbeused)andwillbetakenintoaccountforuniquenesschecksiftheuniqueflagisset.

Note:uniqueindexesonnon-shardkeysarenotsupportedinacluster.

Example:Creatingaskiplistindex

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?collection=products<<EOF

{

"type":"skiplist",

"unique":false,

"fields":[

"a",

"b"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"deduplicate":true,

"fields":[

"a",

"b"

],

"id":"products/11868",

"isNewlyCreated":true,

"sparse":false,

"type":"skiplist",

"unique":false,

"error":false,

Skiplist

291

Page 292: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"code":201

}

Example:Creatingasparseskiplistindex

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?collection=products<<EOF

{

"type":"skiplist",

"unique":false,

"sparse":true,

"fields":[

"a"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"deduplicate":true,

"fields":[

"a"

],

"id":"products/11924",

"isNewlyCreated":true,

"sparse":true,

"type":"skiplist",

"unique":false,

"error":false,

"code":201

}

ReturnCodes

200:Iftheindexalreadyexists,thenaHTTP200isreturned.201:Iftheindexdoesnotalreadyexistandcouldbecreated,thenaHTTP201isreturned.400:Ifthecollectionalreadycontainsdocumentsandyoutrytocreateauniqueskip-listindexinsuchawaythattherearedocumentsviolatingtheuniqueness,thenaHTTP400isreturned.404:Ifthecollection-nameisunknown,thenaHTTP404isreturned.

Examples

Creatingaskiplistindex

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?

collection=products<<EOF

{

"type":"skiplist",

"unique":false,

"fields":[

"a",

"b"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

Skiplist

292

Page 293: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

showresponsebodyCreatingasparseskiplistindex

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?

collection=products<<EOF

{

"type":"skiplist",

"unique":false,

"sparse":true,

"fields":[

"a"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Skiplist

293

Page 294: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

WorkingwithPersistentIndexesIfasuitablepersistentindexexists,then/_api/simple/rangeandotheroperationswillusethisindextoexecutequeries.

Createapersistentindex

createsapersistentindex

POST/_api/index#persistent

QueryParameters

collection-name(required):Thecollectionname.

AJSONobjectwiththesepropertiesisrequired:

fields(string):anarrayofattributepaths.unique:iftrue,thencreateauniqueindex.type:mustbeequalto"persistent" .sparse:iftrue,thencreateasparseindex.

Createsapersistentindexforthecollectioncollection-name,ifitdoesnotalreadyexist.Thecallexpectsanobjectcontainingtheindexdetails.

Inasparseindexalldocumentswillbeexcludedfromtheindexthatdonotcontainatleastoneofthespecifiedindexattributes(i.e.fields)orthathaveavalueofnullinanyofthespecifiedindexattributes.Suchdocumentswillnotbeindexed,andnotbetakenintoaccountforuniquenesschecksiftheuniqueflagisset.

Inanon-sparseindex,thesedocumentswillbeindexed(fornon-presentindexedattributes,avalueofnullwillbeused)andwillbetakenintoaccountforuniquenesschecksiftheuniqueflagisset.

Note:uniqueindexesonnon-shardkeysarenotsupportedinacluster.

Example:Creatingapersistentindex

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?collection=products<<EOF

{

"type":"persistent",

"unique":false,

"fields":[

"a",

"b"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"deduplicate":true,

"fields":[

"a",

"b"

],

"id":"products/11854",

"isNewlyCreated":true,

"sparse":false,

"type":"persistent",

"unique":false,

"error":false,

"code":201

Persistent

294

Page 295: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

}

Example:Creatingasparsepersistentindex

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?collection=products<<EOF

{

"type":"persistent",

"unique":false,

"sparse":true,

"fields":[

"a"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"deduplicate":true,

"fields":[

"a"

],

"id":"products/11910",

"isNewlyCreated":true,

"sparse":true,

"type":"persistent",

"unique":false,

"error":false,

"code":201

}

ReturnCodes

200:Iftheindexalreadyexists,thenaHTTP200isreturned.201:Iftheindexdoesnotalreadyexistandcouldbecreated,thenaHTTP201isreturned.400:Ifthecollectionalreadycontainsdocumentsandyoutrytocreateauniquepersistentindexinsuchawaythattherearedocumentsviolatingtheuniqueness,thenaHTTP400isreturned.404:Ifthecollection-nameisunknown,thenaHTTP404isreturned.

Examples

Creatingapersistentindex

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?

collection=products<<EOF

{

"type":"persistent",

"unique":false,

"fields":[

"a",

"b"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

Persistent

295

Page 296: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

showresponsebodyCreatingasparsepersistentindex

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?

collection=products<<EOF

{

"type":"persistent",

"unique":false,

"sparse":true,

"fields":[

"a"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Persistent

296

Page 297: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

WorkingwithGeoIndexes

Creategeo-spatialindex

createsageoindex

POST/_api/index#geo

QueryParameters

collection(required):Thecollectionname.

AJSONobjectwiththesepropertiesisrequired:

fields(string):Anarraywithoneortwoattributepaths.Ifitisanarraywithoneattributepathlocation,thenageo-spatialindexonalldocumentsiscreatedusinglocationaspathtothecoordinates.Thevalueoftheattributemustbeanarraywithatleasttwodoublevalues.Thearraymustcontainthelatitude(firstvalue)andthelongitude(secondvalue).Alldocuments,whichdonothavetheattributepathorwithvaluethatarenotsuitable,areignored.Ifitisanarraywithtwoattributepathslatitudeandlongitude,thenageo-spatialindexonalldocumentsiscreatedusinglatitudeandlongitudeaspathsthelatitudeandthelongitude.Thevalueoftheattributelatitudeandoftheattributelongitudemustadouble.Alldocuments,whichdonothavetheattributepathsorwhichvaluesarenotsuitable,areignored.type:mustbeequalto"geo" .geoJson:Ifageo-spatialindexonalocationisconstructedandgeoJsonistrue,thentheorderwithinthearrayislongitudefollowedbylatitude.Thiscorrespondstotheformatdescribedinhttp://geojson.org/geojson-spec.html#positions

NOTESwaggerexampleswon'tworkduetotheanchor.

Createsageo-spatialindexinthecollectioncollection-name,ifitdoesnotalreadyexist.Expectsanobjectcontainingtheindexdetails.

Geoindexesarealwayssparse,meaningthatdocumentsthatdonotcontaintheindexattributesorhavenon-numericvaluesintheindexattributeswillnotbeindexed.

Example:Creatingageoindexwithalocationattribute

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?collection=products<<EOF

{

"type":"geo",

"fields":[

"b"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"constraint":false,

"fields":[

"b"

],

"geoJson":false,

"id":"products/11812",

"ignoreNull":true,

"isNewlyCreated":true,

"sparse":true,

"type":"geo1",

"unique":false,

"error":false,

"code":201

}

Geo

297

Page 298: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Example:Creatingageoindexwithlatitudeandlongitudeattributes

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?collection=products<<EOF

{

"type":"geo",

"fields":[

"e",

"f"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"constraint":false,

"fields":[

"e",

"f"

],

"id":"products/11798",

"ignoreNull":true,

"isNewlyCreated":true,

"sparse":true,

"type":"geo2",

"unique":false,

"error":false,

"code":201

}

ReturnCodes

200:Iftheindexalreadyexists,thenaHTTP200isreturned.201:Iftheindexdoesnotalreadyexistandcouldbecreated,thenaHTTP201isreturned.404:Ifthecollection-nameisunknown,thenaHTTP404isreturned.

Examples

Creatingageoindexwithalocationattribute

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?

collection=products<<EOF

{

"type":"geo",

"fields":[

"b"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyCreatingageoindexwithlatitudeandlongitudeattributes

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?

collection=products<<EOF

Geo

298

Page 299: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"type":"geo",

"fields":[

"e",

"f"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Returnsdocumentsnearacoordinate

returnsalldocumentsofacollectionnearagivenlocation

PUT/_api/simple/near

AJSONobjectwiththesepropertiesisrequired:

distance:Ifgiven,theattributekeyusedtoreturnthedistancetothegivencoordinate.(optional).Ifspecified,distancesarereturnedinmeters.skip:Thenumberofdocumentstoskipinthequery.(optional)longitude:Thelongitudeofthecoordinate.limit:Themaximalamountofdocumentstoreturn.Theskipisappliedbeforethelimitrestriction.Thedefaultis100.(optional)collection:Thenameofthecollectiontoquery.latitude:Thelatitudeofthecoordinate.geo:Ifgiven,theidentifierofthegeo-indextouse.(optional)

Thedefaultwillfindatmost100documentsnearthegivencoordinate.Thereturnedarrayissortedaccordingtothedistance,withthenearestdocumentbeingfirstinthereturnarray.Ifthereareneardocumentsofequaldistance,documentsarechosenrandomlyfromthissetuntilthelimitisreached.

Inordertousethenearoperator,ageoindexmustbedefinedforthecollection.Thisindexalsodefineswhichattributeholdsthecoordinatesforthedocument.Ifyouhavemorethanonegeo-spatialindex,youcanusethegeofieldtoselectaparticularindex.

Returnsacursorcontainingtheresult,seeHttpCursorfordetails.

Note:thenearsimplequeryisdeprecatedasofArangoDB2.6.ThisAPImayberemovedinfutureversionsofArangoDB.ThepreferredwayforretrievingdocumentsfromacollectionusingthenearoperatoristoissueanAQLqueryusingtheNEARfunctionasfollows:

FORdocINNEAR(@@collection,@latitude,@longitude,@limit)

RETURNdoc`

Example:Withoutdistance

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/near<<EOF

{

"collection":"products",

"latitude":0,

"longitude":0,

"skip":1,

"limit":2

}

Geo

299

Page 300: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

{

"_key":"12441",

"_id":"products/12441",

"_rev":"_WQ47fgq--D",

"name":"Name/0.002/",

"loc":[

0.002,

0

]

},

{

"_key":"12435",

"_id":"products/12435",

"_rev":"_WQ47fgq--_",

"name":"Name/-0.002/",

"loc":[

-0.002,

0

]

}

],

"hasMore":false,

"count":2,

"error":false,

"code":201

}

Example:Withdistance

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/near<<EOF

{

"collection":"products",

"latitude":0,

"longitude":0,

"skip":1,

"limit":3,

"distance":"distance"

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

{

"distance":222.38985328911744,

"_id":"products/12486",

"_key":"12486",

"_rev":"_WQ47fhq--D",

"loc":[

-0.002,

0

],

"name":"Name/-0.002/"

},

{

"distance":222.38985328911744,

"_id":"products/12492",

"_key":"12492",

"_rev":"_WQ47fhq--H",

Geo

300

Page 301: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"loc":[

0.002,

0

],

"name":"Name/0.002/"

},

{

"distance":444.779706578235,

"_id":"products/12483",

"_key":"12483",

"_rev":"_WQ47fhq--B",

"loc":[

-0.004,

0

],

"name":"Name/-0.004/"

}

],

"hasMore":false,

"count":3,

"error":false,

"code":201

}

ReturnCodes

201:isreturnedifthequerywasexecutedsuccessfully.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofaquery.Theresponsebodycontainsanerrordocumentinthiscase.404:isreturnedifthecollectionspecifiedbycollectionisunknown.Theresponsebodycontainsanerrordocumentinthiscase.

Examples

Withoutdistance

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/near<<EOF

{

"collection":"products",

"latitude":0,

"longitude":0,

"skip":1,

"limit":2

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyWithdistance

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/near<<EOF

{

"collection":"products",

"latitude":0,

"longitude":0,

"skip":1,

"limit":3,

"distance":"distance"

}

EOF

Geo

301

Page 302: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Finddocumentswithinaradiusaroundacoordinate

returnsalldocumentsofacollectionwithinagivenradius

PUT/_api/simple/within

AJSONobjectwiththesepropertiesisrequired:

distance:Ifgiven,theattributekeyusedtoreturnthedistancetothegivencoordinate.(optional).Ifspecified,distancesarereturnedinmeters.skip:Thenumberofdocumentstoskipinthequery.(optional)longitude:Thelongitudeofthecoordinate.radius:Themaximalradius(inmeters).collection:Thenameofthecollectiontoquery.latitude:Thelatitudeofthecoordinate.limit:Themaximalamountofdocumentstoreturn.Theskipisappliedbeforethelimitrestriction.Thedefaultis100.(optional)geo:Ifgiven,theidentifierofthegeo-indextouse.(optional)

Thiswillfindalldocumentswithinagivenradiusaroundthecoordinate(latitude,longitude).Thereturnedlistissortedbydistance.

Inordertousethewithinoperator,ageoindexmustbedefinedforthecollection.Thisindexalsodefineswhichattributeholdsthecoordinatesforthedocument.Ifyouhavemorethanonegeo-spatialindex,youcanusethegeofieldtoselectaparticularindex.

Returnsacursorcontainingtheresult,seeHttpCursorfordetails.

Note:thewithinsimplequeryisdeprecatedasofArangoDB2.6.ThisAPImayberemovedinfutureversionsofArangoDB.ThepreferredwayforretrievingdocumentsfromacollectionusingthenearoperatoristoissueanAQLqueryusingtheWITHINfunctionasfollows:

FORdocINWITHIN(@@collection,@latitude,@longitude,@radius,@distanceAttributeName)

RETURNdoc

Example:Withoutdistance

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/near<<EOF

{

"collection":"products",

"latitude":0,

"longitude":0,

"skip":1,

"limit":2,

"radius":500

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

{

"_key":"12854",

"_id":"products/12854",

Geo

302

Page 303: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"_rev":"_WQ47foi--_",

"name":"Name/0.002/",

"loc":[

0.002,

0

]

},

{

"_key":"12848",

"_id":"products/12848",

"_rev":"_WQ47foe--H",

"name":"Name/-0.002/",

"loc":[

-0.002,

0

]

}

],

"hasMore":false,

"count":2,

"error":false,

"code":201

}

Example:Withdistance

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/near<<EOF

{

"collection":"products",

"latitude":0,

"longitude":0,

"skip":1,

"limit":3,

"distance":"distance",

"radius":300

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"result":[

{

"distance":222.38985328911744,

"_id":"products/12899",

"_key":"12899",

"_rev":"_WQ47fpW--B",

"loc":[

-0.002,

0

],

"name":"Name/-0.002/"

},

{

"distance":222.38985328911744,

"_id":"products/12905",

"_key":"12905",

"_rev":"_WQ47fpW--F",

"loc":[

0.002,

0

],

"name":"Name/0.002/"

},

{

"distance":444.779706578235,

"_id":"products/12896",

"_key":"12896",

Geo

303

Page 304: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"_rev":"_WQ47fpW--_",

"loc":[

-0.004,

0

],

"name":"Name/-0.004/"

}

],

"hasMore":false,

"count":3,

"error":false,

"code":201

}

ReturnCodes

201:isreturnedifthequerywasexecutedsuccessfully.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofaquery.Theresponsebodycontainsanerrordocumentinthiscase.404:isreturnedifthecollectionspecifiedbycollectionisunknown.Theresponsebodycontainsanerrordocumentinthiscase.

Examples

Withoutdistance

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/near<<EOF

{

"collection":"products",

"latitude":0,

"longitude":0,

"skip":1,

"limit":2,

"radius":500

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyWithdistance

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/near<<EOF

{

"collection":"products",

"latitude":0,

"longitude":0,

"skip":1,

"limit":3,

"distance":"distance",

"radius":300

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

Geo

304

Page 305: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

showresponsebody

Geo

305

Page 306: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

FulltextIfafulltextindexexists,then/_api/simple/fulltextwillusethisindextoexecutethespecifiedfulltextquery.

Createfulltextindex

createsafulltextindex

POST/_api/index#fulltext

QueryParameters

collection-name(required):Thecollectionname.

AJSONobjectwiththesepropertiesisrequired:

fields(string):anarrayofattributenames.Currently,thearrayislimitedtoexactlyoneattribute.type:mustbeequalto"fulltext" .minLength:Minimumcharacterlengthofwordstoindex.Willdefaulttoaserver-definedvalueifunspecified.Itisthusrecommendedtosetthisvalueexplicitlywhencreatingtheindex.

NOTESwaggerexampleswon'tworkduetotheanchor.

Createsafulltextindexforthecollectioncollection-name,ifitdoesnotalreadyexist.Thecallexpectsanobjectcontainingtheindexdetails.

Example:Creatingafulltextindex

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?collection=products<<EOF

{

"type":"fulltext",

"fields":[

"text"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"fields":[

"text"

],

"id":"products/11826",

"isNewlyCreated":true,

"minLength":2,

"sparse":true,

"type":"fulltext",

"unique":false,

"error":false,

"code":201

}

ReturnCodes

200:Iftheindexalreadyexists,thenaHTTP200isreturned.201:Iftheindexdoesnotalreadyexistandcouldbecreated,thenaHTTP201isreturned.404:Ifthecollection-nameisunknown,thenaHTTP404isreturned.

Examples

Fulltext

306

Page 307: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Creatingafulltextindex

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/index?

collection=products<<EOF

{

"type":"fulltext",

"fields":[

"text"

]

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Fulltextindexquery

returnsdocumentsofacollectionasaresultofafulltextquery

PUT/_api/simple/fulltext

AJSONobjectwiththesepropertiesisrequired:

index:Theidentifierofthefulltext-indextouse.attribute:Theattributethatcontainsthetexts.collection:Thenameofthecollectiontoquery.limit:Themaximalamountofdocumentstoreturn.Theskipisappliedbeforethelimitrestriction.(optional)skip:Thenumberofdocumentstoskipinthequery(optional).query:Thefulltextquery.PleaserefertoFulltextqueriesfordetails.

Thiswillfindalldocumentsfromthecollectionthatmatchthefulltextqueryspecifiedinquery.

Inordertousethefulltextoperator,afulltextindexmustbedefinedforthecollectionandthespecifiedattribute.

Returnsacursorcontainingtheresult,seeHttpCursorfordetails.

Note:thefulltextsimplequeryisdeprecatedasofArangoDB2.6.ThisAPImayberemovedinfutureversionsofArangoDB.ThepreferredwayforretrievingdocumentsfromacollectionusingthenearoperatoristoissueanAQLqueryusingtheFULLTEXTAQLfunctionasfollows:

FORdocINFULLTEXT(@@collection,@attributeName,@queryString,@limit)

RETURNdoc

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/fulltext<<EOF

{

"collection":"products",

"attribute":"text",

"query":"word"

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

Fulltext

307

Page 308: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"result":[

{

"_key":"12326",

"_id":"products/12326",

"_rev":"_WQ47feO--_",

"text":"thistextcontainsword"

},

{

"_key":"12330",

"_id":"products/12330",

"_rev":"_WQ47feS--_",

"text":"thistextalsohasaword"

}

],

"hasMore":false,

"count":2,

"error":false,

"code":201

}

ReturnCodes

201:isreturnedifthequerywasexecutedsuccessfully.400:isreturnedifthebodydoesnotcontainavalidJSONrepresentationofaquery.Theresponsebodycontainsanerrordocumentinthiscase.404:isreturnedifthecollectionspecifiedbycollectionisunknown.Theresponsebodycontainsanerrordocumentinthiscase.

Examples

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/simple/fulltext

<<EOF

{

"collection":"products",

"attribute":"text",

"query":"word"

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Fulltext

308

Page 309: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforTransactions

Transactions

ArangoDB'stransactionsareexecutedontheserver.Transactionscanbeinitiatedbyclientsbysendingthetransactiondescriptionforexecutiontotheserver.

TransactionsinArangoDBdonotofferseparateBEGIN,COMMITandROLLBACKoperationsastheyareavailableinmanyotherdatabaseproducts.Instead,ArangoDBtransactionsaredescribedbyaJavaScriptfunction,andthecodeinsidetheJavaScriptfunctionwillthenbeexecutedtransactionally.Attheendofthefunction,thetransactionisautomaticallycommitted,andallchangesdonebythetransactionwillbepersisted.Ifanexceptionisthrownduringtransactionexecution,alloperationsperformedinthetransactionarerolledback.

ForamoredetaileddescriptionofhowtransactionsworkinArangoDBpleaserefertoTransactions.

Executetransaction

executeaserver-sidetransaction

POST/_api/transaction

AJSONobjectwiththesepropertiesisrequired:

maxTransactionSize:Transactionsizelimitinbytes.HonoredbytheRocksDBstorageengineonly.lockTimeout:anoptionalnumericvaluethatcanbeusedtosetatimeoutforwaitingoncollectionlocks.Ifnotspecified,adefaultvaluewillbeused.SettinglockTimeoutto0willmakeArangoDBnottimeoutwaitingforalock.waitForSync:anoptionalbooleanflagthat,ifset,willforcethetransactiontowritealldatatodiskbeforereturning.intermediateCommitCount:Maximumnumberofoperationsafterwhichanintermediatecommitisperformedautomatically.HonoredbytheRocksDBstorageengineonly.params:optionalargumentspassedtoaction.intermediateCommitSize:Maximumtotalsizeofoperationsafterwhichanintermediatecommitisperformedautomatically.HonoredbytheRocksDBstorageengineonly.action:theactualtransactionoperationstobeexecuted,intheformofstringifiedJavaScriptcode.Thecodewillbeexecutedonserverside,withlatebinding.Itisthuscriticalthatthecodespecifiedinactionproperlysetsupallthevariablesitneeds.Ifthecodespecifiedinactionendswithareturnstatement,thevaluereturnedwillalsobereturnedbytheRESTAPIintheresultattributeifthetransactioncommittedsuccessfully.collections:collectionsmustbeaJSONobjectthatcanhaveeitherorbothsub-attributesreadandwrite,eachbeinganarrayofcollectionnamesorasinglecollectionnameasstring.Collectionsthatwillbewrittentointhetransactionmustbedeclaredwiththewriteattributeoritwillfail,whereasnon-declaredcollectionsfromwhichissolelyreadwillbeaddedlazily.Theoptionalsub-attributeallowImplicitcanbesettofalsetolettransactionsfailincaseofundeclaredcollectionsforreading.Collectionsforreadingshouldbefullydeclaredifpossible,toavoiddeadlocks.

ThetransactiondescriptionmustbepassedinthebodyofthePOSTrequest.

Ifthetransactionisfullyexecutedandcommittedontheserver,HTTP200willbereturned.Additionally,thereturnvalueofthecodedefinedinactionwillbereturnedintheresultattribute.

Forsuccessfullycommittedtransactions,thereturnedJSONobjecthasthefollowingproperties:

error:booleanflagtoindicateifanerroroccurred(falseinthiscase)

code:theHTTPstatuscode

result:thereturnvalueofthetransaction

Ifthetransactionspecificationiseithermissingormalformed,theserverwillrespondwithHTTP400.

ThebodyoftheresponsewillthencontainaJSONobjectwithadditionalerrordetails.Theobjecthasthefollowingattributes:

error:booleanflagtoindicatethatanerroroccurred(trueinthiscase)

code:theHTTPstatuscode

Transactions

309

Page 310: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

errorNum:theservererrornumber

errorMessage:adescriptiveerrormessage

Ifatransactionfailstocommit,eitherbyanexceptionthrownintheactioncode,orbyaninternalerror,theserverwillrespondwithanerror.AnyothererrorswillbereturnedwithanyofthereturncodesHTTP400,HTTP409,orHTTP500.

Example:Executingatransactiononasinglecollection

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/transaction<<EOF

{

"collections":{

"write":"products"

},

"action":"function(){vardb=require('@arangodb').db;db.products.save({});returndb.products.count();}"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200,

"result":1

}

Example:Executingatransactionusingmultiplecollections

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/transaction<<EOF

{

"collections":{

"write":[

"products",

"materials"

]

},

"action":"function(){vardb=require('@arangodb').db;db.products.save({});db.materials.save({});return'worked!';}"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200,

"result":"worked!"

}

Example:Abortingatransactionduetoaninternalerror

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/transaction<<EOF

{

"collections":{

"write":"products"

Transactions

310

Page 311: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

},

"action":"function(){vardb=require('@arangodb').db;db.products.save({_key:'abc'});db.products.save({_key:'abc'});}

"

}

EOF

HTTP/1.1409Conflict

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"uniqueconstraintviolated-inindex0oftypeprimaryover[\"_key\"];conflictingkey:abc",

"code":409,

"errorNum":1210

}

Example:Abortingatransactionbyexplicitlythrowinganexception

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/transaction<<EOF

{

"collections":{

"read":"products"

},

"action":"function(){throw'doh!';}"

}

EOF

HTTP/1.1500InternalServerError

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"transactionnotrunningoncommit",

"code":500,

"errorNum":1650

}

Example:Referringtoanon-existingcollection

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/transaction<<EOF

{

"collections":{

"read":"products"

},

"action":"function(){returntrue;}"

}

EOF

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"errorMessage":"collectionnotfound:products",

"code":404,

"errorNum":1203

}

ReturnCodes

Transactions

311

Page 312: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

200:Ifthetransactionisfullyexecutedandcommittedontheserver,HTTP200willbereturned.400:Ifthetransactionspecificationiseithermissingormalformed,theserverwillrespondwithHTTP400.404:Ifthetransactionspecificationcontainsanunknowncollection,theserverwillrespondwithHTTP404.500:ExceptionsthrownbyuserswillmaketheserverrespondwithareturncodeofHTTP500

Examples

Executingatransactiononasinglecollection

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/transaction<<EOF

{

"collections":{

"write":"products"

},

"action":"function(){vardb=require('@arangodb').db;db.products.save({});

returndb.products.count();}"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyExecutingatransactionusingmultiplecollections

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/transaction<<EOF

{

"collections":{

"write":[

"products",

"materials"

]

},

"action":"function(){vardb=

require('@arangodb').db;db.products.save({});db.materials.save({});return'worked!';}"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyAbortingatransactionduetoaninternalerror

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/transaction<<EOF

{

"collections":{

"write":"products"

},

"action":"function(){vardb=require('@arangodb').db;db.products.save({_key:

'abc'});db.products.save({_key:'abc'});}"

}

Transactions

312

Page 313: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

EOF

HTTP/1.1409Conflict

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyAbortingatransactionbyexplicitlythrowinganexception

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/transaction<<EOF

{

"collections":{

"read":"products"

},

"action":"function(){throw'doh!';}"

}

EOF

HTTP/1.1500InternalServerError

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyReferringtoanon-existingcollection

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/transaction<<EOF

{

"collections":{

"read":"products"

},

"action":"function(){returntrue;}"

}

EOF

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Transactions

313

Page 314: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforReplication

Replication

ThisisanintroductiontoArangoDB'sHTTPreplicationinterface.ThereplicationarchitectureandcomponentsaredescribedinmoredetailsinReplication.

TheHTTPreplicationinterfaceservesfourmainpurposes:

fetchinitialdatafromaserver(e.g.forabackup,orfortheinitialsynchronizationofdatabeforestartingthecontinuousreplicationapplier)queryingthestateofamasterfetchcontinuouschangesfromamaster(usedforincrementalsynchronizationofchanges)administerthereplicationapplier(starting,stopping,configuring,queryingstate)onaslave

Pleasenotethatallreplicationoperationsworkonaper-databaselevel.IfanArangoDBservercontainsmorethanonedatabase,thereplicationsystemmustbeconfiguredindividuallyperdatabase,andreplicatingthedataofmultipledatabaseswillrequiremultipleoperations.

Replication

314

Page 315: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

ReplicationDumpCommandsTheinventorymethodcanbeusedtoqueryanArangoDBdatabase'scurrentsetofcollectionsplustheirindexes.Clientscanusethismethodtogetanoverviewofwhichcollectionsarepresentinthedatabase.Theycanusethisinformationtoeitherstartafullorapartialsynchronizationofdata,e.g.toinitiateabackuportheincrementaldatasynchronization.

Returninventoryofcollectionsandindexes

Returnsanoverviewofcollectionsandtheirindexes

GET/_api/replication/inventory

QueryParameters

includeSystem(optional):Includesystemcollectionsintheresult.Thedefaultvalueistrue.

Returnsthearrayofcollectionsandindexesavailableontheserver.Thisarraycanbeusedbyreplicationclientstoinitiateaninitialsyncwiththeserver.

TheresponsewillcontainaJSONobjectwiththecollectionandstateandtickattributes.

collectionsisanarrayofcollectionswiththefollowingsub-attributes:

parameters:thecollectionproperties

indexes:anarrayoftheindexesofathecollection.Primaryindexesandedgeindexesarenotincludedinthisarray.

Thestateattributecontainsthecurrentstateofthereplicationlogger.Itcontainsthefollowingsub-attributes:

running:whetherornotthereplicationloggeriscurrentlyactive.Note:sinceArangoDB2.2,thevaluewillalwaysbetrue

lastLogTick:thevalueofthelasttickthereplicationloggerhaswritten

time:thecurrenttimeontheserver

ReplicationclientsshouldnotethelastLogTickvaluereturned.Theycanthenfetchcollections'datausingthedumpmethoduptothevalueoflastLogTick,andquerythecontinuousreplicationlogforlogeventsafterthistickvalue.

Tocreateafullcopyofthecollectionsontheserver,areplicationclientcanexecutethesesteps:

callthe/inventoryAPImethod.ThisreturnsthelastLogTickvalueandthearrayofcollectionsandindexesfromtheserver.

foreachcollectionreturnedby/inventory,createthecollectionlocallyandcall/dumptostreamthecollectiondatatotheclient,uptothevalueoflastLogTick.Afterthat,theclientcancreatetheindexesonthecollectionsastheywerereportedby/inventory.

Iftheclientswantstocontinuouslystreamreplicationlogeventsfromtheloggerserver,thefollowingadditionalstepsneedtobecarriedout:

theclientshouldcall/logger-followinitiallytofetchthefirstbatchofreplicationeventsthatwereloggedaftertheclient'scallto/inventory.

Thecallto/logger-followshoulduseafromparameterwiththevalueofthelastLogTickasreportedby/inventory.Thecallto/logger-followwillreturnthex-arango-replication-lastincludedwhichwillcontainthelasttickvalueincludedintheresponse.

theclientcanthencontinuouslycall/logger-followtoincrementallyfetchnewreplicationeventsthatoccurredafterthelasttransfer.

Callsshoulduseafromparameterwiththevalueofthex-arango-replication-lastincludedheaderofthepreviousresponse.Iftherearenomorereplicationevents,theresponsewillbeemptyandclientscangotosleepforawhileandtryagainlater.

Note:onacoordinator,thisrequestmusthavethequeryparameterDBserverwhichmustbeanIDofaDBserver.TheverysamerequestisforwardedsynchronouslytothatDBserver.Itisanerrorifthisattributeisnotboundinthecoordinatorcase.

Example:

ReplicationDump

315

Page 316: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

shell>curl--dump-http://localhost:8529/_api/replication/inventory

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"collections":[

{

"indexes":[],

"parameters":{

"allowUserKeys":true,

"cid":"60",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"_appbundles",

"id":"60",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

"sparse":false

}

],

"isSmart":false,

"isSystem":true,

"isVolatile":false,

"journalSize":2097152,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"name":"_appbundles",

"numberOfShards":1,

"planId":"60",

"replicationFactor":2,

"shardKeys":[

"_key"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

},

{

"indexes":[],

"parameters":{

"allowUserKeys":true,

"cid":"26",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"_aqlfunctions",

"id":"26",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

ReplicationDump

316

Page 317: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"sparse":false

}

],

"isSmart":false,

"isSystem":true,

"isVolatile":false,

"journalSize":1048576,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"name":"_aqlfunctions",

"numberOfShards":1,

"planId":"26",

"replicationFactor":2,

"shardKeys":[

"_key"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

},

{

"indexes":[],

"parameters":{

"allowUserKeys":true,

"cid":"43",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"_frontend",

"id":"43",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

"sparse":false

}

],

"isSmart":false,

"isSystem":true,

"isVolatile":false,

"journalSize":1048576,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"name":"_frontend",

"numberOfShards":1,

"planId":"43",

"replicationFactor":2,

"shardKeys":[

"_key"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

},

{

"indexes":[],

ReplicationDump

317

Page 318: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"parameters":{

"allowUserKeys":true,

"cid":"2",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"_graphs",

"id":"2",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

"sparse":false

}

],

"isSmart":false,

"isSystem":true,

"isVolatile":false,

"journalSize":1048576,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"name":"_graphs",

"numberOfShards":1,

"planId":"2",

"replicationFactor":2,

"shardKeys":[

"_key"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

},

{

"indexes":[],

"parameters":{

"allowUserKeys":true,

"cid":"11",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"_modules",

"id":"11",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

"sparse":false

}

],

"isSmart":false,

"isSystem":true,

"isVolatile":false,

"journalSize":1048576,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":9899

ReplicationDump

318

Page 319: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

},

"name":"_modules",

"numberOfShards":1,

"planId":"11",

"replicationFactor":2,

"shardKeys":[

"_key"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

},

{

"indexes":[],

"parameters":{

"allowUserKeys":true,

"cid":"13",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"_routing",

"id":"13",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

"sparse":false

}

],

"isSmart":false,

"isSystem":true,

"isVolatile":false,

"journalSize":4194304,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":9948

},

"name":"_routing",

"numberOfShards":1,

"planId":"13",

"replicationFactor":2,

"shardKeys":[

"_key"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

},

{

"indexes":[

{

"id":"9",

"type":"hash",

"fields":[

"user"

],

"selectivityEstimate":1,

"unique":true,

"sparse":true,

"deduplicate":true

}

ReplicationDump

319

Page 320: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

],

"parameters":{

"allowUserKeys":true,

"cid":"6",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"_users",

"id":"6",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

"sparse":false

},

{

"id":"9",

"type":"hash",

"fields":[

"user"

],

"selectivityEstimate":1,

"unique":true,

"sparse":true,

"deduplicate":true

}

],

"isSmart":false,

"isSystem":true,

"isVolatile":false,

"journalSize":4194304,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":11963

},

"name":"_users",

"numberOfShards":1,

"planId":"6",

"replicationFactor":2,

"shardKeys":[

"user"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

},

{

"indexes":[],

"parameters":{

"allowUserKeys":true,

"cid":"98",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"h68719E5AC6E7/98",

"id":"98",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

ReplicationDump

320

Page 321: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"unique":true,

"sparse":false

}

],

"isSmart":false,

"isSystem":false,

"isVolatile":false,

"journalSize":33554432,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"name":"animals",

"numberOfShards":1,

"planId":"98",

"replicationFactor":1,

"shardKeys":[

"_key"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

},

{

"indexes":[],

"parameters":{

"allowUserKeys":true,

"cid":"92",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"h68719E5AC6E7/92",

"id":"92",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

"sparse":false

}

],

"isSmart":false,

"isSystem":false,

"isVolatile":false,

"journalSize":33554432,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"name":"demo",

"numberOfShards":1,

"planId":"92",

"replicationFactor":1,

"shardKeys":[

"_key"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

}

],

ReplicationDump

321

Page 322: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"state":{

"running":true,

"lastLogTick":"12006",

"lastUncommittedLogTick":"12016",

"totalEvents":4132,

"time":"2018-01-25T19:13:45Z"

},

"tick":"12016"

}

Example:Withsomeadditionalindexes:

shell>curl--dump-http://localhost:8529/_api/replication/inventory

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"collections":[

{

"indexes":[

{

"id":"12021",

"type":"hash",

"fields":[

"name"

],

"selectivityEstimate":1,

"unique":false,

"sparse":false,

"deduplicate":true

},

{

"id":"12024",

"type":"skiplist",

"fields":[

"a",

"b"

],

"unique":true,

"sparse":false,

"deduplicate":true

}

],

"parameters":{

"allowUserKeys":true,

"cid":"12017",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"h68719E5AC6E7/12017",

"id":"12017",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

"sparse":false

},

{

"id":"12021",

"type":"hash",

"fields":[

"name"

ReplicationDump

322

Page 323: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

],

"selectivityEstimate":1,

"unique":false,

"sparse":false,

"deduplicate":true

},

{

"id":"12024",

"type":"skiplist",

"fields":[

"a",

"b"

],

"unique":true,

"sparse":false,

"deduplicate":true

}

],

"isSmart":false,

"isSystem":false,

"isVolatile":false,

"journalSize":33554432,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"name":"IndexedCollection1",

"numberOfShards":1,

"planId":"12017",

"replicationFactor":1,

"shardKeys":[

"_key"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

},

{

"indexes":[

{

"id":"12030",

"type":"fulltext",

"fields":[

"text"

],

"unique":false,

"sparse":true,

"minLength":10

},

{

"id":"12033",

"type":"skiplist",

"fields":[

"a"

],

"unique":false,

"sparse":false,

"deduplicate":true

}

],

"parameters":{

"allowUserKeys":true,

"cid":"12026",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"h68719E5AC6E7/12026",

"id":"12026",

"indexBuckets":8,

"indexes":[

{

ReplicationDump

323

Page 324: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

"sparse":false

},

{

"id":"12030",

"type":"fulltext",

"fields":[

"text"

],

"unique":false,

"sparse":true,

"minLength":10

},

{

"id":"12033",

"type":"skiplist",

"fields":[

"a"

],

"unique":false,

"sparse":false,

"deduplicate":true

}

],

"isSmart":false,

"isSystem":false,

"isVolatile":false,

"journalSize":33554432,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"name":"IndexedCollection2",

"numberOfShards":1,

"planId":"12026",

"replicationFactor":1,

"shardKeys":[

"_key"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

},

{

"indexes":[],

"parameters":{

"allowUserKeys":true,

"cid":"60",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"_appbundles",

"id":"60",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

"sparse":false

}

ReplicationDump

324

Page 325: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

],

"isSmart":false,

"isSystem":true,

"isVolatile":false,

"journalSize":2097152,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"name":"_appbundles",

"numberOfShards":1,

"planId":"60",

"replicationFactor":2,

"shardKeys":[

"_key"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

},

{

"indexes":[],

"parameters":{

"allowUserKeys":true,

"cid":"26",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"_aqlfunctions",

"id":"26",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

"sparse":false

}

],

"isSmart":false,

"isSystem":true,

"isVolatile":false,

"journalSize":1048576,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"name":"_aqlfunctions",

"numberOfShards":1,

"planId":"26",

"replicationFactor":2,

"shardKeys":[

"_key"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

},

{

"indexes":[],

"parameters":{

"allowUserKeys":true,

ReplicationDump

325

Page 326: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"cid":"43",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"_frontend",

"id":"43",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

"sparse":false

}

],

"isSmart":false,

"isSystem":true,

"isVolatile":false,

"journalSize":1048576,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"name":"_frontend",

"numberOfShards":1,

"planId":"43",

"replicationFactor":2,

"shardKeys":[

"_key"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

},

{

"indexes":[],

"parameters":{

"allowUserKeys":true,

"cid":"2",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"_graphs",

"id":"2",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

"sparse":false

}

],

"isSmart":false,

"isSystem":true,

"isVolatile":false,

"journalSize":1048576,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"name":"_graphs",

ReplicationDump

326

Page 327: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"numberOfShards":1,

"planId":"2",

"replicationFactor":2,

"shardKeys":[

"_key"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

},

{

"indexes":[],

"parameters":{

"allowUserKeys":true,

"cid":"11",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"_modules",

"id":"11",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

"sparse":false

}

],

"isSmart":false,

"isSystem":true,

"isVolatile":false,

"journalSize":1048576,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":9899

},

"name":"_modules",

"numberOfShards":1,

"planId":"11",

"replicationFactor":2,

"shardKeys":[

"_key"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

},

{

"indexes":[],

"parameters":{

"allowUserKeys":true,

"cid":"13",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"_routing",

"id":"13",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

ReplicationDump

327

Page 328: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

"sparse":false

}

],

"isSmart":false,

"isSystem":true,

"isVolatile":false,

"journalSize":4194304,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":9948

},

"name":"_routing",

"numberOfShards":1,

"planId":"13",

"replicationFactor":2,

"shardKeys":[

"_key"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

},

{

"indexes":[

{

"id":"9",

"type":"hash",

"fields":[

"user"

],

"selectivityEstimate":1,

"unique":true,

"sparse":true,

"deduplicate":true

}

],

"parameters":{

"allowUserKeys":true,

"cid":"6",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"_users",

"id":"6",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

"sparse":false

},

{

"id":"9",

"type":"hash",

"fields":[

"user"

],

"selectivityEstimate":1,

"unique":true,

"sparse":true,

"deduplicate":true

ReplicationDump

328

Page 329: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

}

],

"isSmart":false,

"isSystem":true,

"isVolatile":false,

"journalSize":4194304,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":11963

},

"name":"_users",

"numberOfShards":1,

"planId":"6",

"replicationFactor":2,

"shardKeys":[

"user"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

},

{

"indexes":[],

"parameters":{

"allowUserKeys":true,

"cid":"98",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"h68719E5AC6E7/98",

"id":"98",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

"sparse":false

}

],

"isSmart":false,

"isSystem":false,

"isVolatile":false,

"journalSize":33554432,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"name":"animals",

"numberOfShards":1,

"planId":"98",

"replicationFactor":1,

"shardKeys":[

"_key"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

},

{

"indexes":[],

"parameters":{

ReplicationDump

329

Page 330: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"allowUserKeys":true,

"cid":"92",

"count":0,

"deleted":false,

"doCompact":true,

"globallyUniqueId":"h68719E5AC6E7/92",

"id":"92",

"indexBuckets":8,

"indexes":[

{

"id":"0",

"type":"primary",

"fields":[

"_key"

],

"selectivityEstimate":1,

"unique":true,

"sparse":false

}

],

"isSmart":false,

"isSystem":false,

"isVolatile":false,

"journalSize":33554432,

"keyOptions":{

"type":"traditional",

"allowUserKeys":true,

"lastValue":0

},

"name":"demo",

"numberOfShards":1,

"planId":"92",

"replicationFactor":1,

"shardKeys":[

"_key"

],

"shards":{

},

"status":3,

"type":2,

"version":6,

"waitForSync":false

}

}

],

"state":{

"running":true,

"lastLogTick":"12006",

"lastUncommittedLogTick":"12034",

"totalEvents":4138,

"time":"2018-01-25T19:13:45Z"

},

"tick":"12034"

}

ReturnCodes

200:isreturnediftherequestwasexecutedsuccessfully.405:isreturnedwhenaninvalidHTTPmethodisused.500:isreturnedifanerroroccurredwhileassemblingtheresponse.

Examples

shell>curl--dump-http://localhost:8529/_api/replication/inventory

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

ReplicationDump

330

Page 331: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Withsomeadditionalindexes:

shell>curl--dump-http://localhost:8529/_api/replication/inventory

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyThebatchmethodwillcreateasnapshotofthecurrentstatethatthencanbedumped.AbatchIdisrequiredwhenusingthedumpapiwithrocksdb.

Createnewdumpbatch

handleadumpbatchcommand

POST/_api/replication/batchNote:Thesecallsareuninterestingtousers.

AJSONobjectwiththesepropertiesisrequired:

ttl:thetime-to-liveforthenewbatch(inseconds)AJSONobjectwiththebatchconfiguration.

Createsanewdumpbatchandreturnsthebatch'sid.

TheresponseisaJSONobjectwiththefollowingattributes:

id:theidofthebatch

Note:onacoordinator,thisrequestmusthavethequeryparameterDBserverwhichmustbeanIDofaDBserver.TheverysamerequestisforwardedsynchronouslytothatDBserver.Itisanerrorifthisattributeisnotboundinthecoordinatorcase.

ReturnCodes

200:isreturnedifthebatchwascreatedsuccessfully.400:isreturnedifthettlvalueisinvalidorifDBserverattributeisnotspecifiedorillegalonacoordinator.405:isreturnedwhenaninvalidHTTPmethodisused.

Deletesanexistingdumpbatch

handleadumpbatchcommand

DELETE/_api/replication/batch/{id}Note:Thesecallsareuninterestingtousers.

PathParameters

id(required):Theidofthebatch.

Deletestheexistingdumpbatch,allowingcompactionandcleanuptoresume.

Note:onacoordinator,thisrequestmusthavethequeryparameterDBserverwhichmustbeanIDofaDBserver.TheverysamerequestisforwardedsynchronouslytothatDBserver.Itisanerrorifthisattributeisnotboundinthecoordinatorcase.

ReturnCodes

204:isreturnedifthebatchwasdeletedsuccessfully.400:isreturnedifthebatchwasnotfound.405:isreturnedwhenaninvalidHTTPmethodisused.

Prolongexistingdumpbatch

handleadumpbatchcommand

PUT/_api/replication/batch/{id}Note:Thesecallsareuninterestingtousers.

ReplicationDump

331

Page 332: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

AJSONobjectwiththesepropertiesisrequired:

ttl:thetime-to-liveforthenewbatch(inseconds)

Extendsthettlofanexistingdumpbatch,usingthebatch'sidandtheprovidedttlvalue.

Ifthebatch'sttlcanbeextendedsuccessfully,theresponseisempty.

Note:onacoordinator,thisrequestmusthavethequeryparameterDBserverwhichmustbeanIDofaDBserver.TheverysamerequestisforwardedsynchronouslytothatDBserver.Itisanerrorifthisattributeisnotboundinthecoordinatorcase.

PathParameters

id(required):Theidofthebatch.

ReturnCodes

204:isreturnedifthebatch'sttlwasextendedsuccessfully.400:isreturnedifthettlvalueisinvalidorthebatchwasnotfound.405:isreturnedwhenaninvalidHTTPmethodisused.Thedumpmethodcanbeusedtofetchdatafromaspecificcollection.Astheresultsofthedumpcommandcanbehuge,dumpmaynotreturnalldatafromacollectionatonce.Instead,thedumpcommandmaybecalledrepeatedlybyreplicationclientsuntilthereisnomoredatatofetch.Thedumpcommandwillnotonlyreturnthecurrentdocumentsinthecollection,butalsodocumentupdatesanddeletions.

Pleasenotethatthedumpmethodwillonlyreturndocuments,updatesanddeletionsfromacollection'sjournalsanddatafiles.Operationsthatarestoredinthewrite-aheadlogonlywillnotbereturned.Inordertoensurethattheseoperationsareincludedinadump,thewrite-aheadlogmustbeflushedfirst.

Togettoanidenticalstateofdata,replicationclientsshouldapplytheindividualpartsofthedumpresultsinthesameorderastheyareprovided.

Returndataofacollection

returnsthewholecontentofonecollection

GET/_api/replication/dump

QueryParameters

collection(required):Thenameoridofthecollectiontodump.chunkSize(optional):Approximatemaximumsizeofthereturnedresult.batchId(required):rocksdbonly-Theidofthesnapshottousefrom(optional):mmfilesonly-Lowerboundtickvalueforresults.to(optional):mmfilesonly-Upperboundtickvalueforresults.includeSystem(optional):mmfilesonly-Includesystemcollectionsintheresult.Thedefaultvalueistrue.ticks(optional):mmfilesonly-Whetherornottoincludetickvaluesinthedump.Thedefaultvalueistrue.flush(optional):mmfilesonly-WhetherornottoflushtheWALbeforedumping.Thedefaultvalueistrue.

Returnsthedatafromthecollectionfortherequestedrange.

Whenthefromqueryparameterisnotused,collectioneventsarereturnedfromthebeginning.Whenthefromparameterisused,theresultwillonlycontaincollectionentrieswhichhavehighertickvaluesthanthespecifiedfromvalue(note:thelogentrywithatickvalueequaltofromwillbeexcluded).

Thetoqueryparametercanbeusedtooptionallyrestricttheupperboundoftheresulttoacertaintickvalue.Ifused,theresultwillonlycontaincollectionentrieswithtickvaluesupto(including)to.

ThechunkSizequeryparametercanbeusedtocontrolthesizeoftheresult.Itmustbespecifiedinbytes.ThechunkSizevaluewillonlybehonoredapproximately.OtherwiseatoolowchunkSizevaluecouldcausetheservertonotbeabletoputjustoneentryintotheresultandreturnit.Therefore,thechunkSizevaluewillonlybeconsultedafteranentryhasbeenwrittenintotheresult.IftheresultsizeisthenbiggerthanchunkSize,theserverwillrespondwithasmanyentriesasthereareintheresponsealready.IftheresultsizeisstillsmallerthanchunkSize,theserverwilltrytoreturnmoredataifthere'smoredatalefttoreturn.

IfchunkSizeisnotspecified,someserver-sidedefaultvaluewillbeused.

ReplicationDump

332

Page 333: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

TheContent-Typeoftheresultisapplication/x-arango-dump.Thisisaneasy-to-processformat,withallentriesgoingontoseparatelinesintheresponsebody.

EachlineitselfisaJSONobject,withatleastthefollowingattributes:

tick:theoperation'stickattribute

key:thekeyofthedocument/edgeorthekeyusedinthedeletionoperation

rev:therevisionidofthedocument/edgeorthedeletionoperation

data:theactualdocument/edgedatafortypes2300and2301.Thefulldocument/edgedatawillbereturnedevenforupdates.

type:thetypeofentry.Possiblevaluesfortypeare:

2300:documentinsertion/update

2301:edgeinsertion/update

2302:document/edgedeletion

Note:therewillbenodistinctionbetweeninsertsandupdateswhencallingthismethod.

Example:Emptycollection:

shell>curl--dump-http://localhost:8529/_api/replication/dump?collection=testCollection

HTTP/1.1204NoContent

x-content-type-options:nosniff

content-type:application/x-arango-dump;charset=utf-8

x-arango-replication-checkmore:false

x-arango-replication-lastincluded:0

Example:Non-emptycollection:

shell>curl--dump-http://localhost:8529/_api/replication/dump?collection=testCollection

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/x-arango-dump;charset=utf-8

x-arango-replication-checkmore:false

x-arango-replication-lastincluded:11986

"{\"tick\":\"11980\",\"type\":2300,\"data\":{\"_id\":\"testCollection/123456\",\"_key\":\"123456\",\"_rev\":\"_WQ47bCW--D\",\"b

\":1,\"c\":false,\"d\":\"additionalvalue\"}}

{\"tick\":\"11984\",\"type\":2302,\"data\":{\"_key\":\"foobar\",\"_rev\":\"_WQ47bCa--B\"}}

{\"tick\":\"11986\",\"type\":2302,\"data\":{\"_key\":\"abcdef\",\"_rev\":\"_WQ47bCa--D\"}}

"

ReturnCodes

200:isreturnediftherequestwasexecutedsuccessfullyanddatawasreturned.Theheaderx-arango-replication-lastincludedissettothetickofthelastdocumentreturned.204:isreturnediftherequestwasexecutedsuccessfully,buttherewasnocontentavailable.Theheaderx-arango-replication-lastincludedis0inthiscase.400:isreturnedifeitherthefromortovaluesareinvalid.404:isreturnedwhenthecollectioncouldnotbefound.405:isreturnedwhenaninvalidHTTPmethodisused.500:isreturnedifanerroroccurredwhileassemblingtheresponse.

ReplicationDump

333

Page 334: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Examples

Emptycollection:

shell>curl--dump-http://localhost:8529/_api/replication/dump?collection=testCollection

HTTP/1.1204NoContent

x-content-type-options:nosniff

content-type:application/x-arango-dump;charset=utf-8

x-arango-replication-checkmore:false

x-arango-replication-lastincluded:0

Non-emptycollection:

shell>curl--dump-http://localhost:8529/_api/replication/dump?collection=testCollection

HTTP/1.1200OK

x-content-type-options:nosniff

content-type:application/x-arango-dump;charset=utf-8

x-arango-replication-checkmore:false

x-arango-replication-lastincluded:11986

"{\"tick\":\"11980\",\"type\":2300,\"data\":

{\"_id\":\"testCollection/123456\",\"_key\":\"123456\",\"_rev\":\"_WQ47bCW--

D\",\"b\":1,\"c\":false,\"d\":\"additional

value\"}}\n{\"tick\":\"11984\",\"type\":2302,\"data\":

{\"_key\":\"foobar\",\"_rev\":\"_WQ47bCa--

B\"}}\n{\"tick\":\"11986\",\"type\":2302,\"data\":

{\"_key\":\"abcdef\",\"_rev\":\"_WQ47bCa--D\"}}\n"

Synchronizedatafromaremoteendpoint

startareplication

PUT/_api/replication/sync

AJSONobjectwiththesepropertiesisrequired:

username:anoptionalArangoDBusernametousewhenconnectingtotheendpoint.includeSystem:whetherornotsystemcollectionoperationswillbeappliedendpoint:themasterendpointtoconnectto(e.g."tcp://192.168.173.13:8529").initialSyncMaxWaitTime:themaximumwaittime(inseconds)thattheinitialsynchronizationwillwaitforaresponsefromthemasterwhenfetchinginitialcollectiondata.Thiswaittimecanbeusedtocontrolafterwhattimetheinitialsynchronizationwillgiveupwaitingforaresponseandfail.Thisvaluewillbeignoredifsetto0.database:thedatabasenameonthemaster(ifnotspecified,defaultstothenameofthelocalcurrentdatabase).restrictType:anoptionalstringvalueforcollectionfiltering.Whenspecified,theallowedvaluesareincludeorexclude.incremental:ifsettotrue,thenanincrementalsynchronizationmethodwillbeusedforsynchronizingdataincollections.Thismethodisusefulwhencollectionsalreadyexistlocally,andonlytheremainingdifferencesneedtobetransferredfromtheremoteendpoint.Inthiscase,theincrementalsynchronizationcanbefasterthanafullsynchronization.Thedefaultvalueisfalse,meaningthatthecompletedatafromtheremotecollectionwillbetransferred.restrictCollections(string):anoptionalarrayofcollectionsforusewithrestrictType.IfrestrictTypeisinclude,onlythespecifiedcollectionswillbesychronised.IfrestrictTypeisexclude,allbutthespecifiedcollectionswillbesynchronized.password:thepasswordtousewhenconnectingtotheendpoint.

StartsafulldatasynchronizationfromaremoteendpointintothelocalArangoDBdatabase.

ReplicationDump

334

Page 335: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

ThesyncmethodcanbeusedbyreplicationclientstoconnectanArangoDBdatabasetoaremoteendpoint,fetchtheremotelistofcollectionsandindexes,andcollectiondata.ItwillthuscreatealocalbackupofthestateofdataattheremoteArangoDBdatabase.syncworksonaper-databaselevel.

syncwillfirstfetchthelistofcollectionsandindexesfromtheremoteendpoint.ItdoessobycallingtheinventoryAPIoftheremotedatabase.ItwillthenpurgedatainthelocalArangoDBdatabase,andafterstartwilltransfercollectiondatafromtheremotedatabasetothelocalArangoDBdatabase.Itwillextractdatafromtheremotedatabasebycallingtheremotedatabase'sdumpAPIuntilalldataarefetched.

Incaseofsuccess,thebodyoftheresponseisaJSONobjectwiththefollowingattributes:

collections:anarrayofcollectionsthatweretransferredfromtheendpoint

lastLogTick:thelastlogtickontheendpointatthetimethetransferwasstarted.Usethisvalueasthefromvaluewhenstartingthecontinuoussynchronizationlater.

WARNING:callingthismethodwillsychronizedatafromthecollectionsfoundontheremoteendpointtothelocalArangoDBdatabase.Alldatainthelocalcollectionswillbepurgedandreplacedwithdatafromtheendpoint.

Usewithcaution!

Note:thismethodisnotsupportedonacoordinatorinacluster.

ReturnCodes

200:isreturnediftherequestwasexecutedsuccessfully.400:isreturnediftheconfigurationisincompleteormalformed.405:isreturnedwhenaninvalidHTTPmethodisused.500:isreturnedifanerroroccurredduringsychronization.501:isreturnedwhenthisoperationiscalledonacoordinatorinacluster.

Returnclusterinventoryofcollectionsandindexes

retursanoverviewofcollectionsandindexesinacluster

GET/_api/replication/clusterInventory

QueryParameters

includeSystem(optional):Includesystemcollectionsintheresult.Thedefaultvalueistrue.

Returnsthearrayofcollectionsandindexesavailableonthecluster.

TheresponsewillbeanarrayofJSONobjects,oneforeachcollection.Eachcollectioncontainscontainsexactlytwokeys"parameters"and"indexes".ThisinformationcomesfromPlan/Collections/{DB-Name}/intheagency,justthattheindexes*attributethereisrelocatedtoadjustittothedataformatofarangodump.

ReturnCodes

200:isreturnediftherequestwasexecutedsuccessfully.405:isreturnedwhenaninvalidHTTPmethodisused.500:isreturnedifanerroroccurredwhileassemblingtheresponse.

ReplicationDump

335

Page 336: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

ReplicationLoggerCommandsPreviousversionsofArangoDBallowedstarting,stoppingandconfiguringthereplicationlogger.ThesecommandsaresuperfluousinArangoDB2.2asalldata-modificationoperationsarewrittentotheserver'swrite-aheadlogandarenothandledbyaseparateloggeranymore.

TheonlyusefuloperationsremainingsinceArangoDB2.2aretoquerythecurrentstateoftheloggerandtofetchthelatestchangeswrittenbythelogger.Theoperationswillreturnthestateanddatafromthewrite-aheadlog.

Returnreplicationloggerstate

returnsthestateofthereplicationlogger

GET/_api/replication/logger-state

Returnsthecurrentstateoftheserver'sreplicationlogger.Thestatewillincludeinformationaboutwhethertheloggerisrunningandaboutthelastloggedtickvalue.Thistickvalueisimportantforincrementalfetchingofdata.

ThebodyoftheresponsecontainsaJSONobjectwiththefollowingattributes:

state:thecurrentloggerstateasaJSONobjectwiththefollowingsub-attributes:

running:whetherornottheloggerisrunning

lastLogTick:thetickvalueofthelatestticktheloggerhaslogged.Thisvaluecanbeusedforincrementalfetchingoflogdata.

totalEvents:totalnumberofeventsloggedsincetheserverwasstarted.Thevalueisnotresetbetweenmultiplestopsandre-startsofthelogger.

time:thecurrentdateandtimeontheloggerserver

server:aJSONobjectwiththefollowingsub-attributes:

version:theloggerserver'sversion

serverId:theloggerserver'sid

clients:returnsthelastfetchstatusbyreplicationclientsconnectedtothelogger.EachclientisreturnedasaJSONobjectwiththefollowingattributes:

serverId:serveridofclient

lastServedTick:lasttickvalueservedtothisclientviathelogger-followAPI

time:dateandtimewhenthisclientlastcalledthelogger-followAPI

Example:Returnsthestateofthereplicationlogger.

shell>curl--dump-http://localhost:8529/_api/replication/logger-state

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"state":{

"running":true,

"lastLogTick":"12090",

"lastUncommittedLogTick":"12090",

"totalEvents":4164,

"time":"2018-01-25T19:13:47Z"

},

"server":{

ReplicationLogger

336

Page 337: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"version":"3.3.3",

"serverId":"114837197342439"

},

"clients":[]

}

ReturnCodes

200:isreturnediftheloggerstatecouldbedeterminedsuccessfully.405:isreturnedwhenaninvalidHTTPmethodisused.500:isreturnediftheloggerstatecouldnotbedetermined.

Examples

Returnsthestateofthereplicationlogger.

shell>curl--dump-http://localhost:8529/_api/replication/logger-state

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyToquerythelatestchangesloggedbythereplicationlogger,theHTTPinterfacealsoprovidesthelogger-followmethod.

ThismethodshouldbeusedbyreplicationclientstoincrementallyfetchupdatesfromanArangoDBdatabase.

Returnslogentries

Fetchloglinesfromtheserver

GET/_api/replication/logger-follow

QueryParameters

from(optional):Lowerboundtickvalueforresults.to(optional):Upperboundtickvalueforresults.chunkSize(optional):Approximatemaximumsizeofthereturnedresult.includeSystem(optional):Includesystemcollectionsintheresult.Thedefaultvalueistrue.

Returnsdatafromtheserver'sreplicationlog.Thismethodcanbecalledbyreplicationclientsafteraninitialsynchronizationofdata.Themethodwillreturnall"recent"logentriesfromtheloggerserver,andtheclientscanreplayandapplytheseentrieslocallysotheygettothesamedatastateastheloggerserver.

Clientscancallthismethodrepeatedlytoincrementallyfetchallchangesfromtheloggerserver.Inthiscase,theyshouldprovidethefromvaluesotheywillonlygetreturnedthelogeventssincetheirlastfetch.

Whenthefromqueryparameterisnotused,theloggerserverwillreturnlogentriesstartingatthebeginningofitsreplicationlog.Whenthefromparameterisused,theloggerserverwillonlyreturnlogentrieswhichhavehighertickvaluesthanthespecifiedfromvalue(note:thelogentrywithatickvalueequaltofromwillbeexcluded).Usethefromvaluewhenincrementallyfetchinglogdata.

Thetoqueryparametercanbeusedtooptionallyrestricttheupperboundoftheresulttoacertaintickvalue.Ifused,theresultwillcontainonlylogeventswithtickvaluesupto(including)to.Inincrementalfetching,thereisnoneedtousethetoparameter.Itonlymakessenseinspecialsituations,whenonlypartsofthechangelogarerequired.

ThechunkSizequeryparametercanbeusedtocontrolthesizeoftheresult.Itmustbespecifiedinbytes.ThechunkSizevaluewillonlybehonoredapproximately.OtherwiseatoolowchunkSizevaluecouldcausetheservertonotbeabletoputjustonelogentryintotheresultandreturnit.Therefore,thechunkSizevaluewillonlybeconsultedafteralogentryhasbeenwrittenintotheresult.IftheresultsizeisthenbiggerthanchunkSize,theserverwillrespondwithasmanylogentriesasthereareintheresponsealready.IftheresultsizeisstillsmallerthanchunkSize,theserverwilltrytoreturnmoredataifthere'smoredatalefttoreturn.

IfchunkSizeisnotspecified,someserver-sidedefaultvaluewillbeused.

ReplicationLogger

337

Page 338: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

TheContent-Typeoftheresultisapplication/x-arango-dump.Thisisaneasy-to-processformat,withalllogeventsgoingontoseparatelinesintheresponsebody.EachlogeventitselfisaJSONobject,withatleastthefollowingattributes:

tick:thelogeventtickvalue

type:thelogeventtype

Individuallogeventswillalsohaveadditionalattributes,dependingontheeventtype.Afewcommonattributeswhichareusedformultipleeventstypesare:

cid:idofthecollectiontheeventwasfor

tid:idofthetransactiontheeventwascontainedin

key:documentkey

rev:documentrevisionid

data:theoriginaldocumentdata

Amoredetaileddescriptionoftheindividualreplicationeventtypesandtheirdatastructurescanbefoundinthemanual.

TheresponsewillalsocontainthefollowingHTTPheaders:

x-arango-replication-active:whetherornottheloggerisactive.Clientscanusethisflagasanindicationfortheirpollingfrequency.Iftheloggerisnotactiveandtherearenomorereplicationeventsavailable,itmightbesensibleforaclienttoabort,ortogotosleepforalongtimeandtryagainlatertocheckwhethertheloggerhasbeenactivated.

x-arango-replication-lastincluded:thetickvalueofthelastincludedvalueintheresult.Inincrementallogfetching,thisvaluecanbeusedasthefromvalueforthefollowingrequest.Notethatiftheresultisempty,thevaluewillbe0.Thisvalueshouldnotbeusedasfromvaluebyclientsinthenextrequest(otherwisetheserverwouldreturnthelogeventsfromthestartofthelogagain).

x-arango-replication-lasttick:thelasttickvaluetheloggerserverhaslogged(notnecessarilyincludedintheresult).Bycomparingthethelasttickandlastincludedtickvalues,clientshaveanapproximateindicationofhowmanyeventstherearestilllefttofetch.

x-arango-replication-checkmore:whetherornottherealreadyexistsmorelogdatawhichtheclientcouldfetchimmediately.Ifthereismorelogdataavailable,theclientcouldcalllogger-followagainwithanadjustedfromvaluetofetchremaininglogentriesuntiltherearenomore.

Ifthereisn'tanymorelogdatatofetch,theclientmightdecidetogotosleepforawhilebeforecallingtheloggeragain.

Note:thismethodisnotsupportedonacoordinatorinacluster.

Example:Nologeventsavailable

shell>curl--dump-http://localhost:8529/_api/replication/logger-follow?from=12070

HTTP/1.1204NoContent

x-arango-replication-lastincluded:0

x-content-type-options:nosniff

content-type:application/x-arango-dump;charset=utf-8

x-arango-replication-checkmore:false

x-arango-replication-frompresent:true

x-arango-replication-active:true

x-arango-replication-lasttick:12070

Example:Afewlogevents

shell>curl--dump-http://localhost:8529/_api/replication/logger-follow?from=12070

ReplicationLogger

338

Page 339: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1200OK

x-arango-replication-lastincluded:12090

x-content-type-options:nosniff

content-type:application/x-arango-dump;charset=utf-8

x-arango-replication-checkmore:false

x-arango-replication-frompresent:true

x-arango-replication-active:true

x-arango-replication-lasttick:12090

"{\"tick\":\"12072\",\"type\":2000,\"database\":\"1\",\"cid\":\"12071\",\"cname\":\"products\",\"data\":{\"allowUserKeys\":true

,\"cid\":\"12071\",\"count\":0,\"deleted\":false,\"doCompact\":true,\"globallyUniqueId\":\"h68719E5AC6E7/12071\",\"id\":\"12071

\",\"indexBuckets\":8,\"indexes\":[{\"fields\":[\"_key\"],\"id\":\"0\",\"selectivityEstimate\":1,\"sparse\":false,\"type\":\"pr

imary\",\"unique\":true}],\"isSmart\":false,\"isSystem\":false,\"isVolatile\":false,\"journalSize\":33554432,\"keyOptions\":{\"

allowUserKeys\":true,\"lastValue\":0,\"type\":\"traditional\"},\"name\":\"products\",\"numberOfShards\":1,\"planId\":\"12071\",

\"replicationFactor\":1,\"shardKeys\":[\"_key\"],\"shards\":{},\"status\":3,\"type\":2,\"version\":6,\"waitForSync\":false}}

{\"tick\":\"12076\",\"type\":2300,\"tid\":\"0\",\"database\":\"1\",\"cid\":\"12071\",\"cname\":\"products\",\"data\":{\"_id\":\

"_unknown/p1\",\"_key\":\"p1\",\"_rev\":\"_WQ47eYu--_\",\"name\":\"fluxcompensator\"}}

{\"tick\":\"12078\",\"type\":2300,\"tid\":\"0\",\"database\":\"1\",\"cid\":\"12071\",\"cname\":\"products\",\"data\":{\"_id\":\

"_unknown/p2\",\"_key\":\"p2\",\"_rev\":\"_WQ47eYu--B\",\"hp\":5100,\"name\":\"hybridhovercraft\"}}

{\"tick\":\"12080\",\"type\":2302,\"tid\":\"0\",\"database\":\"1\",\"cid\":\"12071\",\"cname\":\"products\",\"data\":{\"_key\":

\"p1\",\"_rev\":\"_WQ47eYu--D\"}}

{\"tick\":\"12082\",\"type\":2300,\"tid\":\"0\",\"database\":\"1\",\"cid\":\"12071\",\"cname\":\"products\",\"data\":{\"_id\":\

"_unknown/p2\",\"_key\":\"p2\",\"_rev\":\"_WQ47eYy--_\",\"hp\":5100,\"name\":\"brokenhovercraft\"}}

{\"tick\":\"12083\",\"type\":2001,\"database\":\"1\",\"cid\":\"12071\",\"cname\":\"products\",\"data\":{\"cuid\":\"h68719E5AC6E

7/12071\",\"id\":\"12071\",\"name\":\"products\"}}

{\"tick\":\"12086\",\"type\":2300,\"tid\":\"0\",\"database\":\"1\",\"cid\":\"6\",\"cname\":\"_users\",\"data\":{\"_id\":\"_user

s/10695\",\"_key\":\"10695\",\"_rev\":\"_WQ47eY6--_\",\"authData\":{\"active\":false,\"simple\":{\"hash\":\"1b3c695816f896d7d52

522b6e7fac12b1da668981aa95710ae1ab36828df87f7\",\"salt\":\"aa6d4cfe\",\"method\":\"sha256\"}},\"databases\":{},\"source\":\"COL

LECTION\",\"user\":\"tester\",\"userData\":{}}}

{\"tick\":\"12088\",\"type\":2300,\"tid\":\"0\",\"database\":\"1\",\"cid\":\"6\",\"cname\":\"_users\",\"data\":{\"_id\":\"_user

s/89\",\"_key\":\"89\",\"_rev\":\"_WQ47eY6--B\",\"authData\":{\"active\":true,\"simple\":{\"hash\":\"90297fadeade5ffb0078e4f5aa

d32f22ab2180f11094b97794ac8a7326e2c30c\",\"salt\":\"a7522145\",\"method\":\"sha256\"}},\"databases\":{\"_system\":{\"permission

s\":{\"read\":true,\"write\":true},\"collections\":{\"*\":{\"permissions\":{\"read\":true,\"write\":true}}}},\"*\":{\"permissio

ns\":{\"read\":true,\"write\":true},\"collections\":{\"*\":{\"permissions\":{\"read\":true,\"write\":true}}}}},\"source\":\"COL

LECTION\",\"user\":\"root\"}}

{\"tick\":\"12090\",\"type\":2300,\"tid\":\"0\",\"database\":\"1\",\"cid\":\"6\",\"cname\":\"_users\",\"data\":{\"_id\":\"_user

s/10683\",\"_key\":\"10683\",\"_rev\":\"_WQ47eY6--D\",\"authData\":{\"active\":true,\"simple\":{\"hash\":\"bfff9a16dea55c4d6ec7

5b595684c76f0a020aa239c2fb7fc633b8a094289fbb\",\"salt\":\"6e4298cb\",\"method\":\"sha256\"}},\"databases\":{},\"source\":\"COLL

ECTION\",\"user\":\"admin\",\"userData\":{}}}

"

Example:Moreeventsthanwouldfitintotheresponse

shell>curl--dump-http://localhost:8529/_api/replication/logger-follow?from=12050&chunkSize=400

HTTP/1.1200OK

x-arango-replication-lastincluded:12052

x-content-type-options:nosniff

content-type:application/x-arango-dump;charset=utf-8

x-arango-replication-checkmore:true

x-arango-replication-frompresent:true

x-arango-replication-active:true

x-arango-replication-lasttick:12070

"{\"tick\":\"12052\",\"type\":2000,\"database\":\"1\",\"cid\":\"12051\",\"cname\":\"products\",\"data\":{\"allowUserKeys\":true

,\"cid\":\"12051\",\"count\":0,\"deleted\":false,\"doCompact\":true,\"globallyUniqueId\":\"h68719E5AC6E7/12051\",\"id\":\"12051

\",\"indexBuckets\":8,\"indexes\":[{\"fields\":[\"_key\"],\"id\":\"0\",\"selectivityEstimate\":1,\"sparse\":false,\"type\":\"pr

imary\",\"unique\":true}],\"isSmart\":false,\"isSystem\":false,\"isVolatile\":false,\"journalSize\":33554432,\"keyOptions\":{\"

allowUserKeys\":true,\"lastValue\":0,\"type\":\"traditional\"},\"name\":\"products\",\"numberOfShards\":1,\"planId\":\"12051\",

\"replicationFactor\":1,\"shardKeys\":[\"_key\"],\"shards\":{},\"status\":3,\"type\":2,\"version\":6,\"waitForSync\":false}}

"

ReturnCodes

200:isreturnediftherequestwasexecutedsuccessfully,andtherearelogeventsavailablefortherequestedrange.Theresponsebodywillnotbeemptyinthiscase.204:isreturnediftherequestwasexecutedsuccessfully,buttherearenologeventsavailablefortherequestedrange.Theresponsebodywillbeemptyinthiscase.

ReplicationLogger

339

Page 340: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

400:isreturnedifeitherthefromortovaluesareinvalid.405:isreturnedwhenaninvalidHTTPmethodisused.500:isreturnedifanerroroccurredwhileassemblingtheresponse.501:isreturnedwhenthisoperationiscalledonacoordinatorinacluster.

Examples

Nologeventsavailable

shell>curl--dump-http://localhost:8529/_api/replication/logger-follow?from=12070

HTTP/1.1204NoContent

x-arango-replication-lastincluded:0

x-content-type-options:nosniff

content-type:application/x-arango-dump;charset=utf-8

x-arango-replication-checkmore:false

x-arango-replication-frompresent:true

x-arango-replication-active:true

x-arango-replication-lasttick:12070

Afewlogevents

shell>curl--dump-http://localhost:8529/_api/replication/logger-follow?from=12070

HTTP/1.1200OK

x-arango-replication-lastincluded:12090

x-content-type-options:nosniff

content-type:application/x-arango-dump;charset=utf-8

x-arango-replication-checkmore:false

x-arango-replication-frompresent:true

x-arango-replication-active:true

x-arango-replication-lasttick:12090

"

{\"tick\":\"12072\",\"type\":2000,\"database\":\"1\",\"cid\":\"12071\",\"cname\":\"product

s\",\"data\":

{\"allowUserKeys\":true,\"cid\":\"12071\",\"count\":0,\"deleted\":false,\"doCompact\":true

,\"globallyUniqueId\":\"h68719E5AC6E7/12071\",\"id\":\"12071\",\"indexBuckets\":8,\"indexe

s\":[{\"fields\":

[\"_key\"],\"id\":\"0\",\"selectivityEstimate\":1,\"sparse\":false,\"type\":\"primary\",\"

unique\":true}],\"isSmart\":false,\"isSystem\":false,\"isVolatile\":false,\"journalSize\":

33554432,\"keyOptions\":

{\"allowUserKeys\":true,\"lastValue\":0,\"type\":\"traditional\"},\"name\":\"products\",\"

numberOfShards\":1,\"planId\":\"12071\",\"replicationFactor\":1,\"shardKeys\":

[\"_key\"],\"shards\":

{},\"status\":3,\"type\":2,\"version\":6,\"waitForSync\":false}}\n{\"tick\":\"12076\",\"ty

pe\":2300,\"tid\":\"0\",\"database\":\"1\",\"cid\":\"12071\",\"cname\":\"products\",\"data

\":{\"_id\":\"_unknown/p1\",\"_key\":\"p1\",\"_rev\":\"_WQ47eYu--_\",\"name\":\"flux

compensator\"}}\n{\"tick\":\"12078\",\"type\":2300,\"tid\":\"0\",\"database\":\"1\",\"cid\

":\"12071\",\"cname\":\"products\",\"data\":

{\"_id\":\"_unknown/p2\",\"_key\":\"p2\",\"_rev\":\"_WQ47eYu--

B\",\"hp\":5100,\"name\":\"hybrid

hovercraft\"}}\n{\"tick\":\"12080\",\"type\":2302,\"tid\":\"0\",\"database\":\"1\",\"cid\"

:\"12071\",\"cname\":\"products\",\"data\":{\"_key\":\"p1\",\"_rev\":\"_WQ47eYu--

D\"}}\n{\"tick\":\"12082\",\"type\":2300,\"tid\":\"0\",\"database\":\"1\",\"cid\":\"12071\

",\"cname\":\"products\",\"data\":

ReplicationLogger

340

Page 341: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{\"_id\":\"_unknown/p2\",\"_key\":\"p2\",\"_rev\":\"_WQ47eYy--

_\",\"hp\":5100,\"name\":\"broken

hovercraft\"}}\n{\"tick\":\"12083\",\"type\":2001,\"database\":\"1\",\"cid\":\"12071\",\"c

name\":\"products\",\"data\":

{\"cuid\":\"h68719E5AC6E7/12071\",\"id\":\"12071\",\"name\":\"products\"}}\n{\"tick\":\"12

086\",\"type\":2300,\"tid\":\"0\",\"database\":\"1\",\"cid\":\"6\",\"cname\":\"_users\",\"

data\":{\"_id\":\"_users/10695\",\"_key\":\"10695\",\"_rev\":\"_WQ47eY6--_\",\"authData\":

{\"active\":false,\"simple\":

{\"hash\":\"1b3c695816f896d7d52522b6e7fac12b1da668981aa95710ae1ab36828df87f7\",\"salt\":\"

aa6d4cfe\",\"method\":\"sha256\"}},\"databases\":

{},\"source\":\"COLLECTION\",\"user\":\"tester\",\"userData\":

{}}}\n{\"tick\":\"12088\",\"type\":2300,\"tid\":\"0\",\"database\":\"1\",\"cid\":\"6\",\"c

name\":\"_users\",\"data\":{\"_id\":\"_users/89\",\"_key\":\"89\",\"_rev\":\"_WQ47eY6--

B\",\"authData\":{\"active\":true,\"simple\":

{\"hash\":\"90297fadeade5ffb0078e4f5aad32f22ab2180f11094b97794ac8a7326e2c30c\",\"salt\":\"

a7522145\",\"method\":\"sha256\"}},\"databases\":{\"_system\":{\"permissions\":

{\"read\":true,\"write\":true},\"collections\":{\"*\":{\"permissions\":

{\"read\":true,\"write\":true}}}},\"*\":{\"permissions\":

{\"read\":true,\"write\":true},\"collections\":{\"*\":{\"permissions\":

{\"read\":true,\"write\":true}}}}},\"source\":\"COLLECTION\",\"user\":\"root\"}}\n{\"tick\

":\"12090\",\"type\":2300,\"tid\":\"0\",\"database\":\"1\",\"cid\":\"6\",\"cname\":\"_user

s\",\"data\":{\"_id\":\"_users/10683\",\"_key\":\"10683\",\"_rev\":\"_WQ47eY6--

D\",\"authData\":{\"active\":true,\"simple\":

{\"hash\":\"bfff9a16dea55c4d6ec75b595684c76f0a020aa239c2fb7fc633b8a094289fbb\",\"salt\":\"

6e4298cb\",\"method\":\"sha256\"}},\"databases\":

{},\"source\":\"COLLECTION\",\"user\":\"admin\",\"userData\":{}}}\n"

Moreeventsthanwouldfitintotheresponse

shell>curl--dump-http://localhost:8529/_api/replication/logger-follow?

from=12050&chunkSize=400

HTTP/1.1200OK

x-arango-replication-lastincluded:12052

x-content-type-options:nosniff

content-type:application/x-arango-dump;charset=utf-8

x-arango-replication-checkmore:true

x-arango-replication-frompresent:true

x-arango-replication-active:true

x-arango-replication-lasttick:12070

"

{\"tick\":\"12052\",\"type\":2000,\"database\":\"1\",\"cid\":\"12051\",\"cname\":\"product

s\",\"data\":

{\"allowUserKeys\":true,\"cid\":\"12051\",\"count\":0,\"deleted\":false,\"doCompact\":true

,\"globallyUniqueId\":\"h68719E5AC6E7/12051\",\"id\":\"12051\",\"indexBuckets\":8,\"indexe

s\":[{\"fields\":

[\"_key\"],\"id\":\"0\",\"selectivityEstimate\":1,\"sparse\":false,\"type\":\"primary\",\"

unique\":true}],\"isSmart\":false,\"isSystem\":false,\"isVolatile\":false,\"journalSize\":

33554432,\"keyOptions\":

{\"allowUserKeys\":true,\"lastValue\":0,\"type\":\"traditional\"},\"name\":\"products\",\"

numberOfShards\":1,\"planId\":\"12051\",\"replicationFactor\":1,\"shardKeys\":

[\"_key\"],\"shards\":{},\"status\":3,\"type\":2,\"version\":6,\"waitForSync\":false}}\n"

ReplicationLogger

341

Page 342: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Tocheckwhatrangeofchangesisavailable(identifiedbytickvalues),theHTTPinterfaceprovidesthemethodslogger-first-tickandlogger-tick-ranges.Replicationclientscanusethemethodstodetermineifcertaindata(identifiedbyatickdate)isstillavailableonthemaster.

Returnsthefirstavailabletickvalue

Returnthefirstavailabletickvaluefromtheserver

GET/_api/replication/logger-first-tick

Returnsthefirstavailabletickvaluethatcanbeservedfromtheserver'sreplicationlog.Thismethodcanbecalledbyreplicationclientsaftertodetermineifcertaindata(identifiedbyatickvalue)isstillavailableforreplication.

TheresultisaJSONobjectcontainingtheattributefirstTick.Thisattributecontainstheminimumtickvalueavailableintheserver'sreplicationlog.

Note:thismethodisnotsupportedonacoordinatorinacluster.

Example:Returningthefirstavailabletick

shell>curl--dump-http://localhost:8529/_api/replication/logger-first-tick

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

"{\"firstTick\":\"5\"}"

ReturnCodes

200:isreturnediftherequestwasexecutedsuccessfully.405:isreturnedwhenaninvalidHTTPmethodisused.500:isreturnedifanerroroccurredwhileassemblingtheresponse.501:isreturnedwhenthisoperationiscalledonacoordinatorinacluster.

Examples

Returningthefirstavailabletick

shell>curl--dump-http://localhost:8529/_api/replication/logger-first-tick

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

"{\"firstTick\":\"5\"}"

ReturnthetickrangesavailableintheWALlogfiles

returnsthetickvaluerangesavailableinthelogfiles

GET/_api/replication/logger-tick-ranges

ReturnsthecurrentlyavailablerangesoftickvaluesforallcurrentlyavailableWALlogfiles.Thetickvaluescanbeusedtodetermineifcertaindata(identifiedbytickvalue)arestillavailableforreplication.

ThebodyoftheresponsecontainsaJSONarray.Eacharraymemberisanobjectthatdescribesasinglelogfile.Eachobjecthasthefollowingattributes:

datafile:nameofthelogfile

ReplicationLogger

342

Page 343: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

status:statusofthedatafile,intextualform(e.g."sealed","open")

tickMin:minimumtickvaluecontainedinlogfile

tickMax:maximumtickvaluecontainedinlogfile

Example:Returnstheavailabletickranges.

shell>curl--dump-http://localhost:8529/_api/replication/logger-tick-ranges

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[

{

"datafile":"/tmp/arangosh_JqNjRy/tmp-26045-3007930411/data/journals/logfile-3.db",

"status":"collected",

"tickMin":"5",

"tickMax":"10381"

},

{

"datafile":"/tmp/arangosh_JqNjRy/tmp-26045-3007930411/data/journals/logfile-85.db",

"status":"collected",

"tickMin":"10397",

"tickMax":"10483"

},

{

"datafile":"/tmp/arangosh_JqNjRy/tmp-26045-3007930411/data/journals/logfile-86.db",

"status":"collected",

"tickMin":"10490",

"tickMax":"11986"

},

{

"datafile":"/tmp/arangosh_JqNjRy/tmp-26045-3007930411/data/journals/logfile-10384.db",

"status":"collected",

"tickMin":"11994",

"tickMax":"12003"

},

{

"datafile":"/tmp/arangosh_JqNjRy/tmp-26045-3007930411/data/journals/logfile-10486.db",

"status":"open",

"tickMin":"12009",

"tickMax":"12090"

}

]

ReturnCodes

200:isreturnedifthetickrangescouldbedeterminedsuccessfully.405:isreturnedwhenaninvalidHTTPmethodisused.500:isreturnediftheloggerstatecouldnotbedetermined.501:isreturnedwhenthisoperationiscalledonacoordinatorinacluster.

Examples

Returnstheavailabletickranges.

shell>curl--dump-http://localhost:8529/_api/replication/logger-tick-ranges

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[

ReplicationLogger

343

Page 344: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"datafile":"/tmp/arangosh_JqNjRy/tmp-26045-3007930411/data/journals/logfile-3.db",

"status":"collected",

"tickMin":"5",

"tickMax":"10381"

},

{

"datafile":"/tmp/arangosh_JqNjRy/tmp-26045-3007930411/data/journals/logfile-85.db",

"status":"collected",

"tickMin":"10397",

"tickMax":"10483"

},

{

"datafile":"/tmp/arangosh_JqNjRy/tmp-26045-3007930411/data/journals/logfile-86.db",

"status":"collected",

"tickMin":"10490",

"tickMax":"11986"

},

{

"datafile":"/tmp/arangosh_JqNjRy/tmp-26045-3007930411/data/journals/logfile-

10384.db",

"status":"collected",

"tickMin":"11994",

"tickMax":"12003"

},

{

"datafile":"/tmp/arangosh_JqNjRy/tmp-26045-3007930411/data/journals/logfile-

10486.db",

"status":"open",

"tickMin":"12009",

"tickMax":"12090"

}

]

ReplicationLogger

344

Page 345: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

ReplicationApplierCommandsTheappliercommandsallowtoremotelystart,stop,andquerythestateandconfigurationofanArangoDBdatabase'sreplicationapplier.

Returnconfigurationofreplicationapplier

fetchthecurrentreplicationconfiguration

GET/_api/replication/applier-config

Returnstheconfigurationofthereplicationapplier.

ThebodyoftheresponseisaJSONobjectwiththeconfiguration.Thefollowingattributesmaybepresentintheconfiguration:

endpoint:theloggerservertoconnectto(e.g."tcp://192.168.173.13:8529").

database:thenameofthedatabasetoconnectto(e.g."_system").

username:anoptionalArangoDBusernametousewhenconnectingtotheendpoint.

password:thepasswordtousewhenconnectingtotheendpoint.

maxConnectRetries:themaximumnumberofconnectionattemptstheapplierwillmakeinarow.Iftheappliercannotestablishaconnectiontotheendpointinthisnumberofattempts,itwillstopitself.

connectTimeout:thetimeout(inseconds)whenattemptingtoconnecttotheendpoint.Thisvalueisusedforeachconnectionattempt.

requestTimeout:thetimeout(inseconds)forindividualrequeststotheendpoint.

chunkSize:therequestedmaximumsizeforlogtransferpacketsthatisusedwhentheendpointiscontacted.

autoStart:whetherornottoauto-startthereplicationapplieron(nextandfollowing)serverstarts

adaptivePolling:whetherornotthereplicationapplierwilluseadaptivepolling.

includeSystem:whetherornotsystemcollectionoperationswillbeapplied

autoResync:whetherornottheslaveshouldperformafullautomaticresynchronizationwiththemasterincasethemastercannotservelogdatarequestedbytheslave,orwhenthereplicationisstartedandnotickvaluecanbefound.

autoResyncRetries:numberofresynchronizationretriesthatwillbeperformedinarowwhenautomaticresynchronizationisenabledandkicksin.Settingthisto0willeffectivelydisableautoResync.Settingittosomeothervaluewilllimitthenumberofretriesthatareperformed.Thishelpspreventingendlessretriesincaseresynchronizationsalwaysfail.

initialSyncMaxWaitTime:themaximumwaittime(inseconds)thattheinitialsynchronizationwillwaitforaresponsefromthemasterwhenfetchinginitialcollectiondata.Thiswaittimecanbeusedtocontrolafterwhattimetheinitialsynchronizationwillgiveupwaitingforaresponseandfail.ThisvalueisrelevantevenforcontinuousreplicationwhenautoResyncissettotruebecausethismayre-starttheinitialsynchronizationwhenthemastercannotprovidelogdatatheslaverequires.Thisvaluewillbeignoredifsetto0.

connectionRetryWaitTime:thetime(inseconds)thattheapplierwillintentionallyidlebeforeitretriesconnectingtothemasterincaseofconnectionproblems.Thisvaluewillbeignoredifsetto0.

idleMinWaitTime:theminimumwaittime(inseconds)thattheapplierwillintentionallyidlebeforefetchingmorelogdatafromthemasterincasethemasterhasalreadysentallitslogdata.ThiswaittimecanbeusedtocontrolthefrequencywithwhichthereplicationappliersendsHTTPlogfetchrequeststothemasterincasethereisnowriteactivityonthemaster.Thisvaluewillbeignoredifsetto0.

idleMaxWaitTime:themaximumwaittime(inseconds)thattheapplierwillintentionallyidlebeforefetchingmorelogdatafromthemasterincasethemasterhasalreadysentallitslogdataandtherehavebeenpreviouslogfetchattemptsthatresultedinnomorelogdata.ThiswaittimecanbeusedtocontrolthemaximumfrequencywithwhichthereplicationappliersendsHTTPlogfetch

ReplicationApplier

345

Page 346: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

requeststothemasterincasethereisnowriteactivityonthemasterforlongerperiods.ThisconfigurationvaluewillonlybeusediftheoptionadaptivePollingissettotrue.Thisvaluewillbeignoredifsetto0.

requireFromPresent:ifsettotrue,thenthereplicationapplierwillcheckatstartwhetherthestarttickfromwhichitstartsorresumesreplicationisstillpresentonthemaster.Ifnot,thentherewouldbedataloss.IfrequireFromPresentistrue,thereplicationapplierwillabortwithanappropriateerrormessage.Ifsettofalse,thenthereplicationapplierwillstillstart,andignorethedataloss.

verbose:ifsettotrue,thenaloglinewillbeemittedforalloperationsperformedbythereplicationapplier.Thisshouldbeusedfordebuggingreplicationproblemsonly.

restrictType:theconfigurationforrestrictCollections

restrictCollections:theoptionalarrayofcollectionstoincludeorexclude,basedonthesettingofrestrictType

Example:

shell>curl--dump-http://localhost:8529/_api/replication/applier-config

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"requestTimeout":600,

"connectTimeout":10,

"ignoreErrors":0,

"maxConnectRetries":100,

"lockTimeoutRetries":0,

"sslProtocol":0,

"chunkSize":0,

"skipCreateDrop":false,

"autoStart":false,

"adaptivePolling":true,

"autoResync":false,

"autoResyncRetries":2,

"includeSystem":true,

"requireFromPresent":false,

"verbose":false,

"incremental":false,

"restrictType":"",

"restrictCollections":[],

"connectionRetryWaitTime":15,

"initialSyncMaxWaitTime":300,

"idleMinWaitTime":1,

"idleMaxWaitTime":2.5,

"force32mode":false

}

ReturnCodes

200:isreturnediftherequestwasexecutedsuccessfully.405:isreturnedwhenaninvalidHTTPmethodisused.500:isreturnedifanerroroccurredwhileassemblingtheresponse.

Examples

shell>curl--dump-http://localhost:8529/_api/replication/applier-config

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

ReplicationApplier

346

Page 347: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Adjustconfigurationofreplicationapplier

setconfigurationvaluesofanapplier

PUT/_api/replication/applier-config

AJSONobjectwiththesepropertiesisrequired:

username:anoptionalArangoDBusernametousewhenconnectingtotheendpoint.includeSystem:whetherornotsystemcollectionoperationswillbeappliedendpoint:theloggerservertoconnectto(e.g."tcp://192.168.173.13:8529").Theendpointmustbespecified.verbose:ifsettotrue,thenaloglinewillbeemittedforalloperationsperformedbythereplicationapplier.Thisshouldbeusedfordebuggingreplicationproblemsonly.connectTimeout:thetimeout(inseconds)whenattemptingtoconnecttotheendpoint.Thisvalueisusedforeachconnectionattempt.autoResync:whetherornottheslaveshouldperformafullautomaticresynchronizationwiththemasterincasethemastercannotservelogdatarequestedbytheslave,orwhenthereplicationisstartedandnotickvaluecanbefound.database:thenameofthedatabaseontheendpoint.Ifnotspecified,defaultstothecurrentlocaldatabasename.idleMinWaitTime:theminimumwaittime(inseconds)thattheapplierwillintentionallyidlebeforefetchingmorelogdatafromthemasterincasethemasterhasalreadysentallitslogdata.ThiswaittimecanbeusedtocontrolthefrequencywithwhichthereplicationappliersendsHTTPlogfetchrequeststothemasterincasethereisnowriteactivityonthemaster.Thisvaluewillbeignoredifsetto0.requestTimeout:thetimeout(inseconds)forindividualrequeststotheendpoint.requireFromPresent:ifsettotrue,thenthereplicationapplierwillcheckatstartwhetherthestarttickfromwhichitstartsorresumesreplicationisstillpresentonthemaster.Ifnot,thentherewouldbedataloss.IfrequireFromPresentistrue,thereplicationapplierwillabortwithanappropriateerrormessage.Ifsettofalse,thenthereplicationapplierwillstillstart,andignorethedataloss.idleMaxWaitTime:themaximumwaittime(inseconds)thattheapplierwillintentionallyidlebeforefetchingmorelogdatafromthemasterincasethemasterhasalreadysentallitslogdataandtherehavebeenpreviouslogfetchattemptsthatresultedinnomorelogdata.ThiswaittimecanbeusedtocontrolthemaximumfrequencywithwhichthereplicationappliersendsHTTPlogfetchrequeststothemasterincasethereisnowriteactivityonthemasterforlongerperiods.ThisconfigurationvaluewillonlybeusediftheoptionadaptivePollingissettotrue.Thisvaluewillbeignoredifsetto0.restrictCollections(string):thearrayofcollectionstoincludeorexclude,basedonthesettingofrestrictTyperestrictType:theconfigurationforrestrictCollections;HastobeeitherincludeorexcludeinitialSyncMaxWaitTime:themaximumwaittime(inseconds)thattheinitialsynchronizationwillwaitforaresponsefromthemasterwhenfetchinginitialcollectiondata.Thiswaittimecanbeusedtocontrolafterwhattimetheinitialsynchronizationwillgiveupwaitingforaresponseandfail.ThisvalueisrelevantevenforcontinuousreplicationwhenautoResyncissettotruebecausethismayre-starttheinitialsynchronizationwhenthemastercannotprovidelogdatatheslaverequires.Thisvaluewillbeignoredifsetto0.maxConnectRetries:themaximumnumberofconnectionattemptstheapplierwillmakeinarow.Iftheappliercannotestablishaconnectiontotheendpointinthisnumberofattempts,itwillstopitself.autoStart:whetherornottoauto-startthereplicationapplieron(nextandfollowing)serverstartsadaptivePolling:ifsettotrue,thereplicationapplierwillfalltosleepforanincreasinglylongperiodincasetheloggerserverattheendpointdoesnothaveanymorereplicationeventstoapply.Usingadaptivepollingisthususefultoreducetheamountofworkforboththeapplierandtheloggerserverforcaseswhenthereareonlyinfrequentchanges.Thedownsideisthatwhenusingadaptivepolling,itmighttakelongerforthereplicationappliertodetectthattherearenewreplicationeventsontheloggerserver.SettingadaptivePollingtofalsewillmakethereplicationappliercontacttheloggerserverinaconstantinterval,regardlessofwhethertheloggerserverprovidesupdatesfrequentlyorseldom.password:thepasswordtousewhenconnectingtotheendpoint.connectionRetryWaitTime:thetime(inseconds)thattheapplierwillintentionallyidlebeforeitretriesconnectingtothemasterincaseofconnectionproblems.Thisvaluewillbeignoredifsetto0.autoResyncRetries:numberofresynchronizationretriesthatwillbeperformedinarowwhenautomaticresynchronizationisenabledandkicksin.Settingthisto0willeffectivelydisableautoResync.Settingittosomeothervaluewilllimitthenumberofretriesthatareperformed.Thishelpspreventingendlessretriesincaseresynchronizationsalwaysfail.chunkSize:therequestedmaximumsizeforlogtransferpacketsthatisusedwhentheendpointiscontacted.

Setstheconfigurationofthereplicationapplier.Theconfigurationcanonlybechangedwhiletheapplierisnotrunning.Theupdatedconfigurationwillbesavedimmediatelybutonlybecomeactivewiththenextstartoftheapplier.

ReplicationApplier

347

Page 348: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Incaseofsuccess,thebodyoftheresponseisaJSONobjectwiththeupdatedconfiguration.

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/replication/applier-config<<EOF

{

"endpoint":"tcp://127.0.0.1:8529",

"username":"replicationApplier",

"password":"applier1234@foxx",

"chunkSize":4194304,

"autoStart":false,

"adaptivePolling":true

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"endpoint":"tcp://127.0.0.1:8529",

"database":"_system",

"username":"replicationApplier",

"requestTimeout":600,

"connectTimeout":10,

"ignoreErrors":0,

"maxConnectRetries":100,

"lockTimeoutRetries":0,

"sslProtocol":0,

"chunkSize":4194304,

"skipCreateDrop":false,

"autoStart":false,

"adaptivePolling":true,

"autoResync":false,

"autoResyncRetries":2,

"includeSystem":true,

"requireFromPresent":false,

"verbose":false,

"incremental":false,

"restrictType":"",

"restrictCollections":[],

"connectionRetryWaitTime":15,

"initialSyncMaxWaitTime":300,

"idleMinWaitTime":1,

"idleMaxWaitTime":2.5,

"force32mode":false

}

ReturnCodes

200:isreturnediftherequestwasexecutedsuccessfully.400:isreturnediftheconfigurationisincompleteormalformed,orifthereplicationapplieriscurrentlyrunning.405:isreturnedwhenaninvalidHTTPmethodisused.500:isreturnedifanerroroccurredwhileassemblingtheresponse.

Examples

shell>curl-XPUT--data-binary@---dump-

http://localhost:8529/_api/replication/applier-config<<EOF

{

"endpoint":"tcp://127.0.0.1:8529",

"username":"replicationApplier",

"password":"applier1234@foxx",

"chunkSize":4194304,

"autoStart":false,

"adaptivePolling":true

ReplicationApplier

348

Page 349: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Startreplicationapplier

startthereplicationapplier

PUT/_api/replication/applier-start

QueryParameters

from(optional):TheremotelastLogTickvaluefromwhichtostartapplying.Ifnotspecified,thelastsavedtickfromthepreviousapplierrunisused.Ifthereisnopreviousapplierstatesaved,theapplierwillstartatthebeginningoftheloggerserver'slog.

Startsthereplicationapplier.Thiswillreturnimmediatelyifthereplicationapplierisalreadyrunning.

Ifthereplicationapplierisnotalreadyrunning,theapplierconfigurationwillbechecked,andifitiscomplete,theapplierwillbestartedinabackgroundthread.Thismeansthateveniftheapplierwillencounteranyerrorswhilerunning,theywillnotbereportedintheresponsetothismethod.

Todetectreplicationappliererrorsaftertheapplierwasstarted,usethe/_api/replication/applier-stateAPIinstead.

Example:

shell>curl-XPUT--dump-http://localhost:8529/_api/replication/applier-start

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"state":{

"running":true,

"lastAppliedContinuousTick":null,

"lastProcessedContinuousTick":null,

"lastAvailableContinuousTick":null,

"safeResumeTick":null,

"progress":{

"time":"2018-01-25T19:13:18Z",

"message":"applierinitiallycreatedfordatabase'_system'",

"failedConnects":0

},

"totalRequests":0,

"totalFailedConnects":0,

"totalEvents":0,

"totalResyncs":0,

"totalOperationsExcluded":0,

"lastError":{

"errorNum":0

},

"time":"2018-01-25T19:13:41Z"

},

"server":{

"version":"3.3.3",

"serverId":"114837197342439"

},

"endpoint":"tcp://127.0.0.1:8529",

"database":"_system"

}

ReplicationApplier

349

Page 350: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

ReturnCodes

200:isreturnediftherequestwasexecutedsuccessfully.400:isreturnedifthereplicationapplierisnotfullyconfiguredortheconfigurationisinvalid.405:isreturnedwhenaninvalidHTTPmethodisused.500:isreturnedifanerroroccurredwhileassemblingtheresponse.

Examples

shell>curl-XPUT--dump-http://localhost:8529/_api/replication/applier-start

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Stopreplicationapplier

stopthereplication

PUT/_api/replication/applier-stop

Stopsthereplicationapplier.Thiswillreturnimmediatelyifthereplicationapplierisnotrunning.

Example:

shell>curl-XPUT--dump-http://localhost:8529/_api/replication/applier-stop

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"state":{

"running":false,

"lastAppliedContinuousTick":null,

"lastProcessedContinuousTick":null,

"lastAvailableContinuousTick":null,

"safeResumeTick":null,

"progress":{

"time":"2018-01-25T19:13:43Z",

"message":"appliershutdown",

"failedConnects":0

},

"totalRequests":6,

"totalFailedConnects":3,

"totalEvents":0,

"totalResyncs":0,

"totalOperationsExcluded":0,

"lastError":{

"errorNum":0

},

"time":"2018-01-25T19:13:43Z"

},

"server":{

"version":"3.3.3",

"serverId":"114837197342439"

},

"endpoint":"tcp://127.0.0.1:8529",

"database":"_system"

}

ReturnCodes

ReplicationApplier

350

Page 351: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

200:isreturnediftherequestwasexecutedsuccessfully.405:isreturnedwhenaninvalidHTTPmethodisused.500:isreturnedifanerroroccurredwhileassemblingtheresponse.

Examples

shell>curl-XPUT--dump-http://localhost:8529/_api/replication/applier-stop

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Stateofthereplicationapplier

outputthecurrentstatusofthereplication

GET/_api/replication/applier-state

Returnsthestateofthereplicationapplier,regardlessofwhethertheapplieriscurrentlyrunningornot.

TheresponseisaJSONobjectwiththefollowingattributes:

state:aJSONobjectwiththefollowingsub-attributes:

running:whetherornottheapplierisactiveandrunning

lastAppliedContinuousTick:thelasttickvaluefromthecontinuousreplicationlogtheapplierhasapplied.

lastProcessedContinuousTick:thelasttickvaluefromthecontinuousreplicationlogtheapplierhasprocessed.

Regularly,thelastappliedandlastprocessedtickvaluesshouldbeidentical.Fortransactionaloperations,thereplicationapplierwillfirstprocessincominglogeventsbeforeapplyingthem,sotheprocessedtickvaluemightbehigherthantheappliedtickvalue.Thiswillbethecaseuntiltheapplierencountersthetransactioncommitlogeventforthetransaction.

lastAvailableContinuousTick:thelasttickvaluetheloggerservercanprovide.

time:thetimeontheapplierserver.

totalRequests:thetotalnumberofrequeststheapplierhasmadetotheendpoint.

totalFailedConnects:thetotalnumberoffailedconnectionattemptstheapplierhasmade.

totalEvents:thetotalnumberoflogeventstheapplierhasprocessed.

totalOperationsExcluded:thetotalnumberoflogeventsexcludedbecauseofrestrictCollections.

progress:aJSONobjectwithdetailsaboutthereplicationapplierprogress.Itcontainsthefollowingsub-attributesifthereisprogresstoreport:

message:atextualdescriptionoftheprogress

time:thedateandtimetheprogresswaslogged

failedConnects:thecurrentnumberoffailedconnectionattempts

lastError:aJSONobjectwithdetailsaboutthelasterrorthathappenedontheapplier.Itcontainsthefollowingsub-attributesiftherewasanerror:

errorNum:anumericalerrorcode

errorMessage:atextualerrordescription

time:thedateandtimetheerroroccurred

Incasenoerrorhasoccurred,lastErrorwillbeempty.

ReplicationApplier

351

Page 352: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

server:aJSONobjectwiththefollowingsub-attributes:

version:theapplierserver'sversion

serverId:theapplierserver'sid

endpoint:theendpointtheapplierisconnectedto(ifapplierisactive)orwillconnectto(ifapplieriscurrentlyinactive)

database:thenameofthedatabasetheapplierisconnectedto(ifapplierisactive)orwillconnectto(ifapplieriscurrentlyinactive)

Example:Fetchingthestateofaninactiveapplier:

shell>curl--dump-http://localhost:8529/_api/replication/applier-state

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"state":{

"running":false,

"lastAppliedContinuousTick":null,

"lastProcessedContinuousTick":null,

"lastAvailableContinuousTick":null,

"safeResumeTick":null,

"progress":{

"time":"2018-01-25T19:13:42Z",

"message":"appliershutdown",

"failedConnects":1

},

"totalRequests":2,

"totalFailedConnects":1,

"totalEvents":0,

"totalResyncs":0,

"totalOperationsExcluded":0,

"lastError":{

"errorNum":0

},

"time":"2018-01-25T19:13:42Z"

},

"server":{

"version":"3.3.3",

"serverId":"114837197342439"

},

"endpoint":"tcp://127.0.0.1:8529",

"database":"_system"

}

Example:Fetchingthestateofanactiveapplier:

shell>curl--dump-http://localhost:8529/_api/replication/applier-state

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"state":{

"running":true,

"lastAppliedContinuousTick":null,

"lastProcessedContinuousTick":null,

"lastAvailableContinuousTick":null,

"safeResumeTick":null,

"progress":{

ReplicationApplier

352

Page 353: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"time":"2018-01-25T19:13:42Z",

"message":"fetchingmasterstateinformation",

"failedConnects":0

},

"totalRequests":2,

"totalFailedConnects":1,

"totalEvents":0,

"totalResyncs":0,

"totalOperationsExcluded":0,

"lastError":{

"errorNum":0

},

"time":"2018-01-25T19:13:42Z"

},

"server":{

"version":"3.3.3",

"serverId":"114837197342439"

},

"endpoint":"tcp://127.0.0.1:8529",

"database":"_system"

}

ReturnCodes

200:isreturnediftherequestwasexecutedsuccessfully.405:isreturnedwhenaninvalidHTTPmethodisused.500:isreturnedifanerroroccurredwhileassemblingtheresponse.

Examples

Fetchingthestateofaninactiveapplier:

shell>curl--dump-http://localhost:8529/_api/replication/applier-state

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyFetchingthestateofanactiveapplier:

shell>curl--dump-http://localhost:8529/_api/replication/applier-state

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Turntheserverintoaslaveofanother

Changesroletoslave

PUT/_api/replication/make-slave

AJSONobjectwiththesepropertiesisrequired:

username:anoptionalArangoDBusernametousewhenconnectingtothemaster.includeSystem:whetherornotsystemcollectionoperationswillbeappliedendpoint:themasterendpointtoconnectto(e.g."tcp://192.168.173.13:8529").verbose:ifsettotrue,thenaloglinewillbeemittedforalloperationsperformedbythereplicationapplier.Thisshouldbeusedfordebuggingreplicationproblemsonly.

ReplicationApplier

353

Page 354: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

connectTimeout:thetimeout(inseconds)whenattemptingtoconnecttotheendpoint.Thisvalueisusedforeachconnectionattempt.autoResync:whetherornottheslaveshouldperformanautomaticresynchronizationwiththemasterincasethemastercannotservelogdatarequestedbytheslave,orwhenthereplicationisstartedandnotickvaluecanbefound.database:thedatabasenameonthemaster(ifnotspecified,defaultstothenameofthelocalcurrentdatabase).idleMinWaitTime:theminimumwaittime(inseconds)thattheapplierwillintentionallyidlebeforefetchingmorelogdatafromthemasterincasethemasterhasalreadysentallitslogdata.ThiswaittimecanbeusedtocontrolthefrequencywithwhichthereplicationappliersendsHTTPlogfetchrequeststothemasterincasethereisnowriteactivityonthemaster.Thisvaluewillbeignoredifsetto0.requestTimeout:thetimeout(inseconds)forindividualrequeststotheendpoint.restrictType:anoptionalstringvalueforcollectionfiltering.Whenspecified,theallowedvaluesareincludeorexclude.idleMaxWaitTime:themaximumwaittime(inseconds)thattheapplierwillintentionallyidlebeforefetchingmorelogdatafromthemasterincasethemasterhasalreadysentallitslogdataandtherehavebeenpreviouslogfetchattemptsthatresultedinnomorelogdata.ThiswaittimecanbeusedtocontrolthemaximumfrequencywithwhichthereplicationappliersendsHTTPlogfetchrequeststothemasterincasethereisnowriteactivityonthemasterforlongerperiods.ThisconfigurationvaluewillonlybeusediftheoptionadaptivePollingissettotrue.Thisvaluewillbeignoredifsetto0.initialSyncMaxWaitTime:themaximumwaittime(inseconds)thattheinitialsynchronizationwillwaitforaresponsefromthemasterwhenfetchinginitialcollectiondata.Thiswaittimecanbeusedtocontrolafterwhattimetheinitialsynchronizationwillgiveupwaitingforaresponseandfail.ThisvalueisrelevantevenforcontinuousreplicationwhenautoResyncissettotruebecausethismayre-starttheinitialsynchronizationwhenthemastercannotprovidelogdatatheslaverequires.Thisvaluewillbeignoredifsetto0.restrictCollections(string):anoptionalarrayofcollectionsforusewithrestrictType.IfrestrictTypeisinclude,onlythespecifiedcollectionswillbesychronised.IfrestrictTypeisexclude,allbutthespecifiedcollectionswillbesynchronized.requireFromPresent:ifsettotrue,thenthereplicationapplierwillcheckatstartofitscontinuousreplicationifthestarttickfromthedumpphaseisstillpresentonthemaster.Ifnot,thentherewouldbedataloss.IfrequireFromPresentistrue,thereplicationapplierwillabortwithanappropriateerrormessage.Ifsettofalse,thenthereplicationapplierwillstillstart,andignorethedataloss.adaptivePolling:whetherornotthereplicationapplierwilluseadaptivepolling.maxConnectRetries:themaximumnumberofconnectionattemptstheapplierwillmakeinarow.Iftheappliercannotestablishaconnectiontotheendpointinthisnumberofattempts,itwillstopitself.password:thepasswordtousewhenconnectingtothemaster.connectionRetryWaitTime:thetime(inseconds)thattheapplierwillintentionallyidlebeforeitretriesconnectingtothemasterincaseofconnectionproblems.Thisvaluewillbeignoredifsetto0.autoResyncRetries:numberofresynchronizationretriesthatwillbeperformedinarowwhenautomaticresynchronizationisenabledandkicksin.Settingthisto0willeffectivelydisableautoResync.Settingittosomeothervaluewilllimitthenumberofretriesthatareperformed.Thishelpspreventingendlessretriesincaseresynchronizationsalwaysfail.chunkSize:therequestedmaximumsizeforlogtransferpacketsthatisusedwhentheendpointiscontacted.

StartsafulldatasynchronizationfromaremoteendpointintothelocalArangoDBdatabaseandafterwardsstartsthecontinuousreplication.Theoperationworksonaper-databaselevel.

Alllocaldatabasedatawillberemovedpriortothesynchronization.

Incaseofsuccess,thebodyoftheresponseisaJSONobjectwiththefollowingattributes:

state:aJSONobjectwiththefollowingsub-attributes:

running:whetherornottheapplierisactiveandrunning

lastAppliedContinuousTick:thelasttickvaluefromthecontinuousreplicationlogtheapplierhasapplied.

lastProcessedContinuousTick:thelasttickvaluefromthecontinuousreplicationlogtheapplierhasprocessed.

Regularly,thelastappliedandlastprocessedtickvaluesshouldbeidentical.Fortransactionaloperations,thereplicationapplierwillfirstprocessincominglogeventsbeforeapplyingthem,sotheprocessedtickvaluemightbehigherthantheappliedtickvalue.Thiswillbethecaseuntiltheapplierencountersthetransactioncommitlogeventforthetransaction.

lastAvailableContinuousTick:thelasttickvaluetheloggerservercanprovide.

time:thetimeontheapplierserver.

ReplicationApplier

354

Page 355: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

totalRequests:thetotalnumberofrequeststheapplierhasmadetotheendpoint.

totalFailedConnects:thetotalnumberoffailedconnectionattemptstheapplierhasmade.

totalEvents:thetotalnumberoflogeventstheapplierhasprocessed.

totalOperationsExcluded:thetotalnumberoflogeventsexcludedbecauseofrestrictCollections.

progress:aJSONobjectwithdetailsaboutthereplicationapplierprogress.Itcontainsthefollowingsub-attributesifthereisprogresstoreport:

message:atextualdescriptionoftheprogress

time:thedateandtimetheprogresswaslogged

failedConnects:thecurrentnumberoffailedconnectionattempts

lastError:aJSONobjectwithdetailsaboutthelasterrorthathappenedontheapplier.Itcontainsthefollowingsub-attributesiftherewasanerror:

errorNum:anumericalerrorcode

errorMessage:atextualerrordescription

time:thedateandtimetheerroroccurred

Incasenoerrorhasoccurred,lastErrorwillbeempty.

server:aJSONobjectwiththefollowingsub-attributes:

version:theapplierserver'sversion

serverId:theapplierserver'sid

endpoint:theendpointtheapplierisconnectedto(ifapplierisactive)orwillconnectto(ifapplieriscurrentlyinactive)

database:thenameofthedatabasetheapplierisconnectedto(ifapplierisactive)orwillconnectto(ifapplieriscurrentlyinactive)

WARNING:callingthismethodwillsychronizedatafromthecollectionsfoundontheremotemastertothelocalArangoDBdatabase.Alldatainthelocalcollectionswillbepurgedandreplacedwithdatafromthemaster.

Usewithcaution!

Pleasealsokeepinmindthatthiscommandmaytakealongtimetocompleteandreturn.Thisisbecauseitwillfirstdoafulldatasynchronizationwiththemaster,whichwilltaketimeroughlyproportionaltotheamountofdata.

Note:thismethodisnotsupportedonacoordinatorinacluster.

ReturnCodes

200:isreturnediftherequestwasexecutedsuccessfully.400:isreturnediftheconfigurationisincompleteormalformed.405:isreturnedwhenaninvalidHTTPmethodisused.500:isreturnedifanerroroccurredduringsychronizationorwhenstartingthecontinuousreplication.501:isreturnedwhenthisoperationiscalledonacoordinatorinacluster.

ReplicationApplier

355

Page 356: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

OtherReplicationCommands

Returnserverid

fetchthisserver'suniqueidentifier

GET/_api/replication/server-id

Returnstheserversid.TheidisalsoreturnedbyotherreplicationAPImethods,andthismethodisaneasymeansofdeterminingaserver'sid.

ThebodyoftheresponseisaJSONobjectwiththeattributeserverId.Theserveridisreturnedasastring.

Example:

shell>curl--dump-http://localhost:8529/_api/replication/server-id

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"serverId":"114837197342439"

}

ReturnCodes

200:isreturnediftherequestwasexecutedsuccessfully.405:isreturnedwhenaninvalidHTTPmethodisused.500:isreturnedifanerroroccurredwhileassemblingtheresponse.

Examples

shell>curl--dump-http://localhost:8529/_api/replication/server-id

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"serverId":"114837197342439"

}

OtherReplicationCommands

356

Page 357: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforShardingShardingonlyshouldbeusedbydevelopers!

Executeclusterroundtrip

executesaclusterroundtripforsharding

GET/_admin/cluster-test

ExecutesaclusterroundtripfromacoordinatortoaDBserverandback.Thiscallonlyworksinacoordinatornodeinacluster.OnecanandshouldappendanarbitrarypathtotheURLandthepartafter/_admin/cluster-testisusedasthepathoftheHTTPrequestwhichissentfromthecoordinatortoaDBnode.Likewise,anyformdataappendedtotheURLisforwardedintherequesttotheDBnode.Thishandlertakescareofallrequesttypes(seebelow)andusesthesamerequesttypeinitsrequesttotheDBnode.

ThefollowingHTTPheadersareinterpretedinaspecialway:

X-Shard-ID:ThisspecifiestheIDoftheshardtowhichtheclusterrequestissentandthustellsthesystemtowhichDBservertosendtheclusterrequest.NotethatthemappingfromtheshardIDtotheresponsibleserverhastobedefinedintheagencyunderCurrent/ShardLocation/.Onehastogivethisheader,otherwisethesystemdoesnotknowwheretosendtherequest.X-Client-Transaction-ID:thevalueofthisheaderistakenastheclienttransactionIDfortherequestX-Timeout:specifiesatimeoutinsecondsfortheclusteroperation.Iftheanswerdoesnotarrivewithinthespecifiedtimeout,ancorrespondingerrorisreturnedandanysubsequentrealanswerisignored.Thedefaultifnotgivenis24hours.X-Synchronous-Mode:Ifsettotruethetestfunctionusessynchronousmode,otherwisethedefaultasynchronousoperationmodeisused.Thisismainlyfordebuggingpurposes.Host:ThisheaderisignoredandnotforwardedtotheDBserver.User-Agent:ThisheaderisignoredandnotforwardedtotheDBserver.

AllotherHTTPheadersandthebodyoftherequest(ifpresent,seeotherHTTPmethodsbelow)areforwardedasgivenintheoriginalrequest.

InasynchronousmodetheDBserveranswerswithanHTTPrequestofitsown,insynchronousmodeitsendsaHTTPresponse.InbothcasestheheadersandthebodyareusedtoproducetheHTTPresponseofthisAPIcall.

ReturnCodes

Thereturncodecanbeanythingtheclusterrequestreturns,aswellas:

200:isreturnedwheneverythingwentwell,orifatimeoutoccurred.Inthelattercaseabodyoftypeapplication/jsonindicatingthetimeoutisreturned.403:isreturnedifArangoDBisnotrunninginclustermode.404:isreturnedifArangoDBwasnotcompiledforclusteroperation.

Executeclusterroundtrip

executesaclusterroundtripforsharding

POST/_admin/cluster-test

RequestBody(required)

Thebodycanbeanytypeandissimplyforwarded.

SeeGETmethod.

Executeclusterroundtrip

executesaclusterroundtripforsharding

PUT/_admin/cluster-test

RequestBody(required)

Sharding

357

Page 358: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

SeeGETmethod.Thebodycanbeanytypeandissimplyforwarded.

Deleteclusterroundtrip

executesaclusterroundtripforsharding

DELETE/_admin/cluster-test

SeeGETmethod.

Updateclusterroundtrip

executesaclusterroundtripforsharding

PATCH/_admin/cluster-test

RequestBody(required)

SeeGETmethod.Thebodycanbeanytypeandissimplyforwarded.

Executeclusterroundtrip

executesaclusterroundtripforsharding

HEAD/_admin/cluster-test

SeeGETmethod.

Checkport

allowstocheckwhetheragivenportisusable

GET/_admin/clusterCheckPort

QueryParameters

port(required):

ReturnCodes

200:isreturnedwheneverythingwentwell.400:theparameterportwasnotgivenorisnointeger.

Sharding

358

Page 359: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforAdministrationandMonitoringThisisanintroductiontoArangoDB'sHTTPinterfaceforadministrationandmonitoringoftheserver.

Readgloballogsfromtheserver

returnstheserverlogs

GET/_admin/log

QueryParameters

upto(optional):Returnsalllogentriesuptologlevelupto.Notethatuptomustbe:fatalor0erroror1warningor2infoor3debugor4Thedefaultvalueisinfo.level(optional):Returnsalllogentriesofloglevellevel.Notethatthequeryparametersuptoandlevelaremutuallyexclusive.start(optional):Returnsalllogentriessuchthattheirlogentryidentifier(lidvalue)isgreaterorequaltostart.size(optional):Restrictstheresulttoatmostsizelogentries.offset(optional):Startstoreturnlogentriesskippingthefirstoffsetlogentries.offsetandsizecanbeusedforpagination.search(optional):Onlyreturnthelogentriescontainingthetextspecifiedinsearch.sort(optional):Sortthelogentrieseitherascending(ifsortisasc)ordescending(ifsortisdesc)accordingtotheirlidvalues.Notethatthelidimposesachronologicalorder.Thedefaultvalueisasc.

Returnsfatal,error,warningorinfologmessagesfromtheserver'sgloballog.TheresultisaJSONobjectwiththefollowingattributes:

AjsondocumentwiththesePropertiesisreturned:

HTTP200

lid(string):alistoflogentryidentifiers.Eachlogmessageisuniquelyidentifiedbyits@LIT{lid}andtheidentifiersareinascendingorder.level:Alistoftheloglevelsforalllogentries.timestamp(string):alistofthetimestampsassecondssince1970-01-01foralllogentries.topic:alistofthetopicsofalllogentriestext:alistofthetextsofalllogentriestotalAmount:thetotalamountoflogentriesbeforepagination.

ReturnCodes

200:

ResponseBody

lid(string):alistoflogentryidentifiers.Eachlogmessageisuniquelyidentifiedbyits@LIT{lid}andtheidentifiersareinascendingorder.-level:Alistoftheloglevelsforalllogentries.text:alistofthetextsofalllogentriestopic:alistofthetopicsofalllogentriestimestamp(string):alistofthetimestampsassecondssince1970-01-01foralllogentries.-totalAmount:thetotalamountoflogentriesbeforepagination.

Returnthecurrentserverloglevel

returnsthecurrentloglevelsettings

GET/_admin/log/level

Monitoring

359

Page 360: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Returnstheserver'scurrentloglevelsettings.TheresultisaJSONobjectwiththelogtopicsbeingtheobjectkeys,andtheloglevelsbeingtheobjectvalues.

ReturnCodes

200:isreturnediftherequestisvalid500:isreturnediftheservercannotgeneratetheresultduetoanout-of-memoryerror.

Modifyandreturnthecurrentserverloglevel

modifiesthecurrentloglevelsettings

PUT/_admin/log/level

Modifiesandreturnstheserver'scurrentloglevelsettings.TherequestbodymustbeaJSONobjectwiththelogtopicsbeingtheobjectkeysandtheloglevelsbeingtheobjectvalues.

TheresultisaJSONobjectwiththeadjustedlogtopicsbeingtheobjectkeys,andtheadjustedloglevelsbeingtheobjectvalues.

Itcansettheloglevelofallfacilitiesbyonlyspecifyingtheloglevelasstringwithoutjson.

Possibleloglevelsare:

FATAL-Therewillbenowayoutofthis.ArangoDBwillgodownafterthismessage.ERROR-Thisisanerror.youshouldinvestigateandfixit.Itmayharmyourproduction.WARNING-Thismaybeseriousapplication-wise,butwedon'tknow.INFO-Somethinghashappened,takenotice,butnodramaattached.DEBUG-outputdebugmessagesTRACE-trace-prepareyourlogtobeflooded-don'tuseinproduction.

AJSONobjectwiththesepropertiesisrequired:

audit-service:Oneofthepossibleloglevels.cache:Oneofthepossibleloglevels.syscall:Oneofthepossibleloglevels.communication:Oneofthepossibleloglevels.audit-authentication:Oneofthepossibleloglevels.agencycomm:Oneofthepossibleloglevels.startup:Oneofthepossibleloglevels.general:Oneofthepossibleloglevels.cluster:Oneofthepossibleloglevels.audit-view:Oneofthepossibleloglevels.collector:Oneofthepossibleloglevels.audit-documentation:Oneofthepossibleloglevels.engines:Oneofthepossibleloglevels.trx:Oneofthepossibleloglevels.mmap:Oneofthepossibleloglevels.agency:Oneofthepossibleloglevels.authentication:Oneofthepossibleloglevels.memory:Oneofthepossibleloglevels.performance:Oneofthepossibleloglevels.config:Oneofthepossibleloglevels.authorization:Oneofthepossibleloglevels.development:Oneofthepossibleloglevels.datafiles:Oneofthepossibleloglevels.views:Oneofthepossibleloglevels.ldap:Oneofthepossibleloglevels.replication:Oneofthepossibleloglevels.threads:Oneofthepossibleloglevels.audit-database:Oneofthepossibleloglevels.v8:Oneofthepossibleloglevels.

Monitoring

360

Page 361: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

ssl:Oneofthepossibleloglevels.pregel:Oneofthepossibleloglevels.audit-collection:Oneofthepossibleloglevels.rocksdb:Oneofthepossibleloglevels.supervision:Oneofthepossibleloglevels.graphs:Oneofthepossibleloglevels.compactor:Oneofthepossibleloglevels.queries:Oneofthepossibleloglevels.heartbeat:Oneofthepossibleloglevels.requests:Oneofthepossibleloglevels.

ReturnCodes

200:isreturnediftherequestisvalid400:isreturnedwhentherequestbodycontainsinvalidJSON.405:isreturnedwhenaninvalidHTTPmethodisused.500:isreturnediftheservercannotgeneratetheresultduetoanout-of-memoryerror.

Reloadstheroutinginformation

Reloadtheroutingtable.

POST/_admin/routing/reload

Reloadstheroutinginformationfromthecollectionrouting.

ReturnCodes

200:Routinginformationwasreloadedsuccessfully.

Readthestatistics

returnthestatisticsinformation

GET/_admin/statistics

Returnsthestatisticsinformation.Thereturnedobjectcontainsthestatisticsfiguresgroupedtogetheraccordingtothedescriptionreturnedby_admin/statistics-description.Forinstance,toaccessafigureuserTimefromthegroupsystem,youfirstselectthesub-objectdescribingthegroupstoredinsystemandinthatsub-objectthevalueforuserTimeisstoredintheattributeofthesamename.

Incaseofadistribution,thereturnedobjectcontainsthetotalcountincountandthedistributionlistincounts.Thesum(ortotal)oftheindividualvaluesisreturnedinsum.

Example:

shell>curl--dump-http://localhost:8529/_admin/statistics

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"time":1516907617.8872316,

"enabled":true,

"system":{

"minorPageFaults":76569,

"majorPageFaults":183,

"userTime":2.21,

"systemTime":0.49,

"numberOfThreads":48,

"residentSize":426942464,

"residentSizePercent":0.02556949617048751,

"virtualSize":3208433664

},

"client":{

Monitoring

361

Page 362: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"httpConnections":1,

"connectionTime":{

"sum":0,

"count":0,

"counts":[

0,

0,

0,

0

]

},

"totalTime":{

"sum":12.890824556350708,

"count":4034,

"counts":[

3799,

145,

76,

10,

4,

0,

0

]

},

"requestTime":{

"sum":0.030986785888671875,

"count":4034,

"counts":[

4033,

1,

0,

0,

0,

0,

0

]

},

"queueTime":{

"sum":0.0002090930938720703,

"count":9,

"counts":[

9,

0,

0,

0,

0,

0,

0

]

},

"ioTime":{

"sum":12.859628677368164,

"count":4034,

"counts":[

3800,

144,

76,

10,

4,

0,

0

]

},

"bytesSent":{

"sum":1794760,

"count":4034,

"counts":[

304,

3392,

319,

19,

0,

0

]

},

"bytesReceived":{

Monitoring

362

Page 363: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"sum":871054,

"count":4034,

"counts":[

3727,

307,

0,

0,

0,

0

]

}

},

"http":{

"requestsTotal":4034,

"requestsAsync":9,

"requestsGet":1019,

"requestsHead":0,

"requestsPost":2794,

"requestsPut":70,

"requestsPatch":3,

"requestsDelete":148,

"requestsOptions":0,

"requestsOther":0

},

"server":{

"uptime":19.03903317451477,

"physicalMemory":16697335808,

"v8Context":{

"available":4,

"busy":4,

"dirty":0,

"free":0,

"max":16

},

"threads":{

"running":8,

"working":4,

"blocked":0,

"queued":4

}

},

"error":false,

"code":200

}

ReturnCodes

200:Statisticswerereturnedsuccessfully.

Examples

shell>curl--dump-http://localhost:8529/_admin/statistics

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Statisticsdescription

fetchdescriptiveinfoofstatistics

GET/_admin/statistics-description

Returnsadescriptionofthestatisticsreturnedby/_admin/statistics.Thereturnedobjectscontainsanarrayofstatisticsgroupsintheattributegroupsandanarrayofstatisticsfiguresintheattributefigures.

Astatisticsgroupisdescribedby

Monitoring

363

Page 364: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

group:Theidentifierofthegroup.name:Thenameofthegroup.description:Adescriptionofthegroup.

Astatisticsfigureisdescribedby

group:Theidentifierofthegrouptowhichthisfigurebelongs.identifier:Theidentifierofthefigure.Itisuniquewithinthegroup.name:Thenameofthefigure.description:Adescriptionofthefigure.type:Eithercurrent,accumulated,ordistribution.cuts:Thedistributionvector.units:Unitsinwhichthefigureismeasured.

Example:

shell>curl--dump-http://localhost:8529/_admin/statistics-description

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"groups":[

{

"group":"system",

"name":"ProcessStatistics",

"description":"StatisticsabouttheArangoDBprocess"

},

{

"group":"client",

"name":"ClientConnectionStatistics",

"description":"Statisticsabouttheconnections."

},

{

"group":"http",

"name":"HTTPRequestStatistics",

"description":"StatisticsabouttheHTTPrequests."

},

{

"group":"server",

"name":"ServerStatistics",

"description":"StatisticsabouttheArangoDBserver"

}

],

"figures":[

{

"group":"system",

"identifier":"userTime",

"name":"UserTime",

"description":"Amountoftimethatthisprocesshasbeenscheduledinusermode,measuredinseconds.",

"type":"accumulated",

"units":"seconds"

},

{

"group":"system",

"identifier":"systemTime",

"name":"SystemTime",

"description":"Amountoftimethatthisprocesshasbeenscheduledinkernelmode,measuredinseconds.",

"type":"accumulated",

"units":"seconds"

},

{

"group":"system",

"identifier":"numberOfThreads",

"name":"NumberofThreads",

"description":"Numberofthreadsinthearangodprocess.",

"type":"current",

"units":"number"

},

Monitoring

364

Page 365: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"group":"system",

"identifier":"residentSize",

"name":"ResidentSetSize",

"description":"Thetotalsizeofthenumberofpagestheprocesshasinrealmemory.Thisisjustthepageswhichcount

towardtext,data,orstackspace.Thisdoesnotincludepageswhichhavenotbeendemand-loadedin,orwhichareswappedout.

Theresidentsetsizeisreportedinbytes.",

"type":"current",

"units":"bytes"

},

{

"group":"system",

"identifier":"residentSizePercent",

"name":"ResidentSetSize",

"description":"Thepercentageofphysicalmemoryusedbytheprocessasresidentsetsize.",

"type":"current",

"units":"percent"

},

{

"group":"system",

"identifier":"virtualSize",

"name":"VirtualMemorySize",

"description":"OnWindows,thisfigurecontainsthetotalamountofmemorythatthememorymanagerhascommittedforth

earangodprocess.Onothersystems,thisfigurecontainsThesizeofthevirtualmemorytheprocessisusing.",

"type":"current",

"units":"bytes"

},

{

"group":"system",

"identifier":"minorPageFaults",

"name":"MinorPageFaults",

"description":"Thenumberofminorfaultstheprocesshasmadewhichhavenotrequiredloadingamemorypagefromdisk.

ThisfigureisnotreportedonWindows.",

"type":"accumulated",

"units":"number"

},

{

"group":"system",

"identifier":"majorPageFaults",

"name":"MajorPageFaults",

"description":"OnWindows,thisfigurecontainsthetotalnumberofpagefaults.Onothersystem,thisfigurecontains

thenumberofmajorfaultstheprocesshasmadewhichhaverequiredloadingamemorypagefromdisk.",

"type":"accumulated",

"units":"number"

},

{

"group":"client",

"identifier":"httpConnections",

"name":"ClientConnections",

"description":"Thenumberofconnectionsthatarecurrentlyopen.",

"type":"current",

"units":"number"

},

{

"group":"client",

"identifier":"totalTime",

"name":"TotalTime",

"description":"Totaltimeneededtoanswerarequest.",

"type":"distribution",

"cuts":[

0.01,

0.05,

0.1,

0.2,

0.5,

1

],

"units":"seconds"

},

{

"group":"client",

"identifier":"requestTime",

"name":"RequestTime",

"description":"Requesttimeneededtoanswerarequest.",

"type":"distribution",

"cuts":[

Monitoring

365

Page 366: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

0.01,

0.05,

0.1,

0.2,

0.5,

1

],

"units":"seconds"

},

{

"group":"client",

"identifier":"queueTime",

"name":"QueueTime",

"description":"Queuetimeneededtoanswerarequest.",

"type":"distribution",

"cuts":[

0.01,

0.05,

0.1,

0.2,

0.5,

1

],

"units":"seconds"

},

{

"group":"client",

"identifier":"bytesSent",

"name":"BytesSent",

"description":"Bytessentsforarequest.",

"type":"distribution",

"cuts":[

250,

1000,

2000,

5000,

10000

],

"units":"bytes"

},

{

"group":"client",

"identifier":"bytesReceived",

"name":"BytesReceived",

"description":"Bytesreceivedsforarequest.",

"type":"distribution",

"cuts":[

250,

1000,

2000,

5000,

10000

],

"units":"bytes"

},

{

"group":"client",

"identifier":"connectionTime",

"name":"ConnectionTime",

"description":"Totalconnectiontimeofaclient.",

"type":"distribution",

"cuts":[

0.1,

1,

60

],

"units":"seconds"

},

{

"group":"http",

"identifier":"requestsTotal",

"name":"Totalrequests",

"description":"TotalnumberofHTTPrequests.",

"type":"accumulated",

"units":"number"

},

Monitoring

366

Page 367: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"group":"http",

"identifier":"requestsAsync",

"name":"Asyncrequests",

"description":"NumberofasynchronouslyexecutedHTTPrequests.",

"type":"accumulated",

"units":"number"

},

{

"group":"http",

"identifier":"requestsGet",

"name":"HTTPGETrequests",

"description":"NumberofHTTPGETrequests.",

"type":"accumulated",

"units":"number"

},

{

"group":"http",

"identifier":"requestsHead",

"name":"HTTPHEADrequests",

"description":"NumberofHTTPHEADrequests.",

"type":"accumulated",

"units":"number"

},

{

"group":"http",

"identifier":"requestsPost",

"name":"HTTPPOSTrequests",

"description":"NumberofHTTPPOSTrequests.",

"type":"accumulated",

"units":"number"

},

{

"group":"http",

"identifier":"requestsPut",

"name":"HTTPPUTrequests",

"description":"NumberofHTTPPUTrequests.",

"type":"accumulated",

"units":"number"

},

{

"group":"http",

"identifier":"requestsPatch",

"name":"HTTPPATCHrequests",

"description":"NumberofHTTPPATCHrequests.",

"type":"accumulated",

"units":"number"

},

{

"group":"http",

"identifier":"requestsDelete",

"name":"HTTPDELETErequests",

"description":"NumberofHTTPDELETErequests.",

"type":"accumulated",

"units":"number"

},

{

"group":"http",

"identifier":"requestsOptions",

"name":"HTTPOPTIONSrequests",

"description":"NumberofHTTPOPTIONSrequests.",

"type":"accumulated",

"units":"number"

},

{

"group":"http",

"identifier":"requestsOther",

"name":"otherHTTPrequests",

"description":"NumberofotherHTTPrequests.",

"type":"accumulated",

"units":"number"

},

{

"group":"server",

"identifier":"uptime",

"name":"ServerUptime",

Monitoring

367

Page 368: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"description":"Numberofsecondselapsedsinceserverstart.",

"type":"current",

"units":"seconds"

},

{

"group":"server",

"identifier":"physicalMemory",

"name":"PhysicalMemory",

"description":"Physicalmemoryinbytes.",

"type":"current",

"units":"bytes"

}

],

"error":false,

"code":200

}

ReturnCodes

200:Descriptionwasreturnedsuccessfully.

Examples

shell>curl--dump-http://localhost:8529/_admin/statistics-description

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Returnroleofaserverinacluster

GettoknowwhetherthisserverisaCoordinatororDB-Server

GET/_admin/server/role

Returnstheroleofaserverinacluster.Theroleisreturnedintheroleattributeoftheresult.Possiblereturnvaluesforroleare:

SINGLE:theserverisastandaloneserverwithoutclusteringCOORDINATOR:theserverisacoordinatorinaclusterPRIMARY:theserverisaprimarydatabaseserverinaclusterSECONDARY:theserverisasecondarydatabaseserverinaclusterAGENT:theserverisanagencynodeinaclusterUNDEFINED:inacluster,UNDEFINEDisreturnediftheserverrolecannotbedetermined.

ReturnCodes

200:Isreturnedinallcases.

Returnidofaserverinacluster

Gettoknowtheinternalidoftheserver

GET/_admin/server/id

Returnstheidofaserverinacluster.Theidisemptyifitisworkinginsingleservermode.

ReturnCodes

200:Isreturnedinallcases.

QueriesstatisticsofDBserver

allowstoquerythestatisticsofaDBserverinthecluster

Monitoring

368

Page 369: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

GET/_admin/clusterStatistics

QueryParameters

DBserver(required):

ReturnCodes

200:isreturnedwheneverythingwentwell.400:theparameterDBserverwasnotgivenorisnottheIDofaDBserver403:serverisnotacoordinator.

Monitoring

369

Page 370: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforEndpointsTheAPI/_api/endpointisdeprecated.Forclustermodethereis/_api/cluster/endpointstofindallcurrentcoordinatorendpoints(seebelow).

TheArangoDBservercanlistenforincomingrequestsonmultipleendpoints.

TheendpointsarenormallyspecifiedeitherinArangoDB'sconfigurationfileoronthecommand-line,usingthe"--server.endpoint"option.ThedefaultendpointforArangoDBistcp://127.0.0.1:8529ortcp://localhost:8529.

Pleasenotethatallendpointmanagementoperationscanonlybeaccessedviathedefaultdatabase(_system)andnoneoftheotherdatabases.

AskingaboutEndpointsviaHTTP

Getinformationaboutallcoordinatorendpoints

ThisAPIcallreturnsinformationaboutallcoordinatorendpoints(clusteronly).

GET/_api/cluster/endpoints

Returnsanobjectwithanattributeendpoints,whichcontainsanarrayofobjects,whicheachhavetheattributeendpoint,whosevalueisastringwiththeendpointdescription.Thereisanentryforeachcoordinatorinthecluster.Thismethodonlyworksoncoordinatorsinclustermode.Incaseofanerrortheerrorattributeissettotrue.

ReturnCodes

200:isreturnedwheneverythingwentwell.403:serverisnotacoordinatorormethodwasnotGET.

Returnlistofallendpoints

ThisAPIcallreturnsthelistofallendpoints(singleserver).

GET/_api/endpoint

THISAPIISDEPRECATED

Returnsanarrayofallconfiguredendpointstheserverislisteningon.

TheresultisaJSONarrayofJSONobjects,eachwith`"entrypoint"'astheonlyattribute,andwiththevaluebeingastringdescribingtheendpoint.

Note:retrievingthearrayofallendpointsisallowedinthesystemdatabaseonly.Callingthisactioninanyotherdatabasewillmaketheserverreturnanerror.

Example:

shell>curl--dump-http://localhost:8529/_api/endpoint

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[

{

"endpoint":"http://127.0.0.1:60154"

}

]

ReturnCodes

Endpoints

370

Page 371: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

200:isreturnedwhenthearrayofendpointscanbedeterminedsuccessfully.400:isreturnediftheactionisnotcarriedoutinthesystemdatabase.405:TheserverwillrespondwithHTTP405ifanunsupportedHTTPmethodisused.

Examples

shell>curl--dump-http://localhost:8529/_api/endpoint

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[

{

"endpoint":"http://127.0.0.1:60154"

}

]

Endpoints

371

Page 372: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

FoxxHTTPAPITheseroutesallowmanipulatingtheFoxxservicesinstalledinadatabase.

FormoreinformationonFoxxanditsJavaScriptAPIsseetheFoxxchapterofthemaindocumentation.

FoxxServices

372

Page 373: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

FoxxServiceManagementThisisanintroductiontoArangoDB'sHTTPinterfaceformanagingFoxxservices.

Listinstalledservices

listinstalledservices

GET/_api/foxx

Fetchesalistofservicesinstalledinthecurrentdatabase.

Returnsalistofobjectswiththefollowingattributes:

mount:themountpathoftheservicedevelopment:trueiftheserviceisrunningindevelopmentmodelegacy:trueiftheserviceisrunningin2.8legacycompatibilitymodeprovides:theservicemanifest'sprovidesvalueoranemptyobject

Additionallytheobjectmaycontainthefollowingattributesiftheyhavebeensetonthemanifest:

name:astringidentifyingtheservicetypeversion:asemver-compatibleversionstring

ReturnCodes

200:Returnediftherequestwassuccessful.

Servicedescription

servicemetadata

GET/_api/foxx/service

Fetchesdetailedinformationfortheserviceatthegivenmountpath.

Returnsanobjectwiththefollowingattributes:

mount:themountpathoftheservicepath:thelocalfilesystempathoftheservicedevelopment:trueiftheserviceisrunningindevelopmentmodelegacy:trueiftheserviceisrunningin2.8legacycompatibilitymodemanifest:thenormalizedJSONmanifestoftheservice

Additionallytheobjectmaycontainthefollowingattributesiftheyhavebeensetonthemanifest:

name:astringidentifyingtheservicetypeversion:asemver-compatibleversionstring

QueryParameters

mount(required):Mountpathoftheinstalledservice.

ReturnCodes

200:Returnediftherequestwassuccessful.400:Returnedifthemountpathisunknown.

Installnewservice

installnewservice

POST/_api/foxx

Installsthegivennewserviceatthegivenmountpath.

Management

373

Page 374: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Therequestbodycanbeanyofthefollowingformats:

application/zip:arawzipbundlecontainingaserviceapplication/javascript:astandaloneJavaScriptfileapplication/json:aservicedefinitionasJSONmultipart/form-data:aservicedefinitionasamultipartform

Aservicedefinitionisanobjectorformwiththefollowingpropertiesorfields:

configuration:aJSONobjectdescribingconfigurationvaluesdependencies:aJSONobjectdescribingdependencysettingssource:afullyqualifiedURLoranabsolutepathontheserver'sfilesystem

Whenusingmultipartdata,thesourcefieldcanalsoalternativelybeafilefieldcontainingeitherazipbundleorastandaloneJavaScriptfile.

WhenusingastandaloneJavaScriptfilethegivenfilewillbeexecutedtodefineourservice'sHTTPendpoints.Itisthesamewhichwouldbedefinedinthefieldmainoftheservicemanifest.

IfsourceisaURL,theURLmustbereachablefromtheserver.Ifsourceisafilesystempath,thepathwillberesolvedontheserver.IneithercasethepathorURLisexpectedtoresolvetoazipbundle.

Notethatwhenusingfilesystempathsinaclusterwithmultiplecoordinatorsthefilesystempathmustresolvetoequivalentfilesoneverycoordinator.

QueryParameters

mount(required):Mountpaththeserviceshouldbeinstalledat.development(optional):Settotruetoenabledevelopmentmode.setup(optional):Settofalsetonotruntheservice'ssetupscript.legacy(optional):Settotruetoinstalltheservicein2.8legacycompatibilitymode.

ReturnCodes

201:Returnediftherequestwassuccessful.

Uninstallservice

uninstallservice

DELETE/_api/foxx/service

Removestheserviceatthegivenmountpathfromthedatabaseandfilesystem.

Returnsanemptyresponseonsuccess.

QueryParameters

mount(required):Mountpathoftheinstalledservice.teardown(optional):Settofalsetonotruntheservice'steardownscript.

ReturnCodes

204:Returnediftherequestwassuccessful.

Replaceservice

replaceaservice

PUT/_api/foxx/service

Removestheserviceatthegivenmountpathfromthedatabaseandfilesystem.Theninstallsthegivennewserviceatthesamemountpath.

Thisisaslightlysaferequivalenttoperforminganuninstalloftheoldservicefollowedbyinstallingthenewservice.Thenewservice'smainandscriptfiles(ifany)willbecheckedforbasicsyntaxerrorsbeforetheoldserviceisremoved.

Therequestbodycanbeanyofthefollowingformats:

Management

374

Page 375: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

application/zip:arawzipbundlecontainingaserviceapplication/javascript:astandaloneJavaScriptfileapplication/json:aservicedefinitionasJSONmultipart/form-data:aservicedefinitionasamultipartform

Aservicedefinitionisanobjectorformwiththefollowingpropertiesorfields:

configuration:aJSONobjectdescribingconfigurationvaluesdependencies:aJSONobjectdescribingdependencysettingssource:afullyqualifiedURLoranabsolutepathontheserver'sfilesystem

Whenusingmultipartdata,thesourcefieldcanalsoalternativelybeafilefieldcontainingeitherazipbundleorastandaloneJavaScriptfile.

WhenusingastandaloneJavaScriptfilethegivenfilewillbeexecutedtodefineourservice'sHTTPendpoints.Itisthesamewhichwouldbedefinedinthefieldmainoftheservicemanifest.

IfsourceisaURL,theURLmustbereachablefromtheserver.Ifsourceisafilesystempath,thepathwillberesolvedontheserver.IneithercasethepathorURLisexpectedtoresolvetoazipbundle.

Notethatwhenusingfilesystempathsinaclusterwithmultiplecoordinatorsthefilesystempathmustresolvetoequivalentfilesoneverycoordinator.

QueryParameters

mount(required):Mountpathoftheinstalledservice.teardown(optional):Settofalsetonotruntheoldservice'steardownscript.setup(optional):Settofalsetonotrunthenewservice'ssetupscript.legacy(optional):Settotruetoinstallthenewservicein2.8legacycompatibilitymode.

ReturnCodes

200:Returnediftherequestwassuccessful.

Upgradeservice

upgradeaservice

PATCH/_api/foxx/service

Installsthegivennewserviceontopoftheservicecurrentlyinstalledatthegivenmountpath.Thisisonlyrecommendedforswitchingbetweendifferentversionsofthesameservice.

Unlikereplacingaservice,upgradingaserviceretainstheoldservice'sconfigurationanddependencies(ifany)andshouldthereforeonlybeusedtomigrateanexistingservicetoanewerorequivalentservice.

Therequestbodycanbeanyofthefollowingformats:

application/zip:arawzipbundlecontainingaserviceapplication/javascript:astandaloneJavaScriptfileapplication/json:aservicedefinitionasJSONmultipart/form-data:aservicedefinitionasamultipartform

Aservicedefinitionisanobjectorformwiththefollowingpropertiesorfields:

configuration:aJSONobjectdescribingconfigurationvaluesdependencies:aJSONobjectdescribingdependencysettingssource:afullyqualifiedURLoranabsolutepathontheserver'sfilesystem

Whenusingmultipartdata,thesourcefieldcanalsoalternativelybeafilefieldcontainingeitherazipbundleorastandaloneJavaScriptfile.

WhenusingastandaloneJavaScriptfilethegivenfilewillbeexecutedtodefineourservice'sHTTPendpoints.Itisthesamewhichwouldbedefinedinthefieldmainoftheservicemanifest.

Management

375

Page 376: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

IfsourceisaURL,theURLmustbereachablefromtheserver.Ifsourceisafilesystempath,thepathwillberesolvedontheserver.IneithercasethepathorURLisexpectedtoresolvetoazipbundle.

Notethatwhenusingfilesystempathsinaclusterwithmultiplecoordinatorsthefilesystempathmustresolvetoequivalentfilesoneverycoordinator.

QueryParameters

mount(required):Mountpathoftheinstalledservice.teardown(optional):Settotruetoruntheoldservice'steardownscript.setup(optional):Settofalsetonotrunthenewservice'ssetupscript.legacy(optional):Settotruetoinstallthenewservicein2.8legacycompatibilitymode.

ReturnCodes

200:Returnediftherequestwassuccessful.

Management

376

Page 377: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

FoxxServiceconfiguration/dependenciesThisisanintroductiontoArangoDB'sHTTPinterfaceformanagingFoxxservicesconfigurationanddependencies.

Getconfigurationoptions

getconfigurationoptions

GET/_api/foxx/configuration

Fetchesthecurrentconfigurationfortheserviceatthegivenmountpath.

Returnsanobjectmappingtheconfigurationoptionnamestotheirdefinitionsincludingahuman-friendlytitleandthecurrentvalue(ifany).

QueryParameters

mount(required):Mountpathoftheinstalledservice.

ReturnCodes

200:Returnediftherequestwassucessful.

Updateconfigurationoptions

updateconfigurationoptions

PATCH/_api/foxx/configuration

Replacesthegivenservice'sconfiguration.

Returnsanobjectmappingallconfigurationoptionnamestotheirnewvalues.

RequestBody(required)

AJSONobjectmappingconfigurationoptionnamestotheirnewvalues.Anyomittedoptionswillbeignored.

QueryParameters

mount(required):Mountpathoftheinstalledservice.

Replaceconfigurationoptions

replaceconfigurationoptions

PUT/_api/foxx/configuration

Replacesthegivenservice'sconfigurationcompletely.

Returnsanobjectmappingallconfigurationoptionnamestotheirnewvalues.

RequestBody(required)

AJSONobjectmappingconfigurationoptionnamestotheirnewvalues.Anyomittedoptionswillberesettotheirdefaultvaluesormarkedasunconfigured.

QueryParameters

mount(required):Mountpathoftheinstalledservice.

Getdependencyoptions

getdependencyoptions

GET/_api/foxx/dependencies

Fetchesthecurrentdependenciesforserviceatthegivenmountpath.

Configuration

377

Page 378: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Returnsanobjectmappingthedependencynamestotheirdefinitionsincludingahuman-friendlytitleandthecurrentmountpath(ifany).

QueryParameters

mount(required):Mountpathoftheinstalledservice.

ReturnCodes

200:Returnediftherequestwassucessful.

Updatedependenciesoptions

updatedependenciesoptions

PATCH/_api/foxx/dependencies

Replacesthegivenservice'sdependencies.

Returnsanobjectmappingalldependencynamestotheirnewmountpaths.

RequestBody(required)

AJSONobjectmappingdependencynamestotheirnewmountpaths.Anyomitteddependencieswillbeignored.

QueryParameters

mount(required):Mountpathoftheinstalledservice.

Replacedependenciesoptions

replacedependenciesoptions

PUT/_api/foxx/dependencies

Replacesthegivenservice'sdependenciescompletely.

Returnsanobjectmappingalldependencynamestotheirnewmountpaths.

RequestBody(required)

AJSONobjectmappingdependencynamestotheirnewmountpaths.Anyomitteddependencieswillbedisabled.

QueryParameters

mount(required):Mountpathoftheinstalledservice.

Configuration

378

Page 379: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

FoxxServiceMiscellaneous

Listservicescripts

listservicescripts

GET/_api/foxx/scripts

Fetchesalistofthescriptsdefinedbytheservice.

Returnsanobjectmappingtherawscriptnamestohuman-friendlynames.

QueryParameters

mount(required):Mountpathoftheinstalledservice.

ReturnCodes

200:Returnediftherequestwassucessful.

Runservicescript

runservicescript

POST/_api/foxx/scripts/{name}

Runsthegivenscriptfortheserviceatthegivenmountpath.

Returnstheexportsofthescript,ifany.

RequestBody(optional)

AnarbitraryJSONvaluethatwillbeparsedandpassedtothescriptasitsfirstargument.

PathParameters

name(required):Nameofthescripttorun.

QueryParameters

mount(required):Mountpathoftheinstalledservice.

ReturnCodes

200:Returnediftherequestwassucessful.

Runservicetests

runservicetests

POST/_api/foxx/tests

Runsthetestsfortheserviceatthegivenmountpathandreturnstheresults.

Supportedtestreportersare:

default:asimplelistoftestcasessuite:anobjectoftestcasesnestedinsuitesstream:arawstreamoftestresultsxunit:anXUnit/JUnitcompatiblestructuretap:arawTAPcompatiblestream

TheAcceptrequestheadercanbeusedtofurthercontroltheresponseformat:

Whenusingthestreamreporterapplication/x-ldjsonwillresultintheresponsebodybeingformattedasanewline-delimitedJSONstream.

Whenusingthetapreportertext/plainortext/*willresultintheresponsebodybeingformattedasaplaintextTAPreport.

Miscellaneous

379

Page 380: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Whenusingthexunitreporterapplication/xmlortext/xmlwillresultintheresponsebodybeingformattedasXMLinsteadofJSONML.

Otherwisetheresponsebodywillbeformattedasnon-prettyprintedJSON.

QueryParameters

mount(required):Mountpathoftheinstalledservice.reporter(optional):Testreportertouse.idiomatic(optional):Usethematchingformatforthereporter,regardlessoftheAcceptheader.

ReturnCodes

200:Returnediftherequestwassucessful.

Enabledevelopmentmode

enabledevelopmentmode

POST/_api/foxx/development

Putstheserviceintodevelopmentmode.

Whiletheserviceisrunningindevelopmentmodetheservicewillbereloadedfromthefilesystemanditssetupscript(ifany)willbere-executedeverytimetheservicehandlesarequest.

WhenrunningArangoDBinaclusterwithmultiplecoordinatorsnotethatchangestothefilesystemononecoordinatorwillnotbereflectedacrosstheothercoordinators.Thismeansyoushouldtreatyourcoordinatorsasinconsistentaslongasanyserviceisrunningindevelopmentmode.

QueryParameters

mount(required):Mountpathoftheinstalledservice.

ReturnCodes

200:Returnediftherequestwassucessful.

Disabledevelopmentmode

disabledevelopmentmode

DELETE/_api/foxx/development

Putstheserviceatthegivenmountpathintoproductionmode.

WhenrunningArangoDBinaclusterwithmultiplecoordinatorsthiswillreplacetheserviceonallothercoordinatorswiththeversiononthiscoordinator.

QueryParameters

mount(required):Mountpathoftheinstalledservice.

ReturnCodes

200:Returnediftherequestwassucessful.

ServiceREADME

serviceREADME

GET/_api/foxx/readme

Fetchestheservice'sREADMEorREADME.mdfile'scontentsifany.

QueryParameters

mount(required):Mountpathoftheinstalledservice.

ReturnCodes

Miscellaneous

380

Page 381: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

200:Returnediftherequestwassucessful.204:ReturnedifnoREADMEfilewasfound.

Swaggerdescription

swaggerdescription

GET/_api/foxx/swagger

FetchestheSwaggerAPIdescriptionfortheserviceatthegivenmountpath.

TheresponsebodywillbeanOpenAPI2.0compatibleJSONdescriptionoftheserviceAPI.

QueryParameters

mount(required):Mountpathoftheinstalledservice.

ReturnCodes

200:Returnediftherequestwassucessful.

Downloadservicebundle

downloadservicebundle

POST/_api/foxx/download

Downloadsazipbundleoftheservicedirectory.

Whendevelopmentmodeisenabled,thisalwayscreatesanewbundle.

OtherwisethebundlewillrepresenttheversionofaservicethatisinstalledonthatArangoDBinstance.

QueryParameters

mount(required):Mountpathoftheinstalledservice.

ReturnCodes

200:Returnediftherequestwassucessful.400:Returnedifthemountpathisunknown.

Commitlocalservicestate

commitlocalservicestate

POST/_api/foxx/commit

Commitsthelocalservicestateofthecoordinatortothedatabase.

Thiscanbeusedtoresolveserviceconflictsbetweencoordinatorsthatcannotbefixedautomaticallyduetomissingdata.

QueryParameters

replace(optional):Overwriteexistingservicefilesindatabaseeveniftheyalreadyexist.204:Returnediftherequestwassucessful.

Miscellaneous

381

Page 382: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforUserManagementThisisanintroductiontoArangoDB'sHTTPinterfaceformanagingusers.

Theinterfaceprovidesasimplemeanstoadd,update,andremoveusers.Allusersmanagedthroughthisinterfacewillbestoredinthesystemcollection_users.Youshouldnevermanipulatethe_userscollectiondirectly.

ThisspecializedinterfaceintentionallydoesnotprovideallfunctionalitythatisavailableintheregulardocumentRESTAPI.

PleasenotethatuseroperationsarenotincludedinArangoDB'sreplication.

CreateUser

Createanewuser.

POST/_api/user

AJSONobjectwiththesepropertiesisrequired:

passwd:Theuserpasswordasastring.Ifnopasswordisspecified,theemptystringwillbeused.IfyoupassthespecialvalueARANGODB_DEFAULT_ROOT_PASSWORD,thenthepasswordwillbesetthevaluestoredintheenvironmentvariableARANGODB_DEFAULT_ROOT_PASSWORD.ThiscanbeusedtopassaninstancevariableintoArangoDB.Forexample,theinstanceidentifierfromAmazon.active:Anoptionalflagthatspecifieswhethertheuserisactive.Ifnotspecified,thiswilldefaulttotrueuser:Thenameoftheuserasastring.Thisismandatory.extra:AnoptionalJSONobjectwitharbitraryextradataabouttheuser.

Createanewuser.YouneedserveraccesslevelAdministrateinordertoexecutethisRESTcall.

Example:

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/user<<EOF

{

"user":"admin@example",

"passwd":"secure"

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"user":"admin@example",

"active":true,

"extra":{

},

"error":false,

"code":201

}

ReturnCodes

201:Returnediftheusercanbeaddedbytheserver400:IftheJSONrepresentationismalformedormandatorydataismissingfromtherequest.401:ReturnedifyouhaveNoaccessdatabaseaccessleveltothe_systemdatabase.403:ReturnedifyouhaveNoaccessserveraccesslevel.409:Returnedifauserwiththesamenamealreadyexists.

Examples

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/user<<EOF

UserManagement

382

Page 383: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"user":"admin@example",

"passwd":"secure"

}

EOF

HTTP/1.1201Created

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Setthedatabaseaccesslevel

Setthedatabaseaccesslevel.

PUT/_api/user/{user}/database/{dbname}

AJSONobjectwiththesepropertiesisrequired:

grant:Use"rw"tosetthedatabaseaccessleveltoAdministrate.Use"ro"tosetthedatabaseaccessleveltoAccess.Use"none"tosetthedatabaseaccessleveltoNoaccess.

Setsthedatabaseaccesslevelsforthedatabasedbnameofuseruser.YouneedtheAdministrateserveraccesslevelinordertoexecutethisRESTcall.

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/user/admin@myapp/database/_system<<EOF

{

"grant":"rw"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"_system":"rw",

"error":false,

"code":200

}

PathParameters

user(required):Thenameoftheuser.dbname(required):Thenameofthedatabase.

ReturnCodes

200:Returnediftheaccesslevelwaschangedsuccessfully.400:IftheJSONrepresentationismalformedormandatorydataismissingfromtherequest.401:ReturnedifyouhaveNoaccessdatabaseaccessleveltothe_systemdatabase.403:ReturnedifyouhaveNoaccessserveraccesslevel.

Examples

shell>curl-XPUT--data-binary@---dump-

http://localhost:8529/_api/user/admin@myapp/database/_system<<EOF

{

UserManagement

383

Page 384: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"grant":"rw"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Setthecollectionaccesslevel

Setthecollectionaccesslevel.

PUT/_api/user/{user}/database/{dbname}/{collection}

AJSONobjectwiththesepropertiesisrequired:

grant:Use"rw"tosetthecollectionlevelaccesstoRead/Write.Use"ro"tosetthecollectionlevelaccesstoReadOnly.Use"none"tosetthecollectionlevelaccesstoNoaccess.

Setsthecollectionaccesslevelforthecollectioninthedatabasedbnameforuseruser.YouneedtheAdministrateserveraccesslevelinordertoexecutethisRESTcall.

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/user/admin@myapp/database/_system/reports<<EOF

{

"grant":"rw"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"_system/reports":"rw",

"error":false,

"code":200

}

PathParameters

user(required):Thenameoftheuser.dbname(required):Thenameofthedatabase.collection(required):Thenameofthecollection.

ReturnCodes

200:Returnediftheaccesspermissionswerechangedsuccessfully.400:IftheJSONrepresentationismalformedormandatorydataismissingfromtherequest.401:ReturnedifyouhaveNoaccessdatabaseaccessleveltothe_systemdatabase.403:ReturnedifyouhaveNoaccessserveraccesslevel.

Examples

shell>curl-XPUT--data-binary@---dump-

http://localhost:8529/_api/user/admin@myapp/database/_system/reports<<EOF

{

"grant":"rw"

UserManagement

384

Page 385: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Clearthedatabaseaccesslevel

Clearthedatabaseaccesslevel,revertbacktothedefaultaccesslevel

DELETE/_api/user/{user}/database/{dbname}

PathParameters

user(required):Thenameoftheuser.dbname(required):Thenameofthedatabase.

Clearsthedatabaseaccesslevelforthedatabasedbnameofuseruser.Asconsequencethedefaultdatabaseaccesslevelisused.Ifthereisnodefineddefaultdatabaseaccesslevel,itdefaultstoNoaccess.Youneedpermissiontothe_systemdatabaseinordertoexecutethisRESTcall.

Notethatfortechnicalreasonsthiscurrentlyonlyworksinsingleservermode.Forclusters,usethePUTverbandanexplicitsettingfornow.

Example:

shell>curl-XDELETE--dump-http://localhost:8529/_api/user/admin@myapp/database/_system

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

"{\"error\":false,\"code\":202}"

ReturnCodes

202:Returnediftheaccesspermissionswerechangedsuccessfully.400:IftheJSONrepresentationismalformedormandatorydataismissingfromtherequest.

Examples

shell>curl-XDELETE--dump-

http://localhost:8529/_api/user/admin@myapp/database/_system

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

"{\"error\":false,\"code\":202}"

Clearthecollectionaccesslevel

Clearthecollectionaccesslevel,revertbacktothedefaultaccesslevel

DELETE/_api/user/{user}/database/{dbname}/{collection}

UserManagement

385

Page 386: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

PathParameters

user(required):Thenameoftheuser.dbname(required):Thenameofthedatabase.collection(required):Thenameofthecollection.

Clearsthecollectionaccesslevelforthecollectioncollectioninthedatabasedbnameofuseruser.Asconsequencethedefaultcollectionaccesslevelisused.Ifthereisnodefineddefaultcollectionaccesslevel,itdefaultstoNoaccess.Youneedpermissionstothe_systemdatabaseinordertoexecutethisRESTcall.

Notethatfortechnicalreasonsthiscurrentlyonlyworksinsingleservermode.Forclusters,usethePUTverbandanexplicitsettingfornow.

Example:

shell>curl-XDELETE--dump-http://localhost:8529/_api/user/admin@myapp/database/_system/reports

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

"{\"error\":false,\"code\":202}"

ReturnCodes

202:Returnediftheaccesspermissionswerechangedsuccessfully.400:Iftherewasanerror

Examples

shell>curl-XDELETE--dump-

http://localhost:8529/_api/user/admin@myapp/database/_system/reports

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

"{\"error\":false,\"code\":202}"

Listtheaccessibledatabasesforauser

Listtheaccessibledatabasesforauser

GET/_api/user/{user}/database/

PathParameters

user(required):Thenameoftheuserforwhichyouwanttoquerythedatabases.

QueryParameters

full(optional):Returnthefullsetofaccesslevelsforalldatabasesandallcollections.

Fetchthelistofdatabasesavailabletothespecifieduser.YouneedAdministratefortheserveraccesslevelinordertoexecutethisRESTcall.

ThecallwillreturnaJSONobjectwiththeper-databaseaccessprivilegesforthespecifieduser.Theresultobjectwillcontainthedatabasesnamesasobjectkeys,andtheassociatedprivilegesforthedatabaseasvalues.

Incaseyouspecifiedfull,theresultwillcontainthepermissionsforthedatabasesaswellasthepermissionsforthecollections.

UserManagement

386

Page 387: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Example:

shell>curl--dump-http://localhost:8529/_api/user/anotherAdmin@secapp/database/

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200,

"result":{

"_system":"rw"

}

}

Example:Withthefullresponseformat:

shell>curl--dump-http://localhost:8529/_api/user/anotherAdmin@secapp/database?full=true

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200,

"result":{

"_system":{

"permission":"rw",

"collections":{

"_statisticsRaw":"undefined",

"_modules":"undefined",

"_queues":"undefined",

"_aqlfunctions":"undefined",

"_appbundles":"undefined",

"_graphs":"undefined",

"_routing":"undefined",

"_jobs":"undefined",

"animals":"undefined",

"_frontend":"undefined",

"_users":"undefined",

"_statistics":"undefined",

"_statistics15":"undefined",

"_apps":"undefined",

"demo":"undefined",

"*":"none"

}

},

"*":{

"permission":"none"

}

}

}

ReturnCodes

200:Returnedifthelistofavailabledatabasescanbereturned.400:Iftheaccessprivilegesarenotrightetc.401:ReturnedifyouhaveNoaccessdatabaseaccessleveltothe_systemdatabase.403:ReturnedifyouhaveNoaccessserveraccesslevel.

Examples

shell>curl--dump-http://localhost:8529/_api/user/anotherAdmin@secapp/database/

UserManagement

387

Page 388: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyWiththefullresponseformat:

shell>curl--dump-http://localhost:8529/_api/user/anotherAdmin@secapp/database?

full=true

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Getthedatabaseaccesslevel

Getspecificdatabaseaccesslevel

GET/_api/user/{user}/database/{database}

PathParameters

user(required):Thenameoftheuserforwhichyouwanttoquerythedatabases.database(required):Thenameofthedatabasetoquery

Fetchthedatabaseaccesslevelforaspecificdatabase

Example:

shell>curl--dump-http://localhost:8529/_api/user/anotherAdmin@secapp/database/_system

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200,

"result":"rw"

}

ReturnCodes

200:Returnediftheacccesslevelcanbereturned400:Iftheaccessprivilegesarenotrightetc.401:ReturnedifyouhaveNoaccessdatabaseaccessleveltothe_systemdatabase.403:ReturnedifyouhaveNoaccessserveraccesslevel.

Examples

shell>curl--dump-http://localhost:8529/_api/user/anotherAdmin@secapp/database/_system

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

UserManagement

388

Page 389: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

showresponsebody

Getthespecificcollectionaccesslevel

Getthecollectionaccesslevel

GET/_api/user/{user}/database/{database}/{collection}

PathParameters

user(required):Thenameoftheuserforwhichyouwanttoquerythedatabases.database(required):Thenameofthedatabasetoquerycollection(required):Thenameofthecollection

Returnsthecollectionaccesslevelforaspecificcollection

Example:

shell>curl--dump-http://localhost:8529/_api/user/anotherAdmin@secapp/database/_system/_users

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200,

"result":"none"

}

ReturnCodes

200:Returnediftheacccesslevelcanbereturned400:Iftheaccessprivilegesarenotrightetc.401:ReturnedifyouhaveNoaccessdatabaseaccessleveltothe_systemdatabase.403:ReturnedifyouhaveNoaccessserveraccesslevel.

Examples

shell>curl--dump-

http://localhost:8529/_api/user/anotherAdmin@secapp/database/_system/_users

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

ReplaceUser

Replaceanexistinguser.

PUT/_api/user/{user}

PathParameters

user(required):Thenameoftheuser

AJSONobjectwiththesepropertiesisrequired:

UserManagement

389

Page 390: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

passwd:Theuserpasswordasastring.Specifyingapasswordismandatory,buttheemptystringisallowedforpasswordsactive:Anoptionalflagthatspecifieswhethertheuserisactive.Ifnotspecified,thiswilldefaulttotrueextra:AnoptionalJSONobjectwitharbitraryextradataabouttheuser.

Replacesthedataofanexistinguser.Thenameofanexistingusermustbespecifiedinuser.YouneedserveraccesslevelAdministrateinordertoexecutethisRESTcall.Additionally,ausercanchangehis/herowndata.

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/user/admin@myapp<<EOF

{

"passwd":"secure"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"user":"admin@myapp",

"active":true,

"extra":{

},

"error":false,

"code":200

}

ReturnCodes

200:Isreturnediftheuserdatacanbereplacedbytheserver.400:TheJSONrepresentationismalformedormandatorydataismissingfromtherequest401:ReturnedifyouhaveNoaccessdatabaseaccessleveltothe_systemdatabase.403:ReturnedifyouhaveNoaccessserveraccesslevel.404:Thespecifieduserdoesnotexist

Examples

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/user/admin@myapp

<<EOF

{

"passwd":"secure"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

ModifyUser

Modifyattributesofanexistinguser

PATCH/_api/user/{user}

PathParameters

user(required):Thenameoftheuser

UserManagement

390

Page 391: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

AJSONobjectwiththesepropertiesisrequired:

passwd:Theuserpasswordasastring.Specifyingapasswordismandatory,buttheemptystringisallowedforpasswordsactive:Anoptionalflagthatspecifieswhethertheuserisactive.Ifnotspecified,thiswilldefaulttotrueextra:AnoptionalJSONobjectwitharbitraryextradataabouttheuser.

Partiallyupdatesthedataofanexistinguser.Thenameofanexistingusermustbespecifiedinuser.YouneedserveraccesslevelAdministrateinordertoexecutethisRESTcall.Additionally,ausercanchangehis/herowndata.

Example:

shell>curl-XPATCH--data-binary@---dump-http://localhost:8529/_api/user/admin@myapp<<EOF

{

"passwd":"secure"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"user":"admin@myapp",

"active":true,

"extra":{

},

"error":false,

"code":200

}

ReturnCodes

200:Isreturnediftheuserdatacanbereplacedbytheserver.400:TheJSONrepresentationismalformedormandatorydataismissingfromtherequest.401:ReturnedifyouhaveNoaccessdatabaseaccessleveltothe_systemdatabase.403:ReturnedifyouhaveNoaccessserveraccesslevel.404:Thespecifieduserdoesnotexist

Examples

shell>curl-XPATCH--data-binary@---dump-http://localhost:8529/_api/user/admin@myapp

<<EOF

{

"passwd":"secure"

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

RemoveUser

deleteauserpermanently.

DELETE/_api/user/{user}

PathParameters

UserManagement

391

Page 392: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

user(required):Thenameoftheuser

Removesanexistinguser,identifiedbyuser.YouneedAdministratefortheserveraccesslevelinordertoexecutethisRESTcall.

Example:

shell>curl-XDELETE--data-binary@---dump-http://localhost:8529/_api/user/userToDelete@myapp<<EOF

{

}

EOF

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":202

}

ReturnCodes

202:Isreturnediftheuserwasremovedbytheserver401:ReturnedifyouhaveNoaccessdatabaseaccessleveltothe_systemdatabase.403:ReturnedifyouhaveNoaccessserveraccesslevel.404:Thespecifieduserdoesnotexist

Examples

shell>curl-XDELETE--data-binary@---dump-

http://localhost:8529/_api/user/userToDelete@myapp<<EOF

{

}

EOF

HTTP/1.1202Accepted

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":202

}

FetchUser

fetchthepropertiesofauser.

GET/_api/user/{user}

PathParameters

user(required):Thenameoftheuser

Fetchesdataaboutthespecifieduser.YoucanfetchinformationaboutyourselforyouneedtheAdministrateserveraccesslevelinordertoexecutethisRESTcall.

Example:

shell>curl--dump-http://localhost:8529/_api/user/admin@myapp

UserManagement

392

Page 393: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"user":"admin@myapp",

"active":true,

"extra":{

},

"error":false,

"code":200

}

ReturnCodes

200:Theuserwasfound.401:ReturnedifyouhaveNoaccessdatabaseaccessleveltothe_systemdatabase.403:ReturnedifyouhaveNoaccessserveraccesslevel.404:Theuserwiththespecifiednamedoesnotexist.

Examples

shell>curl--dump-http://localhost:8529/_api/user/admin@myapp

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

ListavailableUsers

fetchthepropertiesofauser.

GET/_api/user/

Fetchesdataaboutallusers.YouneedtheAdministrateserveraccesslevelinordertoexecutethisRESTcall.Otherwise,youwillonlygetinformationaboutyourself.

ThecallwillreturnaJSONobjectwithatleastthefollowingattributesonsuccess:

user:Thenameoftheuserasastring.active:Anoptionalflagthatspecifieswhethertheuserisactive.extra:AnoptionalJSONobjectwitharbitraryextradataabouttheuser.

Example:

shell>curl--dump-http://localhost:8529/_api/user

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200,

"result":[

{

"user":"admin",

"active":true,

"extra":{

}

},

UserManagement

393

Page 394: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

{

"user":"root",

"active":true,

"extra":{

}

},

{

"user":"tester",

"active":false,

"extra":{

}

}

]

}

ReturnCodes

200:Theusersthatwerefound.401:ReturnedifyouhaveNoaccessdatabaseaccessleveltothe_systemdatabase.403:ReturnedifyouhaveNoaccessserveraccesslevel.

Examples

shell>curl--dump-http://localhost:8529/_api/user

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

UserManagement

394

Page 395: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPtasksInterfaceFollowingyouhaveArangoDB'sHTTPInterfaceforTasks.

TherearealsosomeexamplesprovidedforeveryAPIaction.

Fetchalltasksoronetask

Retrievesallcurrentlyactiveservertasks

GET/_api/tasks/

fetchesallexistingtasksontheserver

Example:Fetchingalltasks

shell>curl--dump-http://localhost:8529/_api/tasks

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[

{

"id":"statistics-gc",

"name":"statistics-gc",

"created":1516907609.406109,

"type":"periodic",

"period":450,

"offset":406.020662,

"command":"(function(params){require('@arangodb/statistics').garbageCollector();})(params);",

"database":"_system"

},

{

"id":"statistics-average-collector",

"name":"statistics-average-collector",

"created":1516907609.4059584,

"type":"periodic",

"period":900,

"offset":20,

"command":"(function(params){require('@arangodb/statistics').historianAverage();})(params);",

"database":"_system"

},

{

"id":"statistics-collector",

"name":"statistics-collector",

"created":1516907609.4056144,

"type":"periodic",

"period":10,

"offset":1,

"command":"(function(params){require('@arangodb/statistics').historian();})(params);",

"database":"_system"

},

{

"id":"84",

"name":"user-definedtask",

"created":1516907599.4534233,

"type":"periodic",

"period":1,

"offset":0.000001,

"command":"(function(params){(function(){

require('@arangodb/foxx/queues/manager').manage();

})(params)})(params);",

"database":"_system"

}

]

Tasks

395

Page 396: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

200:Thelistoftasks

Examples

Fetchingalltasks

shell>curl--dump-http://localhost:8529/_api/tasks

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

[

{

"id":"statistics-gc",

"name":"statistics-gc",

"created":1516907609.406109,

"type":"periodic",

"period":450,

"offset":406.020662,

"command":"(function(params){require('@arangodb/statistics').garbageCollector();

})(params);",

"database":"_system"

},

{

"id":"statistics-average-collector",

"name":"statistics-average-collector",

"created":1516907609.4059584,

"type":"periodic",

"period":900,

"offset":20,

"command":"(function(params){require('@arangodb/statistics').historianAverage();

})(params);",

"database":"_system"

},

{

"id":"statistics-collector",

"name":"statistics-collector",

"created":1516907609.4056144,

"type":"periodic",

"period":10,

"offset":1,

"command":"(function(params){require('@arangodb/statistics').historian();})

(params);",

"database":"_system"

},

{

"id":"84",

"name":"user-definedtask",

"created":1516907599.4534233,

"type":"periodic",

"period":1,

"offset":0.000001,

"command":"(function(params){(function(){\n

require('@arangodb/foxx/queues/manager').manage();\n})(params)})(params);",

"database":"_system"

Tasks

396

Page 397: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

}

]

Fetchonetaskwithid

Retrievesonecurrentlyactiveservertask

GET/_api/tasks/{id}

id(required):Theidofthetasktofetch.

fetchesoneexistingtasksontheserverspecifiedbyid

Example:Fetchingasingletaskbyitsid

shell>curl--dump-http://localhost:8529/_api/tasks/statistics-average-collector

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"id":"statistics-average-collector",

"name":"statistics-average-collector",

"created":1516907609.4059584,

"type":"periodic",

"period":900,

"offset":20,

"command":"(function(params){require('@arangodb/statistics').historianAverage();})(params);",

"database":"_system",

"error":false,

"code":200

}

Example:tryingtofetchanon-existingtask

shell>curl--dump-http://localhost:8529/_api/tasks/non-existing-task

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"code":404,

"errorNum":1852,

"errorMessage":"tasknotfound"

}

200:Therequestedtask

Examples

Fetchingasingletaskbyitsid

shell>curl--dump-http://localhost:8529/_api/tasks/statistics-average-collector

HTTP/1.1200OK

content-type:application/json;charset=utf-8

Tasks

397

Page 398: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

x-content-type-options:nosniff

showresponsebodytryingtofetchanon-existingtask

shell>curl--dump-http://localhost:8529/_api/tasks/non-existing-task

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

createsatask

createsanewtask

POST/_api/tasks

AJSONobjectwiththesepropertiesisrequired:

params:Theparameterstobepassedintocommandoffset:Numberofsecondsinitialdelaycommand:TheJavaScriptcodetobeexecutedname:Thenameofthetaskperiod:numberofsecondsbetweentheexecutions

createsanewtaskwithageneratedid

Example:

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/tasks/<<EOF

{

"name":"SampleTask",

"command":"(function(params){require('@arangodb').print(params);})(params)",

"params":{

"foo":"bar",

"bar":"foo"

},

"period":2

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"id":"12983",

"name":"SampleTask",

"created":1516907628.2369483,

"type":"periodic",

"period":2,

"offset":0,

"command":"(function(params){(function(params){require('@arangodb').print(params);})(params)})(params);",

"database":"_system",

"error":false,

"code":200

}

shell>curl-XDELETE--dump-http://localhost:8529/_api/tasks/12983

Tasks

398

Page 399: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

ReturnCodes

400:Ifthepostbodyisnotaccurate,aHTTP400isreturned.

Examples

shell>curl-XPOST--data-binary@---dump-http://localhost:8529/_api/tasks/<<EOF

{

"name":"SampleTask",

"command":"(function(params){require('@arangodb').print(params);})(params)",

"params":{

"foo":"bar",

"bar":"foo"

},

"period":2

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

createsataskwithid

registersanewtaskwithapre-definedid

PUT/_api/tasks/{id}

id(required):Theidofthetasktocreate

AJSONobjectwiththesepropertiesisrequired:

params:Theparameterstobepassedintocommandoffset:Numberofsecondsinitialdelaycommand:TheJavaScriptcodetobeexecutedname:Thenameofthetaskperiod:numberofsecondsbetweentheexecutions

registersanewtaskwiththespecifiedid

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/tasks/sampleTask<<EOF

{

"id":"SampleTask",

"name":"SampleTask",

"command":"(function(params){require('@arangodb').print(params);})(params)",

"params":{

"foo":"bar",

"bar":"foo"

},

"period":2

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

Tasks

399

Page 400: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"id":"sampleTask",

"name":"SampleTask",

"created":1516907628.2489061,

"type":"periodic",

"period":2,

"offset":0,

"command":"(function(params){(function(params){require('@arangodb').print(params);})(params)})(params);",

"database":"_system",

"error":false,

"code":200

}

ReturnCodes

400:Ifthetaskidalreadyexistsortherestbodyisnotaccurate,HTTP400isreturned.

Examples

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_api/tasks/sampleTask

<<EOF

{

"id":"SampleTask",

"name":"SampleTask",

"command":"(function(params){require('@arangodb').print(params);})(params)",

"params":{

"foo":"bar",

"bar":"foo"

},

"period":2

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

deletesthetaskwithid

deletesonecurrentlyactiveservertask

DELETE/_api/tasks/{id}

id(required):Theidofthetasktodelete.

Deletesthetaskidentifiedbyidontheserver.

Example:tryingtodeletenonexistingtask

shell>curl-XDELETE--dump-http://localhost:8529/_api/tasks/NoTaskWithThatName

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":true,

"code":404,

"errorNum":1852,

Tasks

400

Page 401: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"errorMessage":"tasknotfound"

}

Example:RemoveexistingTask

shell>curl-XDELETE--dump-http://localhost:8529/_api/tasks/SampleTask

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200

}

ReturnCodes

404:Ifthetaskidisunknown,thenanHTTP404isreturned.

Examples

tryingtodeletenonexistingtask

shell>curl-XDELETE--dump-http://localhost:8529/_api/tasks/NoTaskWithThatName

HTTP/1.1404NotFound

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyRemoveexistingTask

shell>curl-XDELETE--dump-http://localhost:8529/_api/tasks/SampleTask

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"error":false,

"code":200

}

Tasks

401

Page 402: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforAgencyfeature

Configuration

Atalltimes,i.e.regardlessofthestateoftheagentsandthecurrenthealthoftheRAFTconsensus,onecaninvoketheconfigurationAPI:

curlhttp://$SERVER:$PORT/_api/agency/config

Here,andinallsubsequentcalls,weassumethat$SERVERisreplacedbytheservernameand$PORTisreplacedbytheportnumber.Weusecurlthroughoutfortheexamples,butanyclientlibraryperformingHTTPrequestsshoulddo.Theoutputmightlooksomewhatlikethis

{

"term":1,

"leaderId":"f5d11cde-8468-4fd2-8747-b4ef5c7dfa98",

"lastCommitted":1,

"lastAcked":{

"ac129027-b440-4c4f-84e9-75c042942171":0.21,

"c54dbb8a-723d-4c82-98de-8c841a14a112":0.21,

"f5d11cde-8468-4fd2-8747-b4ef5c7dfa98":0

},

"configuration":{

"pool":{

"ac129027-b440-4c4f-84e9-75c042942171":"tcp://localhost:8531",

"c54dbb8a-723d-4c82-98de-8c841a14a112":"tcp://localhost:8530",

"f5d11cde-8468-4fd2-8747-b4ef5c7dfa98":"tcp://localhost:8529"

},

"active":[

"ac129027-b440-4c4f-84e9-75c042942171",

"c54dbb8a-723d-4c82-98de-8c841a14a112",

"f5d11cde-8468-4fd2-8747-b4ef5c7dfa98"

],

"id":"f5d11cde-8468-4fd2-8747-b4ef5c7dfa98",

"agencysize":3,

"poolsize":3,

"endpoint":"tcp://localhost:8529",

"minping":0.5,

"maxping":2.5,

"supervision":false,

"supervisionfrequency":5,

"compactionstepsize":1000,

"supervisiongraceperiod":120

}

}

Thisistheactualoutputofahealthyagency.Theconfigurationoftheagencyisfoundintheconfigurationsectionasyoumighthaveguessed.Itispopulatedbystaticinformationonthestartupparameterslikeagencysize,theoncegenerateduniqueidetc.ItholdsinformationontheinvariantsoftheRAFTalgorithmanddatacompaction.

TheremainingdatareflectthevariantentitiesinRAFT,astermandleaderId,alsosomedebuginformationonhowlongthelastleadershipvotewasreceivedfromanyparticularagencymember.Lowtermnumbersonahealthynetworkareanindicationofgoodoperationenvironemnt,whileoftenincreasingtermnumbersindicate,thatthenetworkenvironemntandstabilitysuggesttoraisetheRAFTparametersminpingand'maxping'accordingly.

Key-ValuestoreAPIs

Generally,alldocumentIOtoandfromthekey-valuestoreconsistsofJSONarrays.TheouterArrayisanenvelopeformultiplereadorwritetransactions.Theresultsarearraysareanenvelopearoundtheresultscorrespondingtotheorderoftheincomingtransactions.

Considerthefollowingwriteoperationintoaprestineagency:

curl-Lhttp://$SERVER:$PORT/_api/agency/write-d'[[{"a":{"op":"set","new":{"b":{"c":[1,2,3]},"e":12}},"d":{"op":"set","new":f

alse}}]]'

Agency

402

Page 403: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

[{results:[1]}]

Andthesubsequentreadoperation

curl-Lhttp://$SERVER:$PORT/_api/agency/read-d'[["/"]]'

[

{

"a":{

"b":{

"c":[1,2,3]

},

"e":12

},

"d":false

}

]

InthefirststepwecommitedasingletransactionthatcommitstheJSONdocumentinsidetheinnertransactionarraytotheagency.Theresultis[1],whichisthereplicatedlogindex.Repeatedinvocationwillyieldgrowinglognumbers2,3,4,etc.

Thereadaccessisacompleteaccesstothekey-valuestoreindicatedbyaccesstoit'srootelementandreturnstheresultasanarraycorrespondingtotheoutermostarrayinthereadtransaction.

Let'sdiginsomedeeper.

ReadAPI

Let'sstartwiththeaboveinitialisedkey-valuestoreinthefollowing.Letusvisitthefollowingreadoperations:

curl-Lhttp://$SERVER:$PORT/_api/agency/read-d'[["/a/b"]]'

[

{

"a":{

"b":{

"c":[1,2,3]

}

}

}

]

And

curl-Lhttp://$SERVER:$PORT/_api/agency/read-d'[["/a/b/c"]]'

[

{

"a":{

"b":{

"c":[1,2,3]

}

}

}

]

Notethattheaboveresultsareidentical,meaningthatresultsobtainedfromtheagencyarealwaysreturnwithfullpath.

Thesecondouterarraybracketsinreadoperationscorrespondtotransactions,meaningthattheresultisguaranteedtohavebeenacquiredwithoutawritetransactioninbetween:

curl-Lhttp://$SERVER:$PORT/_api/agency/read-d'[["/a/e"],["/d","/a/b"]]'

Agency

403

Page 404: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

[

{

"a":{

"e":12

}

},

{

"a":{

"b":{

"c":[1,2,3

]

}

},

"d":false

}

]

Whilethefirsttransactionconsistsofasinglereadaccesstothekey-value-storethusstrechtingthemeaningofthewordtransaction,thesecondbracketactuallyholdtwodisjunctreadaccesses,whichhavebeenjoinedwithinzero-time,i.e.withoutawriteaccessinbetween.Thatistosaythat"/d"cannothavechangedbefore"/a/b"hadbeenacquired.

Let'strytofetchavaluefromthekey-value-store,whichdoesnotexist:

curl-Lhttp://$SERVER:$PORT/_api/agency/read-d'[["/a/b/d"]]'

[

{

"a":{

"b":{}

}

}

]

Theresultreturnsthecrosssectionoftherequestedpathandthekey-value-storecontents."/a/b"exists,butthereisnokey"/a/b/d".Thusthefollowingtransactionwillyield:

curl-Lhttp://$SERVER:$PORT/_api/agency/read-d'[["/a/b/d","/d"]]'

[

{

"a":{

"b":{}

},

"d":false

}

]

Andthislastreadoperationshouldreturn:

curl-Lhttp://$SERVER:$PORT/_api/agency/read-d'[["/a/b/c"],["/a/b/d"],["/a/x/y"],["/y"],["/a/b","/a/x"]]'

[

{"a":{"b":{"c":[1,2,3]}}},

{"a":{"b":{}}},

{"a":{}},

{},

{"a":{"b":{"c":[1,2,3]}}}

]

WriteAPI

Agency

404

Page 405: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

ThewriteAPImustobviouslybemoreversatileandneedsamoredetailedappreciation.Writeoperationsarearraysoftransactionswithpreconditions,i.e.[[U,P]],wherethesystemtriestoapplyallupdatesintheouterarrayinturn,rejectingthosewhosepreconditionisnotfulfilledbythecurrentstate.Itisguaranteedthatthetransactionsinthewriterequestaresequencedadjacenttoeachother(withnointerventionfromotherwriterequests).Onlytheoneswithfailedpreconditionsareleftout.

ForP,thevalueofakeyisanobjectwithattributes"old","oldNot","oldEmpty"or"isArray".With"old"onecanspecifyaJSONvaluethathastobepresentfortheconditiontobefulfilled.With"oldNot"onemaycheckforavaluetonotbeequaltothetest.Whilewith"oldEmpty",whichcantakeabooleanvalue,onecanspecifythatthekeyvalueneedstobenotsettrueorsettoanarbitraryvaluefalse.With"isArray"onecanspecifythatthevaluemustbeanarray.Asashortcut,"old"valuesofscalarorarraytypemaybestoreddirectlyintheattribute.Examples:

{"/a/b/c":{"old":[1,2,3]}}

isapreconditionspecifyingthatthepreviousvalueofthekey"/a/b/c"keymustbe[1,2,3].Ifandonlyifthevalueofthepreconditionisnotanobjectweprovideanotation,wherethekeyworkoldmaybeomitted.Thus,theabovecheckmaybeshortcutas

{"/a/b/c":[1,2,3]}

Considertheagencyininitialisedasabovelet'sreviewtheresponsesfromtheagencyasfollows:

curl-Lhttp://$SERVER:$PORT/_api/agency/write-d'[[{"/a/b/c":{"op":"set","new":[1,2,3,4]},"/a/b/pi":{"op":"set","new":"somet

ext"}},{"/a/b/c":{"old":[1,2,3]}}]]'

{

"results":[19]

}

Theconditionisfulfilledinthefirstrunandwouldbewronginasecondreturning

{

"results":[0]

}

0asaresultmeansthatthepreconditionfailedandno"real"lognumberwasreturned.

{"/a/e":{"oldEmpty":false}}

meansthatthevalueofthekey"a/e"mustbeset(tosomething,whichcanbenull!).Thecondition

{"/a/e":{"oldEmpty":true}}

meansthatthevalueofthekey"a/e"mustbeunset.Thecondition

{"/a/b/c":{"isArray":true}}

meansthatthevalueofthekey"a/b/c"mustbeanarray.

TheupdatevalueUisanobject,theattributenamesareagainkeystringsandthevaluesareobjectswithoptionalattributes"new","op"and"ttl".Theyhavethefollowingmeaning:

"op"determinestheoperation,possiblevaluesare"set"(thedefault,ifleftout),"delete","increment","decrement","push","pop","shift"or"prepend"

"new"isthenewvalue,canbeomittedforthe"delete"operationandfor"increment"and"decrement",where1isimplied

"ttl",ifpresent,thenewvaluethatisbeingsetgetsatimetoliveinseconds,givenbyanumericvalueinthisattribute.Itisonlyguaranteedthattheactualremovalofthevalueisdoneaccordingtothesystemclock,souptoclockskewbetweenservers.Theremovalisdonebyanadditionalwritetransactionthatisautomaticallygeneratedbetweentheregularwrites.

Agency

405

Page 406: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Additionalrule:Ifnoneof"new"and"op"issetorthevalueisnotevenanobject,thenthisistobeinterpretedasifitwere

{"op":"set","new":<VALUE>}

whichamountstosettingthevaluewithnoprecondition.

Examples:

{"/a":{"op":"set","new":12}}

setsthevalueofthekey"/a"to12.Thesamecouldhavebeenachievedby

{"/a":12}

orby

{"/a":{"new":12}}

Theoperation

{"/a/b":{"new":{"c":[1,2,3,4]}}}

setsthekey"/a/b"to{"c":[1,2,3,4]}.Notethatintheaboveexamplethisisthesameassettingthevalueof"/a/b/c"to[1,2,3,4].Thedifferenceis,thatifa/bhadothersubattributes,thenthistransactionwoulddeletealltheseotherattributesandmake"/a/b"equalto{"c":[1,2,3,4]},whereassetting"/a/b/c"to[1,2,3,4]wouldretainallattributesotherthan"c"in"/a/b".

Herearesomemoreexamplesforfulltransactions(update/preconditionpairs).Thetransaction

[{"/a/b":{"new":{"c":[1,2,3,4]}}},

{"/a/b":{"old":{"c":[1,2,3]}}}]

setsthekey"/a/b"to{"c":[1,2,3,4]}ifandonlyifitwas{"c":[1,2,3]}before.Notethatthisfailsif"/a/b"hadotherattributesthan"c".Thetransaction

[{"/x":{"op":"delete"}},

{"/x":{"old":false}}]

clearsthevalueofthekey"/x"ifthisoldvaluewasfalse.

[{"/y":{"new":13},

{"/y":{"oldEmpty":true}}}

setsthevalueof"/y"to13,butonly,ifitwasunsetbefore.

[{"/z":{"op":"push","new":"Max"}}]

appendsthestring"Max"totheendoftheliststoredinthe"z"attribute,orcreatesanarray["Max"]in"z"ifitwasunsetornotanarray.

[{"/u":{"op":"pop"}}]

removesthelastentryofthearraystoredunder"u",ifthevalueof"u"isnotsetornotanarray.

HTTP-headersforwriteoperations

X-ArangoDB-Agency-Modewithpossiblevalues"waitForCommitted","waitForSequenced"and"noWait".

Agency

406

Page 407: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

Inthefirstcasethewriteoperationonlyreturnswhenthecommittothereplicatedloghasactuallyhappened.Inthesecondcasethewriteoperationreturnswhenthewritetransactionsthatfulfilledtheirpreconditionshavebeensequencedandthusitisknown,whichofthewritetransactionsinthegivenarrayhadfulfilledpreconditions.InbothcasesthebodyisaJSONarraycontainingtheindexesofthetransactionsinthelistthathadfulfilledpreconditions.

Inthelastcase,"noWait",theoperationreturnsimmediately,anemptybodyisreturned.Togetanyinformationabouttheresultoftheoperationonehastospecifyatag(seebelow)andaskaboutthestatuslateron.

X-ArangoDB-Agency-TagwithanarbitraryUTF-8stringvalue.

Observers

Externalservicestotheagencymayannouncethemselvesorotherstobeobserversofarbitraryexistingorfuturekeysinthekey-value-store.Theagencymusttheninformtheobservingserviceofanychangestothesubtreebelowtheobservedkey.ThenotificationisdonebyvirtueofPOSTrequeststoarequiredvalidURL.

Inordertoobserveanyfuturemodificationbelowsay"/a/b/c",aobserverisannouncedthroughpostingthebelowdocumenttotheagency’swriteRESThandler:

[{"/a/b/c":

{"op":"observe",

"url":"http://<host>:<port>/<path>"

}

}]

Theobserverisnotifiedofanychangestothattargetuntilsuchtimethatitremovesitselfasanobserverofthatkeythrough

[{"/a/b/c":

{"op":"unobserve",

"url":“http://<host>:<port>/<path>"}}]

Notethatthelastdocumentremovesallobservationsfromentitiesbelow"/a/b/c".Inparticular,issuing

[{"/":"unobserve","url":"http://<host>:<port>/<path>"}]

willresultintheremovalofallobservationsforURL"http://<host>:<port>/<path>".ThenotifyingPOSTrequestsaresubmittedimmediatelywithanycompletearrayofchangestothereaddboftheleaderofcreate,modifyanddeleteeventsaccordingly;Thebody

{"term":"5",

"index":167,

"/":{

"/a/b/c":{"op":"modify","old":1,"new":2}},

"/constants/euler":{"op":"create","new":2.718281828459046},

"/constants/pi":{"op":"delete"}}}

Agency

407

Page 408: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

HTTPInterfaceforMiscellaneousfunctionsThisisanoverviewofArangoDB'sHTTPinterfaceformiscellaneousfunctions.

Returnserverversion

returnstheserverversionnumber

GET/_api/version

QueryParameters

details(optional):Ifsettotrue,theresponsewillcontainadetailsattributewithadditionalinformationaboutincludedcomponentsandtheirversions.TheattributenamesandinternalsofthedetailsobjectmayvarydependingonplatformandArangoDBversion.

Returnstheservernameandversionnumber.TheresponseisaJSONobjectwiththefollowingattributes:

AjsondocumentwiththesePropertiesisreturned:

HTTP200

isreturnedinallcases.

version:theserverversionstring.Thestringhastheformat"major.minor.sub".majorandminorwillbenumeric,andsubmaycontainanumberoratextualversion.details:anoptionalJSONobjectwithadditionaldetails.Thisisreturnedonlyifthedetailsqueryparameterissettotrueintherequest.server:willalwayscontainarango

Example:Returntheversioninformation

shell>curl--dump-http://localhost:8529/_api/version

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"server":"arango",

"version":"3.3.3",

"license":"community"

}

Example:Returntheversioninformationwithdetails

shell>curl--dump-http://localhost:8529/_api/version?details=true

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"server":"arango",

"version":"3.3.3",

"license":"community",

"details":{

Miscellaneousfunctions

408

Page 409: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

"architecture":"64bit",

"arm":"false",

"asan":"false",

"asm-crc32":"true",

"assertions":"true",

"boost-version":"1.62.0",

"build-date":"2018-01-2519:30:05",

"build-repository":"heads/3.3.3-0-gd1ca58310e-dirty",

"compiler":"gcc[7.2.0]",

"cplusplus":"201103",

"debug":"false",

"endianness":"little",

"failure-tests":"false",

"fd-client-event-handler":"poll",

"fd-setsize":"1024",

"full-version-string":"ArangoDB3.3.3[linux]64bitmaintainermode,usingjemalloc,VPack0.1.30,RocksDB5.6.0,ICU58.

1,V85.7.492.77,OpenSSL1.0.2g1Mar2016",

"icu-version":"58.1",

"jemalloc":"true",

"maintainer-mode":"true",

"openssl-version":"OpenSSL1.0.2g1Mar2016",

"platform":"linux",

"reactor-type":"epoll",

"rocksdb-version":"5.6.0",

"server-version":"3.3.3",

"sizeofint":"4",

"sizeofvoid*":"8",

"sse42":"false",

"unaligned-access":"true",

"v8-version":"5.7.492.77",

"vpack-version":"0.1.30",

"zlib-version":"1.2.11",

"mode":"server",

"host":"c54ebb83e5eb4257b9e0f7201ba87ded"

}

}

ReturnCodes

200:isreturnedinallcases.

ResponseBody

version:theserverversionstring.Thestringhastheformat"major.minor.sub".majorandminorwillbenumeric,andsubmaycontainanumberoratextualversion.details:anoptionalJSONobjectwithadditionaldetails.Thisisreturnedonlyifthedetailsqueryparameterissettotrueintherequest.server:willalwayscontainarango

shell>curl--dump-http://localhost:8529/_api/version

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebodyReturntheversioninformationwithdetails

shell>curl--dump-http://localhost:8529/_api/version?details=true

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

Miscellaneousfunctions

409

Page 410: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

showresponsebody

Returnserverdatabaseenginetype

returnstheenginethetypetheserverisrunningwith

GET/_api/engine

Returnsthestorageenginetheserverisconfiguredtouse.TheresponseisaJSONobjectwiththefollowingattributes:

AjsondocumentwiththesePropertiesisreturned:

HTTP200

isreturnedinallcases.

name:willbemmfilesorrocksdb

Example:Returntheactivestorageengine

shell>curl--dump-http://localhost:8529/_api/engine

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"name":"mmfiles",

"supports":{

"dfdb":true,

"indexes":[

"primary",

"edge",

"hash",

"skiplist",

"persistent",

"geo",

"fulltext"

]

}

}

ReturnCodes

200:isreturnedinallcases.

ResponseBody

name:willbemmfilesorrocksdb

shell>curl--dump-http://localhost:8529/_api/engine

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

showresponsebody

Flushesthewrite-aheadlog

Miscellaneousfunctions

410

Page 411: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

SynctheWALtodisk.

PUT/_admin/wal/flush

PathParameters

waitForSync(optional):Whetherornottheoperationshouldblockuntilthenot-yetsynchronizeddatainthewrite-aheadlogwassynchronizedtodisk.waitForCollector(optional):Whetherornottheoperationshouldblockuntilthedataintheflushedloghasbeencollectedbythewrite-aheadloggarbagecollector.Notethatsettingthisoptiontotruemightblockforalongtimeiftherearelong-runningtransactionsandthewrite-aheadloggarbagecollectorcannotfinishgarbagecollection.

Flushesthewrite-aheadlog.Byflushingthecurrentlyactivewrite-aheadlogfile,thedatainitcanbetransferredtocollectionjournalsanddatafiles.Thisisusefultoensurethatalldataforacollectionispresentinthecollectionjournalsanddatafiles,forexample,whendumpingthedataofacollection.

ReturnCodes

200:Isreturnediftheoperationsucceeds.405:isreturnedwhenaninvalidHTTPmethodisused.

Retrievestheconfigurationofthewrite-aheadlog

fetchthecurrentconfiguration.

GET/_admin/wal/properties

Retrievestheconfigurationofthewrite-aheadlog.TheresultisaJSONobjectwiththefollowingattributes:

allowOversizeEntries:whetherornotoperationsthatarebiggerthanasinglelogfilecanbeexecutedandstoredlogfileSize:thesizeofeachwrite-aheadlogfilehistoricLogfiles:themaximumnumberofhistoriclogfilestokeepreserveLogfiles:themaximumnumberofreservelogfilesthatArangoDBallocatesinthebackgroundsyncInterval:theintervalforautomaticsynchronizationofnot-yetsynchronizedwrite-aheadlogdata(inmilliseconds)throttleWait:themaximumwaittimethatoperationswillwaitbeforetheygetabortedifcaseofwrite-throttling(inmilliseconds)throttleWhenPending:thenumberofunprocessedgarbage-collectionoperationsthat,whenreached,willactivatewrite-throttling.Avalueof0meansthatwrite-throttlingwillnotbetriggered.

Example:

shell>curl--dump-http://localhost:8529/_admin/wal/properties

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"allowOversizeEntries":true,

"logfileSize":33554432,

"historicLogfiles":10,

"reserveLogfiles":3,

"syncInterval":100,

"throttleWait":15000,

"throttleWhenPending":0

}

ReturnCodes

200:Isreturnediftheoperationsucceeds.405:isreturnedwhenaninvalidHTTPmethodisused.

Configuresthewrite-aheadlog

configureparametersofthewal

Miscellaneousfunctions

411

Page 412: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

PUT/_admin/wal/properties

Configuresthebehaviorofthewrite-aheadlog.ThebodyoftherequestmustbeaJSONobjectwiththefollowingattributes:

allowOversizeEntries:whetherornotoperationsthatarebiggerthanasinglelogfilecanbeexecutedandstoredlogfileSize:thesizeofeachwrite-aheadlogfilehistoricLogfiles:themaximumnumberofhistoriclogfilestokeepreserveLogfiles:themaximumnumberofreservelogfilesthatArangoDBallocatesinthebackgroundthrottleWait:themaximumwaittimethatoperationswillwaitbeforetheygetabortedifcaseofwrite-throttling(inmilliseconds)throttleWhenPending:thenumberofunprocessedgarbage-collectionoperationsthat,whenreached,willactivatewrite-throttling.Avalueof0meansthatwrite-throttlingwillnotbetriggered.

Specifyinganyoftheaboveattributesisoptional.Notspecifiedattributeswillbeignoredandtheconfigurationforthemwillnotbemodified.

Example:

shell>curl-XPUT--data-binary@---dump-http://localhost:8529/_admin/wal/properties<<EOF

{

"logfileSize":33554432,

"allowOversizeEntries":true

}

EOF

HTTP/1.1200OK

content-type:application/json;charset=utf-8

x-content-type-options:nosniff

{

"allowOversizeEntries":true,

"logfileSize":33554432,

"historicLogfiles":10,

"reserveLogfiles":3,

"syncInterval":100,

"throttleWait":15000,

"throttleWhenPending":0

}

ReturnCodes

200:Isreturnediftheoperationsucceeds.405:isreturnedwhenaninvalidHTTPmethodisused.

Returnsinformationaboutthecurrentlyrunningtransactions

returnsinformationaboutthecurrentlyrunningtransactions

GET/_admin/wal/transactions

Returnsinformationaboutthecurrentlyrunningtransactions.TheresultisaJSONobjectwiththefollowingattributes:

runningTransactions:numberofcurrentlyrunningtransactionsminLastCollected:minimumidofthelastcollectedlogfile(atthestartofeachrunningtransaction).Thisisnullifnotransactionisrunning.minLastSealed:minimumidofthelastsealedlogfile(atthestartofeachrunningtransaction).Thisisnullifnotransactionisrunning.

Example:

shell>curl--dump-http://localhost:8529/_admin/wal/transactions

HTTP/1.1200OK

content-type:application/json;charset=utf-8

Miscellaneousfunctions

412

Page 413: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

x-content-type-options:nosniff

{

"runningTransactions":5,

"minLastCollected":85,

"minLastSealed":null

}

ReturnCodes

200:Isreturnediftheoperationsucceeds.405:isreturnedwhenaninvalidHTTPmethodisused.

Returnsystemtime

Getthecurrenttimeofthesystem

GET/_admin/time

Thecallreturnsanobjectwiththeattributetime.ThiscontainsthecurrentsystemtimeasaUnixtimestampwithmicrosecondprecision.

ReturnCodes

200:Timewasreturnedsuccessfully.

Returncurrentrequest

Sendbackwhatwassentin,headers,postbodyetc.

GET/_admin/echo

Thecallreturnsanobjectwiththefollowingattributes:

headers:objectwithHTTPheadersreceived

requestType:theHTTPrequestmethod(e.g.GET)

parameters:objectwithqueryparametersreceived

ReturnCodes

200:Echowasreturnedsuccessfully.

Returncurrentrequestandcontinues

Sendbackwhatwassentin,headers,postbodyetc.

GET/_admin/long_echo

Thecallreturnsanobjectwiththefollowingattributes:

headers:objectwithHTTPheadersreceived

requestType:theHTTPrequestmethod(e.g.GET)

parameters:objectwithqueryparametersreceived

ReturnCodes

200:Echowasreturnedsuccessfully.

Returntherequiredversionofthedatabase

returnstheversionofthedatabase.

GET/_admin/database/target-version

Returnsthedatabase-versionthatthisserverrequires.Theversionisreturnedintheversionattributeoftheresult.

ReturnCodes

Miscellaneousfunctions

413

Page 414: Table of Contents - ArangoDB · 2018. 1. 26. · ArangoDB v3.3.3 HTTP API Documentation Welcome to the ArangoDB HTTP API documentation! This documentation is for API developers. As

200:Isreturnedinallcases.

Initiateshutdownsequence

initiatestheshutdownsequence

DELETE/_admin/shutdown

Thiscallinitiatesacleanshutdownsequence.Requiresadministriveprivileges

ReturnCodes

200:isreturnedinallcases.

Runstestsonserver

showtheavailableunittestsontheserver.

POST/_admin/test

RequestBody(required)

AJSONobjectcontaininganattributetestswhichliststhefilescontainingthetestsuites.

Executesthespecifiedtestsontheserverandreturnsanobjectwiththetestresults.Theobjecthasanattribute"error"whichstateswhetheranyerroroccurred.Theobjectalsohasanattribute"passed"whichindicateswhichtestspassedandwhichdidnot.

Executeprogram

Executeascriptontheserver.

POST/_admin/execute

RequestBody(required)

Thebodytobeexecuted.

Executesthejavascriptcodeinthebodyontheserverasthebodyofafunctionwithnoarguments.Ifyouhaveareturnstatementthenthereturnvalueyouproducewillbereturnedascontenttypeapplication/json.IftheparameterreturnAsJSONissettotrue,theresultwillbeaJSONobjectdescribingthereturnvaluedirectly,otherwiseastringproducedbyJSON.stringifywillbereturned.

NotethatthisAPIendpointwillonlybepresentiftheserverwasstartedwiththeoption--javascript.allow-admin-executetrue.

Thedefaultvalueofthisoptionisfalse,whichdisablestheexecutionofuser-definedcodeanddisablesthisAPIendpointentirely.Thisisalsotherecommendedsettingforproduction.

Miscellaneousfunctions

414