Edge Server (1.0)

Download OpenAPI specification:Download

Introduction

Edge Server is a lightweight standalone database for resource-constrained edge. It exposes a RESTful interface that enables you to get database information, perform document operations, run SQL++ queries, and manage changes feeds and replication.

Database

Edge Server enables you to access one or more databases. Within each database, documents are stored in keyspaces. Each keyspace maps to a collection, which is stored in a scope within the database. For details, see Database Operations with Edge Server.

Get server information

Returns information about the Edge Server node.

Responses

Response samples

Content type
application/json
{
  • "couchdb": "Welcome",
  • "vendor": {
    },
  • "version": "CouchbaseEdgeServer/1.0.0 (37; ) CouchbaseLiteCore/0.0.0-EE (770a516a19d505b7+403e27d509bb1131)"
}

Get list of all database names

Returns a list of all database names.

Responses

Response samples

Content type
application/json
[
  • "scratch",
  • "travel-sample"
]

Get database or keyspace information

Retrieves information about a database or keyspace.

path Parameters
keyspace
required
string
Examples:
  • db1 - Default scope and collection
  • db1.collection1 - Named collection within the default scope
  • db1.scope1.collection1 - Fully-qualified scope and collection

The keyspace to run the operation against.

A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection.

Responses

Response samples

Content type
application/json
Example
{
  • "db_name": "travel-sample",
  • "db_uuid": "8478be31c9674c499c07edd4e3115de7",
  • "collections": {
    }
}

Document

You can create, read, update, and delete documents in a keyspace using the REST API's document operations. For details, see Document Access with Edge Server.

Create a document

Creates a document with an automatically-generated document ID.

path Parameters
keyspace
required
string
Examples:
  • db1 - Default scope and collection
  • db1.collection1 - Named collection within the default scope
  • db1.scope1.collection1 - Fully-qualified scope and collection

The keyspace to run the operation against.

A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection.

Request Body schema: application/json
property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "type": "airport",
  • "country": "United Kingdom",
  • "icao": "EGOV",
  • "airportname": "Anglesey Airport",
  • "city": "Valley",
  • "faa": "VLY",
  • "tz": "Europe/London"
}

Response samples

Content type
application/json
{
  • "ok": true,
  • "id": "~SCH2oNtKFMBdcO-_sUhBmn",
  • "rev": "1-22855783cf597c31c37ec3815d8027f3706ef6f9"
}

Get all documents in the keyspace

Returns all documents in the database, based on the specified query parameters.

path Parameters
keyspace
required
string
Examples:
  • db1 - Default scope and collection
  • db1.collection1 - Named collection within the default scope
  • db1.scope1.collection1 - Fully-qualified scope and collection

The keyspace to run the operation against.

A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection.

query Parameters
descending
boolean
Default: false

Reverses sort order (descending document ID)

include_docs
boolean

Include the body associated with each document.

keys
Array of strings

An array of document ID strings to filter by.

limit
number

This limits the number of result rows returned. Using a value of 0 has the same effect as the value 1.

skip
number

Offset into the result rows returned. Combined with limit can be useful for paging.

startkey
string

Return records starting with the specified key.

endkey
string

Stop returning records when this key is reached.

Responses

Response samples

Content type
application/json
{
  • "rows": [
    ],
  • "total_rows": 0,
  • "update_seq": 0
}

Get all documents in the keyspace

Returns all documents in the database, based on the parameters specified in the request body.

path Parameters
keyspace
required
string
Examples:
  • db1 - Default scope and collection
  • db1.collection1 - Named collection within the default scope
  • db1.scope1.collection1 - Fully-qualified scope and collection

The keyspace to run the operation against.

A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection.

Request Body schema: application/json
descending
boolean
Default: false

Reverses sort order (descending document ID)

include_docs
boolean
Default: true

Adds body of each doc

keys
Array of strings

Limits results to the specified document IDs

limit
number

Limits number of results

skip
number

Offset into results

startkey
string

Document ID to start at

endkey
string

Document ID to end at (max value, or min if descending)

Responses

Request samples

Content type
application/json
{
  • "descending": false,
  • "include_docs": true,
  • "keys": [
    ],
  • "limit": 0,
  • "skip": 0,
  • "startkey": "string",
  • "endkey": "string"
}

Response samples

Content type
application/json
{
  • "rows": [
    ],
  • "total_rows": 0,
  • "update_seq": 0
}

