ArangoDB Core API

The RESTful HTTP API of the ArangoDB Core database system, version 3.12.10 (API v0). 174 paths and 254 operations across 22 tags covering documents, collections, databases, named graphs, indexes, AQL queries and cursors, views and analyzers, transactions, Foxx microservices, users, replication, hot backups, cluster administration and monitoring. Published by ArangoDB as an OpenAPI 3.1.0 document inside the arangodb/arangodb source tree and rendered as the HTTP API reference in the documentation.

OpenAPI Specification

arangodb-core-openapi-original.json Raw ↑
{
 "externalDocs": {
  "description": "ArangoDB Documentation",
  "url": "https://docs.arango.ai/arangodb/"
 },
 "info": {
  "contact": {
   "name": "ArangoDB Inc.",
   "url": "https://arango.ai"
  },
  "license": {
   "name": "Business Source License 1.1",
   "url": "https://github.com/arangodb/arangodb/blob/devel/LICENSE"
  },
  "summary": "The HTTP API of the ArangoDB graph database system",
  "title": "ArangoDB Core API",
  "version": "3.12.10 (API v0)"
 },
 "openapi": "3.1.0",
 "paths": {
  "/_admin/backup/create": {
   "post": {
    "description": "Creates a consistent local backup \"as soon as possible\", very much\nlike a snapshot in time, with a given label. The ambiguity in the\nphrase \"as soon as possible\" refers to the next window during which a\nglobal write lock across all databases can be obtained in order to\nguarantee consistency. Note that the backup at first resides on the\nsame machine and hard drive as the original data. Make sure to upload\nit to a remote site for an actual backup.\n",
    "operationId": "createBackup",
    "requestBody": {
     "content": {
      "application/json": {
       "schema": {
        "properties": {
         "allowInconsistent": {
          "default": false,
          "description": "If this flag is set to `true` and no global transaction lock can be\nacquired within the given timeout, a possibly inconsistent backup\nis taken. The default for this flag is `false` and in this case\na timeout results in an HTTP 408 error.\n",
          "type": "boolean"
         },
         "force": {
          "default": false,
          "description": "If this flag is set to `true` and no global transaction lock can be acquired\nwithin the given timeout, all running transactions are forcefully aborted to\nensure that a consistent backup can be created. This does not include\nJavaScript transactions. It waits for the transactions to be aborted at most\n`timeout` seconds. Thus using `force` the request timeout is doubled.\nTo abort transactions is almost certainly not what you want for your application.\nIn the presence of intermediate commits it can even destroy the atomicity of your\ntransactions. Use at your own risk, and only if you need a consistent backup at\nall costs. The default and recommended value is `false`. If both\n`allowInconsistent` and `force` are set to `true`, then the latter takes\nprecedence and transactions are aborted. This is only available in the cluster.\n",
          "type": "boolean"
         },
         "label": {
          "description": "The label for this backup. The label is used together with a\ntimestamp string create a unique backup identifier, `\u003ctimestamp\u003e_\u003clabel\u003e`.\nIf no label is specified, the empty string is assumed and a default\nUUID is created for this part of the ID.\n",
          "type": "string"
         },
         "timeout": {
          "default": 120,
          "description": "The time in seconds that the operation tries to get a consistent\nsnapshot.\n",
          "type": "integer"
         }
        },
        "type": "object"
       }
      }
     }
    },
    "responses": {
     "201": {
      "description": "If all is well, code 201 is returned.\n"
     },
     "400": {
      "description": "If the create command is invoked with bad parameters or any HTTP\nmethod other than `POST`, then an *HTTP 400* is returned. The specifics\nare detailed in the returned error document.\n"
     },
     "408": {
      "description": "If the operation cannot obtain a global transaction lock\nwithin the timeout, then an *HTTP 408* is returned.\n"
     }
    },
    "summary": "Create a backup",
    "tags": [
     "Hot Backups"
    ]
   }
  },
  "/_admin/backup/delete": {
   "post": {
    "description": "Delete a specific local backup identified by the given `id`.\n",
    "operationId": "deleteBackup",
    "requestBody": {
     "content": {
      "application/json": {
       "schema": {
        "properties": {
         "id": {
          "description": "The identifier for this backup.\n",
          "type": "string"
         }
        },
        "required": [
         "id"
        ],
        "type": "object"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "If all is well, this code 200 is returned.\n"
     },
     "400": {
      "description": "If the delete command is invoked with bad parameters or any HTTP\nmethod other than `POST`, then an *HTTP 400* is returned.\n"
     },
     "404": {
      "description": "If a backup corresponding to the identifier `id` cannot be found.\n"
     }
    },
    "summary": "Delete a backup",
    "tags": [
     "Hot Backups"
    ]
   }
  },
  "/_admin/backup/download": {
   "post": {
    "description": "Download a specific local backup from a remote repository, or query\nprogress on a previously scheduled download operation, or abort\na running download operation.\n",
    "operationId": "downloadBackup",
    "requestBody": {
     "content": {
      "application/json": {
       "schema": {
        "properties": {
         "abort": {
          "default": false,
          "description": "Set this to `true` if a running download operation should be aborted. In\nthis case, the only other body parameter which is needed is `downloadId`.\n",
          "type": "boolean"
         },
         "config": {
          "description": "Configuration of remote repository. This is required when a download\noperation is scheduled. In this case leave out the `downloadId`\nattribute. See [Rclone Configuration](https://docs.arango.ai/arangodb/3.12/components/tools/arangobackup/examples/#rclone-configuration)\nfor a description of the `config` object.\n",
          "type": "object"
         },
         "downloadId": {
          "description": "Download ID to specify for which download operation progress is queried, or\nthe download operation to abort.\nIf you specify this, leave out all the above body parameters.\n",
          "type": "string"
         },
         "id": {
          "description": "The identifier for this backup. This is required when a download\noperation is scheduled. In this case leave out the `downloadId`\nattribute.\n",
          "type": "string"
         },
         "remoteRepository": {
          "description": "URL of remote repository. This is required when a download operation is\nscheduled. In this case leave out the `downloadId` attribute. Provided\nrepository URLs are normalized and validated as follows: One single colon must\nappear separating the configuration section name and the path. The URL prefix\nup to the colon must exist as a key in the config object below. No slashes must\nappear before the colon. Multiple back to back slashes are collapsed to one, as\n`..` and `.` are applied accordingly. Local repositories must be absolute paths\nand must begin with a `/`. Trailing `/` are removed.\n",
          "type": "string"
         }
        },
        "required": [
         "remoteRepository",
         "config"
        ],
        "type": "object"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "If all is well, code 200 is returned if progress is inquired or the\noperation is aborted.\n"
     },
     "202": {
      "description": "If all is well, code 202 is returned if a new operation is scheduled.\n"
     },
     "400": {
      "description": "If the download command is invoked with bad parameters or any HTTP\nmethod other than `POST`, then an *HTTP 400* is returned.\n"
     },
     "401": {
      "description": "If the authentication to the remote repository fails, then an *HTTP\n401* is returned.\n"
     },
     "404": {
      "description": "If a backup corresponding to the identifier `id`  cannot be found, or if\nthere is no known download operation with the given `downloadId`.\n"
     }
    },
    "summary": "Download a backup from a remote repository",
    "tags": [
     "Hot Backups"
    ]
   }
  },
  "/_admin/backup/list": {
   "post": {
    "description": "Lists all locally found backups.\n",
    "operationId": "listBackups",
    "requestBody": {
     "content": {
      "application/json": {
       "schema": {
        "properties": {
         "id": {
          "description": "The body can either be empty (in which case all available backups are\nlisted), or it can be an object with an attribute `id`, which\nis a string. In the latter case the returned list\nis restricted to the backup with the given id.\n",
          "type": "string"
         }
        },
        "type": "object"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "If all is well, code 200 is returned.\n"
     },
     "400": {
      "description": "If the list command is invoked with bad parameters, then an *HTTP 400*\nis returned.\n"
     },
     "404": {
      "description": "If an `id` or a list of ids was given and the given ids were not found\nas identifiers of a backup, an *HTTP 404 Not Found* is returned.\n"
     },
     "405": {
      "description": "If the list command is invoked with any HTTP\nmethod other than `POST`, then an *HTTP 405 Method Not Allowed* is returned.\n"
     }
    },
    "summary": "List all backups",
    "tags": [
     "Hot Backups"
    ]
   }
  },
  "/_admin/backup/restore": {
   "post": {
    "description": "Restores a consistent local backup from a\nsnapshot in time, with a given id. The backup snapshot must reside on\nthe ArangoDB service locally.\n",
    "operationId": "restoreBackup",
    "requestBody": {
     "content": {
      "application/json": {
       "schema": {
        "properties": {
         "id": {
          "description": "The id of the backup to restore from.\n",
          "type": "string"
         }
        },
        "required": [
         "id"
        ],
        "type": "object"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "Is returned if the backup could be restored. Note that there is an\ninevitable discrepancy between the single server and the cluster. In a\nsingle server, the request returns successfully, but the restore is\nonly executed afterwards. In the cluster, the request only returns when\nthe restore operation has been completed successfully. The cluster\nbehavior is obviously the desired one, but in a single instance, one\ncannot keep a connection open across a restart.\n"
     },
     "400": {
      "description": "If the restore command is invoked with bad parameters or any HTTP\nmethod other than `POST`, then an *HTTP 400* is returned. The specifics\nare detailed in the returned error document.\n"
     }
    },
    "summary": "Restore a backup",
    "tags": [
     "Hot Backups"
    ]
   }
  },
  "/_admin/backup/upload": {
   "post": {
    "description": "Upload a specific local backup to a remote repository, or query\nprogress on a previously scheduled upload operation, or abort\na running upload operation.\n",
    "operationId": "uploadBackup",
    "requestBody": {
     "content": {
      "application/json": {
       "schema": {
        "properties": {
         "abort": {
          "default": false,
          "description": "Set this to `true` if a running upload operation should be aborted. In\nthis case, the only other body parameter which is needed is `uploadId`.\n",
          "type": "boolean"
         },
         "config": {
          "description": "Configuration of remote repository. This is required when an upload\noperation is scheduled. In this case leave out the `uploadId`\nattribute. See [Rclone Configuration](https://docs.arango.ai/arangodb/3.12/components/tools/arangobackup/examples/#rclone-configuration)\nfor a description of the `config` object.\n",
          "type": "object"
         },
         "id": {
          "description": "The identifier for this backup. This is required when an upload\noperation is scheduled. In this case leave out the `uploadId`\nattribute.\n",
          "type": "string"
         },
         "remoteRepository": {
          "description": "URL of remote repository. This is required when an upload operation is\nscheduled. In this case leave out the `uploadId` attribute. Provided repository\nURLs are normalized and validated as follows: One single colon must appear\nseparating the configuration section name and the path. The URL prefix up to\nthe colon must exist as a key in the config object below. No slashes must\nappear before the colon. Multiple back to back slashes are collapsed to one, as\n`..` and `.` are applied accordingly. Local repositories must be absolute\npaths and must begin with a `/`. Trailing `/` are removed.\n",
          "type": "string"
         },
         "uploadId": {
          "description": "Upload ID to specify for which upload operation progress is queried or\nthe upload operation to abort.\nIf you specify this, leave out all the above body parameters.\n",
          "type": "string"
         }
        },
        "type": "object"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "If all is well, code 200 is returned if progress is inquired or the\noperation is aborted.\n"
     },
     "202": {
      "description": "If all is well, code 202 is returned if a new operation is scheduled.\n"
     },
     "400": {
      "description": "If the upload command is invoked with bad parameters or any HTTP\nmethod other than `POST`, then an *HTTP 400* is returned.\n"
     },
     "401": {
      "description": "If the authentication to the remote repository fails, then an *HTTP\n400* is returned.\n"
     },
     "404": {
      "description": "If a backup corresponding to the identifier `id`  cannot be found, or if\nthere is no known upload operation with the given `uploadId`.\n"
     }
    },
    "summary": "Upload a backup to a remote repository",
    "tags": [
     "Hot Backups"
    ]
   }
  },
  "/_admin/cluster/health": {
   "get": {
    "description": "Queries the health of the cluster as assessed by the supervision (Agency) for\nmonitoring purposes. The response is a JSON object, containing the standard\n`code`, `error`, `errorNum`, and `errorMessage` fields as appropriate.\nThe endpoint-specific fields are as follows:\n\n- `ClusterId`: A UUID string identifying the cluster\n- `Health`: An object containing a descriptive sub-object for each node in the cluster.\n  - `\u003cnodeID\u003e`: Each entry in `Health` will be keyed by the node ID and contain the following attributes:\n    - `Endpoint`: A string representing the network endpoint of the server.\n    - `Role`: The role the server plays. Possible values are `\"AGENT\"`, `\"COORDINATOR\"`, and `\"DBSERVER\"`.\n    - `CanBeDeleted`: Boolean representing whether the node can safely be removed from the cluster.\n    - `Version`: Version String of ArangoDB used by that node.\n    - `Engine`: Storage Engine used by that node.\n    - `Status`: A string indicating the health of the node as assessed by the supervision (Agency). This should be considered primary source of truth for Coordinator and DB-Servers node health. If the node is responding normally to requests, it is `\"GOOD\"`. If it has missed one heartbeat, it is `\"BAD\"`. If it has been declared failed by the supervision, which occurs after missing heartbeats for about 15 seconds, it will be marked `\"FAILED\"`.\n\n    Additionally it will also have the following attributes for:\n\n    **Coordinators** and **DB-Servers**\n    - `SyncStatus`: The last sync status reported by the node. This value is primarily used to determine the value of `Status`. Possible values include `\"UNKNOWN\"`, `\"UNDEFINED\"`, `\"STARTUP\"`, `\"STOPPING\"`, `\"STOPPED\"`, `\"SERVING\"`, `\"SHUTDOWN\"`.\n    - `LastAckedTime`: ISO 8601 timestamp specifying the last heartbeat received.\n    - `ShortName`: A string representing the shortname of the server, e.g. `\"Coordinator0001\"`.\n    - `Timestamp`: ISO 8601 timestamp specifying the last heartbeat received. (deprecated)\n    - `Host`: An optional string, specifying the host machine if known.\n    - `SyncTime`: ISO 8601 timestamp of the last sync time reported by the node.\n\n    **Coordinators** only\n    - `AdvertisedEndpoint`: A string representing the advertised endpoint, if set. (e.g. external IP address or load balancer, optional)\n\n    **Agents**\n    - `Leader`: ID of the Agent this node regards as leader.\n    - `Leading`: Whether this Agent is the leader (true) or not (false).\n    - `LastAckedTime`: Time since last `acked` in seconds.\n",
    "operationId": "getClusterHealth",
    "responses": {
     "200": {
      "description": "is returned when everything went well.\n"
     }
    },
    "summary": "Get the cluster health",
    "tags": [
     "Cluster"
    ]
   }
  },
  "/_admin/cluster/maintenance": {
   "put": {
    "description": "Enable or disable the cluster supervision (Agency) maintenance mode.\n\nThis endpoint allows you to temporarily enable the supervision maintenance mode.\nPlease be aware that no automatic failovers of any kind will take place\nwhile the maintenance mode is enabled. The cluster supervision reactivates\nitself automatically at some point after disabling it.\n",
    "operationId": "setClusterMaintenance",
    "requestBody": {
     "content": {
      "application/json": {
       "schema": {
        "description": "The mode to set for the cluster supervision.\n\nPossible values (always lowercase and in double quotes):\n- `\"on\"`: Enable the maintenance mode for 60 minutes, i.e. the\n  supervision maintenance will reactivate itself after one hour.\n- `\"off\"`: Disable the maintenance mode.\n- `\"\u003cnumber\u003e\"`: Enable the maintenance mode for a different\n  duration (in seconds) than the default 60 minutes. For example,\n  `\"7200\"` enables the maintenance mode for 7200 seconds (2 hours).\n",
        "example": "on",
        "type": "string"
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "is returned when everything went well.\n"
     },
     "400": {
      "description": "if the request contained an invalid body\n"
     },
     "501": {
      "description": "if the request was sent to a node other than a Coordinator or single-server\n"
     },
     "504": {
      "description": "if the request timed out while enabling the maintenance mode\n"
     }
    },
    "summary": "Set the cluster maintenance mode",
    "tags": [
     "Cluster"
    ]
   }
  },
  "/_admin/cluster/maintenance/{DB-Server-ID}": {
   "get": {
    "description": "Check whether the specified DB-Server is in maintenance mode and until when.\n",
    "operationId": "getDbserverMaintenance",
    "parameters": [
     {
      "description": "The ID of a DB-Server.\n",
      "in": "path",
      "name": "DB-Server-ID",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "code": {
           "description": "The HTTP response status code.\n",
           "example": 200,
           "type": "integer"
          },
          "error": {
           "description": "A flag indicating that no error occurred.\n",
           "example": false,
           "type": "boolean"
          },
          "result": {
           "description": "The result object with the status. This attribute is omitted if the DB-Server\nis in normal mode.\n",
           "properties": {
            "Mode": {
             "description": "The mode of the DB-Server. The value is `\"maintenance\"`.\n",
             "type": "string"
            },
            "Until": {
             "description": "Until what date and time the maintenance mode currently lasts, in the\nISO 8601 date/time format.\n",
             "type": "string"
            }
           },
           "required": [
            "Mode",
            "Until"
           ],
           "type": "object"
          }
         },
         "required": [
          "error",
          "code"
         ],
         "type": "object"
        }
       }
      },
      "description": "The request was successful.\n"
     },
     "400": {
      "description": "if the request contained an invalid body\n"
     },
     "412": {
      "description": "if the request was sent to an Agent node\n"
     },
     "504": {
      "description": "if the request timed out while enabling the maintenance mode\n"
     }
    },
    "summary": "Get the maintenance status of a DB-Server",
    "tags": [
     "Cluster"
    ]
   },
   "put": {
    "description": "Enable or disable the maintenance mode of a DB-Server.\n\nFor rolling upgrades or rolling restarts, DB-Servers can be put into\nmaintenance mode, so that no attempts are made to re-distribute the data in a\ncluster for such planned events. DB-Servers in maintenance mode are not\nconsidered viable failover targets because they are likely restarted soon.\n",
    "operationId": "setDbserverMaintenance",
    "parameters": [
     {
      "description": "The ID of a DB-Server.\n",
      "in": "path",
      "name": "DB-Server-ID",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "requestBody": {
     "content": {
      "application/json": {
       "schema": {
        "properties": {
         "mode": {
          "description": "The mode to set for the DB-Server.\n",
          "enum": [
           "maintenance",
           "normal"
          ],
          "type": "string"
         },
         "timeout": {
          "default": 3600,
          "description": "After how many seconds the maintenance mode shall automatically end.\nYou can send another request when the DB-Server is already in maintenance mode\nto extend the timeout.\n",
          "type": "integer"
         }
        },
        "required": [
         "mode"
        ],
        "type": "object"
       }
      }
     }
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "code": {
           "description": "The status code. `200` in this case.\n",
           "type": "integer"
          },
          "error": {
           "description": "A flag indicating that no error occurred.\n",
           "example": false,
           "type": "boolean"
          }
         },
         "required": [
          "error",
          "code"
         ],
         "type": "object"
        }
       }
      },
      "description": "The request was successful.\n"
     },
     "400": {
      "description": "if the request contained an invalid body\n"
     },
     "412": {
      "description": "if the request was sent to an Agency node\n"
     },
     "504": {
      "description": "if the request timed out while enabling the maintenance mode\n"
     }
    },
    "summary": "Set the maintenance status of a DB-Server",
    "tags": [
     "Cluster"
    ]
   }
  },
  "/_admin/cluster/rebalance": {
   "get": {
    "description": "Computes the current cluster imbalance and returns the result.\nIt additionally shows the amount of ongoing and pending move shard operations.\n",
    "operationId": "getClusterImbalance",
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "code": {
           "description": "The HTTP response status code.\n",
           "example": 200,
           "type": "integer"
          },
          "error": {
           "description": "A flag indicating that no error occurred.\n",
           "example": false,
           "type": "boolean"
          },
          "pendingMoveShards": {
           "description": "The number of pending move shard operations.\n",
           "type": "number"
          },
          "result": {
           "description": "The result object.\n",
           "properties": {
            "leader": {
             "description": "Information about the leader imbalance.\n",
             "properties": {
              "imbalance": {
               "description": "The measure of the total imbalance. A high value indicates a high imbalance.\n",
               "type": "integer"
              },
              "leaderDupl": {
               "description": "The measure of the leader shard distribution. The higher the number, the worse\nthe distribution.\n",
               "items": {
                "type": "integer"
               },
               "type": "array"
              },
              "numberShards": {
               "description": "The number of leader shards per DB-Server.\n",
               "items": {
                "type": "integer"
               },
               "type": "array"
              },
              "targetWeight": {
               "description": "The ideal weight of leader shards per DB-Server.\n",
               "items": {
                "type": "integer"
               },
               "type": "array"
              },
              "totalShards": {
               "description": "The sum of shards, counting leader shards only.\n",
               "type": "integer"
              },
              "totalWeight": {
               "description": "The sum of all weights.\n",
               "type": "integer"
              },
              "weightUsed": {
               "description": "The weight of leader shards per DB-Server. A leader has a weight of 1 by default\nbut it is higher if collections can only be moved together because of\n`distributeShardsLike`.\n",
               "items": {
                "type": "integer"
               },
               "type": "array"
              }
             },
             "required": [
              "weightUsed",
              "targetWeight",
              "numberShards",
              "leaderDupl",
              "totalWeight",
              "imbalance",
              "totalShards"
             ],
             "type": "object"
            },
            "shards": {
             "description": "Information about the shard imbalance.\n",
             "properties": {
              "imbalance": {
               "description": "The measure of the total imbalance. A high value indicates a high imbalance.\n",
               "type": "integer"
              },
              "numberShards": {
               "description": "The number of leader and follower shards per DB-Server.\n",
               "items": {
                "type": "integer"
               },
               "type": "array"
              },
              "sizeUsed": {
               "description": "The size of shards per DB-Server.\n",
               "items": {
                "type": "integer"
               },
               "type": "array"
              },
              "targetSize": {
               "description": "The ideal size of shards per DB-Server.\n",
               "items": {
                "type": "integer"
               },
               "type": "array"
              },
              "totalShards": {
               "description": "The sum of shards, counting leader and follower shards.\n",
               "type": "integer"
              },
              "totalShardsFromSystemCollections": {
               "description": "The sum of system collection shards, counting leader shards only.\n",
               "type": "integer"
              },
              "totalUsed": {
               "description": "The sum of the sizes.\n",
               "type": "integer"
              }
             },
             "required": [
              "sizeUsed",
              "targetSize",
              "numberShards",
              "totalUsed",
              "totalShards",
              "totalShardsFromSystemCollections",
              "imbalance"
             ],
             "type": "object"
            }
           },
           "required": [
            "leader",
            "shards"
           ],
           "type": "object"
          },
          "todoMoveShards": {
           "description": "The number of planned move shard operations.\n",
           "type": "number"
          }
         },
         "required": [
          "code",
          "error",
          "result",
          "pendingMoveShards",
          "todoMoveShards"
         ],
         "type": "object"
        }
       }
      },
      "description": "This API returns HTTP 200.\n"
     }
    },
    "summary": "Get the current cluster imbalance",
    "tags": [
     "Cluster"
    ]
   },
   "post": {
    "description": "Compute a set of move shard operations to improve balance.\n",
    "operationId": "computeClusterRebalancePlan",
    "requestBody": {
     "content": {
      "application/json": {
       "schema": {
        "description": "The options for the rebalance plan.\n",
        "properties": {
         "databasesExcluded": {
          "default": [],
          "description": "A list of database names to exclude from the analysis.\n",
          "items": {
           "type": "string"
          },
          "type": "array"
         },
         "excludeSystemCollections": {
          "default": false,
          "description": "Ignore system collections in the rebalance plan.\n",
          "type": "boolean"
         },
         "leaderChanges": {
          "default": true,
          "description": "Allow leader changes without moving data.\n",
          "type": "boolean"
         },
         "maximumNumberOfMoves": {
          "default": 1000,
          "description": "Maximum number of moves to be computed.\n",
          "type": "integer"
         },
         "moveFollowers": {
          "default": false,
          "description": "Allow moving followers.\n",
          "type": "boolean"
         },
         "moveLeaders": {
          "default": false,
          "description": "Allow moving leaders.\n",
          "type": "boolean"
         },
         "piFactor": {
          "default": 256000000,
          "description": "A weighting factor that should remain untouched.\n\nIf a collection has more shards than there are DB-Servers, there can be a subtle\nform of leader imbalance. Some DB-Servers may be responsible for more shards as\nleader than others. The `piFactor` adjusts how much weight such imbalances get\nin the overall imbalance score.\n",
          "type": "integer"
         },
         "version": {
          "description": "Must be set to `1`.\n",
          "type": "number"
         }
        },
        "required": [
         "version"
        ],
        "type": "object"
       }
      }
     }
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "description": "The rebalance plan.\n",
         "properties": {
          "code": {
           "description": "The HTTP response status code.\n",
           "example": 200,
           "type": "integer"
          },
          "error": {
           "description": "A flag indicating that no error occurred.\n",
           "example": false,
           "type": "boolean"
          },
          "result": {
           "description": "The result object.\n",
           "properties": {
            "imbalanceAfter": {
             "description": "Expected imbalance after the suggested move shard operations are applied.\n",
             "properties": {
              "leader": {
               "description": "Information about the leader imbalance.\n",
               "properties": {
                "imbalance": {
                 "description": "The measure of the total imbalance. A high value indicates a high imbalance.\n",
                 "type": "integer"
                },
                "leaderDupl": {
                 "description": "The measure of the leader shard distribution. The higher the number, the worse\nthe distribution.\n",
                 "items": {
                  "type": "integer"
                 },
                 "type": "array"
                },
                "numberShards": {
                 "description": "The number of leader shards per DB-Server.\n",
                 "items": {
                  "type": "integer"
                 },
                 "type": "array"
                },
                "targetWeight": {
                 "description": "The ideal weight of leader shards per DB-Server.\n",
                 "items": {
                  "type": "integer"
                 },
                 "type": "array"
                },
                "totalShards": {
                 "description": "The sum of shards, counting leader shards only.\n",
                 "type": "integer"
                },
                "totalWeight": {
                 "description": "The sum of all weights.\n",
                 "type": "integer"
                },
                "weightUsed": {
        

# --- truncated at 32 KB (1404 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/arangodb/refs/heads/main/openapi/arangodb-core-openapi-original.json
Where this information came from

This is an independent, third-party profile of ArangoDB Core API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.