ArangoDB v3.13 is under development and not released yet. This documentation is not final and potentially incomplete.

HTTP interface for tasks

The HTTP API for tasks lets you manage the periodic or timed execution of server-side JavaScript code

List all tasks

GET /_db/{database-name}/_api/tasks/
fetches all existing tasks on the server
Path Parameters
  • The name of a database. Which database you use doesn’t matter as long as the user account you authenticate with has at least read access to this database.

Query Parameters
    HTTP Headers
      Responses
      • The list of tasks

          Response Body application/json
        • a list of all tasks

          • The JavaScript function for this task.

          • The timestamp when this task was created.

          • The database this task belongs to.

          • A string identifying the task.

          • A user-friendly name for the task.

          • Time offset in seconds from the created timestamp.

          • This task should run each period seconds.

          • What type of task is this [ periodic, timed]

            • periodic are tasks that repeat periodically
            • timed are tasks that execute once at a specific time

      Examples

      Fetching all tasks

      curl --header 'accept: application/json' --dump - http://localhost:8529/_api/tasks
      Show output

      Get a task

      GET /_db/{database-name}/_api/tasks/{id}
      fetches one existing task on the server specified by id
      Path Parameters
      • The name of a database. Which database you use doesn’t matter as long as the user account you authenticate with has at least read access to this database.

      • The id of the task to fetch.

      Query Parameters
        HTTP Headers
          Responses
          • The requested task

              Response Body application/json object
              The function in question
            • The JavaScript function for this task.

            • The timestamp when this task was created.

            • The database this task belongs to.

            • A string identifying the task.

            • A user-friendly name for the task.

            • Time offset in seconds from the created timestamp.

            • This task should run each period seconds.

            • What type of task is this [ periodic, timed]

              • periodic are tasks that repeat periodically
              • timed are tasks that execute once at a specific time

          Examples

          Fetching a single task by its id

          curl -X POST --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/tasks
          "{\"id\":\"testTask\",\"command\":\"console.log('Hello from task!');\",\"offset\":10000}"
          
          curl --header 'accept: application/json' --dump - http://localhost:8529/_api/tasks/testTask
          Show output

          Trying to fetch a non-existing task

          curl --header 'accept: application/json' --dump - http://localhost:8529/_api/tasks/non-existing-task
          Show output

          Create a task

          POST /_db/{database-name}/_api/tasks
          creates a new task with a generated id
          Path Parameters
          • The name of the database.

          Query Parameters
            HTTP Headers
              Request Body application/json object
              • The JavaScript code to be executed

              • The name of the task

              • Number of seconds initial delay

              • The parameters to be passed into command

              • number of seconds between the executions

              Responses
              • The task was registered

                  Response Body application/json object
                • The status code, 200 in this case.

                • the javascript function for this task

                • The timestamp when this task was created

                • the database this task belongs to

                • false in this case

                • A string identifying the task

                • time offset in seconds from the created timestamp

                • this task should run each period seconds

                • What type of task is this [ periodic, timed]

                  • periodic are tasks that repeat periodically
                  • timed are tasks that execute once at a specific time

              • If the post body is not accurate, a HTTP 400 is returned.

              Examples

              curl -X POST --header 'accept: application/json' --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
              Show output

              Create a task with ID

              PUT /_db/{database-name}/_api/tasks/{id}

              Registers a new task with the specified ID.

              Not compatible with load balancers.

              Path Parameters
              • The name of the database.

              • The id of the task to create

              Query Parameters
                HTTP Headers
                  Request Body application/json object
                  • The JavaScript code to be executed

                  • The name of the task

                  • Number of seconds initial delay

                  • The parameters to be passed into command

                  • number of seconds between the executions

                  Responses
                  • If the task id already exists or the rest body is not accurate, HTTP 400 is returned.

                  Examples

                  curl -X PUT --header 'accept: application/json' --data-binary @- --dump - http://localhost:8529/_api/tasks/sampleTask
                  {
                    "id": "SampleTask",
                    "name": "SampleTask",
                    "command": "(function(params) { require('@arangodb').print(params); })(params)",
                    "params": {
                      "foo": "bar",
                      "bar": "foo"
                    },
                    "period": 2
                  }
                  Show output

                  Delete a task

                  DELETE /_db/{database-name}/_api/tasks/{id}
                  Deletes the task identified by id on the server.
                  Path Parameters
                  • The name of a database. Which database you use doesn’t matter as long as the user account you authenticate with has administrate access to this database.

                  • The id of the task to delete.

                  Query Parameters
                    HTTP Headers
                      Responses
                      • If the task was deleted, HTTP 200 is returned.

                          Response Body application/json object
                        • The status code, 200 in this case.

                        • false in this case

                      • If the task id is unknown, then an HTTP 404 is returned.

                          Response Body application/json object
                        • The status code, 404 in this case.

                        • true in this case

                        • A plain text message stating what went wrong.

                      Examples

                      Try to delete a non-existent task:

                      curl -X DELETE --header 'accept: application/json' --dump - http://localhost:8529/_api/tasks/NoTaskWithThatName
                      Show output

                      Remove existing task:

                      curl -X DELETE --header 'accept: application/json' --dump - http://localhost:8529/_api/tasks/SampleTask
                      Show output