Skip to content

POST /extract/{db_name}/{namespace}

Retrieves the stored field values for one or more rows by ID. Returns all fields or a specified subset.


Request

Content-Type: application/json

URL Parameters:

Parameter Description
db_name Name of the database
namespace Namespace within the database

Body:

Parameter Type Required Default Description
row_ids list of int Row IDs to retrieve
fields list of string null Specific fields to return. If omitted, all fields are returned

Behavior

Fetches metadata for the given row IDs directly from RocksDB. Rows with no stored metadata are silently skipped. If fields is provided, only those keys are included in each result object.


Responses

200 OK

{
  "status": "success",
  "count": 2,
  "results": [
    {
      "_id": 0,
      "name": "Alice",
      "department": "Engineering",
      "role": "Senior Engineer"
    },
    {
      "_id": 5,
      "name": "Bob",
      "department": "Finance",
      "role": "Analyst"
    }
  ]
}
Field Description
count Number of rows returned
results Array of row objects. Each includes _id plus requested fields

Error Responses

Status Condition
404 Collection not found
500 Unexpected internal error

Notes

  • Rows not found in RocksDB are silently omitted from results — check count to verify all IDs were resolved.
  • This endpoint reads cached field values only. For HDC slot extraction with similarity scores, use /unbind/{db_name}/{namespace}.

Example

import requests

SERVER_URL = "http://18.220.128.24:8000"
API_KEY    = "yourapitoken"

def extract_fields(db_name: str, namespace: str, row_ids: list, fields: list = None) -> dict:
    payload = {"row_ids": row_ids}
    if fields:
        payload["fields"] = fields

    response = requests.post(
        f"{SERVER_URL}/extract/{db_name}/{namespace}",
        headers={"X-API-Key": API_KEY},
        json=payload,
    )
    response.raise_for_status()
    return response.json()


result = extract_fields(
    db_name="my_db",
    namespace="default",
    row_ids=[0, 5, 12],
    fields=["name", "department"],
)
print(result)

Expected output:

{
  "status": "success",
  "count": 3,
  "results": [
    { "_id": 0,  "name": "Alice", "department": "Engineering" },
    { "_id": 5,  "name": "Bob",   "department": "Finance" },
    { "_id": 12, "name": "Carol", "department": "Legal" }
  ]
}