Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/davidG97/qa-flow/llms.txt

Use this file to discover all available pages before exploring further.

Projects are the core resource in QA Flow. Each project represents a visual test flow composed of a graph of nodes (individual test actions) and edges (the connections between them). Projects also carry an optional config object for settings such as execution mode and worker count. All project endpoints require authentication; write operations additionally enforce ownership — only the project owner or an admin can update or delete a project.

Project Object

Every project endpoint returns one or more project objects with the following shape.
id
string
UUID uniquely identifying the project.
name
string
Human-readable project name.
description
string | null
Optional description of what the project tests.
nodes
string
JSON-serialized array of node definitions that make up the test flow graph.
edges
string
JSON-serialized array of edge definitions describing the connections between nodes.
config
string | null
JSON-serialized ProjectConfig object containing execution settings (e.g. parallel workers, browser, timeouts). null when no config has been set.
createdAt
string
ISO 8601 timestamp of when the project was created.
updatedAt
string
ISO 8601 timestamp of the most recent update.

GET /api/projects

List all projects accessible to the authenticated user. Admin users receive all projects in the system; regular users see only the projects they own or are a member of. Authentication required: Yes

Response

An array of project objects.
curl http://localhost:3001/api/projects \
  -H 'Authorization: Bearer <token>'

POST /api/projects

Create a new project. The authenticated user becomes the project owner (stored as a ProjectMember with the OWNER role). Authentication required: Yes

Request Body

name
string
required
The project name. Must be a non-empty string.
nodes
array
required
Array of node definition objects representing the flow graph nodes.
edges
array
required
Array of edge objects describing connections between nodes.
description
string
Optional human-readable description of the project.
config
object
Optional project configuration object (serialized as JSON). Controls execution behaviour such as parallel workers, browser selection, and timeouts.

Response

Returns the newly created project object with status 201 Created.
curl -X POST http://localhost:3001/api/projects \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Login Tests",
    "description": "Validates the login and logout flows",
    "nodes": [
      { "id": "node-1", "type": "navigate", "data": { "url": "https://app.example.com" } }
    ],
    "edges": [],
    "config": { "workers": 1 }
  }'
If name, nodes, or edges are missing from the request body, the API returns 400 Bad Request with { "error": "Faltan campos requeridos: name, nodes, edges" }.

GET /api/projects/:id

Retrieve a single project by its UUID. Admins can access any project; regular users can only access projects they own or are a member of. Authentication required: Yes

Path Parameters

id
string
required
The UUID of the project to retrieve.

Response

Returns the matching project object, or 404 Not Found if the project does not exist or is not accessible to the user.
curl http://localhost:3001/api/projects/proj-abc-123 \
  -H 'Authorization: Bearer <token>'

PUT /api/projects/:id

Update an existing project. Only the project owner or an admin can perform updates. Partial updates are supported — supply only the fields you want to change. Authentication required: Yes (owner or admin)

Path Parameters

id
string
required
The UUID of the project to update.

Request Body

name
string
Updated project name.
description
string
Updated description.
nodes
array
Replacement nodes array. Overwrites the existing nodes entirely.
edges
array
Replacement edges array. Overwrites the existing edges entirely.
config
object
Updated project configuration.

Response

Returns the updated project object on success. Returns 403 Forbidden if the user lacks permission to update the project.
curl -X PUT http://localhost:3001/api/projects/proj-abc-123 \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Checkout Flow v2",
    "config": { "workers": 4 }
  }'
The authenticated user does not own the project and is not an admin.
{ "error": "No tienes permiso para editar este proyecto" }

DELETE /api/projects/:id

Permanently delete a project and all its associated test runs, results, and reports. Only the project owner or an admin can delete a project. Authentication required: Yes (owner or admin)

Path Parameters

id
string
required
The UUID of the project to delete.

Response

Returns 204 No Content on success. Returns 403 Forbidden if the user does not have permission.
curl -X DELETE http://localhost:3001/api/projects/proj-abc-123 \
  -H 'Authorization: Bearer <token>'

GET /api/projects/:id/flow

Retrieve the project converted into a TestFlow object — the internal representation consumed by the Playwright execution engine. This is useful when integrating external tooling that needs the parsed, structured form of the flow rather than the raw JSON strings. Authentication required: Yes

Path Parameters

id
string
required
The UUID of the project whose flow representation to retrieve.

Response

id
string
Project UUID.
name
string
Project name.
nodes
array
Parsed array of node objects (deserialized from the stored JSON string).
edges
array
Parsed array of edge objects (deserialized from the stored JSON string).
config
object | null
Parsed ProjectConfig object, or null if no config is set.
curl http://localhost:3001/api/projects/proj-abc-123/flow \
  -H 'Authorization: Bearer <token>'
The /flow endpoint differs from GET /api/projects/:id in that nodes, edges, and config are returned as parsed JavaScript objects rather than raw JSON strings. Use this endpoint when you need to inspect or forward the flow to the execution engine directly.

Build docs developers (and LLMs) love