Check if any documents exist

Returns a status code indicating whether any documents exist.

path Parameters
keyspace
required
string
Examples:
  • db1 - Default scope and collection
  • db1.collection1 - Named collection within the default scope
  • db1.scope1.collection1 - Fully-qualified scope and collection

The keyspace to run the operation against.

A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection.

query Parameters
include_docs
boolean

Include the body associated with each document.

keys
Array of strings

An array of document ID strings to filter by.

startkey
string

Return records starting with the specified key.

endkey
string

Stop returning records when this key is reached.

limit
number

This limits the number of result rows returned. Using a value of 0 has the same effect as the value 1.

Responses

Response samples

Content type
application/json
{
  • "error": "string",
  • "reason": "string"
}

Bulk document operations

Allows multiple documented to be created, updated or deleted in bulk.

To create a new document, add the body as an object in the docs array. A document ID is generated by Edge Server unless _id is specified.

To update an existing document, provide the document ID (_id) and revision ID (_rev) as well as the new body values.

To delete an existing document, provide the document ID (_id), revision ID (_rev), and set the deletion flag (_deleted) to true.

path Parameters
keyspace
required
string
Examples:
  • db1 - Default scope and collection
  • db1.collection1 - Named collection within the default scope
  • db1.scope1.collection1 - Fully-qualified scope and collection

The keyspace to run the operation against.

A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection.

Request Body schema: application/json
new_edits
boolean
Default: true

This controls whether to assign new revision identifiers to new edits (true) or use the existing ones (false).

required
Array of objects

Responses

Request samples

Content type
application/json
{
  • "new_edits": true,
  • "docs": [
    ]
}

Response samples

Content type
application/json
Example
[
  • {
    },
  • {
    },
  • {
    }
]

Get a document

Retrieves a document from the database by its document ID.

path Parameters
keyspace
required
string
Examples:
  • db1 - Default scope and collection
  • db1.collection1 - Named collection within the default scope
  • db1.scope1.collection1 - Fully-qualified scope and collection

The keyspace to run the operation against.

A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection.

docid
required
string
Example: doc1

The document ID to run the operation against.

query Parameters
rev
string
Example: rev=2-5145e1086bb8d1d71a531e9f6b543c58

The document revision to target.

revs_from
Array of strings

Trims the revision history to stop at the first revision in the provided list. If no match is found, the revisions are trimmed to the revs_limit.

revs_limit
integer

Maximum number of revisions to return for each document.

Responses

Response samples

Content type
application/json
{
  • "_id": "~SCH2oNtKFMBdcO-_sUhBmn",
  • "_rev": "1-22855783cf597c31c37ec3815d8027f3706ef6f9",
  • "type": "airport",
  • "country": "United States",
  • "faa": "LAX"
}

Upsert a document

Creates the specified document, if it does not already exist. If the specified document does exist, this request makes a new revision for the existing document. A revision ID must be provided if targeting an existing document.

You must specify a document ID for this endpoint. To let Edge Server generate the ID, use the POST /{db}/ endpoint.

If the document already exists, the document content is replaced by the provided request body. Any existing fields which are not specified by the request body are removed in the new revision.

The maximum size for a document is 20MB.

path Parameters
keyspace
required
string
Examples:
  • db1 - Default scope and collection
  • db1.collection1 - Named collection within the default scope
  • db1.scope1.collection1 - Fully-qualified scope and collection

The keyspace to run the operation against.

A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection.

docid
required
string
Example: doc1

The document ID to run the operation against.

query Parameters
roundtrip
boolean

Block until document has been received by change cache.

rev
string
Example: rev=2-5145e1086bb8d1d71a531e9f6b543c58

The document revision to target.

header Parameters
If-Match
string

The revision ID to target.

Request Body schema: application/json
_id
required
string

document ID

_rev
required
string

revision ID of the document

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "_id": "~SCH2oNtKFMBdcO-_sUhBmn",
  • "_rev": "1-22855783cf597c31c37ec3815d8027f3706ef6f9",
  • "type": "airport",
  • "country": "United States",
  • "faa": "LAX"
}

Response samples

Content type
application/json
{
  • "ok": true,
  • "id": "~SCH2oNtKFMBdcO-_sUhBmn",
  • "rev": "1-22855783cf597c31c37ec3815d8027f3706ef6f9"
}

Delete a document

