ArangoDB v3.4 reached End of Life (EOL) and is no longer supported.
This documentation is outdated. Please see the most recent version here: Latest Docs
HTTP Interface for AQL User Functions Management
AQL User Functions Management
This is an introduction to ArangoDB’s HTTP interface for managing AQL user functions. AQL user functions are a means to extend the functionality of ArangoDB’s query language (AQL) with user-defined JavaScript code.
For an overview of how AQL user functions and their implications, please refer to the Extending AQL chapter.
The HTTP interface provides an API for adding, deleting, and listing previously registered AQL user functions.
All user functions managed through this interface will be stored in the system collection _aqlfunctions. Documents in this collection should not be accessed directly, but only via the dedicated interfaces.
Create AQL user function
create a new AQL user function
POST /_api/aqlfunction
Request Body
-
name (string, required): the fully qualified name of the user functions.
-
code (string, required): a string representation of the function body.
-
isDeterministic (boolean, optional): an optional boolean value to indicate whether the function results are fully deterministic (function return value solely depends on the input value and return value is the same for repeated calls with same input). The isDeterministic attribute is currently not used but may be used later for optimizations.
In case of success, HTTP 200 is returned. If the function isn’t valid etc. HTTP 400 including a detailed error message will be returned.
Responses
HTTP 200: If the function already existed and was replaced by the call, the server will respond with HTTP 200.
-
error (boolean): boolean flag to indicate whether an error occurred (false in this case)
-
code (integer): the HTTP status code
-
isNewlyCreated (boolean): boolean flag to indicate whether the function was newly created (false in this case)
HTTP 201: If the function can be registered by the server, the server will respond with HTTP 201.
-
error (boolean): boolean flag to indicate whether an error occurred (false in this case)
-
code (integer): the HTTP status code
-
isNewlyCreated (boolean): boolean flag to indicate whether the function was newly created (true in this case)
HTTP 400: If the JSON representation is malformed or mandatory data is missing from the request, the server will respond with HTTP 400.
-
error (boolean): boolean flag to indicate whether an error occurred (true in this case)
-
code (integer): the HTTP status code
-
errorNum (integer): the server error number
-
errorMessage (string): a descriptive error message
Examples
shell> curl -X POST --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/aqlfunction <<EOF
{
"name" : "myfunctions::temperature::celsiustofahrenheit",
"code" : "function (celsius) { return celsius * 1.8 + 32; }",
"isDeterministic" : true
}
EOF
HTTP/1.1 Created
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"error" : false,
"code" : 201,
"isNewlyCreated" : true
}
shell> curl -X POST --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/aqlfunction <<EOF
{
"name" : "myfunctions::temperature::celsiustofahrenheit",
"code" : "function (celsius) { return celsius * 1.8 + 32; }",
"isDeterministic" : true
}
EOF
HTTP/1.1 Created
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
Remove existing AQL user function
remove an existing AQL user function
DELETE /_api/aqlfunction/{name}
Path Parameters
- name (string, required): the name of the AQL user function.
Query Parameters
- group (string, optional):
- true: The function name provided in name is treated as a namespace prefix, and all functions in the specified namespace will be deleted. The returned number of deleted functions may become 0 if none matches the string.
- false: The function name provided in name must be fully qualified, including any namespaces. If none matches the name, HTTP 404 is returned.
Removes an existing AQL user function or function group, identified by name.
Responses
HTTP 200: If the function can be removed by the server, the server will respond with HTTP 200.
-
error (boolean): boolean flag to indicate whether an error occurred (false in this case)
-
code (integer): the HTTP status code
-
deletedCount (integer): The number of deleted user functions, always
1
whengroup
is set to false. Any number>= 0
whengroup
is set to true
HTTP 400: If the user function name is malformed, the server will respond with HTTP 400.
-
error (boolean): boolean flag to indicate whether an error occurred (true in this case)
-
code (integer): the HTTP status code
-
errorNum (integer): the server error number
-
errorMessage (string): a descriptive error message
HTTP 404: If the specified user user function does not exist, the server will respond with HTTP 404.
-
error (boolean): boolean flag to indicate whether an error occurred (true in this case)
-
code (integer): the HTTP status code
-
errorNum (integer): the server error number
-
errorMessage (string): a descriptive error message
Examples
deletes a function:
shell> curl -X DELETE --header 'accept: application/json' --dump - http://localhost:8529/_api/aqlfunction/square::x::y
HTTP/1.1 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"error" : false,
"code" : 200,
"deletedCount" : 1
}
shell> curl -X DELETE --header 'accept: application/json' --dump - http://localhost:8529/_api/aqlfunction/square::x::y
HTTP/1.1 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
function not found:
shell> curl -X DELETE --header 'accept: application/json' --dump - http://localhost:8529/_api/aqlfunction/myfunction::x::y
HTTP/1.1 Not Found
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"error" : true,
"errorMessage" : "no AQL user function with name 'myfunction::x::y' found",
"code" : 404,
"errorNum" : 1582
}
shell> curl -X DELETE --header 'accept: application/json' --dump - http://localhost:8529/_api/aqlfunction/myfunction::x::y
HTTP/1.1 Not Found
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
Return registered AQL user functions
gets all reqistered AQL user functions
GET /_api/aqlfunction
Query Parameters
- namespace (string, optional): Returns all registered AQL user functions from namespace namespace under result.
Returns all registered AQL user functions.
The call will return a JSON array with status codes and all user functions found under result.
Responses
HTTP 200: on success HTTP 200 is returned.
-
error (boolean): boolean flag to indicate whether an error occurred (false in this case)
-
code (integer): the HTTP status code
-
result (array): All functions, or the ones matching the namespace parameter
-
name (string): The fully qualified name of the user function
-
code (string): A string representation of the function body
-
isDeterministic (boolean): an optional boolean value to indicate whether the function results are fully deterministic (function return value solely depends on the input value and return value is the same for repeated calls with same input). The isDeterministic attribute is currently not used but may be used later for optimizations.
-
HTTP 400: If the user function name is malformed, the server will respond with HTTP 400.
-
error (boolean): boolean flag to indicate whether an error occurred (true in this case)
-
code (integer): the HTTP status code
-
errorNum (integer): the server error number
-
errorMessage (string): a descriptive error message
Examples
shell> curl --header 'accept: application/json' --dump - http://localhost:8529/_api/aqlfunction/test
HTTP/1.1 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff
{
"error" : false,
"code" : 200,
"result" : [ ]
}
shell> curl --header 'accept: application/json' --dump - http://localhost:8529/_api/aqlfunction/test
HTTP/1.1 OK
content-type: application/json; charset=utf-8
x-content-type-options: nosniff