n8n_client 0.2.0 copy "n8n_client: ^0.2.0" to clipboard
n8n_client: ^0.2.0 copied to clipboard

A Dart client for interacting with the n8n Public API, built by Spinex IO.

example/example.dart

// example/example.dart

import 'package:n8n_client/n8n_client.dart';

void main() async {
  // Initialize the client
  final client = N8NClient(
    baseUrl: 'https://your-n8n-instance.com/api/v1',
    apiKey: 'your-api-key-here',
  );

  // ============================================
  // WORKFLOWS
  // ============================================

  try {
    // List all workflows
    print('--- Workflows ---');
    final workflowsResponse = await client.workflows.getWorkflows(limit: 10);
    final workflowsData = workflowsResponse.data['data'] as List;

    for (var wfData in workflowsData) {
      final workflow = Workflow.fromJson(wfData);
      print('Workflow: ${workflow.name} (${workflow.id}) - Active: ${workflow.active}');
    }

    // Get a specific workflow with parsed model
    if (workflowsData.isNotEmpty) {
      final firstId = workflowsData.first['id'];
      final singleResponse = await client.workflows.getWorkflow(firstId);
      final workflow = Workflow.fromJson(singleResponse.data);

      print('\nWorkflow Details:');
      print('  Name: ${workflow.name}');
      print('  Nodes: ${workflow.nodes.length}');
      print('  Settings Timezone: ${workflow.settings.timezone ?? "default"}');

      // List node types
      for (var node in workflow.nodes) {
        print('  - Node: ${node.name} (${node.type})');
      }
    }
  } catch (e) {
    print('Workflows Error: $e');
  }

  // ============================================
  // EXECUTIONS
  // ============================================

  try {
    print('\n--- Executions ---');
    final executionsResponse = await client.executions.getExecutions(
      limit: 5,
      status: 'success',
    );
    final executionsData = executionsResponse.data['data'] as List;

    for (var execData in executionsData) {
      final execution = Execution.fromJson(execData);
      print('Execution #${execution.id}: ${execution.status} (${execution.mode})');
    }
  } catch (e) {
    print('Executions Error: $e');
  }

  // ============================================
  // USERS
  // ============================================

  try {
    print('\n--- Users ---');
    final usersResponse = await client.users.getUsers(limit: 10);
    final usersData = usersResponse.data['data'] as List;

    for (var userData in usersData) {
      final user = User.fromJson(userData);
      print('User: ${user.email} - ${user.firstName ?? ""} ${user.lastName ?? ""}');
    }
  } catch (e) {
    print('Users Error: $e');
  }

  // ============================================
  // TAGS
  // ============================================

  try {
    print('\n--- Tags ---');

    // Create a new tag
    final createResponse = await client.tags.createTag({'name': 'example-tag'});
    final tagId = createResponse.data['id'];
    print('Created tag: ${createResponse.data['name']} (ID: $tagId)');

    // List all tags
    final tagsResponse = await client.tags.getTags();
    final tagsData = tagsResponse.data['data'] as List;
    print('Total tags: ${tagsData.length}');

    for (var tagData in tagsData) {
      final tag = Tag.fromJson(tagData);
      print('  - ${tag.name} (${tag.id})');
    }

    // Delete the created tag
    await client.tags.deleteTag(tagId);
    print('Deleted tag: $tagId');
  } catch (e) {
    print('Tags Error: $e');
  }

  // ============================================
  // CREDENTIALS
  // ============================================

  try {
    print('\n--- Credentials ---');

    // Get credential schema for a type
    final schemaResponse =
        await client.credentials.getCredentialType('httpHeaderAuth');
    print('Schema for httpHeaderAuth: ${schemaResponse.data}');
  } catch (e) {
    print('Credentials Error: $e');
  }

  // ============================================
  // VARIABLES (requires elevated permissions)
  // ============================================

  try {
    print('\n--- Variables ---');
    final variablesResponse = await client.variables.getVariables(limit: 10);
    final variablesData = variablesResponse.data['data'] as List;

    for (var varData in variablesData) {
      final variable = Variable.fromJson(varData);
      print('Variable: ${variable.key} = ${variable.value}');
    }
  } catch (e) {
    print('Variables Error: $e');
  }

  // ============================================
  // PROJECTS (requires elevated permissions)
  // ============================================

  try {
    print('\n--- Projects ---');
    final projectsResponse = await client.projects.getProjects(limit: 10);
    final projectsData = projectsResponse.data['data'] as List;

    for (var projData in projectsData) {
      final project = Project.fromJson(projData);
      print('Project: ${project.name} (${project.id})');
    }
  } catch (e) {
    print('Projects Error: $e');
  }

  // ============================================
  // AUDIT
  // ============================================

  try {
    print('\n--- Security Audit ---');
    final auditResponse = await client.audit.generateAudit();
    final auditData = auditResponse.data as Map<String, dynamic>;

    print('Audit Report Categories:');
    for (var key in auditData.keys) {
      print('  - $key');
    }
  } catch (e) {
    print('Audit Error: $e');
  }

  print('\n--- Example Complete ---');
}
2
likes
150
points
88
downloads

Publisher

unverified uploader

Weekly Downloads

A Dart client for interacting with the n8n Public API, built by Spinex IO.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

dio

More

Packages that depend on n8n_client