Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/JonathanHerSa/xolo-api-hub/llms.txt

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

Collections are Xolo’s primary organizational unit. A collection groups related saved requests — and other nested collections — under a single named project. When you create a top-level collection it becomes a project workspace: a self-contained context for environments, variables, and auth configuration. Subfolders inside a project let you mirror your API’s resource structure, keeping /users, /orders, and /products endpoints cleanly separated without losing the ability to run them all together.

Creating a Collection

1

Open the Collections screen

Navigate to the Collections tab (folder icon) in the bottom navigation bar. The screen lists all existing projects; if none exist, an empty-state prompt invites you to create the first one.
2

Tap the + button

Tap the + (Create new folder) icon in the app bar. The New Project / Folder dialog opens.
3

Enter a name

Type a descriptive name for the collection. An optional description field is available for documenting the project’s purpose.
4

Confirm

Tap Create. The new collection is persisted via CollectionsController.createCollection(name, description, parentId).When a root-level collection is created (no parentId), Xolo automatically creates three environments — Development, Staging, and Production — each pre-seeded with a baseUrl variable, and activates the Development environment.
Root collections appear as project cards in the main Collections screen. Tapping a card navigates into that project and sets it as the active workspace.

Nested Folders

Collections can contain other collections (folders) to any depth. The parentId field on CollectionEntity links a child folder to its parent:
class CollectionEntity {
  final int id;
  final String name;
  final String? description;
  final int? parentId;   // null = root project
  final String? authType;
  final String? authData;
  final DateTime createdAt;

  bool get isRoot => parentId == null;
}
To create a subfolder inside an open collection, tap the Create new subfolder icon (📁+) in the collection’s app bar. The same dialog appears with the current collection’s ID pre-filled as the parent. The ActiveWorkspaceExplorer widget renders the full recursive tree using ExplorableFolderTile, which is an ExpansionTile that lazy-loads child folders and requests by watching subCollectionsProvider(id) and collectionRequestsProvider(id).

Moving Requests & Folders

Xolo supports drag-and-drop reordering within a collection screen. Long-pressing a request or folder tile initiates a drag; dropping it onto a different folder calls the appropriate repository method:
  • Move a request to a different collection: moveRequest(requestId, collectionId) — pass null as the collection ID to move the request to the Unclassified root.
  • Move a folder to a different parent: moveCollection(collectionId, newParentId).
Both operations are reflected immediately in all reactive stream providers (subCollectionsProvider, collectionRequestsProvider) without requiring a manual refresh.

Auth Inheritance

Collections support inherited authentication, allowing you to configure credentials once at the project level and have every request inside automatically use them.
Auth resolution hierarchy — closest override wins:
  1. Request — if the request has a non-inherit authType, that auth is used directly.
  2. Parent folder — if the request’s auth is inherit, Xolo walks up through each parent folder (closest first) until it finds a folder with an explicit authType.
  3. Project (root collection) — if no folder defines auth, the project-level auth is used.
  4. None — if nothing in the hierarchy defines auth, the request is sent unauthenticated.
This resolution is performed by AuthResolverService.resolveAuth(requestAuthType, requestAuthData, collectionId), which calls getCollectionPath(collectionId) to build the ancestry chain and then iterates from the immediate parent upward:
final path = await _repo.getCollectionPath(collectionId);
final reversedPath = path.reversed.toList(); // closest parent first

for (final col in reversedPath) {
  if (col.authType != null &&
      col.authType != 'inherit' &&
      col.authType!.isNotEmpty &&
      col.authType != 'none') {
    return ResolvedAuth(
      type: col.authType,
      data: await _authSecretService.resolveAuthData(col.authData),
      source: col.parentId == null ? 'project' : 'folder',
    );
  }
  if (col.authType == 'none') {
    return ResolvedAuth(type: null, data: null, source: 'none');
  }
}
Setting authType to 'none' on a folder explicitly stops inheritance — requests inside that folder are sent without auth even if the parent project has auth configured.

Collection Run

The Run button (▶) in the active workspace app bar executes all requests contained in the collection (and its subfolders) sequentially, recording pass/fail results for each step.
1

Open the collection

Navigate to the project or folder you want to run in the workspace explorer.
2

Tap the Run button

Tap the ▶ icon in the app bar. The Run Collection bottom sheet opens, showing the target collection name and run options.
3

Configure and start

Adjust options (stop on failure, environment override) then tap Start Run. Progress is shown in real time.
For full details on run options, iteration counts, and result reporting, see the Collection Runner guide.

Deleting

Deleting a collection via deleteCollection(id) cascades automatically to all child folders and all saved requests they contain. A confirmation dialog is always shown before deletion proceeds.
Deletion is permanent — there is no undo for a collection delete. Export or duplicate important projects before removing them.
From the Saved Requests screen, a collection’s context menu offers the Delete All action, which also removes associated environments and variables. From the workspace explorer, the per-folder Delete option cascades through the folder subtree only.

Authentication Overview

Configure Bearer, Basic, API Key, and OAuth 2.0 auth at the request or collection level.

Collection Runner

Run all requests in a collection sequentially, with per-step assertions and variable extraction.

Build docs developers (and LLMs) love