Deletes a document from the keyspace. A new revision is created so the database can track the deletion in synchronized copies.

A revision ID is required, either in the header or in the query parameters.

path Parameters
keyspace
required
string
Examples:
  • db1 - Default scope and collection
  • db1.collection1 - Named collection within the default scope
  • db1.scope1.collection1 - Fully-qualified scope and collection

The keyspace to run the operation against.

A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection.

docid
required
string
Example: doc1

The document ID to run the operation against.

query Parameters
rev
string
Example: rev=2-5145e1086bb8d1d71a531e9f6b543c58

The document revision to target.

header Parameters
If-Match
string

The revision ID to target.

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "id": "~SCH2oNtKFMBdcO-_sUhBmn",
  • "rev": "1-22855783cf597c31c37ec3815d8027f3706ef6f9"
}

Check if a document exists

Returns a status code indicating whether the document exists or not.

path Parameters
keyspace
required
string
Examples:
  • db1 - Default scope and collection
  • db1.collection1 - Named collection within the default scope
  • db1.scope1.collection1 - Fully-qualified scope and collection

The keyspace to run the operation against.

A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection.

docid
required
string
Example: doc1

The document ID to run the operation against.

query Parameters
rev
string
Example: rev=2-5145e1086bb8d1d71a531e9f6b543c58

The document revision to target.

revs_from
Array of strings

Trims the revision history to stop at the first revision in the provided list. If no match is found, the revisions are trimmed to the revs_limit.

revs_limit
integer

Maximum number of revisions to return for each document.

Responses

Response samples

Content type
application/json
{
  • "error": "string",
  • "reason": "string"
}

Get a sub-document

Retrieves a sub-document associated with the document.

path Parameters
keyspace
required
string
Examples:
  • db1 - Default scope and collection
  • db1.collection1 - Named collection within the default scope
  • db1.scope1.collection1 - Fully-qualified scope and collection

The keyspace to run the operation against.

A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection.

docid
required
string
Example: doc1

The document ID to run the operation against.

key
required
string

The key of the object containing the sub-document.

query Parameters
rev
string
Example: rev=2-5145e1086bb8d1d71a531e9f6b543c58

The document revision to target.

Responses

Response samples

Content type
application/json
{ }

Create or update a sub-document

Adds or updates a sub-document associated with the document. If the document does not exist, it is created and the sub-document is added to it.

If the sub-document already exists, the content of the existing sub-document is replaced in the new revision.

path Parameters
keyspace
required
string
Examples:
  • db1 - Default scope and collection
  • db1.collection1 - Named collection within the default scope
  • db1.scope1.collection1 - Fully-qualified scope and collection

The keyspace to run the operation against.

A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection.

docid
required
string
Example: doc1

The document ID to run the operation against.

key
required
string

The key of the object containing the sub-document.

query Parameters
rev
string

The existing document revision ID to modify. Required only when modifying an existing document.

Request Body schema: application/json

The sub-document to add or modify in the document

property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "ok": true,
  • "id": "~SCH2oNtKFMBdcO-_sUhBmn",
  • "rev": "1-22855783cf597c31c37ec3815d8027f3706ef6f9"
}

Delete a sub-document

Deletes a sub-document associated with the document.

If the sub-document exists, the sub-document is removed from the document.

path Parameters
keyspace
required
string
Examples:
  • db1 - Default scope and collection
  • db1.collection1 - Named collection within the default scope
  • db1.scope1.collection1 - Fully-qualified scope and collection

The keyspace to run the operation against.

A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection.

docid
required
string
Example: doc1

The document ID to run the operation against.

key
required
string

The key of the object containing the sub-document.

query Parameters
rev
string

The existing document revision ID to modify.

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "id": "~SCH2oNtKFMBdcO-_sUhBmn",
  • "rev": "1-22855783cf597c31c37ec3815d8027f3706ef6f9"
}

Replication

The replicate endpoint enables you to synchronize Edge Server with another server, for example Sync Gateway or Couchbase Capella App Services. For details, see Manage Replication with Edge Server.

List active replications only

Get a list of all active tasks

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get status of all replications

Gets the status of all replication tasks.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Start a replication

Instructs Edge Server to initiate replication with another server, e.g. Sync Gateway.

Request Body schema: application/json
source
string

The source database name or URL

target
string

The destination database name or URL

bidirectional
boolean
Default: false

Set to true for bidirectional push/pull replication

