Eden Documentation

The Eden platform documentation (WIP)

OverviewCopied!

Eden provides a comprehensive API interface for managing endpoints, templates, workflows, IAM, and authentication. This service acts as a relay between your application and various database systems, allowing unified access to different data stores through a common API.

AuthenticationCopied!

The API uses JWT (JSON Web Token) authentication. Before making any requests, you must obtain a valid token.

Login

GET /auth/login

Returns a JWT token that must be included in subsequent requests.

Response: A JwtResponse containing your authentication token.

Token Refresh

GET /auth/refresh

Refreshes an existing JWT token to extend the session.

Response: A new JwtResponse containing the refreshed token.

Password Reset

POST /auth/password/reset

Request a password reset for a user account.

Request Body: PasswordResetRequest object with:

  • username: User's username

  • token: Reset token

  • new_password: New password to set

OrganizationsCopied!

Organizations serve as top-level containers for all resources within the system.

Create Organization

POST /new

Creates a new organization.

Request Body: OrganizationInput with:

  • id: Organization identifier

  • super_admins: Array of UserInput objects defining the organization's administrators

  • description: (Optional) Organization description

Get Organization

GET /org

Retrieves all data associated with the authenticated user's organization.

Response: An OrganizationSchema containing organization details, including UUIDs for all associated resources.

Update Organization

PATCH /org

Updates an organization's details. Only super administrators can perform this operation.

Request Body: UpdateTemplateSchema with modified organization properties.

Delete Organization

DELETE /org

Deletes the organization associated with the authenticated user.

EndpointsCopied!

Endpoints represent connections to external data sources such as MongoDB, Cassandra, or Redis.

Create Endpoint

POST /endpoints

Creates a new endpoint connection.

Request Body: EndpointSchemaInput with:

  • endpoint: Endpoint identifier

  • kind: Type of endpoint (e.g., "Mongo", "Cassandra", "Redis")

  • config: Configuration specific to the endpoint type

  • description: (Optional) Description of the endpoint

Get Endpoint

GET /endpoints/{endpoint}

Retrieves details for a specific endpoint.

Path Parameters:

  • endpoint: Endpoint identifier

Response: An EndpointSchema with endpoint details.

Delete Endpoint

DELETE /endpoints/{endpoint}

Disconnects and removes an endpoint.

Path Parameters:

  • endpoint: Endpoint identifier

Read from Endpoint

POST /endpoints/{endpoint}/read

Reads data from an endpoint using gRPC.

Path Parameters:

  • endpoint: Endpoint identifier

Request Body: EndpointAPIRequest specific to the endpoint type

Response: A ReadResponse containing the data retrieved.

Write to Endpoint

POST /endpoints/{endpoint}/write

Writes data to an endpoint using gRPC.

Path Parameters:

  • endpoint: Endpoint identifier

Request Body: EndpointAPIRequest specific to the endpoint type

Response: A ReadResponse confirming the operation.

TemplatesCopied!

Templates define reusable data access patterns that can be applied across endpoints.

Create Template

POST /templates

Creates a new template.

Request Body: TemplateConstructor with:

  • id: Template identifier

  • request: Type of the template (Read/Write/Transaction/TwoPhaseTransaction)

  • template: Template value

Get Template

GET /templates/{template}

Retrieves a specific template.

Path Parameters:

  • template: Template identifier

Response: A JsonTemplate containing the template definition.

Run Template

POST /templates/{template}

Executes a template.

Path Parameters:

  • template: Template identifier

Request Body: Input data for the template

Render Template

POST /templates/{template}/render

Renders a template without executing it.

Path Parameters:

  • template: Template identifier

Request Body: Input data for the template

Response: A TemplateOutput containing the rendered template.

Update Template

PATCH /templates/{template}

Updates an existing template.

Path Parameters:

  • template: Template identifier

Request Body: UpdateTemplateSchema with updated template properties

Delete Template

DELETE /templates/{template}

Deletes a template.

Path Parameters:

  • template: Template identifier

WorkflowsCopied!

Workflows define sequences of operations across templates and endpoints.

Create Workflow

POST /workflows

Creates a new workflow.

Request Body: InsertWorkflow with:

  • org_uuid: Organization UUID

  • workflow_schema: Workflow definition

Get Workflow

GET /workflows/{workflow}

Retrieves a specific workflow.

Path Parameters:

  • workflow: Workflow identifier

Response: A WorkflowSchema containing the workflow definition.

Update Workflow

PATCH /workflows/{workflow}

Updates an existing workflow.

Path Parameters:

  • workflow: Workflow identifier

Request Body: UpdateWorkflowSchema with updated workflow properties

Delete Workflow

DELETE /workflows/{workflow}

Deletes a workflow.

Path Parameters:

  • workflow: Workflow identifier

IAM (Identity and Access Management)Copied!

IAM endpoints manage user access and permissions.

Create IAM User

POST /iam/users

Creates a new IAM user (the user must already exist in the system).

Request Body: Array containing:

  1. Relation type: Permission level ("SuperAdmin", "Admin", "Write", "Read", "None")

  2. User identifier

Get IAM User

GET /iam/users/{user}

Retrieves information about a specific IAM user.

Path Parameters:

  • user: User identifier

Response: A UserSchema containing user details.

Delete IAM User

DELETE /iam/users/{user}

Deletes an IAM user.

Path Parameters:

  • user: User identifier

JSON OperationsCopied!

The API provides utilities for manipulating JSON data.

Flatten JSON

POST /json/flatten

Flattens nested JSON objects into a single-level structure.

Request Body: FlattenInput with:

  • value: JSON data to flatten

  • prefix: (Optional) Prefix for flattened keys

Unflatten JSON

POST /json/unflatten

Converts a flattened JSON object back into a nested structure.

Request Body: Flattened JSON object

Map JSON

POST /json/map

Maps JSON data according to specified mappings.

Request Body: JsonMapInput with:

  • input: Source JSON data

  • schema: Target schema

  • mappings: Key mappings from source to target

Parse JSON

POST /json/parse

Extracts data from JSON using specified paths.

Request Body: JsonParseInput with:

  • json: Source JSON data

  • paths: Array of paths to extract

Reduce JSON

POST /json/reduce

Reduces JSON data based on specified paths.

Request Body: JsonReduceInput with:

  • json: Source JSON data

  • paths: Array of paths to include in the result

Helper EndpointsCopied!

Help

GET /help

Returns information about the API.

Data ModelsCopied!

Organization Models

  • OrganizationInput: Input for creating an organization

  • OrganizationSchema: Complete organization data structure

  • OrganizationUuid: Unique identifier for an organization

Endpoint Models

  • EndpointSchemaInput: Input for creating an endpoint

  • EndpointSchema: Complete endpoint data structure

  • EndpointAPIRequest: Request for endpoint operations

  • ReadResponse: Response from endpoint read operations

Template Models

  • TemplateConstructor: Input for creating a template

  • JsonTemplate: Complete template data structure

  • TemplateOutput: Result of template rendering

Workflow Models

  • InsertWorkflow: Input for creating a workflow

  • WorkflowSchema: Complete workflow data structure

  • Dag: Directed acyclic graph defining workflow steps

  • Node: Individual step in a workflow

User Models

  • UserInput: Input for creating a user

  • UserSchema: Complete user data structure

  • Password: Password hash and salt

Authentication Models

  • JwtResponse: Response containing authentication token

  • PasswordResetRequest: Input for resetting password