Skip to content

Listing Subjects

This guide shows how to list the existing subjects from EventSourcingDB using its HTTP API. You'll learn how to list either all or a desired subset of the existing subjects.

Listing All Subjects

The simplest case is listing all subjects for which events have been stored. To do this, send an HTTP request using POST to the /api/v1/read-subjects endpoint:

curl \
  -i \
  -X POST \
  -H "authorization: Bearer <API_TOKEN>" \
  -H "content-type: application/json" \
  -d '{"baseSubject": "/"}' \
  http://localhost:3000/api/v1/read-subjects

If everything worked as expected, the server will respond with HTTP status code 200 OK:

HTTP/1.1 200 OK

The response body will then contain a list of all existing subjects. If you've followed the steps in Writing Events, you should see the following three subjects:

{
  "type": "subject",
  "payload": {
    "subject": "/"
  }
}
{
  "type": "subject",
  "payload": {
    "subject": "/books"
  }
}
{
  "type": "subject",
  "payload": {
    "subject": "/books/42"
  }
}

In reality, the output will look slightly different – the subjects are returned as compact NDJSON, with each subject occupying a single line.

Listing a Specific Branch Only

Sometimes you don't need all subjects – listing just a single branch is sufficient. To do this, set the baseSubject parameter to the desired root:

curl \
  -i \
  -X POST \
  -H "authorization: Bearer <API_TOKEN>" \
  -H "content-type: application/json" \
  -d '{"baseSubject": "/books"}' \
  http://localhost:3000/api/v1/read-subjects

In this case, only the subjects located directly below /books will be returned.