continuous
boolean
Default: false

Set to true for continuous replication

channels
Array of strings unique

Channel filter (incompatible with 'collections')

doc_ids
Array of strings unique

Document IDs to replicate (incompatible with 'collections')

object

Extra HTTP headers; keys are header names, values are header values

Array of strings or object
trusted_root_certs
string

The certificate data of an additional root certificate to be trusted

pinned_cert
string

The certificate data of the server certificate

object

Configuration for authentication to a remote server. Either for replication, or a proxy.

object (ProxyConfig)

Configuration of a proxy to use during replication.

Responses

Request samples

Content type
application/json
{
  • "source": "string",
  • "target": "string",
  • "bidirectional": false,
  • "continuous": false,
  • "channels": [
    ],
  • "doc_ids": [
    ],
  • "headers": {
    },
  • "collections": [
    ],
  • "trusted_root_certs": "string",
  • "pinned_cert": "string",
  • "auth": {
    },
  • "proxy": {
    }
}

Response samples

Content type
application/json
{
  • "ok": true,
  • "task_id": 0
}

Get status of a replication

Gets the status of the replication task with the given ID.

path Parameters
taskid
required
number
Example: 1234

The ID of an active replication task.

Responses

Response samples

Content type
application/json
{
  • "task_id": 1,
  • "age_secs": 893,
  • "type": "replication",
  • "error": {
    },
  • "source": "wss://myofflineappservice.apps.cloud.couchbase.com:4984/travel-sample",
  • "target": "travel-sample",
  • "updated_on": 1741027601,
  • "status": "Offline"
}

Stop replication

Stops the replication task with the given ID.

path Parameters
taskid
required
number
Example: 1234

The ID of an active replication task.

Responses

Response samples

Content type
application/json
{
  • "ok": true
}

Changes

You can monitor changes in a keyspace using the keyspaces's changes feed. For details, see Monitor Changes with Edge Server.

Get changes list

Retrieves a sorted list of changes made to documents in the database, in time order of application. Each document appears at most once, ordered by its most recent change, regardless of how many times it has been changed.

This request can be used to listen for update and modifications to the database for post processing or synchronization. A continuously connected changes feed is a reasonable approach for generating a real-time log for most applications.

path Parameters
keyspace
required
string
Examples:
  • db1 - Default scope and collection
  • db1.collection1 - Named collection within the default scope
  • db1.scope1.collection1 - Fully-qualified scope and collection

The keyspace to run the operation against.

A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection.

query Parameters
limit
integer

Maximum number of changes to return.

since
string

Starts the results from the change immediately after the given sequence ID. Sequence IDs should be considered opaque; they come from the last_seq property of a prior response.

style
string
Default: "main_only"
Enum: "main_only" "all_docs"

Controls whether to return the current winning revision (main_only) or all the leaf revision including conflicts and deleted former conflicts (all_docs).

active_only
boolean
Default: "false"

Set true to exclude deleted documents and notifications for documents the user no longer has access to from the changes feed.

include_docs
boolean

Include the body associated with each document.

revocations
boolean

If true, revocation messages are sent on the changes feed.

filter
string
Enum: "sync_gateway/bychannel" "_doc_ids"

Set a filter to either filter by channels or document IDs.

channels
string

A comma-separated list of channel names to filter the response to only the channels specified. To use this option, the filter query option must be set to sync_gateway/bychannels.

doc_ids
Array of strings

A valid JSON array of document IDs to filter the documents in the response to only the documents specified. To use this option, the filter query option must be set to _doc_ids and the feed parameter must be normal. Also accepts a comma separated list of document IDs instead.

heartbeat
integer >= 25000
Default: 0

The interval (in milliseconds) to send an empty line (CRLF) in the response. This is to help prevent gateways from deciding the socket is idle and therefore closing it. This is only applicable to feed=longpoll or feed=continuous. This overrides any timeouts to keep the feed alive indefinitely. Setting to 0 results in no heartbeat. The maximum heartbeat can be set in the replication configuration.

timeout
integer [ 0 .. 900000 ]
Default: 300000

This is the maximum period (in milliseconds) to wait for a change before the response is sent, even if there are no results. This is only applicable for feed=longpoll or feed=continuous changes feeds. Setting to 0 results in no timeout.

feed
string
Default: "normal"
Enum: "longpoll" "continuous" "sse"

The type of changes feed to use.

Responses

Response samples

Content type
application/json
{
  • "results": [
    ],
  • "last_seq": 1
}

Get changes list

Retrieves a sorted list of changes made to documents in the database, in time order of application. Each document appears at most once, ordered by its most recent change, regardless of how many times it has been changed.

This request can be used to listen for update and modifications to the database for post processing or synchronization. A continuously connected changes feed is a reasonable approach for generating a real-time log for most applications.

path Parameters
keyspace
required
string
Examples:
  • db1 - Default scope and collection
  • db1.collection1 - Named collection within the default scope
  • db1.scope1.collection1 - Fully-qualified scope and collection

The keyspace to run the operation against.

A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection.

Request Body schema: application/json
limit
string

Maximum number of changes to return.

style
string

Controls whether to return the current winning revision (main_only) or all the leaf revision including conflicts and deleted former conflicts (all_docs).

active_only
string

Set true to exclude deleted documents and notifications for documents the user no longer has access to from the changes feed.

include_docs
boolean

Include the body associated with each document.

revocations
string

If true, revocation messages are sent on the changes feed.

filter
string

Set a filter to either filter by channels or document IDs.

channels
string

A comma-separated list of channel names to filter the response to only the channels specified. To use this option, the filter query option must be set to sync_gateway/bychannels.

doc_ids
string

A valid JSON array of document IDs to filter the documents in the response to only the documents specified. To use this option, the filter query option must be set to _doc_ids and the feed parameter must be normal.

heartbeat
string

The interval (in milliseconds) to send an empty line (CRLF) in the response. This is to help prevent gateways from deciding the socket is idle and therefore closing it. This is only applicable to feed=longpoll or feed=continuous. This overrides any timeouts to keep the feed alive indefinitely. Setting to 0 results in no heartbeat. The maximum heartbeat can be set in the replication configuration.

timeout
string

This is the maximum period (in milliseconds) to wait for a change before the response is sent, even if there are no results. This is only applicable for feed=longpoll or feed=continuous changes feeds. Setting to 0 results in no timeout.

feed
string

The type of changes feed to use.

Responses

Request samples

Content type
application/json
{
  • "limit": "string",
  • "style": "string",
  • "active_only": "string",
  • "include_docs": true,
  • "revocations": "string",
  • "filter": "string",
  • "channels": "string",
  • "doc_ids": "string",
  • "heartbeat": "string",
  • "timeout": "string",
  • "feed": "string"
}

Response samples

Content type
application/json
{
  • "results": [
    ],
  • "last_seq": 1
}

Query

You can run SQL++ queries in a keyspace using the keyspace's query endpoint. For details, see Run Queries with Edge Server.

Run an ad-hoc query

Runs an ad-hoc query. Only possible when the database's enable_adhoc_queries property is true.

path Parameters
keyspace
required
string
Examples:
  • db1 - Default scope and collection
  • db1.collection1 - Named collection within the default scope
  • db1.scope1.collection1 - Fully-qualified scope and collection

The keyspace to run the operation against.

A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection.

Request Body schema: application/json
query
required
string

SQL++ Query string

object

Query parameters

Responses

Request samples

Content type
application/json
{
  • "query": "string",
  • "parameters": { }
}

Response samples

Content type
application/json
{
  • "_": {
    }
}

Run a pre-defined query

Runs a pre-defined query as named by the database configuration's query object. If the query has parameters, they should be passed as query parameters, like ?key=value.

path Parameters
keyspace
required
string
Examples:
  • db1 - Default scope and collection
  • db1.collection1 - Named collection within the default scope
  • db1.scope1.collection1 - Fully-qualified scope and collection

The keyspace to run the operation against.

A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection.

name
required
string

Name of the query as defined in the database configuration.

Responses

Response samples

Content type
application/json
{
  • "_": {
    }
}

Run a pre-defined query

Runs a pre-defined query as named by the database configuration's query object. If the query has parameters, they should be passed as JSON object in the request body.

path Parameters
keyspace
required
string
Examples:
  • db1 - Default scope and collection
  • db1.collection1 - Named collection within the default scope
  • db1.scope1.collection1 - Fully-qualified scope and collection

The keyspace to run the operation against.

A keyspace is a dot-separated string, comprised of a database name, and optionally a named scope and collection.

name
required
string

Name of the query as defined in the database configuration.

Request Body schema: application/json
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "_": {
    }
}