[
  {
    "path": "factory-core/ConfigIni.md",
    "title": "Run all ConfigIni tests",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-19 // : < (CLASSES END) Overview ConfigIni is the central configuration manager for Axion. It loads hierarchical YAML configuration from config.yaml with package-specific overrides, variable substitution, and optional secret backends (Infisical, AWS Secrets Manager). No longer inherits from ConfigParser — it is a standalone c"
  },
  {
    "path": "factory-core/Decorators.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. // : < (CYTHON START) Cython compile cythonize -3 -a -i Decorators.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-core/ObjAI.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjAI The ObjAI class provides a high-level interface for interacting wit"
  },
  {
    "path": "factory-core/ObjAlert.md",
    "title": "ObjAlert — Alert Management System",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjAlert — Alert Management System Overview ObjAlert is the core alert engine for the Axion platform. It runs a continuous check loop against configurable TriggerSql queries, tracks results in the database, auto-creates incidents for high-severity events, dispatches notifications through ObjNotify , and maintains a full lifecycle from detection through escalation to recovery. Two supporting classes live in the same module: - AlertMetrics — in-memory performance counters shared across all ObjAler"
  },
  {
    "path": "factory-core/ObjAlertIncident.md",
    "title": "ObjAlertIncident - Incident Management System",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjAlertIncident - Incident Management System Overview The ObjAlertIncident module provides comprehensive incident management capabilities for the Axion platform. It enables tracking, investigation, and resolution of incidents while maintaining a complete audit trail and communication history. Class Diagram Database Schema data incident Primary incident tracking table. Column Type Description -------- ------ ------------- IncidentGuid VARCHAR(255) Unique identifier (primary key) Title VARCHAR(25"
  },
  {
    "path": "factory-core/ObjApi.md",
    "title": "Open API Header example",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. Provides an extended class of ObjData.ObjData for managing database interactions and data structure creation, with additional functionalities for name cleaning, dictionary handling, table base generation, and complete dataset construction through table expansion and data operations. This class is designed for transforming input data into structured datasets, creatin"
  },
  {
    "path": "factory-core/ObjBOP.md",
    "title": "ObjBOP",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-19 // : < (CLASSES END) Overview ObjBOP generates ISO 9001 compliant Business Operating Procedure documents from Axion platform definitions. A BOP combines multiple interconnected workflows, webhook endpoints, service integrations, reports, decision trees, and feature stores into a single auditable document. Architecture Docu"
  },
  {
    "path": "factory-core/ObjBackup.md",
    "title": "ObjBackup",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjBackup The ObjBackup module provides a robust framework for creating and managing database backups. It is designed to handle backups for MariaDB/MySQL databases, allowing for flexible configuration of what to back up, where to store it, and how to manage the process. It supports backing up multiple databases from different remote connections, filtering tables, and managing the backup lifecycle. The module consists of two main classes: ObjBackup for handling a single backup operation and Backu"
  },
  {
    "path": "factory-core/ObjBarcode.md",
    "title": "ObjBarcode",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. Represent a class for handling barcode generation and validation tasks. This class provides methods for parsing, rendering, generating, validating, and calculating check digits for barcodes. It supports both EAN-13 and UPC formats, among others. Users can work with external tools and manage barcode data effectively. Encoding used for left and right digits Left Digit"
  },
  {
    "path": "factory-core/ObjCalculation.md",
    "title": "ObjCalculation",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjCalculation Overview ObjCalculation is the core calculation engine for the Axion platform. It loads SQL-based calculation definitions from the database and executes them against a target GUID. Calculations can perform lookups, transformations, and multi-step computations that enrich workflow context or application state. This module was extracted from factory.service/package.core/ObjServiceCalculation.py so that the calculation engine is available directly in factory.core without going throug"
  },
  {
    "path": "factory-core/ObjCalendar.md",
    "title": "ObjCalendar",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore Automate - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjCalendar Calendar service for querying and managing event schedules. Contains two classes: ObjEvent (calendar event entity) and ObjCalendar (calendar query and constraint logic). Class Diagram Class Overview - Module: factory.core/ObjCalendar.py - Inherits from: ObjData.ObjData - Tables: data events , def event types , def activity , def journey ObjEvent"
  },
  {
    "path": "factory-core/ObjChannel.md",
    "title": "ObjChannel",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjChannel ObjChannel is a Python class designed for managing and rendering email channels. It handles various aspects of email generation, including dynamic content processing, attachment handling, and integration with reporting and user management systems. Methods init (self, DB: Objects.DatabaseConnection = 0) Initializes the ObjChannel object. - Parameters: - DB"
  },
  {
    "path": "factory-core/ObjChannelmail.md",
    "title": "ObjChannelmail",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjChannelmail ObjChannelmail provides classes for managing and sending emails through defined channels, handling mailing lists, and processing email stages. Classes ChannelMail(ObjSupervisor.Supervisor) Manages individual email entries within a channel, including reading, creating, updating, and marking email status. Methods init (self, db: Objects.DatabaseConnecti"
  },
  {
    "path": "factory-core/ObjConnection.md",
    "title": "ObjConnection`",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjConnection Overview ⚠️ LEGACY MODULE - This module manages remote database connections using the table-based Def RemoteConnections approach. It may be deprecated in future versions. ObjConnection provides the legacy connection pool manager for remote database connections. It reads connection credentials from the Def RemoteConnections database table and manages co"
  },
  {
    "path": "factory-core/ObjConnectionPool.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjConnectionPool ObjConnectionPool is a production-ready, thread-safe da"
  },
  {
    "path": "factory-core/ObjConnectionPool_Test_Guide.md",
    "title": "ObjConnectionPool Test Guide",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjConnectionPool Test Guide Date : 2025-12-14 Test File : resource.test/pytests/factory.core/test ObjConnectionPool.py Total Test Cases : 40+ tests across 10 test classes --- Test Coverage Overview 1. TestConnectionPoolBasics (6 tests) Tests fundamental pool operations Test Purpose Validates ------ --------- ----------- test pool initialization Pool creates with correct size Initial pool size = configured size test acquire connection Can acquire connection from pool Connection is valid, stats u"
  },
  {
    "path": "factory-core/ObjConsole.md",
    "title": "ObjConsole",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjConsole.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-core/ObjConstants.md",
    "title": "ObjConstants",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjConstants Overview Centralized constants module providing system-wide configuration values, magic strings, and type mappings used throughout the Axion framework. All shared constants belong here per project convention. Constants are defined as Python class attributes with type hints, then optionally overridden via a three-tier precedence system: 1. Python class default (hardcoded in ObjConstants.py ) 2. YAML overlay ( ObjConstants.yaml — loaded at import time) 3. config.yaml override (per-pac"
  },
  {
    "path": "factory-core/ObjConversation.md",
    "title": "ObjConversation Module",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjConversation Module Overview The ObjConversation.py module implements a page-based conversational state machine for multi-channel chatbot interactions. It manages conversation definitions, page navigation, option handling, contact tracking, and intent matching across channels such as Console, Discord, WhatsApp, and Slack. The module contains two classes: 1. ObjCo"
  },
  {
    "path": "factory-core/ObjData.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjData ObjData is a foundational and versatile class within the Axion fr"
  },
  {
    "path": "factory-core/ObjDataDictionary.md",
    "title": "Data Dictionary",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "Data Dictionary The data dictionary is a collection of tables that define the structure of data used in the system. def data dictionary This table defines the data dictionaries available in the system. def data dictionary field This table defines the fields within each data dictionary. // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjDataDictionary.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-core/ObjDataExport.md",
    "title": "ObjDataExport",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjDataExport Export coordinator for the dataexport service. Dynamically loads a format-specific exporter from factory.export/ and drives it through the standard OpenFile → WriteHeader → WriteData → CloseFile lifecycle. Classes ObjDataExport Orchestrates a single data export job. Attributes are populated either in init (with safe defaults) or by sql read object() re"
  },
  {
    "path": "factory-core/ObjDataImport.md",
    "title": "ObjDataImport",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjDataImport Import coordinator for the dataimport service. Dynamically loads a format-specific parser from factory.import/ and drives the full lifecycle: file detection → parse → block commit → post-SQL → workflow trigger → metrics. Classes ImportMetrics Lightweight in-process accumulator for session-level statistics (total imports, rows, elapsed time, error rate)"
  },
  {
    "path": "factory-core/ObjDataModel.md",
    "title": "ObjDataModel — Generic Schema-Driven Data Model",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDataModel — Generic Schema-Driven Data Model Overview ObjDataModel is a generic CRUD layer that eliminates the need for per-domain-object subclasses. Instead of creating separate classes like ObjCreditApplication , ObjCreditContract , and ObjPaymentSchedule , all domain models are configured via YAML schema definitions and managed through a single ObjDataModel class. Why ObjDataModel? Before: Each domain object required a dedicated class + YAML + hand-written SQL - ObjPerson.py + ObjPerson.ya"
  },
  {
    "path": "factory-core/ObjDataModelEdit.md",
    "title": "ObjDataModelEdit — Data Model Lifecycle Manager",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDataModelEdit — Data Model Lifecycle Manager Overview ObjDataModelEdit extends the Axion data layer with the ability to load, save, synchronise, diff, and validate data model YAML files against the live database. While ObjDataModel provides runtime CRUD for individual records, ObjDataModelEdit manages the model itself — its table schemas, its reference data, its version history, and its registry metadata. A data model is a named YAML file in resource.datamodels/package.<pkg / that declares ev"
  },
  {
    "path": "factory-core/ObjDataSeed.md",
    "title": "ObjDataSeed`",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDataSeed Reusable synthetic data generation for the Axion platform. Centralises all Faker usage across the codebase. No other module should import faker.Faker directly -- use ObjDataSeed.get faker() or the convenience class methods instead. Updated: 2026-03-20 Copyright: proprietary to TechnoCore Automate Inheritance ObjDataSeed inherits from ObjData directly (not ObjDataTransfer ) so it can be used independently in tests, CLI scripts, or any module that needs realistic fake data without pull"
  },
  {
    "path": "factory-core/ObjDataStore.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjDataStore The ObjDataStore object is a comprehensive data management and schema maintenance tool. It is designed to be run as a servi"
  },
  {
    "path": "factory-core/ObjDataThreadSafe.md",
    "title": "ObjDataThreadSafe",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDataThreadSafe Overview ObjDataThreadSafe is a thread-safe wrapper for ObjData that provides automatic per-thread database connection management. Each thread automatically gets its own database connection from a connection pool, preventing cursor conflicts and making ObjData safe for multi-threaded use without manual connection management. Module : factory.core/ObjDataThreadSafe.py Inherits from : ObjData.ObjData Test file : None (integration tested through ObjConnectionPool tests) Version : "
  },
  {
    "path": "factory-core/ObjDataTransfer.md",
    "title": "Run all transfer tests",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjDataTransfer handles structured data movement between any combination of supported database backends. It supports both the workflow-driven transfer / transfer structure methods (configuration stored in def datatransfer ) and the ad-hoc transfer query method which requires no database config"
  },
  {
    "path": "factory-core/ObjData_ThreadSafe_Usage_Guide.md",
    "title": "ObjData Thread-Safe Usage Guide",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjData Thread-Safe Usage Guide Date : 2025-12-14 Status : Production-Ready Version : 8.0 --- Quick Start Option 1: ObjDataThreadSafe (Recommended for Most Use Cases) Best for : Multi-threaded applications, FastAPI workers, ThreadPoolExecutor Benefits : - ✅ Fully thread-safe - ✅ Automatic connection pooling - ✅ No manual connection management - ✅ Each thread gets own connection - ✅ Prevents cursor conflicts --- Option 2: ObjData with ConnectionPool (Explicit Control) Best for : When you need fin"
  },
  {
    "path": "factory-core/ObjData_ThreadSafety_Analysis.md",
    "title": "ObjData Database Connection Thread Safety Analysis",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjData Database Connection Thread Safety Analysis Date : 2025-12-14 File : factory.core/ObjData.py Status : ⚠️ Partially Thread-Safe - Requires Improvements --- Executive Summary ObjData's database connection management has mixed thread safety : ✅ Safe Aspects : - autocommit=True prevents transaction isolation issues - Read-only operations generally safe - YAML query cache uses class-level dict (read-mostly pattern) ⚠️ Thread Safety Issues : - No connection pooling - each ObjData instance creat"
  },
  {
    "path": "factory-core/ObjDecisionMatrix.md",
    "title": "ObjDecisionMatrix",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDecisionMatrix Two-axis decision matrix engine for grid-based lookups. Overview Manages and executes decision matrix lookups from a database-backed two-axis grid. Given row and column axis values from a context, resolves the matching cell value. Supports EXACT match, RANGE match (low/high bounds), and DEFAULT fallback on each axis. Used for pricing grids, risk categorisation, rate tables, and any decision that maps two input dimensions to an output value. Database Tables def decision matrix C"
  },
  {
    "path": "factory-core/ObjDecisionRuleset.md",
    "title": "List all rulesets",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-27 // : < (CLASSES END) Overview Priority-ordered rule engine. Rules evaluate sequentially by priority number — first match wins. Like firewall rules for business logic. How It Works Evaluation stops at the first matching rule. Multi-Condition Rules (AND) Multiple rows with the same Priority + RuleName are ANDed. All conditio"
  },
  {
    "path": "factory-core/ObjDecisionSegmentation.md",
    "title": "ObjDecisionSegmentation",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDecisionSegmentation Version: 8.0 Module: factory.core/ObjDecisionSegmentation.py Product: Arbiter Schema: factory.core/ObjDecisionSegmentation.yaml Tests: resource.test/pytests/factory.core/test ObjDecisionSegmentation.py (77 tests) Versioned segmentation engine for evaluating workflow context data against column-based rules stored in a base data table. Part of the Axion Decision family alongside ObjDecisionSwitch and ObjDecisionMatrix . Architecture Evaluation Flow Quote Stripping (Critical"
  },
  {
    "path": "factory-core/ObjDecisionSwitch.md",
    "title": "ObjDecisionSwitch",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDecisionSwitch Version: 8.0 Module: factory.core Inherits from: ObjData.ObjData Copyright: Proprietary to TechnoCore Automate Overview ObjDecisionSwitch is the core decision tree engine for the Axion platform. It provides a database-driven, rule-based decision-making system that evaluates input data against hierarchical decision trees to produce deterministic outcomes. The class implements the foundational decision tree framework: - Tree definition storage and retrieval - Rule evaluation engi"
  },
  {
    "path": "factory-core/ObjDesktopApp.md",
    "title": "ObjDesktopApp — Desktop Application Wrapper",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDesktopApp — Desktop Application Wrapper Reusable pywebview wrapper for building desktop apps from Axion reports. Provides system tray, toast notifications, keyboard shortcuts, search, export, screenshot, window persistence, and click-through navigation. Quick Start Constructor Parameters Parameter Type Default Description --- --- --- --- title str \"Axion\" Window title render fn Callable None Returns HTML string for the main page detail fn Callable None fn(hostname) returns HTML for detail vi"
  },
  {
    "path": "factory-core/ObjDocument.md",
    "title": "OCR any image",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. This class contains a method build name(), that sets up the properties: Filename, Filepublish, Iconname, Iconpublish, and Clipname depending on the file type ( Doctype) of the document. The name of the file, its \"publish\" name, icon name, \"publish\" icon name, and clip name (if applicable, like for audio files) are constructed based on the document type. The document"
  },
  {
    "path": "factory-core/ObjDocument3D.md",
    "title": "ObjDocument3D",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDocument3D Overview ObjDocument3D is a document delegate class for generating 3D model preview icons. It loads 3D mesh files using trimesh and renders visual previews using matplotlib's 3D projection capabilities, supporting multiple 3D file formats including STL, OBJ, PLY, and OFF. Module : factory.core/ObjDocument3D.py Inherits from : ObjDocumentDelegate.ObjDocumentDelegate Test file : resource.test/pytests/factory.core/test ObjDocument3D.py Purpose This module enables developers to: - Load"
  },
  {
    "path": "factory-core/ObjDocumentArchive.md",
    "title": "ObjDocumentArchive",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDocumentArchive Overview ObjDocumentArchive is a document delegate class for generating archive file listing preview icons. It reads the contents of ZIP, TAR, and GZ archives and renders the file listing as a syntax-highlighted text image using pygments, providing a visual preview of archive contents. Module : factory.core/ObjDocumentArchive.py Inherits from : ObjDocumentDelegate.ObjDocumentDelegate Test file : resource.test/pytests/factory.core/test ObjDocumentArchive.py Purpose This module "
  },
  {
    "path": "factory-core/ObjDocumentAudio.md",
    "title": "ObjDocumentAudio",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDocumentAudio Overview ObjDocumentAudio is a document delegate class for generating waveform visualization icons from audio files. It loads audio samples and renders Spotify-style waveform visualizations using matplotlib, supporting multiple audio formats including WAV, MP3, OGG, FLAC, and AAC. Module : factory.core/ObjDocumentAudio.py Inherits from : ObjDocumentDelegate.ObjDocumentDelegate Test file : resource.test/pytests/factory.core/test ObjDocumentAudio.py Purpose This module enables dev"
  },
  {
    "path": "factory-core/ObjDocumentCode.md",
    "title": "ObjDocumentCode",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDocumentCode Overview ObjDocumentCode is a document delegate class for generating syntax-highlighted code preview icons. It renders the first lines of source files as pygments-highlighted images using the monokai theme, supporting a wide range of programming and markup languages. Module : factory.core/ObjDocumentCode.py Inherits from : ObjDocumentDelegate.ObjDocumentDelegate Test file : resource.test/pytests/factory.core/test ObjDocumentCode.py Purpose This module enables developers to: - Gen"
  },
  {
    "path": "factory-core/ObjDocumentDelegate.md",
    "title": "ObjDocumentDelegate",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDocumentDelegate Overview ObjDocumentDelegate is an abstract base class for document type delegate handlers. Each delegate is responsible for generating icon and preview images for a specific category of file types (3D models, audio, spreadsheets, EPUB, web code, video, archives). Delegates encapsulate the domain-specific logic for processing different document types. Module : factory.core/ObjDocumentDelegate.py Inherits from : ObjData.ObjData , ABC (Abstract Base Class) Test file : None (tes"
  },
  {
    "path": "factory-core/ObjDocumentEpub.md",
    "title": "ObjDocumentEpub",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDocumentEpub Overview ObjDocumentEpub is a document delegate class for generating cover image icons from EPUB ebook files. It extracts cover images from EPUB files using the ebooklib library and converts them into square thumbnail icons suitable for preview purposes. Module : factory.core/ObjDocumentEpub.py Inherits from : ObjDocumentDelegate.ObjDocumentDelegate Test file : resource.test/pytests/factory.core/test ObjDocumentEpub.py Purpose This module enables developers to: - Extract cover im"
  },
  {
    "path": "factory-core/ObjDocumentFile.md",
    "title": "ObjDocumentFile",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDocumentFile Overview ObjDocumentFile handles file-level operations for documents, providing low-level file management, storage, and retrieval functionality. Module : factory.core/ObjDocumentFile.py Inherits from : ObjDocument.ObjDocument Purpose - Low-level file operations - File storage and retrieval - File system management - Path resolution - File metadata handling Key Features 1. File Operations - Read, write, delete files - Copy and move operations - File existence checks - Permission m"
  },
  {
    "path": "factory-core/ObjDocumentSet.md",
    "title": "ObjDocumentSet",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDocumentSet Overview ObjDocumentSet manages organized collections (sets) of related documents with shared metadata, permissions, and operations. Module : factory.core/ObjDocumentSet.py Inherits from : ObjDocument.ObjDocument Database table : def document set Purpose - Organize documents into logical sets - Manage document collections - Share metadata across document groups - Apply permissions to document sets - Track document relationships Key Features 1. Set Management - Create and manage do"
  },
  {
    "path": "factory-core/ObjDocumentSpreadsheet.md",
    "title": "ObjDocumentSpreadsheet",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDocumentSpreadsheet Overview ObjDocumentSpreadsheet is a document delegate class for generating table preview icons from spreadsheet files. It loads CSV and XLSX data using pandas and renders visual table previews using matplotlib, providing thumbnail representations of spreadsheet content. Module : factory.core/ObjDocumentSpreadsheet.py Inherits from : ObjDocumentDelegate.ObjDocumentDelegate Test file : resource.test/pytests/factory.core/test ObjDocumentSpreadsheet.py Purpose This module ena"
  },
  {
    "path": "factory-core/ObjDocumentStore.md",
    "title": "ObjDocumentStore",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjDocumentStore.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-core/ObjDocumentTools.md",
    "title": "ObjDocumentTools",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDocumentTools Overview ObjDocumentTools provides utility functions and helper methods for document processing, conversion, validation, and analysis. Module : factory.core/ObjDocumentTools.py Purpose - Document format conversion - File validation and verification - Document analysis utilities - Format detection - Helper functions for document operations Key Features 1. Format Detection - MIME type detection - File type identification - Magic number validation - Extension verification 2. Docume"
  },
  {
    "path": "factory-core/ObjDocumentUserFile.md",
    "title": "ObjDocumentUserFile",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDocumentUserFile Overview ObjDocumentUserFile manages user-uploaded files with user-specific permissions, quotas, and access controls. Module : factory.core/ObjDocumentUserFile.py Inherits from : ObjDocument.ObjDocument Database table : def user file Purpose - Manage user-uploaded files - Enforce user-specific quotas - Track user file ownership - Apply user permissions - Monitor storage usage Key Features 1. User File Management - Upload files for specific users - Track file ownership - User "
  },
  {
    "path": "factory-core/ObjDocumentVideo.md",
    "title": "ObjDocumentVideo",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDocumentVideo Overview ObjDocumentVideo is a document delegate class for generating thumbnail icons from video files. It extracts a single frame from a video using FFmpeg and converts it into a resized square thumbnail image suitable for preview purposes. Module : factory.core/ObjDocumentVideo.py Inherits from : ObjDocumentDelegate.ObjDocumentDelegate Test file : resource.test/pytests/factory.core/test ObjDocumentVideo.py Purpose This module enables developers to: - Extract frames from video "
  },
  {
    "path": "factory-core/ObjDocuments.md",
    "title": "ObjDocuments",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDocuments Overview ObjDocuments provides bulk document management operations for handling multiple documents simultaneously. It extends document functionality to support batch operations, collections, and document set management. Module : factory.core/ObjDocuments.py Inherits from : ObjDocument.ObjDocument Purpose - Manage multiple documents as collections - Batch document operations - Document set processing - Bulk upload and download - Collection-level metadata Key Features 1. Batch Operati"
  },
  {
    "path": "factory-core/ObjEncryption.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjEncrypt The ObjEncrypt class provides core functionalities for handling encryption and decryption of data within the platform. It includes methods for provisioning encryption keys for different packages and for encoding entire database tables based on configuration settings. The module also features a powerful command-line interface (CLI) for direct interaction with the encryption functionalities. Class Overview - Inherits from: ObjData - Key Libraries: t"
  },
  {
    "path": "factory-core/ObjEnum.md",
    "title": "ObjEnum",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjEnum Shared enum constants for the platform: workflow node types, feature store, ticket system, TUI forms, and more. Purpose Centralises all enumerated values so magic strings are defined once. Each enum inherits StrEnum so values can be used directly in SQL, comparisons, and f-strings without .value . Enums TicketStatus Ticket lifecycle states matching the data ticket.Status column. Value Description ------- ------------- NEW Just created TRIAGED Reviewed and categorised IN PROGRESS Being wo"
  },
  {
    "path": "factory-core/ObjEnvironment.md",
    "title": "c) TechnoCore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) TechnoCore - All Rights Reserved. ObjEnvironment.py Overview Secure host-environment operations helper for the Axion framework. This module provides a strictly allowlisted interface for executing system and process management commands on the host. It is designed for both local maintenance usage and authenticated API access, ensuring that only a predefined set of safe operations can be performed. The module does not inherit from O"
  },
  {
    "path": "factory-core/ObjEvent.md",
    "title": "ObjEvent",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore Automate - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjEvent Event tracking handler with encrypted event contents. Provides functionality for creating encrypted event records, generating sample event data with fake contents, and decrypting stored event payloads. Stores events in the track events table. Class Diagram Class Overview - Module: factory.core/ObjEvent.py - Inherits from: ObjData.ObjData - Associat"
  },
  {
    "path": "factory-core/ObjFeatureRender.md",
    "title": "Single record render",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-17 // : < (CLASSES END) Overview ObjFeatureRender is a template rendering engine that merges data from three sources into resolved messages: 1. Feature store output — computed features (risk band, score, etc.) 2. Source person data — names, dates, account details 3. Constants — company info, URLs, rates (from one or more tabl"
  },
  {
    "path": "factory-core/ObjFeatureStore.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjFeatureStore ObjFeatureStore is a comprehensive feature engineering an"
  },
  {
    "path": "factory-core/ObjFirewall.md",
    "title": "ObjFirewall",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjFirewall IP-based firewall for Axion services with geo-blocking, ISP/ASN filtering, honeypot integration, auto-ban, and UFW sync. Overview Class : ObjFirewall in factory.core/ObjFirewall.py Inherits : ObjFirewallEdit (extend.edit), ObjData Table : def firewall ObjFirewall provides a multi-layer security pipeline that evaluates incoming requests against allow/deny rules stored in the database. Rules are cached in memory (5 min TTL) for fast lookups without per-request DB queries. Security Stac"
  },
  {
    "path": "factory-core/ObjFtp.md",
    "title": "ObjFtp",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. List of free online SFTP servers +----+--------+----------+--------+---------+ Web Check Hostname Login Note +----+--------+----------+--------+---------+ web check test.rebex.net:22 demo/password Also supports SSH, FTP/SSL, FTP, IMAP, POP3 and Time protocols. Read-only. web check itcsubmit.wustl.edu:22 - Only for connection test. No public username/password availab"
  },
  {
    "path": "factory-core/ObjGeoLocation.md",
    "title": "ObjGeoLocation",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjGeoLocation Geocoding, reverse geocoding, and IP-based location lookup for the Axion platform. Overview ObjGeoLocation wraps three location resolution methods behind a consistent GeoPointType return value: Input Method Backend ------- -------- --------- Address string (noisy/clean) geocode() OpenStreetMap Nominatim Lat / Lng coordinates reverse geocode() OpenStreetMap Nominatim IP address geocode ip() ip-api.com When Ollama is reachable, geocode() optionally sends the raw input through an AI "
  },
  {
    "path": "factory-core/ObjGeoZone.md",
    "title": "ObjGeoZone",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjGeoZone Geographic zone definitions with point-in-zone testing and database persistence. Overview ObjGeoZone defines an area in one of three shapes and answers the question \"does this coordinate fall inside the zone?\". Shape Definition method contains() algorithm ------- ------------------ ---------------------- Circle define circle(lat, lng, radius km) Haversine distance Polygon define polygon( (lat, lng), ... ) shapely / ray-casting Bounding box define bbox(min lat, min lng, max lat, max ln"
  },
  {
    "path": "factory-core/ObjGithub.md",
    "title": "ObjGithub",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjGithub Overview ObjGithub is the GitHub Issues integration object for Axion. It provides: - GitHub REST issue operations (list/get/create/update/close/reopen) - Comment and event operations - Update feeds ( issues , comments , optional events ) - CLI commands for direct testing - Optional import of GitHub issues into local ticket tables Module : factory.core/ObjGithub.py YAML queries : factory.core/ObjGithub.yaml Primary tests : resource.test/pytests/factory.core/test ObjGithub.py Configurati"
  },
  {
    "path": "factory-core/ObjGo.md",
    "title": "Test integration",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. Test integration Sample map JSON: Command-Line Interface This script provides a command-line interface for managing URL mappings. stage Run the staging process. Usage service Run the microservice. Usage pytest -rP factory.core/ObjGo.py // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjGo.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-core/ObjGuiTask.md",
    "title": "ObjGuiTask",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjGuiTask.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-core/ObjHook.md",
    "title": "ObjHook",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. Overview ObjHook is a specialized subclass of ObjApi.ObjApi that handles all webhook-related operations in Axion. It manages outbound and inbound webhooks: reading webhook definitions from the database, preparing payloads from parameters and SQL lookups, encoding structured request bodies, and executing HTTP calls with retry logic. The companion class HookSet (in th"
  },
  {
    "path": "factory-core/ObjHost.md",
    "title": "ObjHost: Service, Container, and Instance Management",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjHost: Service, Container, and Instance Management Overview The factory.core/ObjHost.py script provides a command-line interface for managing a wide range of infrastructure components, including local Docker containers, AWS EC2 instances, and Proxmox LXC containers. It acts as an orchestrator for ensuring services are running and provides visibility into cloud and on-premise resources. Core Functionality The script is built around the ObjHost class and uses typer to provide a clean command-lin"
  },
  {
    "path": "factory-core/ObjImage.md",
    "title": "ObjImage",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjImage.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-core/ObjImap.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjImap The ObjImap object is responsible for handling IMAP connections and processing emails. Scan Configuration Scans are configured b"
  },
  {
    "path": "factory-core/ObjInet.md",
    "title": "ObjInet",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. Netbird Current access token for axion nbp SJdTegS9p57EdiPSBmZKcQWuiJ9ZBL1O9SE3 NOTICE: All information contained herein is, and remains the property of TechnoCore. +---+ UserAgent +---+ Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Mozilla/5.0 (compatible; Baiduspider"
  },
  {
    "path": "factory-core/ObjInternet.md",
    "title": "c) TechnoCore Automate - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore Automate - All Rights Reserved. // : < (CLASSES START) Updated : 2026-03-29 // : < (CLASSES END) Overview LAN discovery and network probing module. Scans IP ranges for active hosts, identifies open ports, fingerprints services and operating systems from banners, resolves hostnames and MAC addresses, fetches DHCP lease data from MikroTik gateways, resolves Proxmox VM/container names, and optionally registers discovered hosts in def host via ObjHost. All scanning is concurrent (Thre"
  },
  {
    "path": "factory-core/ObjJson.md",
    "title": "ObjJson",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjJson Overview ObjJson is a utility class for handling JSON objects with a focus on SQL-safe storage and serialization. It provides optimized JSON operations using the orjson library for high-performance JSON parsing and generation. Module : factory.core/ObjJson.py Inherits from : Objects.Object Test file : resource.test/pytests/factory.core/test ObjJson.py Version : 1.0 Purpose This module enables developers to: - Convert Python objects to SQL-safe JSON strings - Properly escape JSON data for"
  },
  {
    "path": "factory-core/ObjKeycloak.md",
    "title": "ObjKeycloak",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjKeycloak.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-core/ObjKeycloakResilient.md",
    "title": "ObjKeycloakResilient - Resilient Keycloak Client",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjKeycloakResilient - Resilient Keycloak Client Fault-tolerant Keycloak authentication with automatic fallback and eventual consistency. Overview ObjKeycloakResilient provides a resilient wrapper around Keycloak authentication that ensures web users can continue working even when Keycloak is unreachable . It implements the circuit breaker pattern, token caching, and a sync queue for eventual consistency. Key Principle : Local authentication (sys user) is PRIMARY, Keycloak is an ENHANCEMENT for "
  },
  {
    "path": "factory-core/ObjKeycloakSyncService.md",
    "title": "ObjKeycloakSyncService - Background Keycloak Sync Service",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjKeycloakSyncService - Background Keycloak Sync Service Continuous background service for processing Keycloak sync queue and maintaining eventual consistency. Overview ObjKeycloakSyncService is a long-running background service that continuously monitors and processes the Keycloak sync queue. When Keycloak becomes available after an outage, it automatically syncs all queued changes (password changes, user updates, etc.) to maintain eventual consistency. Purpose When Keycloak is unavailable: - "
  },
  {
    "path": "factory-core/ObjLearning.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. ObjLearning The ObjLearning class provides a comprehensive framework for managing learning resources within the system. It enables teams to catalog, organize, and retrieve educational materials, documentation, tutorials, and reference materials related to various modules and packages. Table of Contents 1. Overview ( overview) 2. Key Features ( key-features) 3. Database Schema ( database-schema) 4"
  },
  {
    "path": "factory-core/ObjML.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. ObjML The ObjML class provides a foundational framework for machine learning operations within the system. It encapsulates functionalities for data preprocessing, model training, prediction, and evaluation, with a focus on integrating seamlessly with various data sources and machine learning algorithms. Key Features Data Preprocessing : Handles tasks such as one-hot encoding for categorical featu"
  },
  {
    "path": "factory-core/ObjMLDatasets.md",
    "title": "German Credit Dataset",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "German Credit Dataset This dataset classifies people described by a set of attributes as good or bad credit risks. Usage To download the German Credit Data, you can use the following command: Attribute Information This dataset has 20 attributes and a class attribute. 1. Existing checking account : - A11: ... < 0 DM - A12: 0 <= ... < 200 DM - A13: ... = 200 DM / salary assignments for at least 1 year - A14: no checking account 2. Duration in month : - numeric 3. Credit history : - A30: no credits"
  },
  {
    "path": "factory-core/ObjMLScorecard.md",
    "title": "ObjMLScorecard",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjMLScorecard Overview ObjMLScorecard provides machine learning model scorecards for tracking model performance, versioning, and evaluation metrics over time. Module : factory.core/ObjMLScorecard.py Inherits from : ObjData.ObjData Database table : def scorecard Purpose - Track ML model performance metrics - Maintain model version history - Store evaluation results - Compare model iterations - Support model governance Key Features 1. Model Tracking - Version control for ML models - Performance m"
  },
  {
    "path": "factory-core/ObjMachineLearn.md",
    "title": "Hybrid Machine Learning Pipeline (Python + GPU + MySQL)",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "Hybrid Machine Learning Pipeline (Python + GPU + MySQL) This architecture abstracts the ML workflow using Pandas as the base data layer, with scalable preprocessing via Dask/Polars, GPU training via TensorFlow/PyTorch, and deployment via ONNX/TensorFlow.js. 📦 1. Data Layer: MySQL ↔ Pandas Import : Use pd.read sql() with PyMySQL or mysqlclient . Export : Use df.to sql() or batch inserts via cursor . Purpose : Centralized storage and retrieval of raw and processed datasets. 🔧 2. Preprocessing Laye"
  },
  {
    "path": "factory-core/ObjMcpClient.md",
    "title": "ObjMcpClient",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjMcpClient factory.core/ObjMcpClient.py Purpose ObjMcpClient is a synchronous wrapper around the Model Context Protocol (MCP) (https://modelcontextprotocol.io/) Python SDK. It lets any Axion service call MCP-compatible tool servers — in particular the @playwright/mcp headless-browser server — without managing an async event loop. Not an AI wrapper. The factory.ai/package.mcp/ directory contains \"Multi-Cloud Provider\" adapters for LLM backends. ObjMcpClient is entirely separate: it implements t"
  },
  {
    "path": "factory-core/ObjMcpServer.md",
    "title": "ObjMcpServer",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjMcpServer Base Axion MCP (Model Context Protocol) server. Wraps the FastMCP SDK and provides a registration point for Axion tool groups so that external AI clients can discover and invoke Axion capabilities. Note: This is entirely separate from factory.ai/package.mcp/ , which is the Multi-Cloud Provider abstraction for LLM backends. ObjMcpServer makes Axion act as an MCP server ; ObjMcpClient makes Axion act as an MCP client connecting to external servers. Architecture Each tool group is regi"
  },
  {
    "path": "factory-core/ObjMedia.md",
    "title": "ObjMedia",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjMedia The ObjMedia module provides classes for interacting with media file metadata and storing this information in a database. It is designed to work with media files, parse their technical details, and manage corresponding records in a database. The primary class, DocumentMedia , handles individual media files, while DocumentMediaSet manages collections of media. This module relies on the pymediainfo library to extract media information, so it's essential to have it installed ( pip install "
  },
  {
    "path": "factory-core/ObjMessageQueue.md",
    "title": "ObjMessageQueue",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjMessageQueue The ObjMessageQueue class provides a high-level interface for interacting with message queue systems, primarily RabbitMQ. It abstracts the complexities of connecting, publishing, and consuming messages, offering a simplified and robust API for developers. This class is designed to be resilient, with built-in mechanisms for connection retries and message buffering. Overview The ObjMessageQueue class handles: - Establishing connections to a RabbitMQ server. - Creating and managing "
  },
  {
    "path": "factory-core/ObjMonitor.md",
    "title": "ObjMonitor -- System Monitoring and Health Collection",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjMonitor -- System Monitoring and Health Collection Overview ObjMonitor is the Axion platform's system monitoring engine. It collects hardware, software, network, security, and application-level metrics from the host machine and persists them to a dedicated monitor.axion database schema. Collected data feeds the TUI dashboard, daily email reports, MQTT status publishing, and the ObjAlert threshold engine. The module contains two classes: - Monitor -- the main collector class; inherits from Obj"
  },
  {
    "path": "factory-core/ObjMqtt.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjMqtt The ObjMqtt class provides a robust client for connecting to an M"
  },
  {
    "path": "factory-core/ObjNewsFeed.md",
    "title": "ObjNewsFeed",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjNewsFeed Overview ObjNewsFeed is a class for managing social media-style news feeds with support for hashtags, mentions, HTML processing, and database storage. It provides CRUD operations for feed items with features like batch insertions, text-to-HTML conversion, and profile-based filtering. Module : factory.core/ObjNewsFeed.py Inherits from : Base class with database connectivity Test file : resource.test/pytests/factory.core/test ObjNewsFeed.py Database table : data newsfeed Purpose This m"
  },
  {
    "path": "factory-core/ObjNocoDB.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjNocoDB The ObjNocoDB object provides a client for interacting with a NocoDB instance using its REST API (v2). It handles the connection setup, authentication, and provides methods for common CRUD (Create, Read, Update, Delete) operations on table records. Configuration The object is configured through the config.yaml file under the base.nocodb section. The following parameters are required: - host : The hostname or IP address of the NocoDB server. - port "
  },
  {
    "path": "factory-core/ObjNodeRegistry.md",
    "title": "ObjNodeRegistry",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjNodeRegistry Strategy registry for workflow node executors. Purpose ObjNodeRegistry provides a self-registration mechanism for workflow node types. Node executor classes register themselves at import time via the @register decorator, allowing new node types to be added without modifying the core workflow engine ( ObjWorkflow.py ). Design ObjNodeRegistry is a class-level registry (no instances are created). All state lives in the registry class variable, a Dict str, Type mapping node type stri"
  },
  {
    "path": "factory-core/ObjNotify.md",
    "title": "Documentation for ObjNotify Module",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "Documentation for ObjNotify Module Overview The ObjNotify.py module provides a centralized system for sending notifications through various channels, including Slack, Discord, SMS, and more. It is designed to be highly configurable and can be used for both immediate, direct notifications and asynchronous, queued delivery. The integration is built on a clear separation of concerns: 1. Configuration ( def notify table): Defines if , how , and where a notification should be sent for each channel. 2"
  },
  {
    "path": "factory-core/ObjNotifyPush.md",
    "title": "ObjNotifyPush",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjNotifyPush Overview The ObjNotifyPush module bridges MQTT real-time notifications with the Web Push API. It allows Axion to deliver browser push notifications to users who are offline or have the application in the background. Push subscriptions are persisted in the def notify push subscription database table and managed through explicit subscribe/unsubscribe calls from the browser client. Architecture Notification Flow 1. Server receives a notification request via send push() . 2. MQTT publi"
  },
  {
    "path": "factory-core/ObjOpenObserve.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. --- ObjOpenObserve ObjOpenObserve is a Python class designed to facilitate the sending of logs and metrics to an OpenObserve instance. I"
  },
  {
    "path": "factory-core/ObjOperator.md",
    "title": "weekdays expands to 2,3,4,5,6 then adds 7",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. // : < (CLASSES START) Updated : 2026-03-31 // : < (CLASSES END) Overview Unified operator evaluation for all Axion decision engines. Single source of truth — every engine delegates to ObjOperator.evaluate() (Python-level) or ObjOperator.resolve operator() (alias resolution for SQL-building engines like ObjDecisionSegmentation ) instead of implementing their own comparison logic. Operator Reference Comparison Symbol Word Aliases Description -------- ------ -"
  },
  {
    "path": "factory-core/ObjPackage.md",
    "title": "ObjPackage",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjPackage Version: 8.0 Module: factory.core Inherits from: ObjData.ObjData Overview ObjPackage is the runtime package identity and governance module. It provides a single entry point for package identity (name, branding, contacts), RACI governance, and active database connection resolution. Key Responsibilities Package Identity Loads package metadata from def package and exposes it via properties: RACI Governance Uses the ObjRaci mixin to provide RACI matrices at the package level: RACI data is"
  },
  {
    "path": "factory-core/ObjPalette.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjPalette The ObjPalette class, located in factory.core , is designed to manage color palettes within the Axion framework. It provides "
  },
  {
    "path": "factory-core/ObjPassword.md",
    "title": "ObjPassword",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjPassword.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-core/ObjPerson.md",
    "title": "ObjPerson — Contact Person Management",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjPerson — Contact Person Management Overview ObjPerson manages contact people for notifications, runbooks, and escalations. A person may be an Axion platform user (linked via the User field to sys user ) or a purely external contact — a vendor, on-call engineer, or client representative — with no Axion account. All notification channel fields are stored on data person so that ObjNotify can deliver alerts to any person regardless of whether they have an Axion login. Visibility is controlled by "
  },
  {
    "path": "factory-core/ObjPlatform.md",
    "title": "ObjPlatform",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjPlatform Overview ObjPlatform consolidates all platform, virtualization, and system detection queries into a single module. All methods are static and require no instantiation, providing a clean API for environment detection across the Axion framework. Module : factory.core/ObjPlatform.py Test file : None (integration tested) CLI : Includes typer CLI for platform checks Purpose This module enables developers to: - Detect virtualization environments (AWS, KVM, VMware, Docker, LXC, WSL, Virtual"
  },
  {
    "path": "factory-core/ObjPreflight.md",
    "title": "ObjPreflight",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjPreflight Overview ObjPreflight performs pre-flight checks to verify system readiness before executing critical operations. It validates database connectivity, configuration, dependencies, and system requirements. Module : factory.core/ObjPreflight.py Inherits from : Objects.Object Purpose - Validate system configuration before operations - Check database connectivity and schemas - Verify required dependencies - Test external service connections - Ensure system prerequisites are met Key Featu"
  },
  {
    "path": "factory-core/ObjProcessText.md",
    "title": "NOTE: disabled — impacts performance <>",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "// : < (HIRAR START) Updated : 2025-02-27 // : < (HIRAR END) Validation Type Description ----------------- ----------------------------------------------- required Makes the element required. remote Requests a resource to check the element for validity. maxlength Makes the element require a given maximum length. rangelength Makes the element require a given value range. min Makes the element require a given minimum. max Makes the element require a given maximum. range Makes the element require a"
  },
  {
    "path": "factory-core/ObjRandom.md",
    "title": "ObjRandom - Random Number and Code Generation Utilities",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjRandom - Random Number and Code Generation Utilities (c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. Overview ObjRandom provides random number generation and unique code generation utilities for the Axion platform. It supports both standard random (for non-security purposes like load distribution) and cryptographically secure random (for security purposes like token generation). Class: ObjRandom Inherits from:"
  },
  {
    "path": "factory-core/ObjRateLimit.md",
    "title": "ObjRateLimit - Rate Limiting and Brute Force Protection",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjRateLimit - Rate Limiting and Brute Force Protection Comprehensive rate limiting and account lockout system for authentication security. Overview ObjRateLimit provides multi-layer protection against brute force attacks and authentication abuse with per-user and per-IP rate limiting, automatic account lockout, exponential backoff, and detailed audit tracking. Features ✅ Per-user rate limiting ✅ Per-IP address rate limiting ✅ Account lockout after threshold violations ✅ Exponential backoff for "
  },
  {
    "path": "factory-core/ObjReport.md",
    "title": "ObjReport",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjReport.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-core/ObjReportFile.md",
    "title": "ObjReportFile",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjReportFile.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-core/ObjSSH.md",
    "title": "ObjSSH",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSSH.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-core/ObjSSO.md",
    "title": "ObjSSO",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSSO.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-core/ObjScheduler.md",
    "title": "ObjScheduler",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore Automate - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ⚡ ObjScheduler Database-driven task scheduler for the Axion platform. Uses cron expressions as the scheduling language but runs entirely in-process — it does not read or write to the system crontab. Overview Schedules are stored in the def scheduler database table. The scheduler reads those records, evaluates cron expressions using croniter , and executes d"
  },
  {
    "path": "factory-core/ObjSchedulerTUI.md",
    "title": "ObjSchedulerTUI - Scheduler Dashboard Documentation",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjSchedulerTUI - Scheduler Dashboard Documentation Real-time terminal dashboard for monitoring the Axion scheduler service using the Rich library. Overview The Scheduler TUI provides a comprehensive, real-time view of the scheduler's operation including: - Active running tasks with duration tracking - Queued tasks with retry counts - Worker process status - Task completion statistics - Recent events (starts, completions, failures, retries) - Live performance metrics Features 📊 Statistics Panel "
  },
  {
    "path": "factory-core/ObjScorecard.md",
    "title": "ObjScorecard",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjScorecard Overview Credit-style scoring engine. Loads variable/attribute definitions from def scorecard , reads a primary context record, evaluates each variable against the bureau/simulation data, and returns an integer score. This module was extracted from factory.service/package.core/ObjServiceScorecard.py so that the scoring engine is available directly in factory.core . The service ( ObjServiceScorecard.ObjServiceApi ) remains as a thin subclass providing the service-framework Connect / "
  },
  {
    "path": "factory-core/ObjSecurityAudit.md",
    "title": "Scan a single host (all checks)",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. // : < (CLASSES START) Updated : 2026-03-28 // : < (CLASSES END) Overview Comprehensive security audit and penetration testing tool. Performs 26 checks across network, web, DNS, email, database, and infrastructure categories. All results auto-persist to DB with AI summaries. Audit Checks (26) Network Check Method What ------- -------- ------ Port scan audit ports() 22 common ports, SSH/FTP greeting capture OS fingerprint audit os fingerprint() nmap -O -sV se"
  },
  {
    "path": "factory-core/ObjService.md",
    "title": "ObjService",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjService Overview Service queue engine. Loads service definitions from def service , resolves the factory module for the service type, builds payloads, executes Connect/Send, and writes results back to stage service . Inheritance Chain Processing Pipeline Key Methods Read(ServiceCode, Service) Loads service definition, resolves factory, caches. Process(service code, service, param1..param9, ...) Full service execution: payload, connect, send, update. BuildPayload(FObj) Builds payload based on "
  },
  {
    "path": "factory-core/ObjServiceHeartbeat.md",
    "title": "ObjServiceHeartbeat",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjServiceHeartbeat Shared helpers for multi-instance MQTT-based TUI dashboards. Purpose Enables TUI dashboards to monitor all running instances of a service simultaneously, regardless of how many processes are started on different ports or hosts. Each service instance publishes a small retained MQTT heartbeat; the TUI subscribes to a wildcard topic and aggregates heartbeats from every live instance. Topic Structure - {package} — active package name (e.g. homechoice ) - {service type} — short na"
  },
  {
    "path": "factory-core/ObjSignal.md",
    "title": "ObjSignal",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSignal.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-core/ObjSignalMqtt.md",
    "title": "ObjSignalMqtt",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjSignalMqtt Overview ObjSignalMqtt provides MQTT-based signaling for inter-process communication and event broadcasting. It extends the signal system to use MQTT as a transport layer for distributed messaging. Module : factory.core/ObjSignalMqtt.py Inherits from : ObjSignal.ObjSignal or ObjMqtt.ObjMqtt Protocol : MQTT (Message Queuing Telemetry Transport) Purpose - Broadcast signals via MQTT - Enable distributed event systems - Provide publish/subscribe messaging - Support cross-process commun"
  },
  {
    "path": "factory-core/ObjSimulation.md",
    "title": "ObjSimulation",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjSimulation Overview ObjSimulation extends ObjData to provide simulation-specific functionality, including comprehensive table reference tracking during simulation runs. It monitors which database tables are read from or written to during calculation and workflow simulations, enabling dependency analysis and optimization. Module : factory.core/ObjSimulation.py Inherits from : ObjData.ObjData Test files : resource.test/pytests/factory.core/test ObjSimulation proxy.py , test ObjSimulation sql tr"
  },
  {
    "path": "factory-core/ObjSms.md",
    "title": "ObjSms",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSms.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-core/ObjSound.md",
    "title": "ObjSound",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjSound Overview ObjSound manages and provides access to sound files indexed in sounds.yaml . It provides a centralized system for managing audio resources used throughout the Axion platform. Module : factory.core/ObjSound.py Inherits from : Objects.Object Configuration : factory.core/sounds.yaml Purpose - Centralize sound file management - Provide easy access to audio resources - Index and catalog available sounds - Support sound playback and retrieval Key Features 1. Sound Index Management - "
  },
  {
    "path": "factory-core/ObjStatusImage.md",
    "title": "ObjStatusImage",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjStatusImage Overview ObjStatusImage generates status badge images for displaying system status, metrics, and indicators in visual format. Module : factory.core/ObjStatusImage.py Inherits from : Objects.Object Purpose - Generate status badge images - Create visual indicators for system status - Provide customizable badge styles - Support various image formats Key Features 1. Badge Generation - Status badges (success, warning, error) - Metric badges (counts, percentages) - Custom text and color"
  },
  {
    "path": "factory-core/ObjSupervisor.md",
    "title": "Supervisor Class Documentation",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "Supervisor Class Documentation Overview The Supervisor class is a core component of the Axion framework, designed to manage and monitor system processes and services in a distributed environment. It acts as a central controller for running background tasks, implementing a robust dispatcher/worker pattern. Its primary responsibilities include: - Service Lifecycle Management : Starting, stopping, and monitoring the status of various microservices. - Task Dispatching : Reading tasks from database \""
  },
  {
    "path": "factory-core/ObjTUI.md",
    "title": "ObjTUI",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjTUI Overview ObjTUI provides shared utilities for Rich-based terminal dashboards: theme loading, startup banners, a managed layout loop ( TUI Manager ), and two reusable stream helpers ( TuiStream , AtomicWriter ) that any TUI module can import. Module : factory.core/ObjTUI.py Dependencies : rich Exports Name Type Purpose --- --- --- can use tui() function Guard — returns False under supervisord or non-TTY stdout TuiTheme dataclass Semantic color mapping loaded from the active ObjPalette buil"
  },
  {
    "path": "factory-core/ObjTemplate.md",
    "title": "result[\"subject\"] = \"Welcome, Sipho!\"",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-17 // : < (CLASSES END) Overview ObjTemplate manages templates stored in the database. It supports two template stores: - def template — page/report templates (legacy) - def email template — email templates with subject, body, channel, layout, and $placeholder$ resolution Email Templates Table: def email template Column Type "
  },
  {
    "path": "factory-core/ObjTest.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjTest Module The ObjTest module provides a suite of tools for generating and validating South African ID numbers, including special functions for creating and verifying test-specific IDs. This functionality is exposed through a command-line interface. Description This class inherits from ObjData and is designed to assist in software testing and development where valid-looking but identifiable test data is required. It can generate standard SA IDs, validate"
  },
  {
    "path": "factory-core/ObjText.md",
    "title": "ObjText",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "// : < (HIRAR START) Updated : 2025-02-27 // : < (HIRAR END)"
  },
  {
    "path": "factory-core/ObjTicket.md",
    "title": "ObjTicket",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjTicket Core ticket system for user and internal request tracking. Purpose Orchestrates the full ticket lifecycle including status transitions, SLA deadline calculation, task management, comments, links, templates, audit trail, problem analysis, work scoring, and email notifications. Delegates to sub-modules for specialised concerns. Database Tables data ticket Column Type Description -------- ------ ------------- Guid char(50) Primary key TicketNumber int AUTO INCREMENT Human-readable number "
  },
  {
    "path": "factory-core/ObjTicketComment.md",
    "title": "ObjTicketComment",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjTicketComment Comment management for tickets. Purpose Manages comments on tickets with support for internal-only visibility and soft-delete. Accessed via ObjTicket delegation methods ( add comment , get comments ). Database Tables data ticket comment Column Type Description -------- ------ ------------- Guid char(50) Primary key TicketGuid char(50) Parent ticket reference CommentText text Comment body CommentedBy varchar(255) Who wrote the comment IsInternal char(2) Y/N - internal-only flag I"
  },
  {
    "path": "factory-core/ObjTicketLink.md",
    "title": "ObjTicketLink",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjTicketLink Link and dependency management between tickets. Purpose Manages directional links between tickets. Supports link types: BLOCKS, RELATED, DUPLICATE, CHILD. Accessed via ObjTicket delegation methods ( add link , get links ). Database Tables data ticket link Column Type Description -------- ------ ------------- Guid char(50) Primary key SourceGuid char(50) Source ticket TargetGuid char(50) Target ticket LinkType enum BLOCKS, RELATED, DUPLICATE, CHILD CreatedBy varchar(255) Who created"
  },
  {
    "path": "factory-core/ObjTicketSla.md",
    "title": "ObjTicketSla",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjTicketSla SLA (Service Level Agreement) configuration per package and priority level. Purpose Defines response and resolution time targets for tickets based on the package and priority combination. Used by ObjTicket to calculate SLA deadlines when a ticket is created. Database Table def ticket sla Column Type Description -------- ------ ------------- Package char(255) Package identifier (PK) Priority enum CRITICAL, HIGH, MEDIUM, LOW, INFO (PK) ResponseMinutes int Max minutes to first response"
  },
  {
    "path": "factory-core/ObjTicketTask.md",
    "title": "ObjTicketTask",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjTicketTask Task management for tickets in the ticket system. Purpose Each ticket can have multiple tasks that are tracked independently. Tasks have their own status lifecycle and can be assigned to individual users. This enables breaking a ticket into actionable work items. Database Table data ticket task Column Type Description -------- ------ ------------- Guid char(50) Primary key TicketGuid char(50) Parent ticket reference TaskName varchar(500) Task title Description text Task details Sta"
  },
  {
    "path": "factory-core/ObjTicketTemplate.md",
    "title": "ObjTicketTemplate",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjTicketTemplate Ticket template management with pre-defined tasks. Purpose Manages reusable ticket templates that define a standard subject, description, priority, type, and a set of tasks. When a ticket is created from a template, all template tasks are automatically added to the new ticket. Database Tables def ticket template Column Type Description -------- ------ ------------- Guid char(50) Primary key TemplateName varchar(255) Unique name per package Package char(255) Package context Subj"
  },
  {
    "path": "factory-core/ObjTuiForm.md",
    "title": "ObjTuiForm",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjTuiForm Rich-based interactive terminal form renderer. Purpose Reads form definitions from def form and def formfields (seeded by create forms from yaml ), renders interactive terminal forms using Rich and questionary, and writes collected data back to the form's BaseTable via INSERT or UPDATE. No Database Tables Uses existing def form and def formfields tables. No new schema required. Flow Basic TUI Types TUI Type Rendering ---------- ----------- STRING Prompt.ask() single-line input TEXT Pr"
  },
  {
    "path": "factory-core/ObjTypes.md",
    "title": "ObjTypes - Type Alias System Documentation",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjTypes - Type Alias System Documentation Version: 8.0 Module: factory.core/ObjTypes.py Overview ObjTypes provides a centralized type alias system for the Axion framework, improving code readability, maintainability, and type consistency. Instead of using verbose type annotations like Dict str, Any throughout the codebase, we use semantic type aliases that convey meaning and intent. Benefits - Semantic Clarity : ConfigDict is more meaningful than Dict str, Any - Single Source of Truth : Change "
  },
  {
    "path": "factory-core/ObjVersionMixin.md",
    "title": "ObjVersionMixin",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjVersionMixin Module: factory.core/ObjVersionMixin.py Product: Axion Universal version history tracking mixin for Axion compute modules. Designed to be mixed into classes that inherit from ObjData . VERSION REGISTRY All versioned modules are registered in a central dict. The mixin resolves table names automatically based on the class hierarchy: Module main table nodes table history table name column -------- ----------- ------------- --------------- ------------- ObjDecisionSwitch def decision"
  },
  {
    "path": "factory-core/ObjWebMail.md",
    "title": "ObjWebMail",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjWebMail ObjWebMail is a Python class for sending and receiving emails. It supports SMTP for sending and POP3 for receiving. It also has features for handling HTML emails, attachments, and processing multipart messages. Methods uuid(self, args: Any) - str: Generates a short, unique identifier. - Returns: A string representing a unique identifier. Example: init (se"
  },
  {
    "path": "factory-core/ObjWebhookAlert.md",
    "title": "c) TechnoCore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) TechnoCore - All Rights Reserved. ObjWebhookAlert.py Overview Webhook failure alerting system for the Axion framework. This module monitors webhook execution metrics in real time and sends alerts when configurable thresholds are exceeded. It tracks failure rates, authentication failures, timeouts, and latency across all registered webhooks. Alerts can be delivered through multiple channels simultaneously: Slack, Email, PagerDuty,"
  },
  {
    "path": "factory-core/ObjWorkflow.md",
    "title": "c) TechnoCore Automate - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore Automate - All Rights Reserved. ObjWorkflow Module Overview The ObjWorkflow module is a powerful, data-driven engine responsible for orchestrating and executing complex business processes. It models these processes as Directed Acyclic Graphs (DAGs) , where each step is a node and dependencies define the directed, acyclic flow. The engine interprets workflow definitions stored in a database, manages the flow of data between steps, and integrates with various other modules to perfor"
  },
  {
    "path": "factory-core/ObjWorkflow_Analysis.md",
    "title": "ObjWorkflow.py - Code Analysis & Improvement Suggestions",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjWorkflow.py - Code Analysis & Improvement Suggestions File : factory.core/ObjWorkflow.py Lines : 2,358 Version : 8.0 Analysis Date : 2025-12-14 --- Executive Summary ObjWorkflow.py is a critical component managing workflow orchestration in Axion. While functionally complete, the codebase exhibits several anti-patterns and areas for improvement including excessive global variable usage, inconsistent exception handling, and opportunities for refactoring to improve maintainability. Priority Leve"
  },
  {
    "path": "factory-core/ObjWorkflow_Performance_Changes.md",
    "title": "ObjWorkflow Performance Optimizations - Implementation Summary",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjWorkflow Performance Optimizations - Implementation Summary Date : 2025-12-14 File : factory.core/ObjWorkflow.py Phases Completed : Phase 1 (Quick Wins) + Phase 2 (Medium Effort) --- Changes Implemented Phase 1: Quick Wins 1. ✅ Move node dispatch to init () (Lines 202-241) Problem : 27 node class objects instantiated every single node execution Before : After : Lines Changed : - Added lines 202-241: Node dispatch initialization in init () - Modified line 846: Comment added - Modified line 855"
  },
  {
    "path": "factory-core/ObjWorkflow_Speedup_Analysis.md",
    "title": "ObjWorkflow Performance Optimization Analysis",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjWorkflow Performance Optimization Analysis Date : 2025-12-14 Target : factory.core/ObjWorkflow.py Current State : Functional but has significant performance bottlenecks --- Critical Performance Issues 🔴 CRITICAL: Node Dispatch Created in Loop (Lines 806-849) Current Issue: Impact: - Instantiates 27 node objects for every single node execution - If workflow has 10 nodes → 270 unnecessary object instantiations - Each instantiation calls init () , sets up references, allocates memory Solution: M"
  },
  {
    "path": "factory-core/ObjWorkflow_ThreadSafety.md",
    "title": "ObjWorkflow Thread Safety Documentation",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjWorkflow Thread Safety Documentation Date : 2025-12-14 File : factory.core/ObjWorkflow.py Status : ✅ Thread-Safe for Concurrent Workflow Execution --- Thread Safety Guarantee ObjWorkflow is now fully thread-safe and supports: - ✅ Multiple threads executing workflows concurrently using the same Workflow instance - ✅ Multiple threads executing different workflows simultaneously - ✅ Multiple threads executing the same workflow with different contexts - ✅ Concurrent reads and writes to shared cac"
  },
  {
    "path": "factory-core/Objects.md",
    "title": "c) TechnoCore Automate - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\") (c) TechnoCore Automate - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. The intellectual and technical concepts contained herein are proprietary to TechnoCore Automate and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore Automate. Objects Objects.py is the foundational"
  },
  {
    "path": "factory-core/extend-backup/ObjBackupHandler.md",
    "title": "Your dump logic here",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. // : < (CLASSES START) Updated : 2026-03-27 // : < (CLASSES END) Overview Abstract base class for database backup handlers. Each database type (MariaDB, PostgreSQL, MongoDB, etc.) implements this interface. Handler Interface Method Required Description -------- ---------- ------------- dump() Yes Dump database to file(s), return paths list databases() Yes List available databases/buckets get database size() No Estimate size in bytes (default: 0) system datab"
  },
  {
    "path": "factory-core/extend-backup/ObjBackupRegistry.md",
    "title": "Check what's registered",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. // : < (CLASSES START) Updated : 2026-03-27 // : < (CLASSES END) Overview Registry pattern for backup dump handlers, mirroring ObjNodeRegistry . Handlers self-register via decorator. Usage Registered Types Type Handler Tool ------ --------- ------ MARIADB, MYSQL ObjBackupDumpMariadb mysqldump POSTGRES ObjBackupDumpPostgres pg dump MONGO ObjBackupDumpMongo mongodump INFLUXDB ObjBackupDumpInfluxdb influx / HTTP API MSSQL ObjBackupDumpMssql sqlcmd SQLITE ObjBac"
  },
  {
    "path": "factory-core/extend-data/ObjDataDDL.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjDataDDL The ObjDataDDL class is a core component of the Axion framewor"
  },
  {
    "path": "factory-core/extend-data/ObjDataKey.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjDataKey Multi-backend key-value store manager for Axion. Supports Redi"
  },
  {
    "path": "factory-core/extend-data/ObjDataMongo.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjDataMongo The ObjDataMongo class provides a suite of methods for inter"
  },
  {
    "path": "factory-core/extend-data/ObjDataSql.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjDataSql The ObjDataSql class provides a comprehensive set of methods f"
  },
  {
    "path": "factory-core/extend-delegate/ObjDebug.md",
    "title": "ObjDebug",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDebug Debug and logging delegate extracted from Objects.Object . Purpose ObjDebug encapsulates all console output, MQTT log routing, progress bar, and traceback helper methods that were previously defined directly on the Object class in Objects.py . This reduces the size and complexity of Objects.py while keeping the public API unchanged. Design ObjDebug is a delegate , not a mixin or base class. It does not inherit from Object or ObjData . Instead, it receives the host Object instance as a c"
  },
  {
    "path": "factory-core/extend-delegate/ObjPatch.md",
    "title": "ObjPatch",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjPatch Mixin class providing parameter patching and text processing for the Object class in Objects.py . Purpose ObjPatch resolves $term$ placeholders in strings by looking up values from database parameters, user attributes, package configuration, date/time functions, and system context. It is mixed into Object via Python MRO and requires no init . Methods Method Description -------- ------------- patch all(term, key, value) Simple string replacement of key with value in term patch paramBuffe"
  },
  {
    "path": "factory-core/extend-delegate/ObjRaci.md",
    "title": "ObjRaci",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjRaci Module: factory.core/extend.delegate Type: Mixin (mixed into ObjData) What is RACI? RACI is a responsibility assignment matrix used to clarify roles and ownership for every activity in a process. Each letter represents a level of involvement: - Responsible (R) — The \"Doer.\" The person who actually performs the work to complete the task. Every task needs at least one person responsible. - Accountable (A) — The \"Owner.\" The person with final say who must ensure the task is completed correc"
  },
  {
    "path": "factory-core/extend-delegate/ObjRecurringMixin.md",
    "title": "ObjRecurringMixin",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjRecurringMixin Generic cron-based recurring-schedule mixin for any module that inherits from ObjData . Overview Provides create, list, check-due, and cancel operations against a shared def recurring table. Each consumer module identifies itself via recurring module type (e.g. TICKET , WORKFLOW , CALCULATION ) so a single table serves all modules. Usage Table: def recurring Column Type Description -------- ------ ------------- Guid char(50) Primary key ModuleType varchar(50) Consumer identifie"
  },
  {
    "path": "factory-core/extend-delegate/ObjResource.md",
    "title": "ObjResource",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjResource Web resource (CSS/JS) management mixin extracted from Objects.Object . Purpose ObjResource manages CSS and JavaScript resource lists for web pages. It handles CDN mapping, alias resolution (e.g. @sweetalert ), and optional minification via rjsmin . Mixed into Object so all web-facing modules inherit resource management. Design ObjResource is a mixin , not a standalone class. It expects the host class to provide: - self.ResourceCss -- list of CSS file paths/URLs - self.ResourceScript "
  },
  {
    "path": "factory-core/extend-delegate/ObjSerialization.md",
    "title": "ObjSerialization",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjSerialization Object field injection and JSON serialization mixin extracted from Objects.Object . Purpose ObjSerialization provides methods for copying attributes between objects, encoding and decoding object state as JSON, and injecting dictionary values into object fields. Mixed into Object so all modules inherit serialization capabilities. Design ObjSerialization is a mixin , not a standalone class. It expects the host class to provide: - self.fields -- list of field names (used by inject/"
  },
  {
    "path": "factory-core/extend-delegate/ObjSystem.md",
    "title": "ObjSystem",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjSystem Mixin class providing system-level operations for the Object class in Objects.py . Purpose ObjSystem encapsulates methods related to operating system interaction, environment detection, singleton process locking, IP address resolution, and in-memory database connections. It is mixed into Object via Python MRO and requires no init . Methods Method Description -------- ------------- system run(command) Execute a local shell command via subprocess.Popen and return output is docker() Detec"
  },
  {
    "path": "factory-core/extend-edit/ObjAlertEdit.md",
    "title": "ObjAlertEdit",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjAlertEdit Overview ObjAlertEdit extends ObjAlert to provide YAML export/import for alert definitions. It exports all def alert rows for a given package, stripping runtime-state fields that are repopulated on each alert run. Exported files are written to local.documents/alerts/ by default. Inheritance Chain Database Tables Table Purpose --- --- def alert One row per Alert/Package — definition and thresholds Export Format Runtime-state fields stripped on export: guid , LastCheck , LastTrigger ,"
  },
  {
    "path": "factory-core/extend-edit/ObjApiEdit.md",
    "title": "ObjApiEdit",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjApiEdit Overview ObjApiEdit extends the ObjApi class to provide specialized functionality for editing and exporting API configurations, specifically designed to export webhook configurations to Insomnia REST client format. Module : factory.core/ObjApiEdit.py Inherits from : ObjApi.ObjApi Test file : resource.test/pytests/factory.core/test ObjApiEdit.py Purpose This module enables developers to: - Export webhook configurations from the Axion database to Insomnia Request Collection JSON format "
  },
  {
    "path": "factory-core/extend-edit/ObjCalculationEdit.md",
    "title": "ObjCalculationEdit",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjCalculationEdit Overview ObjCalculationEdit extends ObjCalculation to provide YAML export functionality for calculation group configurations. It exports complete group definitions including all steps, with SQL content formatted for readability and descriptions reflowed. Exported files are written to local.documents/calculations/ by default. Inheritance Chain Database Tables Table Purpose --- --- def calculation Group metadata (presql, postsql, review notes) def calculations Individual calcula"
  },
  {
    "path": "factory-core/extend-edit/ObjChannelEdit.md",
    "title": "ObjChannelEdit",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjChannelEdit Overview ObjChannelEdit extends ObjChannel to provide YAML export/import for channel definitions stored in def Channel . Channels control how reports are delivered — email layout, headers, footers, SMTP config, styles, etc. Unlike package-level Edit modules, ObjChannelEdit exports a single channel per file (keyed by Channel + Package ). Exported files are written to local.documents/channels/ by default. Inheritance Chain Database Tables Table Purpose --- --- def Channel One row pe"
  },
  {
    "path": "factory-core/extend-edit/ObjConversationEdit.md",
    "title": "ObjConversationEdit Module",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjConversationEdit Module Overview The ObjConversationEdit.py module provides YAML-based import and export of conversation definitions. It follows the same pattern as ObjWorkflowEdit.py , allowing conversation flows to be saved to YAML files and loaded back into the database. The module contains one class: 1. ConversationEdit -- Fetches conversation definitions fro"
  },
  {
    "path": "factory-core/extend-edit/ObjDataDictionaryEdit.md",
    "title": "ObjDataDictionaryEdit",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDataDictionaryEdit Overview ObjDataDictionaryEdit extends ObjDataDictionary to provide YAML export/import for data dictionary definitions. It exports the header row and all field definitions for a given DictionaryCode/Package combination. Exported files are written to local.documents/data dictionary/ by default. Inheritance Chain Database Tables Table Purpose --- --- def data dictionary One header row per DictionaryCode/Package def data dictionary field One row per field within a dictionary E"
  },
  {
    "path": "factory-core/extend-edit/ObjDecisionSegmentationEdit.md",
    "title": "ObjDecisionSegmentationEdit",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDecisionSegmentationEdit Module: factory.core/extend.edit/ObjDecisionSegmentationEdit.py Product: Arbiter CRUD and YAML export/import interface for versioned segmentation definitions. Extends ObjDecisionSegmentation following the same pattern as ObjDecisionSwitchEdit . Architecture The core class handles read() + evaluate() . This Edit class adds load, export, import, migration, and all CRUD operations. Methods load(segment name, package=None) - dict Load complete segment configuration from d"
  },
  {
    "path": "factory-core/extend-edit/ObjDecisionSwitchEdit.md",
    "title": "ObjDecisionSwitchEdit",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDecisionSwitchEdit Overview ObjDecisionSwitchEdit extends ObjDecisionSwitch to provide YAML export, simulation execution, and CRUD functionality for decision tree configurations. Decision trees define branching logic used by the workflow engine to route execution based on SQL-evaluated conditions. This module handles all simulation and management operations while ObjDecisionSwitch retains only the core evaluation logic ( read , evaluate , compute decision ). Exported files are written to loca"
  },
  {
    "path": "factory-core/extend-edit/ObjEditBase.md",
    "title": "ObjEditBase",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjEditBase Shared mixin for all Edit modules in factory.core/extend.edit/ . Purpose Eliminates copy-paste duplication across 10 Edit files by extracting common YAML export utilities into a single cooperative mixin. Provided Utilities Module-level exports Name Description ------ ------------- LiteralString str subclass that LiteralDumper renders as YAML block scalar ( \\ ) LiteralDumper Custom yaml.SafeDumper with LiteralString support literal representer Representer function registered on Litera"
  },
  {
    "path": "factory-core/extend-edit/ObjFeatureStoreEdit.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjFeatureStoreEdit ObjFeatureStoreEdit extends ObjFeatureStore with all "
  },
  {
    "path": "factory-core/extend-edit/ObjHookEdit.md",
    "title": "ObjHookEdit",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjHookEdit Module : factory.core/ObjHookEdit.py Extends : ObjHook.ObjHook Purpose Provides a simple load/save interface for both inbound and outbound webhooks. This module handles complete webhook configurations in single operations, automatically managing parameters and validations. ObjHookEdit is called by ObjApiEdit when saving entire API configurations that include webhook components. TechnoCore Convention Package Management : Package is determined automatically via get package() . Do NOT i"
  },
  {
    "path": "factory-core/extend-edit/ObjMailEdit.md",
    "title": "ObjMailEdit",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjMailEdit YAML import / export for email templates stored in def email template . Round-trips one template at a time between the database and a YAML file under local.documents/email templates/ , so templates can be versioned, edited offline, and replayed back into any environment. Mixin pattern ( ObjEditBase first, primary class second): CLI Programmatic use Behaviour - export to file drops UpdateDate (DB-managed) and writes Subject , Body , and Description as YAML literal block scalars ( ) fo"
  },
  {
    "path": "factory-core/extend-edit/ObjNotifyEdit.md",
    "title": "ObjNotifyEdit",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjNotifyEdit Overview ObjNotifyEdit extends ObjNotify to provide YAML export/import for notification channel definitions. It exports all def notify rows for a given package so notification configs can be ported between environments. Exported files are written to local.documents/notify/ by default. Inheritance Chain Database Tables Table Purpose --- --- def notify One row per NotifyCode/Package — channel routing config Export Format Package is stripped from each row since it is stored at the top"
  },
  {
    "path": "factory-core/extend-edit/ObjPersonEdit.md",
    "title": "ObjPersonEdit",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjPersonEdit Overview ObjPersonEdit extends ObjPerson to provide YAML export/import for contact person records in data person . Used to back up, migrate, or seed person definitions across packages and environments. Unlike most Edit modules, import from data does not issue raw SQL INSERTs. It sets ObjPerson instance attributes and delegates to ObjPerson.save() (upsert keyed by PersonGuid ). Exported files are written to local.documents/persons/ by default. Inheritance Chain Database Tables Table"
  },
  {
    "path": "factory-core/extend-edit/ObjScorecardEdit.md",
    "title": "ObjScorecardEdit",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjScorecardEdit Overview ObjScorecardEdit extends ObjScorecard to provide YAML import/export functionality for scorecard definitions. It exports all attribute rows for a given scorecard/version/package combination, and can reimport them with fresh GUIDs. Exported files are written to local.documents/scorecards/ by default. Inheritance Chain Database Tables Table Purpose --- --- def scorecard Attribute rows per scorecard/version/package Export Format Auto-generated and redundant fields are strip"
  },
  {
    "path": "factory-core/extend-edit/ObjWorkflowEdit.md",
    "title": "c) TechnoCore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjWorkflowEdit.py Documentation ObjWorkflowEdit.py is a command-line tool for editing, analyzing, and managing workflows within the Axion framework. It provides a suite of commands to interact with workflow definitions stored in the database, allowing for creation, modification, and analysis of workflows and their components. Key Features - Workflow Analysis : Scan"
  },
  {
    "path": "factory-core/extend-probe/README.md",
    "title": "extend.probe — Webhook Deployment Probe",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "extend.probe — Webhook Deployment Probe What This Is A generic webhook deployment probe system for the Axion stack. It reads def webhook deployment , fires real HTTP calls per entry using a recent payload from the source DB, validates the response, and writes results back. Built to cover LIVE and UAT environments, all packages, with TCP-level ping before each HTTP probe. --- Files ObjHook.py was updated: - Inherits (ObjHookProbeMixin, ObjApi.ObjApi) - extend.probe added to sys.path - Extracted m"
  },
  {
    "path": "factory-core/extend-security/ObjSecurityLocal.md",
    "title": "ObjSecurityLocal",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. // : < (CLASSES START) Updated : 2026-03-27 // : < (CLASSES END) Overview Local OS security hardening scanner. All checks run against the local filesystem and system tools. For remote network vulnerability scanning, see ObjSecurityAudit.py . Architecture Local Checks Method What Severity -------- ------ ---------- scan fail2ban() Active IP bans per jail HIGH (5+), MEDIUM scan ssh keys() Bad permissions, excessive keys HIGH, MEDIUM scan world writable() Files"
  },
  {
    "path": "factory-core/extend-ticket/ObjTicketAutoAssign.md",
    "title": "ObjTicketAutoAssign",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjTicketAutoAssign Rule-based automatic ticket assignment mixin for ObjTicket. Overview Provides configurable rules that automatically assign newly created tickets to a specific person based on matching criteria. Rules are stored in def ticket assign rules and evaluated using a specificity-based fallback hierarchy. Fallback Hierarchy When a ticket is created without an explicit assignee, the mixin searches for a matching rule in this order: 1. Exact match -- Package + Project + Priority + Ticke"
  },
  {
    "path": "factory-core/extend-ticket/ObjTicketGoogleTasks.md",
    "title": "ObjTicketGoogleTasks",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjTicketGoogleTasks Google Tasks ticket provider for ObjTicket. Overview Routes ticket operations to Google Tasks via the Tasks API methods on ObjServiceGoogle . Uses the existing OAuth2 service account with domain-wide delegation — no separate API key needed. Google Tasks has a minimal model (title, notes, due, status), so priority is encoded as a title prefix ( P0 , P1 , etc.) and assignee/comments are appended to the notes body. Configuration In config.yaml : The https://www.googleapis.com/a"
  },
  {
    "path": "factory-core/extend-ticket/ObjTicketMixin.md",
    "title": "ObjTicketMixin — Ticket Domain Mixins",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjTicketMixin — Ticket Domain Mixins Overview The extend.ticket package provides five mixins that decompose ObjTicket's delegate-based sub-systems into composable classes. Each mixin is a plain class (no ObjData inheritance) that relies on the host class providing self.get queries() , self.escape sql() , self.sql execute() , etc. Mixins Mixin Domain YAML Key Methods --- --- --- --- ObjTicketSlaMixin SLA deadlines ObjTicketSlaMixin.yaml get response deadline() , get resolution deadline() , get e"
  },
  {
    "path": "factory-core/extend-ticket/ObjTicketProvider.md",
    "title": "ObjTicketProvider",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjTicketProvider Abstract base class and factory function for the Axion ticket provider system. Overview The ticket provider pattern decouples ticket operations from their backing store. Callers work against ObjTicketProvider and never need to know whether operations target the internal database, Asana, or both. Configuration in config.yaml determines which concrete provider is instantiated at runtime: Class Diagram Providers ObjTicketInternal All operations go to data ticket via ObjTicket . Th"
  },
  {
    "path": "factory-core/extend-ticket/ObjTicketRecurringMixin.md",
    "title": "ObjTicketRecurringMixin",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjTicketRecurringMixin Ticket-specific recurring schedule adapter built on the generic ObjRecurringMixin . Overview Provides creation, listing, checking, and cancellation of recurring ticket schedules. Uses the shared def recurring table with ModuleType = \"TICKET\" . Tickets are created from existing templates in def ticket template when their schedule is due. Delegates all cron parsing, scheduling, and table management to ObjRecurringMixin in factory.core/extend.delegate/ . Architecture Methods"
  },
  {
    "path": "factory-core/extend-ticket/ObjTicketTodoist.md",
    "title": "ObjTicketTodoist",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjTicketTodoist Todoist ticket provider for ObjTicket. Overview Routes ticket operations to Todoist via ObjServiceTodoist . Priority is mapped to Todoist priorities (1-4); status transitions are mapped to section moves within a Todoist project. Configuration In config.yaml : Status Mapping Axion Status Todoist Section ------------- ---------------- NEW New TRIAGED Triaged IN PROGRESS In Progress ON HOLD On Hold ESCALATED Escalated RESOLVED Resolved CLOSED Closed CANCELLED Cancelled Sections mus"
  },
  {
    "path": "factory-core/extend-tui/ObjAiTUI.md",
    "title": "ObjAiTUI",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjAiTUI Multi-instance terminal UI dashboard for monitoring all ServeAI processes simultaneously. Uses MQTT heartbeats for live instance tracking alongside the existing dual-rate local Ollama and DB polls. Overview AiTUI combines three data sources: - MQTT heartbeats — subscribes to axion/+/heartbeat/ai/+ for per-instance status (hostname, port, uptime, PID). Instances stale after TuiConstants.HEARTBEAT STALE SECS (45 s). - Fast poll ( TuiConstants.AI POLL FAST SECS , default 2 s) — checks loca"
  },
  {
    "path": "factory-core/extend-tui/ObjConversationTUI.md",
    "title": "ObjConversationTUI",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjConversationTUI Multi-instance terminal UI dashboard for monitoring all ServeConversation processes simultaneously. Uses MQTT heartbeats for live instance tracking and a slow DB poll for static configuration data. Overview ConversationTUI subscribes to MQTT topic axion/+/heartbeat/conversation/+ to receive retained heartbeats from every running ServeConversation instance. An instance is shown as stale after TuiConstants.HEARTBEAT STALE SECS (45 s). The def conversation channel distribution is"
  },
  {
    "path": "factory-core/extend-tui/ObjGoTUI.md",
    "title": "ObjGoTUI",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjGoTUI Multi-instance terminal UI dashboard for monitoring all ServeGo short-URL/redirect processes simultaneously. Uses MQTT heartbeats for live instance tracking and a slow DB poll for static configuration data. Overview GoTUI subscribes to MQTT topic axion/+/heartbeat/go/+ to receive retained heartbeats from every running ServeGo instance. An instance is shown as stale after TuiConstants.HEARTBEAT STALE SECS (45 s). The def go table is polled separately every TuiConstants.CONFIG POLL SECS ("
  },
  {
    "path": "factory-core/extend-tui/ObjImportTUI.md",
    "title": "ObjImportTUI",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjImportTUI Read-only terminal UI dashboard for monitoring the ServeImport service in real time. Launched as a standalone CLI command; it does not require the import service to be running. Overview ImportTUI polls three data sources every TuiConstants.IMPORT POLL SECS seconds (default 5 s): 1. Process table — uses psutil to detect whether ServeImport watch is active. 2. Filesystem — scans local.documents/ for pending files awaiting import, sorted by modification time descending. 3. Database — q"
  },
  {
    "path": "factory-core/extend-tui/ObjReportTUI.md",
    "title": "ObjReportTUI",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTUI Multi-instance terminal UI dashboard for monitoring all ServeReport processes simultaneously. Uses MQTT heartbeats for live instance tracking and a slow DB poll for static configuration data. Overview ReportTUI subscribes to MQTT topic axion/+/heartbeat/report/+ to receive retained heartbeats from every running ServeReport instance. Each instance publishes a heartbeat every TuiConstants.HEARTBEAT INTERVAL SECS (15 s). An instance is shown as stale after TuiConstants.HEARTBEAT STALE "
  },
  {
    "path": "factory-core/extend-tui/ObjSchedulerMonitorTUI.md",
    "title": "ObjSchedulerMonitorTUI",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjSchedulerMonitorTUI Read-only terminal UI dashboard for observing the ServeScheduler service. Launched as a standalone CLI command; it does not start the scheduler — it only polls the database. Overview SchedulerMonitorTUI is distinct from ObjSchedulerTUI , which is an embedded push-based TUI that runs inside the scheduler service. This module is a DB-polling observer that works whether the scheduler service is running or not. It uses a dual poll-rate strategy: - Fast poll ( TuiConstants.SCHE"
  },
  {
    "path": "factory-core/extend-tui/ObjTuiBase.md",
    "title": "ObjTuiBase",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjTuiBase Base class for all Axion TUI (Terminal User Interface) dashboards. Purpose Eliminates code duplication across the 12+ TUI dashboard modules by providing shared infrastructure: console initialization, layout scaffolding, live display loop, log/footer panels, start/stop lifecycle, and MQTT teardown. Class: TuiBase Class Attributes Attribute Type Description ---------------- ------ -------------------------------------- service name str Display name used in header/stop msg Instance Attri"
  },
  {
    "path": "factory-core/extend-tui/ObjWebhookTUI.md",
    "title": "ObjWebhookTUI",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjWebhookTUI Multi-instance terminal UI dashboard for monitoring all ServeWebHook processes simultaneously. Uses MQTT heartbeats for live instance tracking and a slow DB poll for static configuration data. Overview WebhookTUI subscribes to MQTT topic axion/+/heartbeat/webhook/+ to receive retained heartbeats from every running ServeWebHook instance. An instance is shown as stale after TuiConstants.HEARTBEAT STALE SECS (45 s). The def webhook table is polled separately every TuiConstants.CONFIG "
  },
  {
    "path": "factory-core/extend-tui/ObjWorkflowSimulTUI.md",
    "title": "ObjWorkflowSimulTUI",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjWorkflowSimulTUI Overview ObjWorkflowSimulTUI is the real-time terminal dashboard for monitoring ObjWorkflowSimul runs. It renders live progress, success rate, throughput, ETA, and a scrolling table of recent GUID results — all without making any database calls. Module : factory.workflow/package.tui/ObjWorkflowSimulTUI.py Entry class : SimulTUI Dependencies : rich , ObjTUI , ObjConstants.TuiConstants , ObjEnum.TuiLogLevel Architecture The simulation workers update the shared class-level dict "
  },
  {
    "path": "factory-core/extend-tui/ObjWorkflowTUI.md",
    "title": "ObjWorkflowTUI",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjWorkflowTUI Read-only terminal UI dashboard for monitoring the ServeWorkflow service in real time. Launched as a standalone CLI command; it does not require the workflow service itself to be running. Overview WorkflowTUI connects to the RabbitMQ message queue and polls queue depth statistics every TuiConstants.WORKFLOW POLL SECS seconds. It renders a full-screen Rich Live layout with animated heartbeat, uptime, queue counters, a bar-chart queue status view, and a scrolling log pane. Data sour"
  },
  {
    "path": "factory-core/extend-visual/ObjDecisionSwitchVisual.md",
    "title": "ObjDecisionSwitchVisual",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjDecisionSwitchVisual Render, visual, and export methods for decision trees. Extracted from ObjDecisionSwitch to separate core tree evaluation logic from presentation and serialisation concerns. Class Diagram ObjDecisionSwitchVisual inherits all core functionality from ObjDecisionSwitch (read, evaluate, compute decision, simulate, verify outcomes, etc.) and adds visualisation and import/export capabilities. Methods Diagram Generation Method Description --- --- diagram(direction) Generate a Mer"
  },
  {
    "path": "factory-core/extend-visual/ObjFeatureStoreVisual.md",
    "title": "ObjFeatureStoreVisual",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjFeatureStoreVisual Visual, render, and diagram methods for the feature store. Extracted from ObjFeatureStore to separate core compute/analytics logic from presentation and diagram concerns. Class Diagram ObjFeatureStoreVisual inherits all core functionality from ObjFeatureStore (compute, analytics, lineage data, quality, usage, export methods) and adds visual/diagram capabilities. Methods Diagram Generation Method Description --- --- generate lineage mermaid(feature code, package, feature) Ge"
  },
  {
    "path": "factory-core/extend-visual/ObjVisual.md",
    "title": "ObjVisual",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "ObjVisual Unified rendering module for diagrams and charts. Consolidates all diagram/chart-to-PNG rendering into a single utility class with static methods. Purpose Before ObjVisual, rendering logic was duplicated across several modules: - ObjTemplate.render mermaid contained the full Mermaid CLI rendering pipeline - ObjWorkflowVisual.visualise piper called processpiper.text2diagram.render directly - ObjDecisionSwitchVisual.generate sankey plotly built and rendered Plotly Sankey figures inline O"
  },
  {
    "path": "factory-core/extend-visual/ObjWorkflowVisual.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.core",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. ObjWorkflowVisual Overview The WorkflowVisual class is a specialized tool for generating visual representations of workflows. It extends the base Workflow class to provide methods that can render a workflow's structure and execution path into diagrams. This is crucial for understanding, debugging, and documenting complex business processes. The class supports two main visualization formats: 1. Me"
  },
  {
    "path": "factory-service/ObjServiceCommunication.md",
    "title": "ObjServiceCommunication",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceCommunication.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/ObjServiceStl.md",
    "title": "ObjServiceStl`",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore Automate. ObjServiceStl ObjServiceStl is a service for slicing 3D STL models into 2D SVG cross-sections suitable for laser cutti"
  },
  {
    "path": "factory-service/archive/ObjServiceAnalytics.md",
    "title": "ObjServiceAnalytics",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceAnalytics.py // : < (CYTHON END)"
  },
  {
    "path": "factory-service/archive/ObjServiceImportParser.md",
    "title": "ObjServiceImportParser",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceImportParser.py Updated : 2025-04-22 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/archive/ObjServicePublishJourney.md",
    "title": "ObjServicePublishJourney",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServicePublishJourney.py Updated : 2025-04-22 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/archive/ObjServiceQueryToImage.md",
    "title": "ObjServiceQueryToImage",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceQueryToImage.py Updated : 2025-04-22 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-core/ObjServiceAsana.md",
    "title": "Verify token and show connected user",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-04-20 // : < (CLASSES END) Overview ObjServiceAsana provides a reusable Asana REST API integration for the Axion platform. It wraps workspace, project, task, and section endpoints with authentication, rate-limit handling (429 retry), and error logging. A local def asana sync table tracks bidirectional mappings between Axion reco"
  },
  {
    "path": "factory-service/package-core/ObjServiceBitbucket.md",
    "title": "Verify credentials and show connected repository",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-04-20 // : < (CLASSES END) Overview ObjServiceBitbucket provides a reusable Bitbucket Cloud REST API v2.0 integration for the Axion platform. It wraps repository, pull-request, pipeline, commit, and issue endpoints with HTTP Basic authentication, automatic pagination, rate-limit handling (429 retry), and error logging. A shared "
  },
  {
    "path": "factory-service/package-core/ObjServiceBulksqldispatcher.md",
    "title": "ObjServiceBulksqldispatcher",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceBulksqldispatcher.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-core/ObjServiceCalculation.md",
    "title": "Imports",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. Imports The script begins by importing several libraries, including those for system functions (os, sys), handling sleep operations (time), parsing JSON (json), deep copying of objects (copy), YAML parser (yaml), SQL formatting (sqlparse), and two custom modules (ObjApi, ObjData). ObjServiceApi class: This class extends the ObjApi class found in the ObjApi module. I"
  },
  {
    "path": "factory-service/package-core/ObjServiceClassification.md",
    "title": "ObjServiceClassification",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "Reading classification rules and node hierarchies from a database. • Recursively processing these rules to classify input data. • Generating visual representations of these classification structures as Mermaid flowcharts and storing them back in the database."
  },
  {
    "path": "factory-service/package-core/ObjServiceClassificationPmmlRead.md",
    "title": "ObjServiceClassificationPmmlRead",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "! Classification (resource.images/package.base/classification bpmn icon.svg \"\") PMML (Predictive Model Markup Language) is an XML-based language used to represent data mining models, including classification models. It allows different applications to share and use these models, regardless of the vendor or the specific tool used to create them. Classification models, in particular, predict categorical values, assigning data points to specific classes. Classification Models: These models predict "
  },
  {
    "path": "factory-service/package-core/ObjServiceClassificationPmmlWrite.md",
    "title": "ObjServiceClassificationPmmlWrite",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceClassificationPmmlWrite.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-core/ObjServiceConfluence.md",
    "title": "Create API Token",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. Author : vheyn@technocore.co.za Create API Token 1. Log into Jira Software or Confluence and click your profile image and select Profile"
  },
  {
    "path": "factory-service/package-core/ObjServiceCurrency.md",
    "title": "Show tracked rates (ZAR base)",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjServiceCurrency fetches live exchange rates from the open.er-api.com free API. Rates are stored in data currency (latest per pair) and data currency history (time-series). Supports 166 currencies with ZAR as default base. No API key required. Rates update once daily from ECB data. API Sourc"
  },
  {
    "path": "factory-service/package-core/ObjServiceDataSlice.md",
    "title": "ObjServiceDataSlice",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceDataSlice.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-core/ObjServiceDecision.md",
    "title": "ObjServiceDecision",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceDecision.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-core/ObjServiceDecisionSwitch.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjServiceDecisionSwitch The ObjServiceDecisionSwitch is a service class "
  },
  {
    "path": "factory-service/package-core/ObjServiceDocEdit.md",
    "title": "ObjServiceDocEdit",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceDocEdit.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-core/ObjServiceEmailTicket.md",
    "title": "Process unclassified emails from bloom table",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-25 // : < (CLASSES END) Overview ObjServiceEmailTicket is a hook-based service that reads emails from bloom imap staging tables (populated by the ObjImap IMAP hook pipeline), uses an AI model to classify each message, and creates tickets for qualifying emails. Architecture Setup 1. Create a def imap hook row: 2. Configure con"
  },
  {
    "path": "factory-service/package-core/ObjServiceFilefeed.md",
    "title": "Scan default directory",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjServiceFilefeed scans folders for document files (.docx, .doc, .pdf), extracts text content using system tools, runs NLTK sentence tokenization and POS tagging, and stores results in bloom filefeed . Supports recursive folder scanning with first-level folder names used as client identifiers"
  },
  {
    "path": "factory-service/package-core/ObjServiceGoogle.md",
    "title": "Verify service account credentials via Drive API",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-04-20 // : < (CLASSES END) Overview ObjServiceGoogle provides a reusable Google Workspace API integration for the Axion platform. It wraps Gmail, Google Sheets, Google Drive, and Google Calendar through OAuth2 service account credentials with domain-wide delegation. Each API service client is lazy-loaded on first use and cached "
  },
  {
    "path": "factory-service/package-core/ObjServiceGuidName.md",
    "title": "ObjServiceGuidName",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceGuidName.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-core/ObjServiceInfobip.md",
    "title": "ObjServiceInfobip",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceInfobip.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-core/ObjServiceIntegration.md",
    "title": "ObjServiceIntegration",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "ObjServiceIntegration Module: factory.service/package.core Type: Abstract base class for external service integrations Overview ObjServiceIntegration provides a standard interface for syncing external service events to the Axion ticket system, RACI signoffs, and notifications. Each service subclass implements map to ticket event() to translate service-specific payloads into a standard action dict that sync to ticket() dispatches. Ticket Event Actions The map to ticket event() method must return "
  },
  {
    "path": "factory-service/package-core/ObjServiceMeta.md",
    "title": "ObjServiceMeta",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceMeta.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-core/ObjServiceMongoBackup.md",
    "title": "ObjServiceMongoBackup",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceMongoBackup.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-core/ObjServiceMonitor.md",
    "title": "Standard collection (default mode)",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjServiceMonitor is a workflow-facing service that delegates infrastructure monitoring to ObjMonitor.Monitor . It provides a standard process(context) entry point and typer CLI for running system data collection cycles. This service does not perform monitoring itself — it is a thin orchestrat"
  },
  {
    "path": "factory-service/package-core/ObjServiceNewDevelopmentDB.md",
    "title": "ObjServiceNewDevelopmentDB",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceNewDevelopmentDB.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-core/ObjServiceOSM.md",
    "title": "Forward geocode",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjServiceOSM provides geocoding via OpenStreetMap's Nominatim service (through the geopy library). Converts addresses to GPS coordinates and vice versa. No API key required. Rate limit: 1 request per second (enforced by Nominatim's usage policy). Methods address to geo(address) - tuple float,"
  },
  {
    "path": "factory-service/package-core/ObjServiceOnvif.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. The intellectual and technical concepts contained herein are proprietary to TechnoCore Automate and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore Automate. ObjServiceOnvif Overview ObjServiceOnvif captu"
  },
  {
    "path": "factory-service/package-core/ObjServicePalette.md",
    "title": "Parse all Bootstrap swatches to DB",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjServicePalette manages Bootstrap colour palettes and SCSS compilation. It parses swatch files for colour variables, stores them in def colour palette , and compiles SCSS templates into minified CSS using libsass. Colour resolution and palette read/write are delegated to ObjPalette in factor"
  },
  {
    "path": "factory-service/package-core/ObjServicePallette.md",
    "title": "Components of color",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "Components of color Because of the way our eyes work, a particular color can be defined using three components. We usually program colors in a computer by specifying their RGB values, which set the intensity of the red, green, and blue channels in a display. But for analyzing the perceptual attributes of a color, it’s better to think in terms of hue, saturation, and luminance channels. Hue is the component that distinguishes “different colors” in a non-technical sense. It’s property of color tha"
  },
  {
    "path": "factory-service/package-core/ObjServicePublishJourney.md",
    "title": "ObjServicePublishJourney",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServicePublishJourney.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-core/ObjServicePython.md",
    "title": "Execute a script in sandbox (validates path)",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjServicePython executes external Python scripts configured in def service . The script path is built from the service's ExternalFolder (or a default directory) plus PayloadTemplate (the script filename). Parameters are passed as safe command-line arguments via subprocess.run() . All scripts "
  },
  {
    "path": "factory-service/package-core/ObjServiceQuiz.md",
    "title": "ObjServiceQuiz",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceQuiz.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-core/ObjServiceReference.md",
    "title": "Axion Service: Reference Implementation",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "Axion Service: Reference Implementation 1. Overview This document provides a guide for developers on how to create new services within the Axion framework using the ObjServiceReference.py template. The reference service demonstrates the standard structure, methods, and attributes that all Axion services should implement to ensure consistency and compatibility with the workflow engine. 2. Purpose of a Standardized Service Structure Adhering to a standard structure ensures that: - Services are int"
  },
  {
    "path": "factory-service/package-core/ObjServiceRss.md",
    "title": "Fetch a specific feed",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjServiceRss fetches RSS/Atom feeds, parses items (title, link, description, publication date, enclosure images), and stores them in data rssitem . Multiple channels are configured in def rss and can be updated in bulk. How It Works 1. Fetch feed XML via requests.get() with User-Agent header "
  },
  {
    "path": "factory-service/package-core/ObjServiceSAFPS.md",
    "title": "Reference search (summary)",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjServiceSAFPS integrates with the Southern African Fraud Prevention Service (SAFPS) API to check ID numbers, contact numbers, email addresses, and bank account numbers against fraud incident databases. Supports both ReferenceSearch (summary) and DetailedObjectSearch (full incident data with "
  },
  {
    "path": "factory-service/package-core/ObjServiceScorecard.md",
    "title": "ObjServiceScorecard",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "ObjServiceScorecard (c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. Overview Credit-style scoring engine. Loads variable/attribute definitions from def scorecard , reads a primary context record, evaluates each variable against the bureau/simulation data, and returns an integer score. All credit lending institutions like banks have complex credit models that use bureau and past loan performances to determine a cr"
  },
  {
    "path": "factory-service/package-core/ObjServiceScreenshot.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjServiceScreenshot Overview The ObjServiceScreenshot service provides a"
  },
  {
    "path": "factory-service/package-core/ObjServiceSegmentation.md",
    "title": "ObjServiceSegmentation",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "ObjServiceSegmentation Status: Legacy service proxy Module: factory.service/package.core/ObjServiceSegmentation.py Service API for managing and computing data segments using the legacy def segment table. The compute segment() method now delegates evaluation to ObjDecisionSegmentation.evaluate() in factory.core , making this class a thin proxy for the core engine. New segments should use ObjDecisionSegmentation directly with the DECISIONSEGMENT workflow node type. Architecture compute segment (pr"
  },
  {
    "path": "factory-service/package-core/ObjServiceSlack.md",
    "title": "Verify bot token and show connected identity",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-04-20 // : < (CLASSES END) Overview ObjServiceSlack provides a reusable Slack Bot API integration for the Axion platform. It wraps the Slack Web API with Bearer token authentication, rate-limit handling (HTTP 429 with Retry-After), and Block Kit message formatting for rich notifications and interactive approvals. Unlike the basi"
  },
  {
    "path": "factory-service/package-core/ObjServiceTest.md",
    "title": "ObjServiceTest",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceTest.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-core/ObjServiceTodoist.md",
    "title": "ObjServiceTodoist",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "ObjServiceTodoist Todoist REST API v2 service for task and project management. Overview Wraps the Todoist REST API with Bearer token authentication, rate-limit retry (429 handling), and local sync tracking via def todoist sync . Follows the same patterns as ObjServiceAsana . Configuration In config.yaml : API Methods Projects Method Description -------- ------------- list projects() List all projects get project(project id) Get project detail create project(name, color) Create a project Tasks Me"
  },
  {
    "path": "factory-service/package-core/ObjServiceTruValidate.md",
    "title": "Run full FCRA verification",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjServiceTruValidate integrates with the TransUnion TruValidate API for identity verification — PEP (Politically Exposed Persons) screening, sanctions list checking, and watchlist monitoring. All configuration (solution set name, table names, FCRA categories, bloom table names) is read from O"
  },
  {
    "path": "factory-service/package-core/ObjServiceVirtual.md",
    "title": "ObjServiceVirtual",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore Automate - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjServiceVirtual Virtual sleep service with Faker personal data, used in the VIRTUAL SIM demonstration workflow. Class Diagram Class Overview - Module: factory.service/package.core/ObjServiceVirtual.py - Inherits from: ObjApi.ObjApi - Associated YAML: ObjServiceVirtual.yaml - Table: data simulation - Service code: VIRTUAL Behaviour run workflow direct(guid"
  },
  {
    "path": "factory-service/package-core/ObjServiceWaitmessage.md",
    "title": "ObjServiceWaitmessage",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceWaitmessage.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-core/ObjServiceWeather.md",
    "title": "Fetch weather for Cape Town International (default)",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjServiceWeather retrieves current weather observations from METAR (Meteorological Aerodrome Report) stations via the pymetar library. METAR is the international standard for weather reporting at airports and weather stations worldwide. This is the core weather service using aviation-grade da"
  },
  {
    "path": "factory-service/package-core/ObjServiceWhatsapp.md",
    "title": "ObjServiceWhatsapp",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceWhatsapp.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-core/ObjServiceWikipedia.md",
    "title": "Look up a subject",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjServiceWikipedia queries the Wikipedia API to fetch introductory text extracts for a given subject. Results are cached in the data wikipedia table to avoid redundant API calls. Used in workflows to enrich data with reference descriptions, definitions, or background context. No API key requi"
  },
  {
    "path": "factory-service/package-core/ObjServiceYoutube.md",
    "title": "Axion Service: YouTube Audio Downloader",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "Axion Service: YouTube Audio Downloader 1. Overview The ObjServiceYoutube is an Axion service designed to download the audio track from a given YouTube video URL, enrich it with metadata, and register it as a managed document within the Axion framework. It utilizes the yt-dlp library for reliable video information extraction and audio downloading, and the ObjDocument class for seamless integration with the Axion document management system. 2. Features - Audio Extraction : Downloads the best avai"
  },
  {
    "path": "factory-service/package-core/ObjServiceZeroBounce.md",
    "title": "Validate a single email",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjServiceZeroBounce validates email addresses via the ZeroBounce API. Returns deliverability status (valid, invalid, catch-all, abuse, etc.) and stores results using the bloom table data structure pattern for downstream workflow consumption. ZeroBounce API Endpoint Description ---------- ----"
  },
  {
    "path": "factory-service/package-decisionswitch/ObjServiceSurvey.md",
    "title": "ObjServiceSurvey",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSurvey.py Updated : 2024-02-17 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-farcaster/README.md",
    "title": "FARCASTER Tactical RPG Service",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "FARCASTER Tactical RPG Service Package Name: FARCASTER Module: farcaster Framework: Axion ObjService Location: factory.service/package.farcaster/ Overview FARCASTER is a turn-based tactical RPG inspired by XCOM, built as an Axion ObjService. Features include: - Grid-based movement with A pathfinding - Turn-based combat with action points - 4 character classes (Assault, Sniper, Medic, Engineer) - AI-controlled enemies - Permadeath mechanics - Campaign persistence API Endpoints All endpoints under"
  },
  {
    "path": "factory-service/package-fullhouse/MIGRATION_SUMMARY.md",
    "title": "Shopify GraphQL Migration - Work Completed Summary",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "Shopify GraphQL Migration - Work Completed Summary Date: February 7, 2026 Branch: feat/shopify Status: Phase 1 Complete - Ready for UAT Testing --- 🎯 Project Overview Successfully migrated Shopify integration from legacy REST API (2021-07) to modern GraphQL Admin API (2026-01). This provides a foundation for improved performance, reduced API calls, and future-proof integration with Shopify. ✅ Completed Work (75% of Migration) 1. Database Schema Migrations File: migration graphql 2026-01.sql - ✅ "
  },
  {
    "path": "factory-service/package-fullhouse/MIGRATION_TODO.md",
    "title": "Shopify GraphQL Migration - Remaining Work",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "Shopify GraphQL Migration - Remaining Work Completed ✅ 1. Database Schema - SQL migration file created 2. Authentication - Updated to use AccessToken 3. GraphQL Constants - All query/mutation templates added 4. GraphQL Helper Methods - Infrastructure methods added (refactored to standards) 5. DeleteProduct() - Migrated to GraphQL productDelete mutation 6. RetrieveSet() - Migrated to GraphQL product query with bloom product graphql() 7. BloomProductPrice() - Migrated to GraphQL productVariantUpda"
  },
  {
    "path": "factory-service/package-fullhouse/ObjServiceCurrency.md",
    "title": "ObjServiceCurrency",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceCurrency.py Updated : 2024-07-26 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-fullhouse/ObjServiceDoForms.md",
    "title": "ObjServiceDoForms",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceDoForms.py Updated : 2024-07-26 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-fullhouse/ObjServiceFHShopify.md",
    "title": "ObjServiceFHShopify",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "Author: vheyn@technocore.co.za Updated: 2026-04-16 --- ObjServiceFHShopify Shopify GraphQL Admin API integration for FullHouse retail. Manages product catalogue, promotions, pricing, collections, and variant management on the FullHouse Shopify store. API Version - Shopify GraphQL Admin API 2026-01 - Authentication: Access Token via X-Shopify-Access-Token header - Single endpoint: /admin/api/2026-01/graphql.json - Cost-based rate limiting (2000 points, 100/sec restore) CLI Commands Command Descri"
  },
  {
    "path": "factory-service/package-fullhouse/ObjServiceFHwebsite.md",
    "title": "ObjServiceFHwebsite",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "then go to https://admin.fullhousefurniture.co.za/products"
  },
  {
    "path": "factory-service/package-fullhouse/ObjServiceFilefeed.md",
    "title": "ObjServiceFilefeed",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceFilefeed.py Updated : 2025-04-22 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-fullhouse/ObjServiceImportParser.md",
    "title": "Run import for default service code",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjServiceImportParser is a FullHouse-specific CSV file import service. It reads parser configurations from def service parser , scans directories for matching files, extracts parameters from filenames, parses CSV rows, and bulk-inserts into dynamically created database tables. Uses a staging "
  },
  {
    "path": "factory-service/package-gekko/ObjServiceGoogleHome.md",
    "title": "ObjServiceGoogleHome",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "ObjServiceGoogleHome Google Home device integration for the Gekko package. Controls lights and plugs via the Google Home API and logs inbound device state change events from Google Cloud Pub/Sub to def google home events . Tables Table Purpose --- --- def google home devices Device registry — synced from Google Home graph def google home events Inbound event log from Pub/Sub Config (config.yaml → gekko.google home) Key Description --- --- client id Google OAuth 2.0 client ID client secret Google"
  },
  {
    "path": "factory-service/package-gekkoridge/ObjServiceEwelink.md",
    "title": "config.yaml",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-19 // : < (CLASSES END) Overview ObjServiceEwelink integrates with eWeLink / Sonoff smart home devices. It uses a dual control path: - Cloud API (CoolKit v2) for device listing, status polling, and power monitoring - LAN control (sonofflan/mDNS) for on/off/toggle commands directly on the local network The cloud API is used wi"
  },
  {
    "path": "factory-service/package-gekkoridge/ObjServiceFacebook.md",
    "title": "Scrape posts from a Facebook page",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjServiceFacebook scrapes public Facebook page/profile posts using the facebook scraper library. It downloads post text, timestamps, and images, then stores them in the data newsfeed table via the ObjNewsFeed base class. Dependencies - facebook scraper — optional; service degrades gracefully "
  },
  {
    "path": "factory-service/package-gekkoridge/ObjServiceLibreGlucose.md",
    "title": "ObjServiceLibreGlucose",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjServiceLibreGlucose integrates with the LibreLinkUp API to retrieve real-time and historical glucose data from FreeStyle Libre 2 continuous glucose monitors (CGM). Data is stored in the data glucose table for reporting, alerting, and workflow consumption. The module lives in factory.service"
  },
  {
    "path": "factory-service/package-gekkoridge/ObjServiceLoadshedding.md",
    "title": "ObjServiceLoadshedding",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjServiceLoadshedding integrates with the EskomSePush API 2.0 to retrieve national load shedding status, area-specific schedules and upcoming events, and area search. Designed for correlation with solar/battery data to predict grid availability and optimize energy usage. The module lives in f"
  },
  {
    "path": "factory-service/package-gekkoridge/ObjServiceNetwork.md",
    "title": "config.yaml  [network section]",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-04-19 // : < (CLASSES END) Overview ObjServiceNetwork polls the MikroTik RB5009 RouterOS 7 REST API ( http://10.0.10.254 ) to capture router health, per-interface traffic counters, DHCP leases, and internet connectivity. It also determines household presence by matching DHCP leases and the ARP table against known MACs and DHCP h"
  },
  {
    "path": "factory-service/package-gekkoridge/ObjServiceOpenWeather.md",
    "title": "Current weather conditions",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjServiceOpenWeather integrates with the OpenWeatherMap API to retrieve current weather conditions, 5-day forecasts, air quality data, and solar-relevant cloud cover predictions. The service stores time-series snapshots in data weather for correlation with solar production (cloud cover vs PV "
  },
  {
    "path": "factory-service/package-gekkoridge/ObjServiceSolarman.md",
    "title": "result[\"_solarman_result\"] == \"2 readings stored\"",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-16 // : < (CLASSES END) Overview ObjServiceSolarman integrates with the SolarMAN Open API (v1.1.6) to retrieve and store solar inverter and plant data from SolarMAN-connected installations. The service covers authentication, plant and device discovery, real-time and historical data retrieval, device control commands, alert mo"
  },
  {
    "path": "factory-service/package-gekkoridge/ObjServiceTile.md",
    "title": "ObjServiceTile",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "ObjServiceTile Tile Bluetooth tracker location polling service. Overview Polls the Tile cloud API via the pytile library to retrieve last-known locations for all Tile devices on the account. Stores a full history snapshot in data tile location every sync cycle. API Uses https://production.tile-api.com/api/v1 — the Tile production API. Life360 acquired Tile in 2022 and shut down the consumer app and tile.com website in January 2025, but the backend API remains operational for existing integration"
  },
  {
    "path": "factory-service/package-gekkoridge/ObjServiceTraccar.md",
    "title": "ObjServiceTraccar",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "ObjServiceTraccar Traccar GPS tracking platform integration. Overview Connects to a self-hosted Traccar server to poll device positions. Supports phones, tablets, and laptops. Stores position history with speed, altitude, battery, and address in data traccar position . Traccar Setup Docker Install Default login: admin / admin! Client Apps Platform App ---------- ----- Android Traccar Client (https://play.google.com/store/apps/details?id=org.traccar.client) iOS Traccar Client (https://apps.apple."
  },
  {
    "path": "factory-service/package-homechoice/BUREAU_ENHANCEMENTS.md",
    "title": "Bureau Framework - Recommended Enhancements",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "Bureau Framework - Recommended Enhancements This document outlines recommended enhancements to the Credit Bureau Routing Framework to improve reliability, performance, monitoring, and operational efficiency. Implemented Enhancements ✅ CLI Testing Tool (ObjBureauCLI.py) Comprehensive command-line interface for testing and validation. Commands : Features : - Real bureau API calls with test data - Automatic test data cleanup - Response time measurement - Raw JSON response viewing - Multi-bureau com"
  },
  {
    "path": "factory-service/package-homechoice/BUREAU_FRAMEWORK.md",
    "title": "Credit Bureau Routing Framework",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "Credit Bureau Routing Framework Overview The Credit Bureau Routing Framework provides a comprehensive, flexible system for integrating and managing multiple credit bureau providers in the Axion platform. It enables intelligent routing, load distribution, failover handling, and dynamic bureau selection without code changes. Version : Axion 8.x Package : factory.service/package.homechoice Branch : feat/hc bureau Table of Contents 1. Architecture ( architecture) 2. Core Components ( core-components"
  },
  {
    "path": "factory-service/package-homechoice/ObjSErviceHCExperian_ESW.md",
    "title": "ObjSErviceHCExperian_ESW",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "Patched for simulation mode"
  },
  {
    "path": "factory-service/package-homechoice/ObjServiceBureau.md",
    "title": "ObjServiceBureau",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "ObjServiceBureau Overview Base class framework for credit bureau service integrations in the Axion platform. Provides common infrastructure for connecting to external credit bureaus, managing API calls, implementing buffer strategies, and routing between multiple bureau providers. Purpose ObjServiceBureau establishes a consistent pattern for all bureau integrations, extracting common functionality including: - Remote connection configuration from def remoteconnections - Buffer management to prev"
  },
  {
    "path": "factory-service/package-homechoice/ObjServiceBureauRouter.md",
    "title": "ObjServiceBureauRouter",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "ObjServiceBureauRouter Overview Intelligent routing and strategy management system for credit bureau services. Dynamically selects bureau providers based on configurable strategies including date ranges, load distribution, failover, and dual bureau calls. Purpose The router provides centralized control over bureau selection without changing application code. Strategies can be adjusted in real-time through the def bureau strategy table to: - Distribute load across multiple bureau providers - Impl"
  },
  {
    "path": "factory-service/package-homechoice/ObjServiceGBG.md",
    "title": "ObjServiceGBG",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "ObjServiceGBG Overview GBG Identity Verification and Fraud Risk Management integration for HomeChoice. Provides identity checks, document verification, fraud scoring, and AML screening through GBG's API platform. Products Product Method Purpose --------- -------- --------- ID3global verify identity() Identity data verification against SA bureaux IDscan verify document() Document image verification (ID, passport) Instinct check fraud risk() ML fraud risk scoring (0-1000) Predator screen aml() PEP"
  },
  {
    "path": "factory-service/package-homechoice/ObjServiceHCExperian.md",
    "title": "ObjServiceHCExperian",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "The class primarily focuses on integrating with remote services utilizing SQL queries for retrieval and manipulation of response data. It includes support for resolving and buffering data effectively, along with SOAP-based service support for service communication. Patched for simulation"
  },
  {
    "path": "factory-service/package-homechoice/ObjServiceHCExperian_LES.md",
    "title": "ObjServiceHCExperian_LES",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "Patched for simulation."
  },
  {
    "path": "factory-service/package-homechoice/ObjServiceHCExporian_NAM.md",
    "title": "ObjServiceHCExporian_NAM",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "Patched for simulation"
  },
  {
    "path": "factory-service/package-homechoice/ObjServiceHCMyData.md",
    "title": "ObjServiceHCMyData",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "ObjServiceHCMyData Overview MyData credit bureau REST API integration for the Axion platform. Implements modern REST-based credit checking using the ObjServiceBureau framework. This is a reference implementation demonstrating how to create new bureau integrations using REST APIs. It serves as a template for adding additional bureau providers. Purpose Provides credit report data from MyData bureau via REST API, including: - Consumer identity verification - Credit history and scoring - Account inf"
  },
  {
    "path": "factory-service/package-homechoice/ObjServiceHCScore.md",
    "title": "ObjServiceHCScore",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceHCScore.py // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-homechoice/ObjServiceInovo.md",
    "title": "ObjServiceInovo",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "ObjServiceInovo Overview ObjServiceInovo.py integrates Axion with the Inovo Lead/BulkUpload endpoint. It supports two main operational paths: 1. Bulk send mode : pushes regular outbound records using SQL configured in def service.payloadsql . 2. Clear queue mode : pushes removecall commands staged in environment tables: - data api batch clear command uat - data api batch clear command prod Both modes post JSON payloads to Inovo and write batch outcomes to environment-specific log tables. The ser"
  },
  {
    "path": "factory-service/package-homechoice/ObjServiceXdsHome.md",
    "title": "ObjServiceXdsHome",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "Timing: Current real 0m29.592s user 0m12.244s sys 0m1.668s Judgement COUNT missing: check this guide: \"qqPxz6XjEYsyPNFC7UZr7n\" - enquirycount COUNT missing: Y - adversecount COUNT missing: Y - deceasedstatus COUNT missing Y - disputestatus missing: Assume PARAM2 = 9 digits of the cell number, if those digits found anywhere in the payload return 1, else 0 SMS CALL = final score TO be included, ID number that is returned to be included"
  },
  {
    "path": "factory-service/package-homechoice/PERSISTENT_RDG_CHANGES.md",
    "title": "Persistent RDG Implementation - Change Summary",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "Persistent RDG Implementation - Change Summary Overview Updated the Bureau Router to use persistent RDG (Random Distribution Group) assignment instead of random routing. This ensures that the same ID number always routes to the same bureau, providing consistent user experience and stable load distribution. Key Change Before : Each bureau request generated a new random value (0-100), causing the same ID to potentially route to different bureaus on each call. After : Each ID receives a permanent R"
  },
  {
    "path": "factory-service/package-homechoice/resource-experian/credentials.md",
    "title": "UAT credentials for NSV2.",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "UAT credentials for NSV2. username : 2566-technocore UAT key : 6i1hVZf5K="
  },
  {
    "path": "factory-service/package-homechoice/resource-fhscore/fhscore.md",
    "title": "Inputs",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "Inputs Field Type Description ----- ---- ---------- CtryNo int Country number – used to determine the subscriber number and password to use for the explicit V2 call to Experian IDNumber string Customer’s ID number – used for explicit V2 call Surname string Customer’s surname – used for explicit V2 call FirstName string Customer’s first name – used for explicit V2 call Gender string Customer’s gender – used for explicit V2 call PassportFlag bool Indicates whether the customer has an RSA ID number"
  },
  {
    "path": "factory-service/package-sunswept/ObjServiceCalendarConstraint.md",
    "title": "ObjServiceCalendarConstraint",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceCalendarConstraint.py Updated : 2025-04-22 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-sunswept/ObjServiceClientEventPlan.md",
    "title": "ObjServiceClientEventPlan",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceClientEventPlan.py Updated : 2025-04-22 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-sunswept/ObjServiceHami.md",
    "title": "ObjServiceHami",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceHami.py Updated : 2025-04-22 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-sunswept/ObjServiceMaestroOutboundCall.md",
    "title": "ObjServiceMaestroOutboundCall",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceMaestroOutboundCall.py Updated : 2025-04-22 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-sunswept/ObjServiceMaestroSync.md",
    "title": "ObjServiceMaestroSync",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceMaestroSync.py Updated : 2025-04-22 // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-switchx/ObjServiceEtl.md",
    "title": "ObjServiceEtl",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "Covert the code to pep8 standards in terms of spacing and tabs. autopep8 -i ObjServiceEtl.py XML ETL Fetch Batch Please note: Batch query not configurable, hard coded sql Each row in batch processed record at a time app client submission no important guid Schemas: - switchx data:replicated data - switchxdw:reporting schema - switchxdw dev:supporting data Context Source: XML of Application Client Submissions Source-schema:switchx data Source-tables: - switchx data.application client submission --"
  },
  {
    "path": "factory-service/package-switchx/ObjServiceGoogleOcr.md",
    "title": "ObjServiceGoogleOcr",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. Fields textAnchor object (TextAnchor) Optional. Provenance of the entity. Text anchor indexing into the Document.text. type string Required. Entity type from a schema e.g. Address. mentionText string Optional. Text value of the entity e.g. 1600 Amphitheatre Pkwy. mentionId string Optional. Deprecated. Use id field instead. confidence number Optional. Confidence of d"
  },
  {
    "path": "factory-service/package-switchx/ObjServiceLoom.md",
    "title": "ObjServiceLoom",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjServiceLoom.py // : < (CYTHON END)"
  },
  {
    "path": "factory-service/package-tlc/ObjServiceCmtelecom.md",
    "title": "ObjServiceCmtelecom",
    "factory": "factory.service",
    "type": "markdown",
    "tags": [],
    "body": ""
  },
  {
    "path": "factory-deploy/ObjAudit.md",
    "title": "ObjAudit",
    "factory": "factory.deploy",
    "type": "markdown",
    "tags": [],
    "body": "ObjAudit Security audit module powered by Trivy. Scans dependencies, configuration files, source code, and container images for vulnerabilities and misconfigurations. Audit Modes Mode What it scans Trivy command ------ --------------- --------------- deps Python dependencies (requirements.txt) for CVEs trivy fs --scanners vuln . config Dockerfiles, Helm charts for misconfigurations trivy config resource.docker/ secrets Source code for leaked credentials trivy fs --scanners secret . image Built D"
  },
  {
    "path": "factory-deploy/ObjBuild.md",
    "title": "ObjBuild",
    "factory": "factory.deploy",
    "type": "markdown",
    "tags": [],
    "body": "ObjBuild Build pipeline orchestrator for Axion k8s deployment. Module : factory.deploy/ObjBuild.py Extensions : factory.deploy/extend.build/ Purpose Single entry point for the full build pipeline: 1. Validate — config.yaml configured for target package, PEM keys exist 2. Compile — Cython-compile all factory modules via ObjCompile 3. Image — build Docker image via ObjBuildDocker 4. Push — push to configured registry 5. Deploy — install/upgrade Helm chart via ObjBuildHelm CLI Build Tracking Every "
  },
  {
    "path": "factory-deploy/ObjConfig.md",
    "title": "ObjConfig",
    "factory": "factory.deploy",
    "type": "markdown",
    "tags": [],
    "body": "📌 (c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CYTHON START) ⚙️ Cython compile cythonize -3 -a -i ObjConfig.py Updated : 2024-07-20 // : < (CYTHON END)"
  },
  {
    "path": "factory-deploy/ObjDataConfig.md",
    "title": "ObjDataConfig",
    "factory": "factory.deploy",
    "type": "markdown",
    "tags": [],
    "body": "📌 (c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. 📌 File purposes: 1. python3 ObjDataConfig.py EXPORTCORE To be used to update the coredb.axion logic - for example if changes have been made to sys , def , internet , meta , list , stage , track and sysdate tables NOTE the server ashpool.co.za is hardcoded as the only legitimate source for this. The steps are: export core tables to yaml(): get the structure for all"
  },
  {
    "path": "factory-deploy/ObjEnvironment.md",
    "title": "ObjEnvironment",
    "factory": "factory.deploy",
    "type": "markdown",
    "tags": [],
    "body": "ObjEnvironment Environment infrastructure orchestrator. Module : factory.deploy/ObjEnvironment.py Extensions : factory.deploy/extend.environment/ Purpose Manages non-build, non-runtime infrastructure: - DNS — Cloudflare record creation via ObjDNSManager - Secrets — config.yaml → Infisical migration - PEM keys — encryption key upload to Infisical - Snapshots — data table versioning (ObjSnapshot) - Schema export — DB table definitions to YAML (ObjDataConfig) CLI Extensions File Purpose ------ ----"
  },
  {
    "path": "factory-deploy/ObjSecretMigrate.md",
    "title": "ObjSecretMigrate",
    "factory": "factory.deploy",
    "type": "markdown",
    "tags": [],
    "body": "ObjSecretMigrate Migration tool for moving secrets from config.yaml into Infisical. Overview ObjSecretMigrate reads credential sections from config.yaml and pushes them to a running Infisical instance. It provides seven commands: migrate, verify, list, push-keys, delete, promote, and cache-seed. Prerequisites - Infisical running (see resource.bin/start infisical.sh ) - Machine Identity created in Infisical with Universal Auth - base.infisical.enabled: true in config.yaml - client id and client s"
  },
  {
    "path": "factory-deploy/ObjSubstrate.md",
    "title": "ObjSubstrate",
    "factory": "factory.deploy",
    "type": "markdown",
    "tags": [],
    "body": "📌 ObjSubstrate Base Class for Infrastructure and Service Management ObjSubstrate is an abstract base class that defines a standardized interface for interacting with various types of infrastructure \"substrates.\" It is the foundation for creating controllers that manage virtual machines, containers, and even supervised processes in a unified way. The primary goal of ObjSubstrate is to provide a consistent API for common lifecycle operations, regardless of the underlying technology (e.g., Docker, "
  },
  {
    "path": "factory-deploy/ObjSupervisor.md",
    "title": "ObjSupervisor",
    "factory": "factory.deploy",
    "type": "markdown",
    "tags": [],
    "body": "📌 ObjSupervisor Supervisor Process Management Substrate ObjSupervisor is a concrete implementation of the ObjSubstrate base class that treats processes managed by supervisord as instances. It uses the standard xmlrpc.client library to communicate with the XML-RPC API of a running supervisord instance. This class abstracts Supervisor's process management into the unified ObjSubstrate interface, allowing you to start, stop, and monitor supervised processes in the same way you would manage VMs or c"
  },
  {
    "path": "factory-deploy/ObjTest.md",
    "title": "ObjTest — Test Runner",
    "factory": "factory.deploy",
    "type": "markdown",
    "tags": [],
    "body": "ObjTest — Test Runner Scan and run pytest files individually with parallel execution, retries, TUI dashboard, and previous-run comparison. Usage Commands run Discover and execute test files. Each file runs in an isolated subprocess ( python -m pytest <file ). Option Default Description -------- --------- ------------- factory \"\" Filter by factory (e.g. factory.core ) -v off Verbose pytest output -s off Stop on first failure (forces sequential) -l off List files without running -t 300 Subprocess "
  },
  {
    "path": "factory-deploy/ObjWiki.md",
    "title": "ObjWiki",
    "factory": "factory.deploy",
    "type": "markdown",
    "tags": [],
    "body": "ObjWiki Wiki Documentation Compiler for Wiki.js ObjWiki scans the Axion codebase and compiles all .md documentation files from factory modules and resource.notes/ into a structured resource.wiki/ directory ready for serving with Wiki.js. Core Functionality 1. Documentation Scanning — Recursively discovers all .md files across all factory. directories and resource.notes/ 2. Front Matter Injection — Adds Wiki.js-compatible YAML front matter to pages that lack it, extracting titles from H1 headings"
  },
  {
    "path": "factory-deploy/README.md",
    "title": "factory.deploy",
    "factory": "factory.deploy",
    "type": "markdown",
    "tags": [],
    "body": "📌 factory.deploy Deployment, Compilation, and Infrastructure Management Modules The factory.deploy package provides a comprehensive set of tools for managing the build, deployment, and infrastructure lifecycle of the Axion system. It includes compilation tools, packaging utilities, configuration management, and unified interfaces for various infrastructure substrates. 📋 Module Overview 🏗️ Build & Compilation ⚙️ ObjCompile.py Python and Cython compilation module for optimizing code performance. F"
  },
  {
    "path": "factory-deploy/extend-build/ObjCompile.md",
    "title": "ObjCompile",
    "factory": "factory.deploy",
    "type": "markdown",
    "tags": [],
    "body": "⚙️ ObjCompile Python to Cython Compilation Engine ObjCompile is a powerful and integral part of the project's build pipeline. Its primary responsibility is to transpile standard Python ( .py ) modules into compiled C extensions ( .so on Linux, .pyd on Windows) using Cython. This process provides significant performance improvements and helps protect the source code by distributing compiled binaries instead of raw Python files. The script is designed to be highly configurable, handling different "
  },
  {
    "path": "factory-deploy/extend-substrate/ObjDocker.md",
    "title": "ObjDocker",
    "factory": "factory.deploy",
    "type": "markdown",
    "tags": [],
    "body": "ObjDocker Docker image build, container lifecycle, and Harbor registry substrate. ObjDocker is an ObjSubstrate implementation for Docker. It covers: 1. Image builds — docker build driven by <package .deployment.image. in config.yaml , using a static Dockerfile and --build-arg for all variance. 2. Container lifecycle — list / get / start / stop / delete / exec against the local Docker daemon. 3. Harbor registry — full Harbor v2 API integration (health, repos, artifacts, scan results, garbage coll"
  },
  {
    "path": "factory-deploy/extend-substrate/ObjK3s.md",
    "title": "ObjK3s",
    "factory": "factory.deploy",
    "type": "markdown",
    "tags": [],
    "body": "ObjK3s K3s/Kubernetes substrate — manages pods, deployments, and services via kubectl. Module : factory.deploy/extend.substrate/ObjK3s.py Purpose Mirrors the ObjDocker substrate interface for Kubernetes. Wraps kubectl commands with consistent error handling and structured output. Substrate Interface Method K8s Action -------- ----------- connect() kubectl cluster-info list instances() kubectl get pods -o json get instance(name) kubectl get pod <name -o json create instance(config) kubectl apply "
  },
  {
    "path": "factory-deploy/extend-substrate/ObjLibvirt.md",
    "title": "ObjLibvirt",
    "factory": "factory.deploy",
    "type": "markdown",
    "tags": [],
    "body": "📌 ObjLibvirt Libvirt/KVM Management Substrate ObjLibvirt is a concrete implementation of the ObjSubstrate base class that provides an interface for managing virtual machines (referred to as \"domains\") through the Libvirt API. It is primarily intended for controlling KVM hypervisors but can be used with any hypervisor supported by Libvirt. This class allows you to list, create, start, stop, and delete virtual machines using the unified ObjSubstrate interface. ⚙️ Configuration ObjLibvirt can be co"
  },
  {
    "path": "factory-deploy/extend-substrate/ObjLxc.md",
    "title": "ObjLxc",
    "factory": "factory.deploy",
    "type": "markdown",
    "tags": [],
    "body": "📌 ObjLxc LXD Container Management Substrate ObjLxc is a concrete implementation of the ObjSubstrate base class, designed to interact with and manage LXD (Linux Containers). It uses the pylxd library to communicate with the local LXD daemon. This class allows you to perform standard lifecycle operations on LXD containers, such as creating, starting, stopping, and deleting them, all through the unified ObjSubstrate interface. ⚙️ Configuration ObjLxc connects to the local LXD daemon by default and "
  },
  {
    "path": "factory-deploy/extend-substrate/ObjProxmox.md",
    "title": "ObjProxmox",
    "factory": "factory.deploy",
    "type": "markdown",
    "tags": [],
    "body": "📌 ObjProxmox Proxmox Virtual Environment Management Substrate ObjProxmox is a concrete implementation of the ObjSubstrate base class that provides an interface for managing resources in a Proxmox Virtual Environment (PVE). It uses the proxmoxer library to communicate with the Proxmox API. This class allows you to list, start, and stop both QEMU virtual machines and LXC containers running on a Proxmox cluster, all through the unified ObjSubstrate interface. ⚙️ Configuration ObjProxmox requires co"
  },
  {
    "path": "factory-deploy/extend-tui/ObjCompileTUI.md",
    "title": "ObjCompileTUI",
    "factory": "factory.deploy",
    "type": "markdown",
    "tags": [],
    "body": "ObjCompileTUI Real-time terminal dashboard for monitoring parallel Cython compilation across all factory sets. Overview CompileTUI is a Rich-based TUI dashboard launched by ObjCompile.compile build() when the all CLI command is used. It displays per-process compilation progress, overall statistics, and a live log panel. Layout Integration with ObjCompile compile build() creates a multiprocessing.Manager dict and passes it to both CompileTUI.attach progress() and compile worker . Workers update t"
  },
  {
    "path": "factory-report/ObJReportJsonraw.md",
    "title": "ObJReportJsonraw",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObJReportJsonraw Renders query results as a numbered JSON object where each row is a keyed dictionary of field-name/value pairs. Report Type JSONRAW — set as ReportType in def report . Render Returns a JSON string (not HTML). Each row is stored under an integer key starting at 1; each column within the row is stored under its lowercased field name."
  },
  {
    "path": "factory-report/ObjReportAlert.md",
    "title": "ObjReportAlert",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportAlert Renders a list of coloured alert banners with a title, author, relative timestamp, and body text. Report Type ALERT — set as ReportType in def report . Render Expects the query to return columns in order: title (col 0), body text (col 1), author (col 2), timestamp (col 3), background colour hex (col 4), extra HTML (col 5). Returns an HTML string of stacked div.alert elements. Notes Loads timeago.js (CDN) and Bootstrap 4.5.2 CSS (CDN). Timestamps are rendered as human-readable rela"
  },
  {
    "path": "factory-report/ObjReportBddtesttree.md",
    "title": "ObjReportBddtesttree",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjReportBddtesttree.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-report/ObjReportBigButton.md",
    "title": "ObjReportBigButton",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportBigButton Renders large full-width navigation buttons with an icon, title, subtitle, optional badge counter, and a conditional visibility check. Report Type BIGBUTTON — set as ReportType in def report . Render Expects the query to return columns: Title (col 0), Controller (col 1), Action (col 2), BadgeReport (col 3), Glyph (col 4), Colour (col 5), ShowReport (col 6). The title may contain a -separated subtitle. If ShowReport evaluates to empty or \"0\" , the button is suppressed. The badg"
  },
  {
    "path": "factory-report/ObjReportBigTable.md",
    "title": "ObjReportBigTable",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportBigTable Renders a responsive Bootstrap-striped table showing up to the first five columns of a query result, collapsing any remaining middle columns into an ellipsis placeholder. Report Type BIGTABLE — set as ReportType in def report . Render Column headers are translated via process text ( $fieldname$ token lookup) and title-cased. Columns beyond index 4 (except the last column) are represented by a single ellipsis column. Returns an HTML string with a div.table-responsive wrapper."
  },
  {
    "path": "factory-report/ObjReportBigtext.md",
    "title": "ObjReportBigtext",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportBigtext Renders the first column of query results as large auto-scaling text inside a fixed-height container using the jQuery TextFill plugin. Report Type BIGTEXT — set as ReportType in def report . Render Multiple rows are joined with commas. The container height defaults to 250 px if self. Height is unset or zero. Width is controlled by self. Width . Notes Requires jquery.textfill.js . Font size is computed automatically by the plugin to fill the container."
  },
  {
    "path": "factory-report/ObjReportBootstrapCard.md",
    "title": "ObjReportBootstrapCard",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportBootstrapCard Renders a single Bootstrap panel card with a coloured header derived from the active colour palette and body content from the first row of the query. Report Type BOOTSTRAPCARD — set as ReportType in def report . Render The panel heading colour is read from def colour palette unless self. Options supplies an override colour directly. The header title is taken from the last field name in the query. The body is self.data list 0 0 processed through process text . Options Optio"
  },
  {
    "path": "factory-report/ObjReportBtn_href.md",
    "title": "ObjReportBtn_href",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportBtn href Renders a small anchor button that links to an internal report URL, with optional sub-report pre-rendering and FontAwesome icon. Report Type BTN HREF — set as ReportType in def report . Render Param1 encodes the target report code and up to three additional parameters separated by ^ (e.g. reportcode^p1^p2^p3 ). Each row from the query is first rendered as a sub-report. The button's CSS class comes from self. Reportclass (defaults to btn-success btn-sm ). The icon defaults to fa"
  },
  {
    "path": "factory-report/ObjReportBtn_href2.md",
    "title": "ObjReportBtn_href2",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportBtn href2 Renders a small anchor button that links to an arbitrary URL, with optional sub-report pre-rendering and FontAwesome icon. Report Type BTN HREF2 — set as ReportType in def report . Render Param1 encodes the full target URL and up to three additional parameters separated by ^ . The button's CSS class comes from self. Reportclass (defaults to btn-primary btn-sm ). The icon defaults to fa-eye unless self. Glyph is set. Unlike ObjReportBtn href , the URL is used as-is rather than "
  },
  {
    "path": "factory-report/ObjReportBtn_modal.md",
    "title": "ObjReportBtn_modal",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportBtn modal Renders a button that opens a form in a modal dialog via the formmodal() JavaScript function. Report Type BTN MODAL — set as ReportType in def report . Render Param1 encodes the form code and up to four additional parameters separated by ^ . Button colour is determined by the third parameter: ON = danger (red), OFF = success (green), MID = warning (yellow), any other value = primary (blue), none = success (green). Icon is chosen from self.Parent. Actionglyph or self.Parent. Di"
  },
  {
    "path": "factory-report/ObjReportBtn_noact.md",
    "title": "ObjReportBtn_noact",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportBtn noact Renders a visually styled anchor button that links to (no action), used as a placeholder or display-only button. Report Type BTN NOACT — set as ReportType in def report . Render Sub-reports from each query row are rendered before the button. The button's CSS class comes from self. Reportclass (defaults to btn-success btn-sm ). The icon defaults to fa-eye unless self. Glyph is set. The href is always , making this a non-navigating display element."
  },
  {
    "path": "factory-report/ObjReportButton.md",
    "title": "ObjReportButton",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportButton Renders a list of Bootstrap link buttons for reports referenced by type and code in the query. Report Type BUTTON — set as ReportType in def report . Render Each query row supplies a type (col 0) and a code (col 1). When the type is report or rep , the report's title, glyph, and colour are looked up from def report and a full-width Bootstrap anchor button is rendered linking to /report/rep=<code ."
  },
  {
    "path": "factory-report/ObjReportC3D3.md",
    "title": "ObjReportC3D3",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportC3D3 Renders a C3/D3 bar chart from query data, with the first column as category labels and subsequent columns as data series. Report Type C3D3 — set as ReportType in def report . Render The first field is used as the x-axis category; all remaining fields become named data series. Labels are drawn on each bar. The chart polls the DOM every 100 ms until its container is available before initialising. Notes Requires c3d3charts/c3.min.js , c3d3charts/d3.v5.min.js , and c3.css . These must"
  },
  {
    "path": "factory-report/ObjReportCalendar.md",
    "title": "ObjReportCalendar",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportCalendar Renders an interactive FullCalendar widget that loads events via RPC, supports drag-to-resize, and opens a form on event click. Report Type CALENDAR — set as ReportType in def report . Render Param1 is passed as the user/filter parameter to event RPC calls. The query must return a single row with columns: initial date, slot min time, slot max time. Options Options read from self. Options JSON. Key Effect ----- -------- (plain string) FullCalendar initialView name (e.g. timeGrid"
  },
  {
    "path": "factory-report/ObjReportCard.md",
    "title": "ObjReportCard",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportCard Renders a single styled card widget with a title, description, icon, link, and up to five action icon slots. Report Type CARD — set as ReportType in def report . Render The query must return at least one row. Column mapping: Col Field Default ----- ------- --------- 0 CardTitle required 1 Shape ( SQUARE or RIGHTRECTANGAL ) SQUARE 2 Description text — 3 Link spec ( href:url , hrefnew:url , or onclick:fn ) — 4 Icon slots (up to 5, ^ -separated {...} tokens) — 5 CSS colour class or he"
  },
  {
    "path": "factory-report/ObjReportCardrow.md",
    "title": "ObjReportCardrow",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportCardrow Renders a responsive grid of cards (up to four per row) by composing sub-reports, with an optional \"Add\" plus-card appended at the end. Report Type CARDROW — set as ReportType in def report . Render Each query row supplies a card identifier (col 0) and a sub-report name (col 1). Cards with identifier SPACE are rendered as empty spacers. Cards are laid out in rows of four using Bootstrap col-sm-3 columns. Options Options read from self. Options JSON. Key Effect ----- -------- (co"
  },
  {
    "path": "factory-report/ObjReportChat.md",
    "title": "ObjReportChat",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportChat Renders a live two-way chat widget backed by the Axion conversation webhook system, supporting text and image messages with auto-refresh. Report Type CHAT — set as ReportType in def report . Render The query must return a single row with columns: conversation id (col 0), client id (col 1). Messages from the current client appear on the right; others appear on the left with avatars. New messages are polled every 10 seconds via RPC. Methods RpcConversation(data) Fetches new messages "
  },
  {
    "path": "factory-report/ObjReportChathistory.md",
    "title": "ObjReportChathistory",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportChathistory Renders a read-only chat history view styled as an AdminLTE direct-chat box, showing messages stored in bloom chatbot chat . Report Type CHATHISTORY — set as ReportType in def report . Render The query should return rows with columns: Sender (col 0), Channel (col 1), SendTime (col 2), Message (col 3). The first sender encountered is displayed on the left; all others on the right. Axion/TechnoCore sender names display the powered logo instead of an avatar. Widget colour defau"
  },
  {
    "path": "factory-report/ObjReportCommand.md",
    "title": "ObjReportCommand",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportCommand Renders the standard output of a shell command (taken from the first row of the query) inside a styled <pre block. Report Type COMMAND — set as ReportType in def report . Render The query must return at least one row; the first column of the first row is treated as the shell command string to execute. Output is wrapped in a div.box with a <pre element. Notes Uses self.system run() to execute the command. Exercise caution — the command string comes directly from the database quer"
  },
  {
    "path": "factory-report/ObjReportCommandvalue.md",
    "title": "ObjReportCommandvalue",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportCommandvalue Renders the raw standard output of a shell command as plain text with no HTML wrapper. Report Type COMMANDVALUE — set as ReportType in def report . Render The query must return at least one row; the first column of the first row is the shell command to execute. Unlike ObjReportCommand , the output is returned as a plain string with no surrounding HTML. Notes Uses self.system run() to execute the command."
  },
  {
    "path": "factory-report/ObjReportConversation.md",
    "title": "ObjReportConversation",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportConversation Interactive web conversation report that renders a live chat UI in the browser. Purpose ObjReportConversation embeds a bot-driven conversation directly in an Axion web page. It uses RemoteProcedureCall() to stream new messages and route user input through the WEB conversation engine ( ObjConversationWeb ). Messages are persisted in data web conversation and are never fetched via an external webhook — the report reads and writes the database directly through ConversationBrok"
  },
  {
    "path": "factory-report/ObjReportDashChecklist.md",
    "title": "ObjReportDashChecklist",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDashChecklist Renders a live checklist of calculations from def calculations , polling every 10 seconds and displaying pass/fail/error icons with a progress bar. Report Type DASHCHECKLIST — set as ReportType in def report . Render The query returns rows with columns: ComputationGroup (col 0), PatchGuid (col 1). For each group, the active calculations from def calculations are fetched. Each calculation's SQL is run; result 1 = pass (green tick), 0 = pending (spinner), anything else = err"
  },
  {
    "path": "factory-report/ObjReportDashList.md",
    "title": "ObjReportDashList",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDashList Renders a row of AdminLTE small-box dashboard tiles, one per query row, showing the first column value as a large heading and subsequent columns as labelled sub-items. Report Type DASHLIST — set as ReportType in def report . Render For each row, all fields are rendered inside div.small-box.bg-aqua . The first field value is shown as an <h3 ; remaining fields are shown as <p elements. Field names that do not start with are displayed as labels."
  },
  {
    "path": "factory-report/ObjReportDashProgress.md",
    "title": "ObjReportDashProgress",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDashProgress Renders AdminLTE info-box tiles with a progress bar and volume indicator that auto-refresh every 15 seconds, playing an audio alert when the volume increases. Report Type DASHPROGRESS — set as ReportType in def report . Render The query should return columns: description (col 0), volume (col 1), unused (col 2), progress percentage (col 3), progress description (col 4), icon class (col 5), box colour class (col 6). An AJAX timer fires every 15 seconds to update each tile's v"
  },
  {
    "path": "factory-report/ObjReportDashvalue.md",
    "title": "ObjReportDashvalue",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDashvalue Renders AdminLTE small-box tiles displaying a numeric value, a label, and an icon, one tile per query row. Report Type DASHVALUE — set as ReportType in def report . Render Each query row must supply: value (col 0), title label (col 1), icon class (col 2). The tile uses the bg-aqua colour class."
  },
  {
    "path": "factory-report/ObjReportData.md",
    "title": "ObjReportData",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportData Renders a full-featured jQuery DataTable with sortable columns, pagination, and export buttons (copy, CSV, Excel, PDF, print). Report Type DATA — set as ReportType in def report . Render Column headers are resolved via process text ( $fieldname$ token) and title-cased. Field names containing are split; the part after is appended to the header as a secondary label. All cell values are passed through process text . Options Options read from self. Options JSON. Key Effect ----- ------"
  },
  {
    "path": "factory-report/ObjReportDocument.md",
    "title": "ObjReportDocument",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDocument Renders a detailed API documentation timeline for all documents associated with a product, including metadata, inbound creation parameters, webhook integration, and field specifications. Report Type DOCUMENT — set as ReportType in def report . Render The query must return a single row with the product code in col 0. For each document linked to the product via def document product , the report renders a Bootstrap timeline entry containing: document type and metadata, inbound par"
  },
  {
    "path": "factory-report/ObjReportEventLine.md",
    "title": "ObjReportEventLine",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEventLine Renders a Chart.js line graph supporting up to two data series, with responsive canvas sizing and an optional Y-axis maximum. Report Type EVENTLINE — set as ReportType in def report . Render The query must return rows with columns: label (col 0), series 1 value (col 1), series 2 value (col 2, optional). Series colours are resolved from $theme-primary$ and $theme-secondary$ configuration tokens. An optional Maxval attribute caps the Y-axis. Notes Requires chart.min.js . The can"
  },
  {
    "path": "factory-report/ObjReportFormAudit.md",
    "title": "ObjReportFormAudit",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportFormAudit Renders a historical audit table of form submissions by querying bloom form $param2$ for a specific record key, showing all selected fields across submissions ordered by creation time. Report Type FORMAUDIT — set as ReportType in def report . Render The query rows supply the field names to display. Param1 is the record key value, Param2 is the form table suffix (table becomes bloom form <Param2 ), and Param3 is the key column name. The audit table always includes sys CreateTim"
  },
  {
    "path": "factory-report/ObjReportGitflow.md",
    "title": "ObjReportGitflow",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportGitflow Renders a Bootstrap timeline list of items, each showing a description and notes text, intended for displaying git flow or sequential process steps. Report Type GITFLOW — set as ReportType in def report . Render The query must return rows with columns: description (col 0), notes (col 1). Each row becomes a timeline entry with a blue badge icon. Both fields are passed through process text ."
  },
  {
    "path": "factory-report/ObjReportGrid.md",
    "title": "ObjReportGrid",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportGrid Renders a horizontal grid of sub-reports, dividing the available width equally among the reports listed in the query. Report Type GRID — set as ReportType in def report . Render Each query row supplies a sub-report name in col 0. Each sub-report is called with Param1 and proportional width/height derived from self. Width and self. Height . The report title ( self. Title ) is displayed centred below the grid."
  },
  {
    "path": "factory-report/ObjReportHookRecord.md",
    "title": "ObjReportHookRecord",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportHookRecord Renders a paginated, printable record view of a webhook payload for a specific data record, resolving nested array/set structures and supporting multi-page output with header and footer sections. Report Type HOOKRECORD — set as ReportType in def report . Render The query must return rows with columns: WebhookCode (col 0), record GUID (col 1). For each row, the webhook's parameter structure is decoded recursively and rendered as a hierarchical table. Page breaks are inserted a"
  },
  {
    "path": "factory-report/ObjReportHookview.md",
    "title": "ObjReportHookview",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportHookview Renders the prepared outbound call structure of a webhook as raw text, showing what payload would be sent to the endpoint. Report Type HOOKVIEW — set as ReportType in def report . Render Param1 is the webhook code (optionally followed by ^ and additional parameters; only the first part is used). The report uses ObjHook to read the webhook definition, call prep data() , and categorise the outbound payload. The result is wrapped in <xmp tags for literal display. An error message "
  },
  {
    "path": "factory-report/ObjReportIcon.md",
    "title": "ObjReportIcon",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportIcon Renders a set of conditional FontAwesome icons by evaluating a SQL expression per row; the icon is shown only when the expression returns 1 . Report Type ICON — set as ReportType in def report . Render Each query row supplies: SQL expression (col 0), label text (col 1), icon class (col 2). The SQL expression is executed; result 1 shows the icon and label, 0 renders nothing, any other result is also suppressed."
  },
  {
    "path": "factory-report/ObjReportIform.md",
    "title": "ObjReportIform",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportIform Renders a hidden HTML form that auto-submits via JavaScript to POST a value to a remote URL, used to pass a customer identifier to an external system. Report Type IFORM — set as ReportType in def report . Render The query must return a single row with columns: remote URL (col 0), query parameters to append (col 1), hidden field variable name (col 2), hidden field value (col 3). The form is submitted immediately on page load via $(' formId').submit() . If the URL does not start wit"
  },
  {
    "path": "factory-report/ObjReportIframe.md",
    "title": "ObjReportIframe",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportIframe Renders an external URL inside a full-width iframe, optionally with a header title and a link button to an internal controller action. Report Type IFRAME — set as ReportType in def report . Render Each query row supplies: URL (col 0), query params to append (col 1), title (col 2), button label (col 3), controller path (col 4), action (col 5). If the URL does not start with htt , https:// is prepended. Report notes from self. Reportnotes are rendered above the iframe header if pre"
  },
  {
    "path": "factory-report/ObjReportIframeform.md",
    "title": "ObjReportIframeform",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportIframeform Renders an iframe that is populated by auto-submitting a hidden POST form, passing a CustomerIndentifier value to the remote URL. Report Type IFRAMEFORM — set as ReportType in def report . Render Each query row supplies: remote URL (col 0), form value/customer identifier (col 1), title (col 2), button label (col 3), controller path (col 4), action (col 5). A hidden form targeting the iframe is created and immediately submitted via JavaScript. Iframe height is controlled by se"
  },
  {
    "path": "factory-report/ObjReportInlineTable.md",
    "title": "ObjReportInlineTable",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportInlineTable Renders a plain HTML table without DataTables, supporting up to 20 columns with special formatting modes per column, right-aligning numeric columns. Report Type INLINETABLE — set as ReportType in def report . Render Column headers are taken from field names (after split). Column format modes are specified by appending <mode to the field name in the query: Mode Effect ------ -------- raw Parses cell HTML through BeautifulSoup and renders it pretty-printed. englishdatetime Con"
  },
  {
    "path": "factory-report/ObjReportInsertsql.md",
    "title": "ObjReportInsertsql",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportInsertsql Executes a table-to-table SQL INSERT (or REPLACE) operation based on parameters from the query, optionally deleting the target before inserting, and returns a result value. Report Type INSERTSQL — set as ReportType in def report . Render The query must return rows with columns: Col Field Notes ----- ------- ------- 0 Source table 1 Target table 2 Insert key columns (comma-separated, or for all matching columns) 3 Replace key columns (comma-separated) optional 4 Replace-with va"
  },
  {
    "path": "factory-report/ObjReportJSTree2.md",
    "title": "ObjReportJSTree2",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportJSTree2 Renders an interactive hierarchical tree diagram using the Treant.js library, with context-menu node editing, add, connect, and delete operations. Report Type JSTREE2 — set as ReportType in def report . Render The query returns parent-child pairs (col 0 = parent name, col 1 = child name, plus optional filter and action data in cols 2–5). The first item in col 0 is used as the root node. Nodes are rendered west-to-east with step connectors. Node hover menus allow editing, adding "
  },
  {
    "path": "factory-report/ObjReportJscytotree.md",
    "title": "ObjReportJscytotree",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportJscytotree Renders an interactive Cytoscape.js strategy tree with colour-coded node types, drag-to-reposition persistence, context menus for full CRUD operations, and a maximise/restore canvas toggle. Report Type JSCYTOTREE — set as ReportType in def report . Render Param1 = strategy ID, Param2 = strategy name, Param3 = checkout name (or view / % for read-only mode). The query is built internally via prepareReport . Node colours by type: portfolio (navy), filter (green), action-active ("
  },
  {
    "path": "factory-report/ObjReportJsonarray.md",
    "title": "ObjReportJsonarray",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportJsonarray Renders all query result values as a flat JSON array, with each cell value processed through process text and patch param . Report Type JSONARRAY — set as ReportType in def report . Render All values from all rows and all columns are flattened into a single JSON array. Returns a JSON string (not HTML)."
  },
  {
    "path": "factory-report/ObjReportJsonlist.md",
    "title": "ObjReportJsonlist",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportJsonlist Renders all query result values as a flat JSON array, identical in behaviour to ObjReportJsonarray . Report Type JSONLIST — set as ReportType in def report . Render All values from all rows and all columns are flattened into a single JSON array. Each value is processed through process text and patch param . Returns a JSON string (not HTML). Notes This module is a duplicate of ObjReportJsonarray . Both produce identical output."
  },
  {
    "path": "factory-report/ObjReportKnob.md",
    "title": "ObjReportKnob",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportKnob Renders up to five read-only jQuery Knob gauges side by side, with colour that changes from theme-primary through yellow, orange, and red as the value approaches its maximum (or inversely for inverted gauges). Report Type KNOB — set as ReportType in def report . Render Each query row (up to 5) supplies: value (col 0), title label (col 1), min (col 2), max (col 3), size in pixels (col 4). A negative max value inverts the colour scale (high values are good). Dimensions default to sel"
  },
  {
    "path": "factory-report/ObjReportLatencyMap.md",
    "title": "ObjReportLatencyMap",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportLatencyMap Renders an ApexCharts heatmap showing webhook processing latency distribution across hours of the day. Report Type LATENCYMAP — set as ReportType in def report . Render Currently renders a static placeholder heatmap with hardcoded sample data. The GetHourList method queries stage webhook history for real latency data but the result is not yet wired into the chart output. Notes Requires apexcharts.min.js and apexcharts.css . This report is a work in progress — the live data pa"
  },
  {
    "path": "factory-report/ObjReportLayout.md",
    "title": "ObjReportLayout",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportLayout Renders a free-form HTML layout template stored in self. Layout , substituting $field <fieldname $ placeholders with query result values. Report Type LAYOUT — set as ReportType in def report . Render The layout template is read from self. Layout (configured in def report ). The placeholder $guid$ in the template is replaced with a generated UUID. For each field in the query result, $field <fieldname $ is replaced with the field value. Values beginning with data: (base64 images) a"
  },
  {
    "path": "factory-report/ObjReportLayoutGrid.md",
    "title": "ObjReportLayoutGrid",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportLayoutGrid Renders query result cells as a responsive Bootstrap grid of centred col-md-4 cells, one cell per query value. Report Type LAYOUTGRID — set as ReportType in def report . Render Every cell value from every row is wrapped individually in a div.col-md-4.col-centered.text-center . Values are passed through process text , allowing embedded report tokens in cell content."
  },
  {
    "path": "factory-report/ObjReportLeader.md",
    "title": "ObjReportLeader",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportLeader Renders a row of AdminLTE 3 info-box tiles with icon, text, numeric value, progress bar, and progress description, one tile per query row. Report Type LEADER — set as ReportType in def report . Render Each query row must supply: info text (col 0), current number (col 1), maximum number (col 2), unused (cols 3–4), icon class (col 5), box colour class (col 6), column width 1–12 (col 7), progress description (col 8). Progress percentage is computed as (number 100) // max . Column wi"
  },
  {
    "path": "factory-report/ObjReportLefttree.md",
    "title": "ObjReportLefttree",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportLefttree Renders a west-oriented Treant.js hierarchical tree from a parent-child-name dataset, with right-click context menus for node management. Report Type LEFTTREE — set as ReportType in def report . Render The query must return rows with columns: ParentGuid (col 0), ChildGuid (col 1), ChildName (col 2), Rank (col 3), Package (col 4), Block (col 5). The root node has no parent. Each node exposes a right-click context menu that calls treemenu rightclickmenu . Tree orientation is WEST"
  },
  {
    "path": "factory-report/ObjReportList.md",
    "title": "ObjReportList",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportList Renders all query result values concatenated as a plain processed text string, with output format controlled by Param3 . Report Type LIST — set as ReportType in def report . Render Param3 controls how values are formatted: Param3 Effect -------- -------- direct Values passed through process text as-is. in Square brackets replaced with parentheses (SQL IN (...) format). (default) Quotes and brackets stripped; process text applied."
  },
  {
    "path": "factory-report/ObjReportLive.md",
    "title": "ObjReportLive",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportLive Renders a live-updating HTML table that polls for new data via JSON and updates cell values in place without a full page reload. Report Type LIVE — set as ReportType in def report . Render On initial render, produces a Bootstrap-styled table with up to 20 columns and unique cell IDs per row/column. Column format modes are specified by appending <mode to the field name: Mode Effect ------ -------- raw Parses cell HTML through BeautifulSoup and renders it pretty-printed. englishdatet"
  },
  {
    "path": "factory-report/ObjReportMap.md",
    "title": "ObjReportMap",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportMap Renders a Google Maps visualisation of lat/long coordinate data from the query. Report Type MAP — set as ReportType in def report . Render The query must return rows with columns: latitude (col 0), longitude (col 1), label (col 2). The chart type is google.visualization.Map with tooltips enabled. Notes This report currently returns \"Maps require an API key\" unconditionally — the map rendering code is unreachable. A Google Maps API key must be configured and the early-return removed "
  },
  {
    "path": "factory-report/ObjReportMediumButton.md",
    "title": "ObjReportMediumButton",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportMediumButton Renders medium-sized full-width navigation buttons with an icon, title, subtitle, optional badge counter, and a conditional visibility check — a compact variant of ObjReportBigButton . Report Type MEDIUMBUTTON — set as ReportType in def report . Render Expects the same column structure as ObjReportBigButton : Title (col 0), Controller (col 1), Action (col 2), BadgeReport (col 3), Glyph (col 4), Colour (col 5), ShowReport (col 6). The title supports -separated subtitle. The "
  },
  {
    "path": "factory-report/ObjReportMenu.md",
    "title": "ObjReportMenu",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportMenu Renders a Bootstrap grid of large icon buttons that navigate to internal pages or open modal forms, one button per query row. Report Type MENU — set as ReportType in def report . Render Each query row supplies: block/title text (col 0), subblock/subtitle text (col 1), rank (col 2), target (col 3), FontAwesome glyph (col 4), extra CSS class (col 5), parameters (col 6). Special target values: modalform loads a form into a modal; search opens a search modal. All other targets are used"
  },
  {
    "path": "factory-report/ObjReportMenulist.md",
    "title": "ObjReportMenulist",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportMenulist Renders a Bootstrap <ul list of anchor links, with optional badge counts, styled by self. Reportclass . Report Type MENULIST — set as ReportType in def report . Render Each query row supplies: item label (col 0), href URL (col 1), badge count (col 2, optional). Labels and badge values are passed through process text . The <ul CSS class is taken from self. Reportclass ."
  },
  {
    "path": "factory-report/ObjReportMorrisline.md",
    "title": "ObjReportMorrisline",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjReportMorrisline.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-report/ObjReportNewBar.md",
    "title": "ObjReportNewBar",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportNewBar Renders a bar chart using the ChartNew.js (Chart.js v1) library. Report Type Bar — set as ReportType in def report . Render Returns an HTML <canvas element and an inline <script that initialises a stacked-capable bar chart. The query's first column provides x-axis labels; subsequent columns provide dataset values. Bar colours are taken from self. Colour (comma-separated list). Notes Requires ChartNew.min.js . Uses Chart.js v1 API ( Chart.Bar ). The chart is responsive with mainta"
  },
  {
    "path": "factory-report/ObjReportNewPie.md",
    "title": "ObjReportNewPie",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportNewPie Renders a doughnut/pie chart with an inline colour legend using the ChartNew.js (Chart.js v1) library. Report Type Pie — set as ReportType in def report . Render Returns an HTML string containing a colour-swatch legend table, a <canvas element, and an inline <script that initialises a Chart.Doughnut . The query must return two columns: label and numeric value. Segment colours are taken from self. Colour (comma-separated list). Notes Requires ChartNew.min.js . Uses Chart.js v1 API"
  },
  {
    "path": "factory-report/ObjReportPanel.md",
    "title": "ObjReportPanel",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportPanel Renders a single Bootstrap panel card displaying a primary value, a subtitle, and a title footer. Report Type Panel — set as ReportType in def report . Render Returns an HTML Bootstrap panel. The query must return at least two columns: the first is displayed as the main <h2 value; the second as a <small subtitle. self. Title is shown in the panel footer. Returns an empty string if no data rows are present."
  },
  {
    "path": "factory-report/ObjReportPanolens.md",
    "title": "ObjReportPanolens",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportPanolens Renders an interactive 360-degree panoramic image viewer with configurable infospots using the Panolens.js library, driven by data panolens and data panolens infospot database tables. Report Type BigTable — set as ReportType in def report . Render Param1 — lens code used to look up the panorama configuration. If Param1 is % , the lens code is taken from the first column of the query result instead. Returns an HTML <div and inline <script that initialise a PANOLENS.Viewer with a"
  },
  {
    "path": "factory-report/ObjReportPanolens2.md",
    "title": "ObjReportPanolens2",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportPanolens2 Renders a 360-degree panoramic image viewer with click-triggered infospots using Panolens.js, driven entirely by query data and self. Options . Report Type BigTable — set as ReportType in def report . Render Returns an HTML <div id=\"container\" and inline <script that initialise a PANOLENS.Viewer . The panorama image URL is taken from self. Options . Each data row provides three columns ( x , y , z ) used to position a transparent infospot; clicking any infospot triggers a brow"
  },
  {
    "path": "factory-report/ObjReportPayment.md",
    "title": "ObjReportPayment",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportPayment Renders a full invoice/payment summary panel including company details, recipient, line items, payment method icons, and totals. Report Type PaymentReport — set as ReportType in def report . Render The query must return one column: the payment GUID from stage Payment . The report reads the full payment record from stage Payment and the payment method from def Paymentmethod , then loads company details via the internal ReportCompany helper. Returns an HTML invoice section with Fr"
  },
  {
    "path": "factory-report/ObjReportPictureButton.md",
    "title": "ObjReportPictureButton",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportPictureButton Renders one or more large picture-background buttons, each firing a JavaScript onclick action. Report Type Button — set as ReportType in def report . Render Returns HTML <button elements. The query must return at least two columns per row: the onclick JavaScript expression (column 1) and the image filename served from /image/ (column 2). Button colour is taken from self. Colour ; the button label from self. Title ."
  },
  {
    "path": "factory-report/ObjReportPills.md",
    "title": "ObjReportPills",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportPills Renders a horizontal pill-style tab container where each tab loads a sub-report. Report Type BigTable — set as ReportType in def report . Render Param2 / Param3 — passed through to each embedded sub-report. Returns Bootstrap nav-pills tabs with associated tab-pane content. The query must return at least two columns per row: tab label (column 1) and report code (column 2); an optional third column provides the sub-report's Param1. The active tab is determined by self. LastTab . Inc"
  },
  {
    "path": "factory-report/ObjReportPivottable.md",
    "title": "ObjReportPivottable",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportPivottable Renders an interactive pivot table powered by the pivottable.js library, with data loaded asynchronously via RPC. Report Type PivotTable — set as ReportType in def report . Render Param1 / Param2 / Param3 — passed to the RPC call and substituted into the report query via $param1$ , $param2$ , $param3$ . Returns an HTML <div and inline <script that call RemoteProcedureCall to fetch data via RpcGetlist , then render it with $.fn.pivotUI . The pivot table is re-polled on a confi"
  },
  {
    "path": "factory-report/ObjReportQueryDocument.md",
    "title": "ObjReportQueryDocument",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportQueryDocument Renders query result rows as a simple document with heading, description, and code block per row. Report Type ObjRevealjs — set as ReportType in def report . Render Returns an HTML <div class=\"container\" containing one Bootstrap row per data row. The query must return three columns: a heading (column 1), a paragraph description (column 2), and a preformatted code block (column 3)."
  },
  {
    "path": "factory-report/ObjReportRadar.md",
    "title": "ObjReportRadar",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportRadar Renders a multi-series radar (spider) chart using the ApexCharts library. Report Type Promotion — set as ReportType in def report . Render Returns an HTML <div and inline <script that initialise an ApexCharts radar chart. The chart currently renders three hardcoded sample series. Additional chart options are appended from self. Options . The x-axis categories are hardcoded as years 2011–2016. Options Options read from self. Options raw string, appended directly into the ApexCharts"
  },
  {
    "path": "factory-report/ObjReportRadialBar.md",
    "title": "ObjReportRadialBar",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportRadialBar Renders a single-value radial bar (gauge) chart using ApexCharts, with colours drawn from the def colour palette table. Report Type Radial bar — set as ReportType in def report . Render Returns an HTML <div and inline <script that initialise an ApexCharts radialBar chart. The query must return a single numeric value (the percentage to display). The chart centre label is set to the last field name from the query. Colours are loaded from fullhouse.axion.def colour palette and ap"
  },
  {
    "path": "factory-report/ObjReportRangebar.md",
    "title": "ObjReportRangebar",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportRangebar Renders a Gantt-style range bar chart using the ApexCharts library with hardcoded demo data. Report Type Promotion — set as ReportType in def report . Render Returns an HTML <div and inline <script that initialise an ApexCharts rangeBar -style chart. The chart renders five hardcoded date-range entries (Analysis, Design, Coding, Testing, Deployment) with distinct fill colours. Additional chart configuration is appended from self. Options . Options Options read from self. Options"
  },
  {
    "path": "factory-report/ObjReportReplace.md",
    "title": "ObjReportReplace",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportReplace Renders a free-form HTML template stored in self. Options , substituting {{headerN}} and {{dataN}} placeholders with field names and data values from the first query row. Report Type BigTable — set as ReportType in def report . Render Returns the contents of self. Options after replacing all {{header1}} , {{data1}} , {{header2}} , {{data2}} , … tokens with the corresponding column names and cell values from the first data row. The entire string is then passed through process tex"
  },
  {
    "path": "factory-report/ObjReportReport.md",
    "title": "ObjReportReport",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportReport Renders a dynamic list of sub-reports by iterating over query rows and expanding each as a {report:...} macro. Report Type Report — set as ReportType in def report . Render Returns the concatenated HTML output of all sub-reports. The query must return at least one column: the report code to embed. An optional second column provides the sub-report's Param1. Each row is expanded via process text(\"{report:CODE:PARAM1}\") ."
  },
  {
    "path": "factory-report/ObjReportReportRow.md",
    "title": "ObjReportReportRow",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportReportRow Renders a responsive grid of big or small buttons sourced from a comma-separated list of report codes. Report Type Row — set as ReportType in def report . Render Param1 — passed through to each embedded button report as its parameter. Returns a <div class=\"container-fluid\" containing Bootstrap rows of buttons. The query must return one row with up to three columns: - Column 1 — comma-separated list of report codes (use SPACE to insert an empty placeholder) - Column 2 — maximum"
  },
  {
    "path": "factory-report/ObjReportReports.md",
    "title": "ObjReportReports",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportReports Renders a documentation panel for each report type, showing title, notes, example query, external documentation links, and a live rendered sample. Report Type reports — set as ReportType in def report . Render Param2 — passed through to the sample report as a parameter (pipe characters converted to carets). Returns a series of Bootstrap info boxes, one per row in the query result. The query must return seven columns: SuperClass , Class , Title , DocumentUrl , LibNeeded , Example"
  },
  {
    "path": "factory-report/ObjReportResourceTest.md",
    "title": "ObjReportResourceTest",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportResourceTest Renders a two-column name/value callout widget and also attempts to load .js and .css resources named after each cell value. Report Type Dash — set as ReportType in def report . Render Returns a Bootstrap callout <div containing a table of field-name/value pairs. Field names prefixed with suppress the label. Rows containing only a - value are rendered as empty rows. For each cell value, add resource script and add resource css are called with that value — making this varian"
  },
  {
    "path": "factory-report/ObjReportSMSDashboard.md",
    "title": "ObjReportSMSDashboard",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSMSDashboard Renders an SMS configuration dashboard showing delivery statistics, provider settings, and an acceptable-send-time grid for each SMS code in the query result. Report Type SMS config — set as ReportType in def report . Render The query must return one column: the SMS code ( Smscode ) from def sms . For each code the report renders three sections: - Banner row — three small-box widgets showing queued, sent today, and failed today counts from stage sms - Configuration panel — "
  },
  {
    "path": "factory-report/ObjReportSankeyChart.md",
    "title": "ObjReportSankeyChart",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSankeyChart Renders a Sankey flow diagram using Chart.js with the chartjs-chart-sankey plugin, with node colours drawn from the active colour palette. Report Type Sankey — set as ReportType in def report . Render Returns HTML containing a <canvas element and an inline <script that initialise a Chart.js Sankey chart. The query must return three columns per row: from node name, to node name, and numeric flow value. Rows where to is empty are skipped. Node colours are assigned sequentially"
  },
  {
    "path": "factory-report/ObjReportScatterPlot.md",
    "title": "ObjReportScatterPlot",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportScatterPlot Renders a scatter plot chart using the ApexCharts library with three hardcoded sample data series. Report Type Promotion — set as ReportType in def report . Render Returns an HTML <div and inline <script that initialise an ApexCharts scatter chart with three hardcoded series (SAMPLE A, SAMPLE B, SAMPLE C). Chart type, toolbar, and colours are fixed in the template. This report is intended as a scaffold for a data-driven scatter plot. Notes Requires apexcharts/apexcharts ."
  },
  {
    "path": "factory-report/ObjReportScorecard.md",
    "title": "ObjReportScorecard",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportScorecard Evaluates a named scorecard against bureau data and renders a step-by-step scoring trace with the final accumulated score. Report Type BigTable — set as ReportType in def report . Render - Param1 — scorecard name (matches def scorecard.Scorecard ) - Param2 — table name containing the bureau data - Param3 — GUID used to retrieve the most recent bureau data row Returns an HTML fragment documenting each scoring step. For every variable in def scorecard , the report evaluates one "
  },
  {
    "path": "factory-report/ObjReportSelection.md",
    "title": "ObjReportSelection",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSelection Renders a collapsible accordion grouped table that displays categorised records with badges and headings. Report Type BigTable — set as ReportType in def report . Render Returns HTML comprising two sections: a Bootstrap collapsible accordion grouped by the value in column 2, followed by a standard table of all data. The query must return at least four columns per row: badge text (column 1), group name (column 2), heading (column 3), and detail text (column 4). Groups cycle thr"
  },
  {
    "path": "factory-report/ObjReportSequence.md",
    "title": "ObjReportSequence",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSequence Renders a UML sequence diagram from plain-text diagram syntax using the sequence-diagram.js library. Report Type Dash — set as ReportType in def report . Render Returns an HTML <div class=\"diagram\" containing the raw diagram text from the first data column, plus an inline <script that initialises sequenceDiagram with the simple theme. An optional title from self. Title and glyph from self. Glyph are shown above the diagram when not in widget mode. Notes Requires webfont.js , sn"
  },
  {
    "path": "factory-report/ObjReportShowcreatetable.md",
    "title": "ObjReportShowcreatetable",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportShowcreatetable Renders an interactive database table structure viewer showing columns, primary keys, unique keys, and indices with edit, copy, and delete action buttons. Report Type ShowCreateTable — set as ReportType in def report . Render The query must return two columns: the table name (column 1) and the SHOW CREATE TABLE DDL output (column 2). The report parses the DDL string to extract column definitions, primary keys, unique keys, and regular indices, then renders them in two si"
  },
  {
    "path": "factory-report/ObjReportSimpleDoughnut.md",
    "title": "ObjReportSimpleDoughnut",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSimpleDoughnut Renders a doughnut chart using Chart.js v2 with a fixed colour palette and no legend. Report Type Doughnut — set as ReportType in def report . Render Returns an HTML <canvas element and an inline <script that initialise a Chart.js v2 doughnut chart. The query must return two columns: label (column 1) and numeric value (column 2). An optional third column adds a second dataset. Segment colours are hardcoded from a predefined palette; the legend is hidden. Notes Requires ch"
  },
  {
    "path": "factory-report/ObjReportSmallButton.md",
    "title": "ObjReportSmallButton",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSmallButton Renders a small icon button that navigates to a controller/action URL on click, with optional badge counter and conditional visibility. Report Type Button — set as ReportType in def report . Render Returns an HTML <button with an inline <script . The query must return one row with up to seven columns: Title (column 1), Controller (column 2), Action (column 3), BadgeReport (column 4), Glyph (column 5), Colour (column 6), ShowReport (column 7). - Title — may include a pipe sep"
  },
  {
    "path": "factory-report/ObjReportSmallRow.md",
    "title": "ObjReportSmallRow",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSmallRow Renders a responsive grid of sub-reports arranged in rows within a half-width container. Report Type Row — set as ReportType in def report . Render Param1 / Param2 — passed through to each embedded sub-report. Returns a <div class=\"container-fluid\" containing Bootstrap rows, each wrapped in a col-md-6 . The query must return one row with up to three columns: - Column 1 — comma-separated list of report codes (use SPACE for an empty placeholder) - Column 2 — maximum columns per r"
  },
  {
    "path": "factory-report/ObjReportSmsApi.md",
    "title": "ObjReportSmsApi",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSmsApi Renders an SMS provider configuration dashboard showing statistics, provider settings, and the acceptable-send-time grid for each SMS code. Report Type SMS config — set as ReportType in def report . Render The query must return one column: the SMS code ( Smscode ) from def sms . For each code the report renders: - A banner row with three small-box counters (queued, sent today, failed today) from stage sms - A configuration detail panel (provider, limits, usage) via RenderNotes - "
  },
  {
    "path": "factory-report/ObjReportStackedBar.md",
    "title": "ObjReportStackedBar",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportStackedBar Renders a stacked bar chart using Chart.js v2, grouping data by x-axis category and label. Report Type BigTable — set as ReportType in def report . Render Returns an HTML <canvas id=\"chart\" element and an inline <script that initialise a Chart.js v2 stacked bar chart. The query must return three columns per row: x-axis category (column 1), dataset label (column 2), and numeric value (column 3). Each unique label becomes a dataset; each unique category becomes an x-axis tick. "
  },
  {
    "path": "factory-report/ObjReportSteps.md",
    "title": "ObjReportSteps",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSteps Renders a step-progress wizard using the jQuery SmartWizard library, loading the current step via RPC on a configurable refresh interval. Report Type BigTable — set as ReportType in def report . Render Returns an HTML <div and inline <script that poll RpcGetseries via RemoteProcedureCall to determine the current step and build the SmartWizard nav list dynamically. The wizard is rendered with disabled: true and keyNavigation: false so it is display-only. The polling interval is con"
  },
  {
    "path": "factory-report/ObjReportStepsArrow.md",
    "title": "ObjReportStepsArrow",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportStepsArrow Renders the SmartWizard step-progress widget using the arrows visual theme. Report Type BigTable — set as ReportType in def report . Render Inherits all rendering behaviour from ObjReportStepsBase with self.Type = \"arrows\" , which selects the smart wizard theme arrows.css stylesheet. Notes See ObjReportStepsBase for full documentation."
  },
  {
    "path": "factory-report/ObjReportStepsBase.md",
    "title": "ObjReportStepsBase",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportStepsBase Base class for all SmartWizard step-progress report variants; renders a display-only step wizard with RPC-driven current-step detection. Report Type BigTable — set as ReportType in def report . Render Returns an HTML <div and an inline <script that polls RpcGetseries via RemoteProcedureCall to build and display a jQuery SmartWizard. The wizard is read-only ( disabled: true , keyNavigation: false ). The polling interval comes from self. Refresh (seconds). The SmartWizard theme "
  },
  {
    "path": "factory-report/ObjReportStepsCircle.md",
    "title": "ObjReportStepsCircle",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportStepsCircle Renders the SmartWizard step-progress widget using the circles visual theme. Report Type BigTable — set as ReportType in def report . Render Inherits all rendering behaviour from ObjReportStepsBase with self.Type = \"circles\" , which selects the smart wizard theme circles.css stylesheet. Notes See ObjReportStepsBase for full documentation."
  },
  {
    "path": "factory-report/ObjReportStepsCustom.md",
    "title": "ObjReportStepsCustom",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportStepsCustom Renders the SmartWizard step-progress widget with no theme CSS applied (custom styling mode). Report Type BigTable — set as ReportType in def report . Render Inherits all rendering behaviour from ObjReportStepsBase with self.Type = \"custom\" . When the type is custom , no theme CSS file is loaded, allowing full custom styling via the page's own stylesheet. Notes See ObjReportStepsBase for full documentation."
  },
  {
    "path": "factory-report/ObjReportStepsDot.md",
    "title": "ObjReportStepsDot",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportStepsDot Renders the SmartWizard step-progress widget using the dots visual theme. Report Type BigTable — set as ReportType in def report . Render Inherits all rendering behaviour from ObjReportStepsBase with self.Type = \"dots\" , which selects the smart wizard theme dots.css stylesheet. This is the default theme. Notes See ObjReportStepsBase for full documentation."
  },
  {
    "path": "factory-report/ObjReportStrategyFlow.md",
    "title": "ObjReportStrategyFlow",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjReportStrategyFlow.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-report/ObjReportStratops.md",
    "title": "ObjReportStratops",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjReportStratops.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-report/ObjReportStringrpc.md",
    "title": "ObjReportStringrpc",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportStringrpc Renders a single text value that auto-updates on a configurable interval by fetching it via RPC. Report Type Inferred as STRINGRPC — set as ReportType in def report . Render Returns an HTML <div containing the initial string value and an inline <script that polls RpcGetstring via RemoteProcedureCall and updates the div's innerText on each tick. The initial value is taken from the first column of the query result, or from self. Query directly if no data rows are returned. The p"
  },
  {
    "path": "factory-report/ObjReportStructuretree.md",
    "title": "ObjReportStructuretree",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportStructuretree Renders a hierarchical org-chart or structure tree using the Treant.js library, with right-click context menus and support for collapsible nodes. Report Type Structuretree — set as ReportType in def report . Render Returns an HTML <div id=\"structuretree\" , inline CSS, and a <script block that initialise a Treant.js chart. The query must return nine columns per row: NodeDepth , ParentGuid , ChildGuid , ChildName , Rank , Package , Block , Items , Eventtype . Node depth is r"
  },
  {
    "path": "factory-report/ObjReportTableHeaderless.md",
    "title": "ObjReportTableHeaderless",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTableHeaderless Renders a data table without any column headers. Report Type BigTable — set as ReportType in def report . Render Returns a Bootstrap <table class=\"headerlesstable\" with no <thead section. Up to 20 columns are rendered per row. Field names with a raw suffix are rendered as sanitised HTML via BeautifulSoup. Field names with a englishdatetime suffix are reformatted from YYYY-MM-DD HH:MM:SS to DD Mon YYYY . Notes Requires beautifulsoup4 ( bs4 ) for raw HTML column rendering."
  },
  {
    "path": "factory-report/ObjReportTableprint.md",
    "title": "ObjReportTableprint",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTableprint Renders a print-optimised paginated table that inserts a header repeat every 25 rows. Report Type BigTable — set as ReportType in def report . Render Returns an HTML <table with a print stylesheet that allows page breaks. Up to the first three columns (controlled by self.MaxFields = 3 ) are shown. Every 25 data rows the table is closed, a horizontal rule is inserted, and the header is repeated — suitable for printing multi-page reports. Up to 20 columns are rendered per data "
  },
  {
    "path": "factory-report/ObjReportTextrow.md",
    "title": "ObjReportTextrow",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTextrow Renders a responsive row of Axion text/macro expressions laid out in equal-width Bootstrap columns. Report Type Row — set as ReportType in def report . Render Returns a series of <div style=\"display:inline-block;width:100%\" rows. The query must return at least two rows: - Row 1, column 1 — maximum columns per row (integer) - Rows 2+, column 1 — Axion macro key to expand via process text(\"{KEY}\") Each macro result is placed in an equal-width col-sm-N column. If fewer items are re"
  },
  {
    "path": "factory-report/ObjReportTimeline.md",
    "title": "ObjReportTimeline",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTimeline Renders a Bootstrap timeline widget with grouped, icon-decorated entries. Report Type Timeline — set as ReportType in def report . Render Returns HTML containing a Bootstrap <ul class=\"timeline\" list. A \"Glossary\" header entry is prepended automatically. The query must return five columns per row: grouping label (column 1), FontAwesome glyph class (column 2), heading text (column 3), content text (column 4), and Bootstrap colour name (column 5). When the grouping value changes "
  },
  {
    "path": "factory-report/ObjReportTimelines.md",
    "title": "ObjReportTimelines",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTimelines Renders an interactive timelines (Gantt-style) chart using the timelines-chart library. Report Type BigTable — set as ReportType in def report . Render Returns an HTML <div id=\"timeline\" and inline <script that initialise a TimelinesChart . The query must return four columns per row: group name (column 1), item label (column 2), start datetime (column 3), end datetime (column 4). Rows are grouped by column 1; within each group, each item is plotted as a labelled time range. Th"
  },
  {
    "path": "factory-report/ObjReportTransposedTable.md",
    "title": "ObjReportTransposedTable",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTransposedTable Renders query results as a two-column key/value table where each column becomes a row. Report Type BigTable — set as ReportType in def report . Render Returns a Bootstrap <table in which each column from the query is rendered as a separate row with the field name on the left (styled btn-transpose ) and the cell value on the right. All values are passed through process text . This is the transposed (pivoted) equivalent of a standard row-per-record table."
  },
  {
    "path": "factory-report/ObjReportTreemap.md",
    "title": "ObjReportTreemap",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTreemap Renders a treemap chart using the ApexCharts library with hardcoded demo data. Report Type Promotion — set as ReportType in def report . Render Returns an HTML <div and inline <script that initialise an ApexCharts treemap chart. The chart renders a single hardcoded dataset of 13 city-population entries. Additional chart configuration is appended from self. Options . Options Options read from self. Options raw string, appended directly into the ApexCharts options object. Notes Re"
  },
  {
    "path": "factory-report/ObjReportTreemenu.md",
    "title": "ObjReportTreemenu",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTreemenu Renders an interactive Treant.js hierarchical tree menu used for navigating and managing Axion package/block structures, with click navigation and drag-and-drop reorganisation. Report Type Treemenu — set as ReportType in def report . Render Param1 — report code used in the left-click URL to load block content into the target container. Param2 — CSS selector for the target container where block content is loaded (defaults to body if empty). Returns an HTML <div id=\"treemenu\" , i"
  },
  {
    "path": "factory-report/ObjReportUser.md",
    "title": "ObjReportUser",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportUser Renders a user profile card showing account details, access level, status, and management action buttons. Report Type UserReport — set as ReportType in def report . Render The query must return one column: the username. The report reads the full user record from the User table, loads ACL data, and renders a profile panel with avatar, full name, company, role, access level name, active/locked status, last login date, and action buttons. Action buttons shown depend on the viewing con"
  },
  {
    "path": "factory-report/ObjReportValues.md",
    "title": "ObjReportValues",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportValues Renders a two-column name/value callout widget displaying all fields from the query result. Report Type Dash — set as ReportType in def report . Render Returns a Bootstrap callout <div (colour from self. Widgetcolour ) containing a table of field-name/value pairs for every non-empty cell in the result set. Field names prefixed with suppress the label. Rows containing only a - value are rendered as blank separators. An optional title with glyph is shown when not in widget mode ( s"
  },
  {
    "path": "factory-report/ObjReportVpills.md",
    "title": "ObjReportVpills",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportVpills Renders a vertical left-side pill navigation with associated sub-report content panels. Report Type BigTable — set as ReportType in def report . Render Param2 / Param3 — passed through to each embedded sub-report. Returns a two-column Bootstrap layout: a col-md-2 vertical nav-pills list on the left and a col-md-10 tab-content panel on the right. The query must return at least two columns per row: tab label (column 1) and report code (column 2); an optional third column provides t"
  },
  {
    "path": "factory-report/ObjReportVpillsrecursive.md",
    "title": "ObjReportVpillsrecursive",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportVpillsrecursive Renders a vertical left-side pill navigation with sub-report content panels, identical in structure to ObjReportVpills . Report Type BigTable — set as ReportType in def report . Render Param2 / Param3 — passed through to each embedded sub-report. Returns a two-column Bootstrap layout: a col-md-2 vertical nav-pills list on the left and a col-md-10 tab-content panel on the right. The query must return at least two columns per row: tab label (column 1) and report code (colu"
  },
  {
    "path": "factory-report/ObjReportVreports.md",
    "title": "ObjReportVreports",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportVreports Renders a vertical stack of titled sub-report sections, each in a Bootstrap box-body panel. Report Type VReports — set as ReportType in def report . Render Param2 / Param3 — passed through to each embedded sub-report. Returns a series of Bootstrap box-header / box-body div pairs, one per data row. The query must return at least two columns per row: section title (column 1) and report code (column 2); an optional third column provides the sub-report's Param1 (falls back to the o"
  },
  {
    "path": "factory-report/ObjReportVtabs.md",
    "title": "ObjReportVtabs",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportVtabs Renders a vertical left-side tab navigation with associated sub-report content panels. Report Type BigTable — set as ReportType in def report . Render Param2 / Param3 — passed through to each embedded sub-report. Returns a two-column Bootstrap layout: a col-md-2 vertical nav-tabs list on the left and a col-md-10 tab-content panel on the right. The query must return at least two columns per row: tab label (column 1) and report code (column 2); an optional third column provides the "
  },
  {
    "path": "factory-report/package-charts/ObjReportApexBar.md",
    "title": "ObjReportApexBar",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportApexBar Renders an ApexCharts bar chart by extending the base Apex report with the bar series type. Report Type APEXBAR — set as ReportType in def report . Render Inherited from ObjReportApexBase . Param1 , Param2 , and Param3 are substituted into the report's SQL query as $param1$ , $param2$ , and $param3$ tokens. Returns an HTML string containing the chart container and initialisation script. Notes Uses the ApexCharts JS library. Delegates all rendering logic to ObjReportApexBase ; th"
  },
  {
    "path": "factory-report/package-charts/ObjReportApexBase.md",
    "title": "ObjReportApexBase",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportApexBase Base class for all ApexCharts report types, providing the chart scaffold, RPC data-fetch loop, and series update mechanism. Report Type APEXBASE — set as ReportType in def report . Not intended to be used directly; subclasses override self.Type to select the ApexCharts series type. Render Param1 , Param2 , and Param3 are injected into the SQL query via $param1$ , $param2$ , and $param3$ token replacement and are also forwarded with every RPC call so the browser can refresh data"
  },
  {
    "path": "factory-report/package-charts/ObjReportApexHeatmap.md",
    "title": "ObjReportApexHeatmap",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportApexHeatmap Renders an ApexCharts heatmap chart, grouping SQL result rows into named series by an x/y/series structure. Report Type APEXHEATMAP — set as ReportType in def report . Render Inherited from ObjReportApexBase . Param1 , Param2 , and Param3 are substituted into the report's SQL query as $param1$ , $param2$ , and $param3$ tokens. Returns an HTML string containing the chart container and initialisation script. Methods RpcGetseries(data) Overrides the base implementation. Execute"
  },
  {
    "path": "factory-report/package-charts/ObjReportApexLine.md",
    "title": "ObjReportApexLine",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportApexLine Renders an ApexCharts line chart by extending the base Apex report with the line series type. Report Type APEXLINE — set as ReportType in def report . Render Inherited from ObjReportApexBase . Param1 , Param2 , and Param3 are substituted into the report's SQL query as $param1$ , $param2$ , and $param3$ tokens. Returns an HTML string containing the chart container and initialisation script. Notes Uses the ApexCharts JS library. Delegates all rendering logic to ObjReportApexBase "
  },
  {
    "path": "factory-report/package-charts/ObjReportBar.md",
    "title": "ObjReportBar",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportBar Renders a Chart.js bar chart for large datasets by extending ObjReportLine with the bar chart type. Report Type BAR — set as ReportType in def report . Render Inherited from ObjReportLine . Reads data from self.data list (pre-loaded by the report engine), renders a styled <canvas element, and injects a Chart.js initialisation script. Returns an HTML string. Notes Uses the Chart.js library ( chart.umd.min.js ) and axion.rpc.js . Overrides getChartType() to return \"bar\" , which is pas"
  },
  {
    "path": "factory-report/package-charts/ObjReportBubble.md",
    "title": "ObjReportBubble",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportBubble Renders a Chart.js bubble chart for large datasets by extending ObjReportLine with the bubble chart type. Report Type BUBBLE — set as ReportType in def report . Render Inherited from ObjReportLine . Reads data from self.data list , renders a styled <canvas element, and injects a Chart.js initialisation script. Returns an HTML string. Notes Uses the Chart.js library ( chart.umd.min.js ) and axion.rpc.js . Overrides getChartType() to return \"bubble\" . All other rendering, RPC polli"
  },
  {
    "path": "factory-report/package-charts/ObjReportDoughnut.md",
    "title": "ObjReportDoughnut",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDoughnut Renders a Chart.js doughnut chart that fetches label/value pairs via RPC and updates without a page reload. Report Type DOUGHNUT — set as ReportType in def report . Render Parameters are not used directly; data is always fetched via the getdata RPC method using the report code. Returns an HTML string containing a styled card panel, a <canvas element, and a <script block that initialises and polls the chart. Options Options read from self. Options JSON: Key Effect --- --- width "
  },
  {
    "path": "factory-report/package-charts/ObjReportEcharts.md",
    "title": "ObjReportEcharts",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEcharts Generic Apache ECharts report that defaults to a line series type; use specialised subclasses for specific chart types. Report Type ECHARTS — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library. Delegates all rendering and RPC logic to Ob"
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartsbar.md",
    "title": "ObjReportEchartsbar",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartsbar Renders an Apache ECharts bar chart using the shared ECharts base renderer. Report Type ECHARTSBAR — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library. Sets self.Type = \"bar\" which drives the default series type passed to the cartesi"
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartsbase.md",
    "title": "ObjReportEchartsbase",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartsbase Base class for all Apache ECharts report types, providing query execution, option building, RPC handling, and the chart HTML/JS scaffold. Report Type ECHARTSBASE — set as ReportType in def report . Not intended to be used directly; subclasses set self.Type to select the ECharts series type. Render Param1 , Param2 , and Param3 are included in the RPC payload and substituted into the SQL query as $param1$ , $param2$ , and $param3$ . Returns a self-contained HTML string with an"
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartsboxplot.md",
    "title": "ObjReportEchartsboxplot",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartsboxplot Renders an Apache ECharts box-plot chart showing statistical distribution across categories. Report Type ECHARTSBOXPLOT — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library. The SQL query must return rows where column 0 is the cat"
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartschord.md",
    "title": "ObjReportEchartschord",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartschord Renders a chord-style relationship diagram using the Apache ECharts graph series type. Report Type ECHARTSCHORD — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library. ECharts 5 does not have a native chord series type; this report re"
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartsdoughnut.md",
    "title": "ObjReportEchartsdoughnut",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartsdoughnut Renders an Apache ECharts doughnut chart (pie chart with a hollow centre). Report Type ECHARTSDOUGHNUT — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library. Sets self.Type = \"pie\" and self.Doughnut = True , which causes ObjReport"
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartsfunnel.md",
    "title": "ObjReportEchartsfunnel",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartsfunnel Renders an Apache ECharts funnel chart for visualising sequential stage volumes. Report Type ECHARTSFUNNEL — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library. The SQL query must return rows with two columns: stage name and numeri"
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartsgauge.md",
    "title": "ObjReportEchartsgauge",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartsgauge Renders an Apache ECharts gauge chart displaying a single numeric value. Report Type ECHARTSGAUGE — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library. The SQL query should return a single row; if two columns are present, column 1 i"
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartsgraph.md",
    "title": "ObjReportEchartsgraph",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartsgraph Renders an Apache ECharts force-layout graph chart for visualising node-link relationships. Report Type ECHARTSGRAPH — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library. The SQL query must return rows with columns source , target ,"
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartsheatmap.md",
    "title": "ObjReportEchartsheatmap",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartsheatmap Renders an Apache ECharts heatmap chart with a visual map colour scale. Report Type ECHARTSHEATMAP — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library. The SQL query must return rows with three columns: x-axis category, y-axis ca"
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartsline.md",
    "title": "ObjReportEchartsline",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartsline Renders an Apache ECharts line chart using the shared ECharts base renderer. Report Type ECHARTSLINE — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library. Sets self.Type = \"line\" . The first column of the SQL result is used as the X-"
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartspictorialbar.md",
    "title": "ObjReportEchartsPictorialBar",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartsPictorialBar Renders an Apache ECharts pictorial bar chart where bars are drawn using custom symbols. Report Type ECHARTSPICTORIALBAR — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library. Sets self.Type = \"pictorialBar\" . The base rendere"
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartspie.md",
    "title": "ObjReportEchartspie",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartspie Renders an Apache ECharts pie chart. Report Type ECHARTSPIE — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library. Sets self.Type = \"pie\" and self.Doughnut = False , rendering a full pie (radius \"65%\" ). The SQL query must return rows "
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartspolar.md",
    "title": "ObjReportEchartspolar",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartspolar Renders an Apache ECharts polar bar chart with an angular category axis. Report Type ECHARTSPOLAR — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library. The SQL query must return rows with two columns: category label and numeric valu"
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartsradar.md",
    "title": "ObjReportEchartsradar",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartsradar Renders an Apache ECharts radar (spider) chart for comparing multiple dimensions across series. Report Type ECHARTSRADAR — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library. The SQL query must return rows where column 0 is the indi"
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartssankey.md",
    "title": "ObjReportEchartssankey",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartssankey Renders an Apache ECharts Sankey diagram for visualising flow volumes between nodes. Report Type ECHARTSSANKEY — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library. The SQL query must return rows with three columns: source , target"
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartsscatter.md",
    "title": "ObjReportEchartsscatter",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartsscatter Renders an Apache ECharts scatter chart on a standard Cartesian axis. Report Type ECHARTSSCATTER — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library. Sets self.Type = \"scatter\" . The first column of the SQL result provides X-axis"
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartstreemap.md",
    "title": "ObjReportEchartstreemap",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartstreemap Renders an Apache ECharts treemap chart for displaying hierarchical proportional data. Report Type ECHARTSTREEMAP — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library. The SQL query must return rows with two columns: node name and"
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartsvenn.md",
    "title": "ObjReportEchartsvenn",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartsvenn Renders an Apache ECharts Venn diagram for displaying set overlaps and intersections. Report Type ECHARTSVENN — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library. The SQL query must return rows with two columns: set name and numeric"
  },
  {
    "path": "factory-report/package-charts/ObjReportEchartswordcloud.md",
    "title": "ObjReportEchartswordcloud",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEchartswordcloud Renders an Apache ECharts word cloud chart where word sizes represent numeric values. Report Type ECHARTSWORDCLOUD — set as ReportType in def report . Render Inherited from ObjReportEchartsbase . Param1 , Param2 , and Param3 are forwarded in the RPC payload for SQL token substitution. Returns an HTML string containing a styled panel and an ECharts initialisation script. Notes Uses the Apache ECharts JS library ( echarts@5.4.3 ) plus the echarts-wordcloud@2.1.0 extension"
  },
  {
    "path": "factory-report/package-charts/ObjReportHistogram.md",
    "title": "ObjReportHistogram",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportHistogram Renders a Chart.js grouped bar chart displaying three time-period datasets (earliest, previous, latest) for deviation analysis. Report Type HISTOGRAM — set as ReportType in def report . Render Parameters are not used; data is read from self.data list (pre-loaded by the report engine). Returns an HTML string with a styled card panel, a <canvas element, and Chart.js initialisation and polling scripts. Returns an empty string if self.data list is empty. Options Options read from "
  },
  {
    "path": "factory-report/package-charts/ObjReportLine.md",
    "title": "ObjReportLine",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportLine Renders a Chart.js line chart optimised for large datasets, with automatic multi-series detection and live RPC polling. Report Type LINE — set as ReportType in def report . Render Param1 and Param2 are forwarded in RPC poll requests as param1 and param2 for SQL token substitution. Data is read from self.data list on first render; subsequent updates arrive via the RPC polling loop. Returns an HTML string containing a styled card panel, a <canvas element, and the Chart.js initialisat"
  },
  {
    "path": "factory-report/package-charts/ObjReportPixiBase.md",
    "title": "ObjReportPixiBase",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportPixiBase Type: Report Base Class Module: factory.report.package.charts Framework: Axion Rendering Engine: Pixi.js v5 (WebGL 2D) Overview Base class for interactive Pixi.js-based data visualizations within the Axion framework. Provides template generation, data binding, refresh mechanisms, and multi-layer canvas architecture. Inherits from ObjData , follows Axion report patterns (like ApexBase, but with Pixi.js instead of ApexCharts). Features - WebGL 2D Rendering: Fast, hardware-acceler"
  },
  {
    "path": "factory-report/package-charts/ObjReportPixiFARCASTER.md",
    "title": "ObjReportPixiFARCASTER",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportPixiFARCASTER Type: Tactical RPG Game Report (Isometric) Module: factory.report.package.charts Framework: Axion (Pixi.js Report Engine) Base Class: ObjReportPixiGeneric → ObjReportPixiFARCASTER → ObjReportPixiFARCASTERv2 Overview FARCASTER is a turn-based tactical RPG game with isometric 3D rendering , built as an Axion report. It extends the Pixi.js report framework to deliver an interactive tactical combat experience with: - Isometric projection: 2:1 diamond tiles with visible left/ri"
  },
  {
    "path": "factory-report/package-charts/ObjReportPixiGeneric.md",
    "title": "ObjReportPixiGeneric",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportPixiGeneric Type: Generic Interactive Report Module: factory.report.package.charts Framework: Axion Rendering Engine: Pixi.js v5 (WebGL 2D) Overview Generic Pixi.js-based data visualization report for Axion. Renders JSON data as interactive visualizations with multiple display modes: scatter plots, grid heatmaps, bar charts, node graphs, and more. Extends ObjReportPixiBase and provides out-of-the-box functionality for most data visualization needs. Features - Multiple Visualization Mode"
  },
  {
    "path": "factory-report/package-charts/ObjReportSparkline.md",
    "title": "ObjReportSparkline",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSparkline Renders a compact inline sparkline chart using the jQuery Sparklines library with live RPC polling. Report Type SPARKLINE — set as ReportType in def report . Render Parameters are not used. Data is read from self.data list on initial load and refreshed via RPC polling. Returns an HTML string containing a <span mount point and a <script block that calls RemoteProcedureCall on a timer and re-renders the sparkline on each response. Options Options read from self. Options JSON: Ke"
  },
  {
    "path": "factory-report/package-chrysalistp/ObjReportChrysalisbar.md",
    "title": "ObjReportChrysalisbar",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportChrysalisbar Renders a Chart.js grouped bar chart with one or two data series using theme colours. Report Type BAR — set as ReportType in def report . Render Parameters are unused. Expects the query to return rows with: 0 X-axis label, 1 primary series value, and optionally 2 secondary series value. Series labels are taken from FieldNames . Returns an HTML string containing a <canvas element and Chart.js initialisation script. Notes Requires chart.min.js (added via self.Parent.add resou"
  },
  {
    "path": "factory-report/package-chrysalistp/ObjReportChrysalisbarstacked.md",
    "title": "ObjReportChrysalisbarstacked",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportChrysalisbarstacked Renders a Chart.js stacked bar chart with one or two data series using theme colours. Report Type STACKEDBAR — set as ReportType in def report . Render Parameters are unused. Expects the query to return rows with: 0 X-axis label, 1 primary series value, and optionally 2 secondary series value. Series labels are taken from FieldNames . Returns an HTML string containing a <canvas element and Chart.js initialisation script. Notes Requires chart.min.js (added via self.Pa"
  },
  {
    "path": "factory-report/package-chrysalistp/ObjReportChrysaliskendotable.md",
    "title": "ObjReportChrysaliskendotable",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportChrysaliskendotable Renders a Kendo UI grid table with pagination and row selection from query result data. Report Type KENDOTABLE — set as ReportType in def report . Render Parameters are unused. Returns an empty string if data list is empty. Builds a JavaScript data array from all result rows and columns, then initialises a Kendo Grid with 10 rows per page (configurable to 10/20/30/50/75/100), scrolling disabled, and single-row selection. Column field names are taken from FieldNames w"
  },
  {
    "path": "factory-report/package-chrysalistp/ObjReportChrysalisprogress.md",
    "title": "ObjReportChrysalisprogress",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportChrysalisprogress Renders a multi-step progress tracker showing completed and pending steps as progress bars, with live polling for the current in-progress step. Report Type PROGRESS — set as ReportType in def report . Render Parameters ( Param1 – Param9 ) are read from self.Param1 – self.Param9 rather than the function arguments. The query must return rows of (step name, min value, max value, progress report code, target report code) . Each row renders as a labelled progress bar: compl"
  },
  {
    "path": "factory-report/package-containers/ObjReportAccordion.md",
    "title": "ObjReportAccordion",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportAccordion Renders a Bootstrap 5 accordion where each query column header becomes a panel heading and the corresponding data value becomes the panel body. Report Type ACCORDION — set as ReportType in def report . Render Parameters are unused. Column names from FieldNames are used as accordion headings (up to 50 columns, plus the last column). The first data row's values are used as panel bodies. All panels are rendered expanded ( show ). Returns an HTML string. Notes Loads Bootstrap 5 ( "
  },
  {
    "path": "factory-report/package-containers/ObjReportDash.md",
    "title": "ObjReportDash",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDash Renders a vertically stacked dashboard table where each field of each result row is displayed as a label-value pair. Report Type DASH — set as ReportType in def report . Render Parameters are unused. Iterates all rows and fields in data list , rendering each non-empty field as a two-column table row: field name on the left and processed value on the right. Field names beginning with are hidden. The report title and optional glyph icon are shown as a header row unless the report is "
  },
  {
    "path": "factory-report/package-containers/ObjReportMagicGrid.md",
    "title": "ObjReportMagicGrid",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportMagicGrid Renders a responsive MagicGrid masonry layout where each data row embeds a sub-report inside a collapsible panel. Report Type MAGICGRID — set as ReportType in def report . Render Parameters are unused at the top level but passed through to sub-reports. Each row in data list must provide: 0 report code, 1 panel title, 2 param1 for the sub-report. Sub-reports are rendered via process text(\"{report:code:param}\") . Returns an HTML string. Methods RenderPanel(title, content) Render"
  },
  {
    "path": "factory-report/package-containers/ObjReportMasonry.md",
    "title": "ObjReportMasonry",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportMasonry Renders a Bootstrap fluid grid layout where each data row defines a column span and HTML content, packed into rows of up to 12 Bootstrap columns. Report Type MASONRY — set as ReportType in def report . Render Parameters are unused. Each row in data list must provide 0 a Bootstrap column width (1–12) and 1 HTML content (processed through process text ). Rows are automatically wrapped into Bootstrap grid rows when adding a column would exceed a total width of 12. Returns an HTML s"
  },
  {
    "path": "factory-report/package-core/ObjReportActiveTabs.md",
    "title": "This report generates a set of tabs that have child reports",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "This report generates a set of tabs that have child reports Param1 to the report determines what tab is active on load Sample SQL SELECT 'tab1name' as tabname,'sampletable' as tabreport,'tab1' as tabid,'$param1$' as activetab UNION ALL SELECT 'tab2name','sampletable2','tab2','$param1$' UNION ALL SELECT 'tab3name','sampletable3','tab3','$param1$'"
  },
  {
    "path": "factory-report/package-core/ObjReportAdminLte.md",
    "title": "ObjReportAdminLte",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportAdminLte Renders a full AdminLTE 3 starter-page shell as a standalone HTML document, embedding a report content block in the body. Report Type ADMINLTE — set as ReportType in def report . Render Params are unused. Returns a complete HTML document (including <!DOCTYPE html ) styled with the AdminLTE 3 admin panel layout. The body includes a fixed sidebar, top navigation bar, and a content area that embeds the {report:test apexline} sub-report. Package logo and copyright constants are sub"
  },
  {
    "path": "factory-report/package-core/ObjReportBpmn.md",
    "title": "ObjReportBpmn",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportBpmn Renders one or more BPMN 2.0 process diagrams from XML strings using the bpmn-js viewer library. Report Type BPMN — set as ReportType in def report . Render Params are unused. Iterates over self.data list ; each row is expected to supply a BPMN XML string as its first element. Each diagram is rendered into its own viewer instance and fitted to the viewport on load. Returns an HTML fragment containing one <pre container and inline <script block per diagram. Notes Loads bpmn-js from "
  },
  {
    "path": "factory-report/package-core/ObjReportBuild.md",
    "title": "ObjReportBuild",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportBuild Build pipeline report — renders step-by-step results, compilation summary, and failure details for a single pipeline run identified by BuildGuid . Usage Browser (via ServeReport) Pass the build GUID as param1 , or a package name as param2 to load the most recent run: Email Called automatically when --notify is passed to the build pipeline CLI: Or programmatically: Data Sources - log build run — pipeline execution metadata - log build step — per-step timing and status - log build c"
  },
  {
    "path": "factory-report/package-core/ObjReportCalculation.md",
    "title": "ObjReportCalculation",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportCalculation Renders an interactive reference table of all SQL calculations in a calculation group, with syntax-highlighted SQL and resolved token values. Report Type CALCULATION — set as ReportType in def report . Render - Param1 — the CalculationGroup to display; queries def calculations WHERE CalculationGroup = Param1 ORDER BY Rank . - Param2 — optional GUID / param1 context used to resolve $guid$ and $param1$ tokens within the SQL. When provided, token values are fetched via process "
  },
  {
    "path": "factory-report/package-core/ObjReportCalculationAlt.md",
    "title": "ObjReportCalculationAlt",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportCalculationAlt Renders an interactive DMN-style decision table viewer and editor, with full hit-rule support, versioning, and role-aware editing controls. Report Type CALCULATIONALT — set as ReportType in def report . Render - Param1 — decision pack name (lowercase). Pass \"add\" to render a list of all decisions with an add-new button instead of a specific pack. - Param2 — optional version string to load a specific pack version. Returns an HTML fragment containing the decision table rend"
  },
  {
    "path": "factory-report/package-core/ObjReportChat.md",
    "title": "ObjReportChat",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportChat Renders a live two-way chat widget that polls for new messages and allows the current user to send messages to a conversation. Report Type CHAT — set as ReportType in def report . Render Expects self.data list to contain a single row with conversation id, client id . Renders a Bootstrap card with a scrollable message pane and a send box. Messages are polled every 10 seconds via axion.rpc.js RPC calls. Returns an HTML string. Methods RpcConversation(data={}) Returns last stamp, html"
  },
  {
    "path": "factory-report/package-core/ObjReportDecision.md",
    "title": "ObjReportDecision",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDecision Renders a DMN-style decision table viewer and editor for a named decision pack, with hit-rule documentation and optional version selection. Report Type DECISION — set as ReportType in def report . Render - Param1 — decision pack name (lowercase). Pass \"add\" to show a searchable index of all packs. - Param2 — optional version string. Returns an HTML fragment built from Jinja2 templates. In add-mode, renders a list of all decision packs with links and an add button. Otherwise ren"
  },
  {
    "path": "factory-report/package-core/ObjReportDecisionAnalysis.md",
    "title": "ObjReportDecisionAnalysis",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDecisionAnalysis Renders AI-generated analysis blocks produced by ObjDecisionSwitch.simulate() and stored in data decision sim analysis . Designed for both standalone viewing and embedding inside the simulation dashboard. Report Type DecisionAnalysis — set as ReportType in def report . Render - Param1 — DecisionName . - Param2 — optional Version . Empty → newest analysis available. Standalone URL: /report/decision analysis/<DecisionName . Embedding Storage Analysis blocks are stored in "
  },
  {
    "path": "factory-report/package-core/ObjReportDecisionRules.md",
    "title": "ObjReportDecisionRules",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDecisionRules Walks a decision tree from START and renders, per outcome, the chain of conditions that lead to it. Operators are highlighted so the logic is easy to scan. Report Type DecisionRules — set as ReportType in def report . Render - Param1 — DecisionName . - Param2 — optional outcome filter (e.g. O27 ). - Param3 — optional Version (defaults to MAX(Version) ). The standalone URL is /report/decision rules/<DecisionName /<outcome /<version . Embedding Email-only row cap render emai"
  },
  {
    "path": "factory-report/package-core/ObjReportDecisionSwitchSim.md",
    "title": "ObjReportDecisionSwitchSim",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDecisionSwitchSim Renders the decision-switch sim dashboard (HTML page) and the sim overview email, both reading from bloom sim {decision name} plus the AI / reconcile narrative blocks in data decision sim analysis . Report Type DecisionSwitchSim — set as ReportType in def report . Render - Param1 — DecisionName whose simulation output table to display. When omitted, renders a picker listing all decision trees in the active package. - Param2 — pass email (or mail ) to return the email-m"
  },
  {
    "path": "factory-report/package-core/ObjReportDir.md",
    "title": "ObjReportDir",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDir Renders a recursive directory listing as an HTML table showing folder path, filename, MIME type, and file size. Report Type DIR — set as ReportType in def report . Render Params are unused. Iterates over self.data list ; each row must supply a base directory path as its first element. Recursively traverses subdirectories. Returns an HTML <table with columns: Folder, File, Type, Size. Methods RenderDirDetail(DirBase, Dir=\"\") Recursively walks DirBase/Dir , emitting one <tr per filesy"
  },
  {
    "path": "factory-report/package-core/ObjReportDistribution.md",
    "title": "ObjReportDistribution",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDistribution Renders a horizontal-bar distribution chart for any (source table, column) pair. Designed to be used both standalone (via its own URL) and embedded inside other reports. Report Type Distribution — set as ReportType in def report . Render - Param1 — source table (e.g. bloom sim hc col bl v1 ). - Param2 — column to group by (e.g. Outcome ). - Param3 — optional WHERE clause body (no leading WHERE ). The standalone URL is /report/distribution/<source table /<column /<where . Em"
  },
  {
    "path": "factory-report/package-core/ObjReportDocumentation.md",
    "title": "ObjReportDocumentation",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDocumentation Reusable base class for documentation-style reports with sidebar navigation, collapsible panels, and PDF export. Overview Class : Report in factory.report/package.core/ObjReportDocumentation.py Inherits from : ObjData.ObjData Companion YAML : ObjReportDocumentation.yaml ObjReportDocumentation provides a palette-driven documentation layout suitable for any report that presents structured content in a browsable, printable format. It handles all shared concerns (CSS grid layo"
  },
  {
    "path": "factory-report/package-core/ObjReportDragula.md",
    "title": "ObjReportDragula",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDragula Renders a two-column drag-and-drop interface for reordering items between a left and right container. Report Type DRAGULA — set as ReportType in def report . Render Params are unused. Populates the left column from self.data list (each row's first element is used as the item label). The right column starts empty. Returns an HTML fragment with inline CSS and a Dragula script block. Options Options read from self. Options JSON: Key Effect --- --- left header Heading text for the l"
  },
  {
    "path": "factory-report/package-core/ObjReportEditClassification.md",
    "title": "ObjReportEditClassification",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEditClassification Renders an interactive Cytoscape.js graph editor for viewing and editing classification tree structures stored in def classification node . Report Type EDITCLASSIFICATION — set as ReportType in def report . Render Param1 (via self.Param1 ) is the ClassificationName to load. Returns an HTML fragment containing a Cytoscape canvas with an edit frame and inline JavaScript. Inherits all graph rendering from ObjReportEditTree . Notes Extends ObjReportEditTree.Report . Uses "
  },
  {
    "path": "factory-report/package-core/ObjReportEditTable.md",
    "title": "ObjReportEditTable",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEditTable Renders an AG Grid-based editable table that loads data from SQL, supports inline editing with an optional Ace SQL editor, and saves changes via a transactional delete-then-insert RPC. Report Type EDITTABLE — set as ReportType in def report . Render Params are passed through to the RPC on submit. The report reads self. Query , which must contain three SQL statements separated by --- : a SELECT query, a DELETE query, and an INSERT query (in that order). Returns an HTML fragment"
  },
  {
    "path": "factory-report/package-core/ObjReportEditTree.md",
    "title": "ObjReportEditTree",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEditTree Base class for interactive Cytoscape.js graph editors; provides node/edge rendering, context menus, position persistence, and RPC scaffolding for tree and workflow diagrams. Report Type EDITTREE — set as ReportType in def report . Render Param1 (via self.Param1 ) is the workflow or tree name to load. Returns an HTML fragment containing a Cytoscape canvas, an edit frame with modal dialogs, and the full Cytoscape JavaScript initialisation block. Subclasses override read object() "
  },
  {
    "path": "factory-report/package-core/ObjReportEditWorkflow.md",
    "title": "ObjReportEditWorkflow",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEditWorkflow Renders a fully interactive Cytoscape.js workflow editor that supports creating, editing, and deleting nodes, branches, gates, calculations, services, alerts, notifications, SMS, channels, and arbitrary table inserts. Report Type EDITWORKFLOW — set as ReportType in def report . Render Param1 (via self.Param1 ) is the workflow name (uppercased). Returns an HTML fragment with the Cytoscape graph, a calculation-group editor panel, and the full JavaScript initialisation. All wo"
  },
  {
    "path": "factory-report/package-core/ObjReportEmail.md",
    "title": "ObjReportEmail",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEmail Renders query results as a plain HTML email table with alternating row styles, right-aligned numeric columns, and an automatic column-total footer row. Report Type EMAIL — set as ReportType in def report . Render Params are unused. Iterates over self.data list using self.FieldNames . Columns whose field name starts with are treated as numeric: right-aligned and summed for the footer. Returns an HTML string containing a <table styled for email delivery (fixed 700px width, inline CS"
  },
  {
    "path": "factory-report/package-core/ObjReportEmailDash.md",
    "title": "ObjReportEmailDash",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportEmailDash Renders query results as a two-column key-value HTML table suitable for email, with header colours sourced from the active package palette. Report Type EMAILDASH — set as ReportType in def report . Render Params are unused. For each column in self.data list , renders one row with the field name on the left and the field value on the right. Field names containing are split; the part before is used as the display label. All values are passed through process text . Returns an HTM"
  },
  {
    "path": "factory-report/package-core/ObjReportFeatureStoreSim.md",
    "title": "ObjReportFeatureStoreSim",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportFeatureStoreSim Renders an interactive FeatureStore simulation dashboard that runs a feature computation job in a background thread and streams progress logs to the browser. Report Type FEATURESTORESIM — set as ReportType in def report . Render - Param1 — FeatureCode identifying which feature set to simulate. - Param2 — Package name (uses active package if empty). Returns an HTML dashboard page with a progress bar, live log panel, feature list, and results table. The simulation is launc"
  },
  {
    "path": "factory-report/package-core/ObjReportFooTable.md",
    "title": "ObjReportFooTable",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportFooTable Renders a paginated, filterable, and sortable FooTable that auto-refreshes its data via RPC on a configurable interval. Report Type FOOTABLE — set as ReportType in def report . Render Params are unused in rendering; Param1 is forwarded to RpcGetlist via the polling script. Column headers are derived from self.FieldNames ; names containing are split and the suffix is appended as a second word. Returns an HTML <table with an embedded <script block that polls for data every self. "
  },
  {
    "path": "factory-report/package-core/ObjReportForm.md",
    "title": "ObjReportForm",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportForm Renders a WebForm by either loading it directly via WebForm or by emitting a JavaScript axion formload call that fetches the form asynchronously. Report Type FORM — set as ReportType in def report . Render - Param1 — form/report code. - Param2 — form GUID or primary parameter. - Param3 — secondary form parameter; appended to the URL path when DO DIRECT RENDER is False . In indirect mode (default, DO DIRECT RENDER = False ), returns a <div containing a <script tag that calls axion f"
  },
  {
    "path": "factory-report/package-core/ObjReportJson.md",
    "title": "ObjReportJson",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportJson Renders query results as a JSON string, mapping field names to values for each row. Report Type JSON — set as ReportType in def report . Render Params are unused. Iterates over self.data list , building an OrderedDict keyed by row number. Each row is itself an OrderedDict of lowercased field name to process text -resolved value. Returns the serialised JSON string directly (not wrapped in HTML). Notes Output is a plain JSON string, not an HTML fragment. Field names are lowercased in"
  },
  {
    "path": "factory-report/package-core/ObjReportKeycloakStatus.md",
    "title": "ObjReportKeycloakStatus",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportKeycloakStatus Renders a Keycloak resilience status dashboard showing server availability, circuit breaker state, sync queue depth, active session statistics, and recent errors. Report Type KEYCLOAKSTATUS — set as ReportType in def report . Render - Param1 — package name (uses active package if empty). - Param2 — report type: \"summary\" (default), \"detailed\" , or \"sync queue\" . Returns a self-contained HTML fragment with embedded CSS. Summary mode renders status cards for server availabi"
  },
  {
    "path": "factory-report/package-core/ObjReportLeaflet.md",
    "title": "ObjReportLeaflet",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportLeaflet Renders an interactive Leaflet.js map with circles and markers sourced from query data, with live colour and popup updates via RPC polling every 4 seconds. Report Type LEAFLET — set as ReportType in def report . Render Params are unused. Expects self.data list rows with columns: Latitude , Longitude , CircleColour , FillColour , Opacity , Radius , Note , and optionally Type ( \"marker\" to use a pin instead of a circle). The initial map centre and zoom are taken from self. Options"
  },
  {
    "path": "factory-report/package-core/ObjReportMarkdown.md",
    "title": "ObjReportMarkdown",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportMarkdown Renders Markdown text from query data as HTML, with Axion template tokens resolved after conversion. Report Type MARKDOWN — set as ReportType in def report . Render Params are unused. Iterates over self.data list ; each row's first element is treated as a Markdown string. Converts each string to HTML using the markdown library, then passes the result through process text to resolve any Axion $token$ references. Returns the concatenated HTML. Notes Depends on the markdown Python"
  },
  {
    "path": "factory-report/package-core/ObjReportMermaid.md",
    "title": "ObjReportMermaid",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportMermaid Renders one or more Mermaid diagrams from query data, with drag-to-pan and scroll-to-zoom controls, and optional live RPC refresh. Report Type MERMAID — set as ReportType in def report . Render Params are unused. Each row in self.data list produces one diagram. Columns 2 and 3 of each row supply optional pre-HTML and post-HTML content rendered via process text . When self. Options JSON contains a \"refresh\" key (milliseconds), the diagram is re-fetched via RPC at that interval an"
  },
  {
    "path": "factory-report/package-core/ObjReportMermaidIcon.md",
    "title": "ObjReportMermaidIcon",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportMermaidIcon Extends ObjReportMermaid to additionally register Iconify icon packs (logos, vscode-icons, mingcute) for use in Mermaid diagrams. Report Type MERMAIDICON — set as ReportType in def report . Render Delegates fully to ObjReportMermaid.Render , then appends a <script block that calls mermaid.registerIconPacks to load the logos , vscode-icons , and mingcute Iconify icon packs from unpkg. Params have the same meaning as in ObjReportMermaid . Notes Icon packs are fetched at runtim"
  },
  {
    "path": "factory-report/package-core/ObjReportMermaidSlide.md",
    "title": "ObjReportMermaidSlide",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportMermaidSlide Renders a Mermaid slideshow that cycles through multiple diagrams in sequence, advancing on a timer or on click, with Iconify icon pack support. Report Type MERMAIDSLIDE — set as ReportType in def report . Render Params are unused. All rows in self.data list are loaded as slide content (each row's first element is a Mermaid graph string). The first slide is displayed initially. Subsequent slides are cycled by calling setMermaid and incrementing a modular index. Returns an H"
  },
  {
    "path": "factory-report/package-core/ObjReportMessageNotifications.md",
    "title": "ObjReportMessageNotifications",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportMessageNotifications Renders a navbar bell-icon notification dropdown showing unread and total message counts for the current user, with live polling every 5 seconds. Report Type MESSAGENOTIFICATIONS — set as ReportType in def report . Render Param1 is forwarded to the polling RPC. Reads $user$ from process text to identify the current user. Returns an HTML <li class=\"nav-item dropdown\" fragment suitable for embedding in a Bootstrap navbar. The dropdown shows unread and total message co"
  },
  {
    "path": "factory-report/package-core/ObjReportMessageTimeline.md",
    "title": "ObjReportMessageTimeline",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportMessageTimeline Renders a vertically grouped AdminLTE timeline of messages for the current user, with automatic refresh every 10 seconds. Report Type MESSAGETIMELINE — set as ReportType in def report . Render Param1 is forwarded to the RPC polling call. Reads $user$ from process text . The query result must include columns mapped via self.FieldNames to the semantic names Date , Time , Icon , Message , Header , and Footer . Messages are grouped by date with a date-label separator. Return"
  },
  {
    "path": "factory-report/package-core/ObjReportMinMaxTable.md",
    "title": "ObjReportMinMaxTable",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportMinMaxTable Renders a summary statistics table showing the minimum, maximum, and average value for each column in a query result, with automatic type detection per column (integer, float, date, string, or null). Report Type MINMAXTABLE — set as ReportType in def report . Render All three params (plus user , usergroups , usercompany ) are substituted into self. Query via $param1$ , $param2$ , $param3$ , $user$ , $usergroups$ , $usercompany$ placeholders. Data is fetched via RpcGetlist on"
  },
  {
    "path": "factory-report/package-core/ObjReportPowerBIEmbed.md",
    "title": "ObjReportPowerBIEmbed",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportPowerBIEmbed Renders an embedded Power BI report using an MSAL-obtained embed token, with an org-level row-level security filter applied for the current user. Report Type POWERBIEMBED — set as ReportType in def report . Render Params are unused. Fetches an embed token and embed URL from the Power BI REST API via PbiEmbedService , then queries sys user to obtain the current user's store (org level) and Usergroups . Applies a basic filter on org level descedent.ORG LEVEL NO . Users in SWI"
  },
  {
    "path": "factory-report/package-core/ObjReportProgressbar.md",
    "title": "ObjReportProgressbar",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportProgressbar Renders an auto-updating Bootstrap progress bar whose value is fetched from a SQL query via RPC on a configurable interval. Report Type PROGRESSBAR — set as ReportType in def report . Render Params are unused. Returns an HTML fragment containing a Bootstrap .progress bar and a polling <script block. The bar's aria-valuenow and width are updated on each poll cycle. Methods RpcGetseries(Data) Executes self. Query and returns a single scalar value representing the current progr"
  },
  {
    "path": "factory-report/package-core/ObjReportPromotionFlip.md",
    "title": "ObjReportPromotionFlip",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportPromotionFlip Renders a Swiper.js image slideshow for a promotion, reading slide images from the filesystem and footer images with configurable links from def promotion . Report Type PROMOTIONFLIP — set as ReportType in def report . Render Param1 (via self.Param1 ) is the PromotionCode used to query def promotion . Defaults to \"demo\" if empty. Reads slide images from {LOCAL DOCUMENTS}/promotion/slides/ and footer images from {LOCAL DOCUMENTS}/promotion/footer/ , both sorted alphabetical"
  },
  {
    "path": "factory-report/package-core/ObjReportRaci.md",
    "title": "ObjReportRaci",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportRaci Renders a RACI matrix for any source table that has Raci columns. Designed to be used both standalone (via its own URL) and embedded inside other reports. Report Type Raci — set as ReportType in def report . Render - Param1 — source table (e.g. def decision tree ). - Param2 — key value (e.g. hc col bl v1 ). - Param3 — optional context description used by the AI generator when no cached RACI is found. The standalone URL is /report/raci/<source table /<key value . Embedding in anothe"
  },
  {
    "path": "factory-report/package-core/ObjReportReview.md",
    "title": "ObjReportReview",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportReview Base class for review-type reports that render SQL statements with syntax highlighting and variable tracking. Report Type REVIEW — set as ReportType in def report . Render Returns an empty string. This class is a base intended to be subclassed by ObjReportReviewCalculation and ObjReportReviewWorkflow . Methods scan variables(sql) Scans a SQL string for $variable$ placeholders and returns a list of matched variable names. render sql(calculation sql, rank, context, used vars, resul"
  },
  {
    "path": "factory-report/package-core/ObjReportReviewCalculation.md",
    "title": "ObjReportReviewCalculation",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportReviewCalculation Renders a developer review of a named calculation group, showing each SQL step with variable tracking and syntax highlighting. Report Type REVIEWCALCULATION — set as ReportType in def report . Render - Param1 — calculation group name (lowercased, matched against def calculation.CalculationGroup ). - Param2 — optional tracking GUID; when provided, the report fetches the most recent resolved SQL and return values from track calculations and overlays them on the rendered "
  },
  {
    "path": "factory-report/package-core/ObjReportReviewWorkflow.md",
    "title": "ObjReportReviewWorkflow",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportReviewWorkflow Renders a developer review of a named workflow, walking each node and delegating CALC nodes to ObjReportReviewCalculation . Report Type REVIEWWORKFLOW — set as ReportType in def report . Render - Param1 — workflow name (lowercased, matched against def workflow.WorkflowName ). - Param2 — unused version parameter (reserved). Returns an HTML string showing a metadata table of all versions of the workflow, followed by a walkthrough of each node in the active version. Methods "
  },
  {
    "path": "factory-report/package-core/ObjReportRss.md",
    "title": "ObjReportRss",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportRss Renders an RSS feed as a Bootstrap-styled HTML table with thumbnail images, titles, dates, and descriptions. Report Type RSS — set as ReportType in def report . Render No parameters are used. Iterates over self.data list , expecting each row to contain (Guid, Title, PubDate, Description) . For each row, checks whether a local file documents/rss/{Guid} rss icon.jpeg exists; if so, serves it via /rssimage/ ; otherwise falls back to /image/blank rss icon.jpg . Returns an HTML string co"
  },
  {
    "path": "factory-report/package-core/ObjReportSankeyChart.md",
    "title": "ObjReportSankeyChart",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSankeyChart Renders a Sankey flow chart using Chart.js with the chartjs-chart-sankey plugin. Report Type SANKEYCHART — set as ReportType in def report . Render No parameters are used. Returns a JavaScript snippet (Chart.js new Chart(ctx, ...) call) configured with hardcoded sample data as a placeholder. Registers chart.min.js and chartjs-chart-sankey.js as required scripts. Notes - The current implementation returns raw JavaScript rather than a complete HTML element; integration with a "
  },
  {
    "path": "factory-report/package-core/ObjReportSimpleTable.md",
    "title": "ObjReportSimpleTable",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSimpleTable Renders a self-refreshing table that fetches its data via RPC and replaces its container HTML only when the content changes. Report Type SIMPLETABLE — set as ReportType in def report . Render No parameters affect the query directly. Returns an HTML div containing JavaScript that calls RemoteProcedureCall to invoke RpcGettable on a configurable interval, updating the container only when the returned HTML differs from the previous value. Methods RpcGettable(Data) Server-side R"
  },
  {
    "path": "factory-report/package-core/ObjReportSipButton.md",
    "title": "ObjReportSipButton",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSipButton Renders a SIP call button that initiates a browser-based VoIP call using JsSIP. Report Type SIPBUTTON — set as ReportType in def report . Render No parameters are used. Reads the phone number from the first column of the first row in self.data list . Returns an HTML <button labelled with that number, plus initialization JavaScript that fetches SIP credentials via RPC and passes them to SipCallManager . Methods RpcGetsipcredentials(data) RPC handler that calls ObjSip.get creden"
  },
  {
    "path": "factory-report/package-core/ObjReportSipSmartTable.md",
    "title": "ObjReportSipSmartTable",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSipSmartTable Renders a SmartTable with inline SIP call buttons for columns named sip number , phone number , or phone . Report Type SIPSMARTABLE — set as ReportType in def report . Render - Param1 , Param2 , Param3 — passed through to ObjReportSmartTable.Render for query substitution. Returns the full SmartTable HTML combined with the SIP initialization block and a replacement updateTable JavaScript function. The replacement function detects columns named sip number , phone number , or"
  },
  {
    "path": "factory-report/package-core/ObjReportSmartTable.md",
    "title": "ObjReportSmartTable",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSmartTable Renders a dynamically refreshing table built client-side from JSON data fetched via RPC, with configurable column labels, widths, and alignment. Report Type SMARTTABLE — set as ReportType in def report . Render - Param1 , Param2 , Param3 — substituted into $param1$ , $param2$ , $param3$ placeholders in the query, passed to RpcGetlist . Returns an HTML div containing JavaScript that calls RemoteProcedureCall on a timer to invoke RpcGetlist , then builds a jQuery-based <table i"
  },
  {
    "path": "factory-report/package-core/ObjReportSmartTablePT.md",
    "title": "ObjReportSmartTablePT",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSmartTablePT Renders a dynamically refreshing table built client-side from JSON data fetched via RPC, with process text applied to query placeholders before execution. Report Type SMARTTABLEPT — set as ReportType in def report . Render - Param1 , Param2 , Param3 — substituted into $param1$ , $param2$ , $param3$ placeholders in the query, passed to RpcGetlist . Returns an HTML div containing JavaScript that calls RemoteProcedureCall on a timer to invoke RpcGetlist , then builds a jQuery-"
  },
  {
    "path": "factory-report/package-core/ObjReportSmartValue.md",
    "title": "ObjReportSmartValue",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSmartValue Renders a single auto-refreshing value fetched from the database via RPC and displayed in an inline div. Report Type SMARTVALUE — set as ReportType in def report . Render - Param1 , Param2 , Param3 — substituted into $param1$ , $param2$ , $param3$ placeholders in the query, passed to RpcGetlist . Returns an HTML <div pre-populated with the current value from self.data list 0 0 , followed by a <script that polls RpcGetlist via RemoteProcedureCall on a timer and replaces the di"
  },
  {
    "path": "factory-report/package-core/ObjReportSpinAndWin.md",
    "title": "ObjReportSpinAndWin",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSpinAndWin Renders an interactive prize wheel (spin-to-win) that animates to a pre-determined winning segment on spin. Report Type SPINANDWIN — set as ReportType in def report . Render No parameters are used. Expects self.data list to contain rows of (reward label, winning label) . A row is considered the winner when reward label == winning label . Returns a full HTML block including the canvas element and Winwheel JavaScript configured to stop at the winning segment. Notes - Loads Winw"
  },
  {
    "path": "factory-report/package-core/ObjReportString.md",
    "title": "ObjReportString",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportString Renders a plain string value from the first column of the first query row, or falls back to the raw query text when no rows are returned. Report Type STRING — set as ReportType in def report . Render No parameters are used directly. Returns self.data list 0 0 as a string if data is available; otherwise returns the raw self. Query string. No HTML wrapping is applied. Notes - Uses axion.rpc.js (loaded but not actively used in the current render path). - The Options JSON is parsed b"
  },
  {
    "path": "factory-report/package-core/ObjReportStringPT.md",
    "title": "ObjReportStringPT",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportStringPT Renders a string value from the query result or from executing process text on the query itself, with optional SQL execution when the query contains a SELECT statement. Report Type STRINGPT — set as ReportType in def report . Render No parameters are used directly. Behaviour depends on self. Query content and Options : 1. If Options \"ProcessText\" is \"TRUE\" , \"Y\" , or \"YES\" , process text is applied to the query string before further evaluation. 2. If the query contains the word"
  },
  {
    "path": "factory-report/package-core/ObjReportSurvey.md",
    "title": "ObjReportSurvey",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSurvey Renders a survey page editor showing the questions belonging to a survey page, with inline add/edit/delete buttons rendered via Jinja2 and process text . Report Type SURVEY — set as ReportType in def report . Render - Param1 — page GUID or question GUID; used to resolve the parent survey page from def survey pages / def survey questions . Returns an HTML table listing all questions on the resolved page with their type, end-section flag, and required flag. Each row includes edit a"
  },
  {
    "path": "factory-report/package-core/ObjReportTable.md",
    "title": "ObjReportTable",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTable Renders query results as a Bootstrap-styled HTML table with configurable per-column special formats. Report Type TABLE — set as ReportType in def report . Render No parameters affect the query. Iterates over self.data list and renders up to 20 columns and 50 field names. Column headers are derived from self.FieldNames ; a pipe character in the field name ( FieldName format ) sets a special format for that column. Returns an HTML string containing a <table wrapped in a Bootstrap ro"
  },
  {
    "path": "factory-report/package-core/ObjReportTableAlert.md",
    "title": "ObjReportTableAlert",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTableAlert Renders a searchable HTML table where the first column controls per-row background colour alerts. Report Type TABLEALERT — set as ReportType in def report . Render No parameters affect the query. Renders up to 20 columns from self.data list . The first column is treated as a colour code: when non-empty, it is used as the CSS background-color of the first visible cell in that row, with white text. Column headers start from the second field ( self.FieldNames 1: ). A live search"
  },
  {
    "path": "factory-report/package-core/ObjReportTableShowHide.md",
    "title": "ObjReportTableShowHide",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTableShowHide Renders a dynamically refreshing table with toggle buttons that show or hide individual columns. Report Type TABLESHOWHIDE — set as ReportType in def report . Render - Param1 , Param2 , Param3 — substituted into $param1$ , $param2$ , $param3$ placeholders in the query, passed to RpcGetlist . Returns an HTML block consisting of a Bootstrap nav-pills row of column toggle buttons (one per column, excluding those in hideFilter ), followed by the table container and the JavaScr"
  },
  {
    "path": "factory-report/package-core/ObjReportTableSort.md",
    "title": "ObjReportTableSort",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTableSort Renders a server-side-populated, client-sortable HTML table using the DataTables jQuery plugin. Report Type TABLESORT — set as ReportType in def report . Render No parameters are used. Renders self.data list and self.FieldNames into a Bootstrap-styled <table with alternating odd / even row classes and DataTables column sort controls. Returns the HTML string including an inline <script that initialises DataTables with responsive layout. Notes - Requires DataTables to be availab"
  },
  {
    "path": "factory-report/package-core/ObjReportTableSortPT.md",
    "title": "ObjReportTableSortPT",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTableSortPT Renders a sortable HTML table using DataTables, re-executing the query with process text substitution and supporting {button:...} macros in query values. Report Type TABLESORTPT — set as ReportType in def report . Render No parameters are used. Before rendering, self. Query is processed through ProcessText , with any {button:...} macro strings temporarily replaced to prevent them from being corrupted by text substitution. The query is then executed to populate self.data list"
  },
  {
    "path": "factory-report/package-core/ObjReportTablesearch.md",
    "title": "ObjReportTablesearch",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTablesearch Renders a searchable HTML table with a live client-side text filter input and configurable per-column options. Report Type TABLESEARCH — set as ReportType in def report . Render No parameters affect the query. Renders self.data list and self.FieldNames into a Bootstrap table-bordered table-sm table-hover table preceded by a full-width search input. The search JavaScript filters rows in real time across all cell text content including nested child elements. Returns the comple"
  },
  {
    "path": "factory-report/package-core/ObjReportTabs.md",
    "title": "ObjReportTabs",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTabs Renders a dynamic Bootstrap tab bar that loads a child report into a content area when each tab is clicked. Report Type TABS — set as ReportType in def report . Render - Param1 — substituted into $param1$ in the query, passed to RpcGetlist . Returns an HTML block containing two divs (tab bar and tab content), plus JavaScript that calls RpcGetlist to populate the tab bar from the query result and then loads the active tab's report via a GET request to /report/{target}/{param1}/ . Me"
  },
  {
    "path": "factory-report/package-core/ObjReportTabulator.md",
    "title": "ObjReportTabulator",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTabulator Renders a feature-rich data table using the Tabulator library, with support for pivoting, grouping, pagination, column filters, and automatic column type detection. Report Type TABULATOR — set as ReportType in def report . Render No parameters affect the query directly. Reads self.data list and self.FieldNames , applies optional pivoting and date/decimal conversion, detects column types, builds Tabulator column definitions, and returns a complete HTML string including the Tabu"
  },
  {
    "path": "factory-report/package-core/ObjReportTicker.md",
    "title": "ObjReportTicker",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTicker Renders a scrolling news ticker panel using the Bootstrap News jQuery plugin. Report Type TICKER — set as ReportType in def report . Render No parameters are used. Iterates over self.data list , expecting each row to contain (image url, image width, text, link url, link text) . Returns an HTML block with a Bootstrap panel containing a <ul class='news' list and the bootstrapNews initialisation script. Options If self. Options is non-empty, its raw content is passed directly as the"
  },
  {
    "path": "factory-report/package-core/ObjReportWidget.md",
    "title": "ObjReportWidget",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportWidget Renders a hardcoded AdminLTE small-box widget stub (placeholder implementation). Report Type WIDGET — set as ReportType in def report . Render No parameters are used. Returns a hardcoded AdminLTE small-box bg-success widget HTML block showing a static \"53% Bounce Rate\" value. Dynamic data binding is not implemented. Notes - This report is a stub; the actual ticker/newsbox logic above the hardcoded widget is overwritten by the static HTML at the end of Render . Dynamic data from s"
  },
  {
    "path": "factory-report/package-core/ObjReportWorkflowAnimation.md",
    "title": "ObjReportWorkflowAnimation",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportWorkflowAnimation Renders an interactive Cytoscape.js workflow diagram with animated edge particles that reflect real-time or simulated branch traffic. Report Type WORKFLOWANIMATION — set as ReportType in def report . Render - Param1 — workflow name; used to load the workflow graph from def workflow / def workflows . - Param2 — simulation GUID (only used when simulation: true in options). Returns a full Cytoscape.js diagram with all node types styled, plus animated particle effects on e"
  },
  {
    "path": "factory-report/package-core/ObjReportWorkflowDiagram.md",
    "title": "ObjReportWorkflowDiagram",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportWorkflowDiagram Renders a static Mermaid.js left-to-right workflow flowchart as an inline image fetched from the mermaid.ink rendering service. Report Type WORKFLOWDIAGRAM — set as ReportType in def report . Render - Param1 — workflow name; used to query referencedb.axion.def workflows for node GUIDs, types, direct branches, and possible branches. Builds a Mermaid graph LR definition from the workflow nodes, encodes it as base64, and returns an <img tag pointing to https://mermaid.ink/i"
  },
  {
    "path": "factory-report/package-core/ObjReportWorkflowSim.md",
    "title": "ObjReportWorkflowSim",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportWorkflowSim Renders a workflow simulation interface with a dynamic input form (supporting scheduler, web form, and webhook modes) combined with an MQTT event flow view of recent workflow runs. Report Type WORKFLOWSIM — set as ReportType in def report . Render - Param1 — workflow name (required). - Param2 — optional header/title override. - Param3 — comma-separated list of simulation modes to show: scheduler , form , webhook (default: all three). Returns a combined HTML block with: 1. A "
  },
  {
    "path": "factory-report/package-core/ObjReportWorkflowdata.md",
    "title": "ObjReportWorkflowdata",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportWorkflowdata Renders a timeline view of a workflow's nodes, embedding the detail of each CALC, IMPORT, EXPORT, or WEBHOOK step using the corresponding review sub-report. Report Type WORKFLOWDATA — set as ReportType in def report . Render - Param1 — workflow name; used to query def workflows for active nodes. Returns an AdminLTE timeline HTML block ( <ul class='timeline' ). Each node is rendered as a timeline item with a Font Awesome icon indicating its type. CALC nodes delegate to ObjRe"
  },
  {
    "path": "factory-report/package-core/ObjReportWorkvisual.md",
    "title": "ObjReportWorkvisual",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportWorkvisual Renders an interactive Cytoscape.js workflow graph for a named workflow, with colour-coded edges weighted by historical transition frequency and draggable nodes whose positions are persisted via RPC. Report Type Workvisual — set as ReportType in def report . Render Param1 — the WorkflowName to visualise. Returns an HTML fragment containing a fixed-size Cytoscape canvas (1000×1000 px), inline styles, and a <script block that initialises the graph. Methods EndpointRaw(Param1, P"
  },
  {
    "path": "factory-report/package-core/ObjReportXml.md",
    "title": "ObjReportXml",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportXml Renders query results as a structured XML document, with each row wrapped in a <line element and column names as child tags. Report Type XML — set as ReportType in def report . Render No parameters affect the query. Iterates over self.data list , using self.FieldNames as XML tag names (lowercased). Each row becomes a <line element nested under a <data root. Cell values are passed through process text . Returns the raw XML string (not wrapped in HTML). Notes - Uses xmltodict.unparse "
  },
  {
    "path": "factory-report/package-core/ObjReportYaml.md",
    "title": "ObjReportYaml",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportYaml Renders query results as a YAML document, with each row represented as a numbered mapping of lowercased column names to values. Report Type YAML — set as ReportType in def report . Render No parameters affect the query. Iterates over self.data list , using self.FieldNames as YAML keys (lowercased). Each row is stored under an integer key (1-based) in an OrderedDict . Cell values are passed through process text . Returns the raw YAML string (not wrapped in HTML). Notes - Uses yaml.d"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportApexBar.md",
    "title": "ObjReportApexBar",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportApexBar Renders a single-series ApexCharts bar chart using colours sourced from the FullHouse colour palette. Report Type Promotion — set as ReportType in def report . Render No parameters are used. The chart data is taken from self.data list , where each row supplies an x-value (column 0) and a y-value (column 1). Returns an HTML string containing a container div and an inline <script block. Notes Requires the apexcharts/apexcharts resource script. Chart colours are resolved at runtime"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportApexBarLine.md",
    "title": "ObjReportApexBarLine",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportApexBarLine Renders a combined ApexCharts bar-and-line chart by splitting the data list in half — the first half becomes a column series and the second half becomes a line series. Report Type Promotion — set as ReportType in def report . Render No parameters are used. The query result must contain at least three columns: a series label (column 0), an x-axis value (column 1), and a y-axis value (column 2). The field names for columns 1 and 2 are used as the x-axis and y-axis titles respe"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportApexBarLineDuo.md",
    "title": "ObjReportApexBarLineDuo",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportApexBarLineDuo Renders a combined ApexCharts bar-and-line chart with dual y-axes, splitting the data list in half between a column series and a line series. Report Type Promotion — set as ReportType in def report . Render No parameters are used. The query result must contain at least three columns: a series label (column 0), an x-axis value (column 1), and a y-axis value (column 2). The data list is split at its midpoint; the first half drives the column series and the second half drive"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportApexLine.md",
    "title": "ObjReportApexLine",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportApexLine Renders a single-series ApexCharts smooth line chart using colours sourced from the FullHouse colour palette. Report Type Promotion — set as ReportType in def report . Render No parameters are used. The chart data is taken from self.data list , where each row supplies an x-value (column 0) and a y-value (column 1). Returns an HTML string containing a chart div and an inline <script block. Notes Requires the apexcharts/apexcharts resource script. Colours are resolved from fullho"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportApexMultiArea.md",
    "title": "ObjReportApexMultiArea",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportApexMultiArea Renders a multi-series ApexCharts area chart, grouping data rows by series name and applying FullHouse palette colours. Report Type Promotion — set as ReportType in def report . Render No parameters are used. The query must return three columns: series name (column 0), x-axis value (column 1), and y-axis value (column 2). Field names at indices 1 and 2 are used as the x-axis and y-axis titles. Returns an HTML string with an inline <script block. Options Options read from s"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportApexMultiLine.md",
    "title": "ObjReportApexMultiLine",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportApexMultiLine Renders a multi-series ApexCharts smooth line chart, grouping data rows by series name. Report Type Promotion — set as ReportType in def report . Render No parameters are used. The query must return three columns: series name (column 0), x-axis value (column 1), and y-axis value (column 2). Field names at indices 1 and 2 are used as the x-axis and y-axis titles. Returns an HTML string with an inline <script block. Notes Requires the apexcharts/apexcharts resource script. E"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportApexMultiType.md",
    "title": "ObjReportApexMultiType",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportApexMultiType Renders a multi-series ApexCharts line chart where each unique series name in the data becomes a separate series, without axis label configuration. Report Type Promotion — set as ReportType in def report . Render No parameters are used. The query must return three columns: series name (column 0), x-axis value (column 1), and y-axis value (column 2). Returns an HTML string containing a chart div and an inline <script block. Notes Requires the apexcharts/apexcharts resource "
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportApexStacked.md",
    "title": "ObjReportApexStacked",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportApexStacked Renders a stacked ApexCharts bar chart by pivoting data rows into named series grouped along a sorted x-axis. Report Type Apex Stacked — set as ReportType in def report . Render No parameters are used. The query must return three columns: x-axis category (column 0), series label (column 1), and numeric value (column 2). Field names at indices 0 and 2 are used as the x-axis and y-axis titles respectively. The x-axis categories are sorted before rendering. Returns an HTML stri"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportBootstrapCard.md",
    "title": "ObjReportBootstrapCard",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportBootstrapCard Renders a single Bootstrap panel card displaying the first value from the query result, with the last field name as the card heading. Report Type Bootstrap 5 card — set as ReportType in def report . Render No parameters are used. The report reads self.data list 0 0 for the card body content, and uses the last field name in self.FieldNames as the heading text. Returns an HTML string. Options Options read from self. Options JSON. Key Effect --- --- (raw value) Sets the Boots"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportDebiCheckDashboard.md",
    "title": "ObjReportDebiCheckDashboard",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDebiCheckDashboard Renders a static Bootstrap grid dashboard layout for the DebiCheck module, containing placeholder panels for KPI widgets and embedded report references. Report Type Debicheck Dashbaord — set as ReportType in def report . Render No parameters are used. Returns a hardcoded HTML string containing a multi-row Bootstrap container-fluid layout. The layout includes placeholders referencing report:CustomersHeatmap and report:DebicheckHeatmap . Notes This report renders static"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportDebiCheckHeatmap.md",
    "title": "ObjReportDebiCheckHeatmap",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDebiCheckHeatmap Renders an ApexCharts heatmap chart showing DebiCheck data organised by day of the week, using only the primary palette colour. Report Type Promotion — set as ReportType in def report . Render No parameters are used. Each row in self.data list represents one series (e.g. a week or time period); column 0 is the series name and column 1 is a comma-separated string of seven values, one per day of the week (Monday through Sunday). The data list is reversed before rendering "
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportDebitOrdersLineGraph.md",
    "title": "ObjReportDebitOrdersLineGraph",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDebitOrdersLineGraph Renders a two-series ApexCharts line graph comparing successful and unsuccessful debit order counts by splitting the data list in half. Report Type Promotion — set as ReportType in def report . Render No parameters are used. The data list is split at its midpoint; the first half provides the \"Successfull\" series and the second half provides the \"Unsuccessfull\" series. Each row supplies an x-value (column 0) and a y-value (column 1). Returns an HTML string with an in"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportFHclient.md",
    "title": "ObjReportFHclient",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportFHclient Renders a FullHouse client account statement view, displaying account summary, contract transactions, settlement amounts, and a PayFast payment link for the amount due. Report Type PaymentReport — set as ReportType in def report . Render Param1 is the account number (first 10 characters are used as the lookup key). Returns an HTML string styled as a Bootstrap invoice section with transaction tables per contract. Methods ComputeSettle(Contract) Invokes the {fhsettlement:Contract"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportFHpayment.md",
    "title": "ObjReportFHpayment",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportFHpayment Renders a FullHouse customer account statement as a Bootstrap invoice view, including account summary, contract transaction details, settlement values, and a PayFast payment link. Report Type PaymentReport — set as ReportType in def report . Render Param1 is the account number (first 10 characters used as the lookup key). Returns an HTML string. Data is read from trader.meta statement rolling . Adjusts font sizes and border styles when self.Param9 == \"pdf\" . Methods ComputeSet"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportFHpaymentcurrent.md",
    "title": "ObjReportFHpaymentcurrent",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportFHpaymentcurrent Renders a FullHouse monthly account statement as a formatted HTML email template, with a Code 128 barcode, banking details, and per-contract transaction lists including opening and closing balances. Report Type PaymentReport — set as ReportType in def report . Render Param1 is the account number (first 10 characters used as the lookup key). Returns an HTML string based on an embedded email template. Data is sourced from trader.meta statement . Adjusts styles for PDF ren"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportFHpaymentemail.md",
    "title": "ObjReportFHpaymentemail",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportFHpaymentemail Renders a FullHouse rolling account statement as a formatted HTML email, including a barcode, client and branch address, contract transaction tables, and a PayFast payment link. Report Type PaymentReport — set as ReportType in def report . Render Param1 is the account number (first 10 characters used as the lookup key). Returns an HTML string based on an embedded email template. Data is sourced from trader.meta statement rolling . Adjusts font sizes and border styles when"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportFHpaymentjson.md",
    "title": "ObjReportFHpaymentjson",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportFHpaymentjson Renders a FullHouse account statement as a JSON payload containing account details, per-contract transaction lists, settlement amounts, and PayFast payment links. Report Type PaymentReport — set as ReportType in def report . Render Param1 is the account number or ID number (first 10 characters used). Returns a pretty-printed JSON string. Data is sourced from trader.meta statement rolling . Returns a single space if the account number is empty. Methods Cleannumber(TotalDue)"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportFHpaymentmail.md",
    "title": "ObjReportFHpaymentmail",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportFHpaymentmail Renders a FullHouse account statement as an HTML email using a frozen snapshot table ( meta statement freeze ), with barcode, QR code payment links, and per-contract transaction tables. Report Type PaymentReport — set as ReportType in def report . Render Param1 is the account number (first 10 characters used as the lookup key). Returns an HTML string. Data is sourced from trader.meta statement freeze (frozen statement snapshot). Adjusts font sizes and border styles when se"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportFHpaymentsettlement.md",
    "title": "ObjReportFHpaymentsettlement",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportFHpaymentsettlement Renders a FullHouse settlement letter as a branded HTML document, listing all contract balances and their live settlement values with banking details and a validity date. Report Type PaymentReport — set as ReportType in def report . Render Param1 is the account number (first 10 characters used as the lookup key). Returns an HTML string. The settlement letter template is loaded from trader.meta template (templatetype= SETTLEMENT ). Data is sourced from trader.meta sta"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportFHpriceset.md",
    "title": "ObjReportFHpriceset",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportFHpriceset Renders a batch of FullHouse product price stickers for a given store and template type, assembling pre-rendered PNG images into a paged HTML layout. Report Type PriceSticker — set as ReportType in def report . Render Param1 is the store/price ticket GUID (first 10 characters used). Param2 is the template type: A4L , A5 , A6 , A7 , CUSTOM , or WOBBLER . Param3 is the page offset, optionally suffixed with x<PageNo to set the starting page number. Returns an HTML string of page"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportFHpriceticket.md",
    "title": "ObjReportFHpriceticket",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportFHpriceticket Renders a single FullHouse product price ticket by populating a database-stored HTML template with product details, instalment calculation, promotion pricing, and a QR code. Report Type PriceSticker — set as ReportType in def report . Render Param1 is the product code (first 10 characters used). Param2 controls promotion mode: pass \"promo\" to force the promotion price and template. Param3 selects the template version: \"LIVE\" (default when empty) or \"UAT\" . Returns an HTML "
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportFHpriceticketfancy.md",
    "title": "ObjReportFHpriceticketfancy",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportFHpriceticketfancy Renders a detailed FullHouse product information panel for internal use, displaying product metadata, instalment calculation, barcode, PIMS image, and category details in a Bootstrap grid layout. Report Type PriceSticker — set as ReportType in def report . Render Param1 is the product code (first 10 characters used). Returns an HTML string of labelled key-value rows ( col-md-3 / col-md-9 ) covering code, last update, title, POS title, barcode image, brand, template, c"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportFHproduct.md",
    "title": "ObjReportFHproduct",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportFHproduct Renders a comprehensive FullHouse PIMS product administration panel, showing product metadata, web display status, pricing, instalment calculation, barcode, images, colour variants, product groups, warranty, and an image upload history table. Report Type FH Product — set as ReportType in def report . Render Param1 is the product code (first 10 characters used). Returns an HTML string produced from the WEB template stored in trader.meta template . The template is populated with"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportFHproductjson.md",
    "title": "ObjReportFHproductjson",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportFHproductjson Renders a FullHouse product as a JSON payload for the web platform API, including pricing, promotion data, instalment calculation, category mapping, dimensional data, image URLs, and display eligibility. Report Type PaymentReport — set as ReportType in def report . Render Param1 is the product code. Param2 is an optional modifier passed to the instalment calculator (e.g. \"extended\" for extended warranty products). Returns a pretty-printed JSON string. Returns an empty stri"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportFHproductsale.md",
    "title": "ObjReportFHproductsale",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportFHproductsale Renders a FullHouse product web-sales price ticket by populating the WEBSALES template from trader.meta template with product details, instalment calculation, barcode, and QR code. Report Type PriceSticker — set as ReportType in def report . Render Param1 is the product code (first 10 characters used). Returns an HTML string produced from the WEBSALES template stored in trader.meta template . Template tokens are substituted with product title, code, brand, price, deposit, "
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportFHpromotion.md",
    "title": "ObjReportFHpromotion",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportFHpromotion Renders an HTML table listing all active FullHouse promotions with product images, pricing, feature descriptions, and web push status. Report Type FH Product — set as ReportType in def report . Render No parameters are used. Data is sourced from fullhouse.axion.def promotion joined to trader.promotion detail , trader.meta product , and trader.products . Returns an HTML string containing a table with one row per active promotion product. Notes Each row displays: the product i"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportJsonFH.md",
    "title": "ObjReportJsonFH",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportJsonFH Renders the query result set as a JSON array of objects, applying process text to each cell value and using the field names as keys. Report Type Json — set as ReportType in def report . Render No parameters are used. Iterates over self.data list and self.FieldNames to build an OrderedDict per row, then serialises to JSON. Field names are lowercased. Returns a JSON string with the outer wrapper object stripped (rows only). Notes Post-processes the JSON string to handle embedded de"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportMarkdownTable.md",
    "title": "ObjReportMarkdownTable",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "A B C --- --- --- R X Y"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportMasonrytemp.md",
    "title": "ObjReportMasonrytemp",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportMasonrytemp Renders a responsive Bootstrap masonry-style grid layout by packing data rows into 12-column rows based on a width value supplied per row. Report Type Masonry form layout — set as ReportType in def report . Render No parameters are used. Each row in self.data list must supply a Bootstrap column width (column 0, integer 1–12) and a content string (column 1). Content is processed via self.process text . Rows are packed into Bootstrap row divs until the 12-column limit is reach"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportPromotion.md",
    "title": "ObjReportPromotion",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportPromotion Renders a Bootstrap 4 carousel of promotion slides with optional animation, footer links, and mobile-friendly layout, reading slide and footer images from the filesystem. Report Type Promotion — set as ReportType in def report . Render No parameters are used. Slide images are read from imageFolder/slides/ and footer images from imageFolder/footer/ . Returns an HTML string containing a Bootstrap carousel. Notes Carousel behaviour is driven by four fields read from fullhouse.axi"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportRadialBar.md",
    "title": "ObjReportRadialBar",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportRadialBar Renders an ApexCharts radial bar gauge displaying a single percentage value with its label as the chart title. Report Type Radial bar — set as ReportType in def report . Render No parameters are used. The chart value is taken from self.data list 0 0 and the chart title from the last field name in self.FieldNames . Returns an HTML string containing an ApexCharts radialBar chart. Notes Colours are sourced from fullhouse.axion.def colour palette and fullhouse.axion.def colour usi"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportSankeyChart.md",
    "title": "ObjReportSankeyChart",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSankeyChart Renders a Sankey flow diagram using Chart.js and the chartjs-chart-sankey plugin, with each data row supplying a source node, target node, and flow value. Report Type Sankey — set as ReportType in def report . Render No parameters are used. Each row in self.data list must supply three columns: from node name (column 0), to node name (column 1), and flow value (column 2). Returns an HTML string containing a Chart.js canvas with the Sankey dataset. Options Key Effect ----- ---"
  },
  {
    "path": "factory-report/package-fullhouse/ObjReportTermsOfBusiness.md",
    "title": "ObjReportTermsOfBusiness",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportTermsOfBusiness Renders an HTML comparison table of credit terms showing recommended, override, and approved values for limit, interest rate, tenure, monthly repayment, and total repayment. Report Type BigTable — set as ReportType in def report . Render No parameters are used. The table has a fixed five-row layout; column values are read directly from self.data list . Returns an HTML string. Notes The three column groups (recommended, override, approved) map to positional columns in the"
  },
  {
    "path": "factory-report/package-images/ObjReportImage.md",
    "title": "ObjReportImage",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportImage Stub report that attempts to render a workflow visualisation image but is incomplete; currently returns an empty HTML string. Report Type IMAGE — set as ReportType in def report . Render Parameters are unused. The implementation references WorkflowVisual without importing it and returns an empty string. Returns an HTML string (currently always empty). Notes This module is a stub. The functional workflow image renderer is ObjReportImageWorkflow ."
  },
  {
    "path": "factory-report/package-images/ObjReportImageBar.md",
    "title": "ObjReportImageBar",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportImageBar Renders a Seaborn bar chart as an inline SVG image using query result data. Report Type IMAGEBAR — set as ReportType in def report . Render Parameters are unused. Expects the query to return at least two columns: the first column is used as the X axis and the second as the Y axis. Field names are taken from self.FieldNames and used as axis labels and the chart title. The chart is rendered as SVG via Matplotlib's SVG backend and embedded directly in the HTML. Returns an HTML str"
  },
  {
    "path": "factory-report/package-images/ObjReportImageGen.md",
    "title": "ObjReportImageGen",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportImageGen Generates a package-specific image via ObjImage and renders it as a Base64-encoded inline <img tag. Report Type IMAGEGEN — set as ReportType in def report . Render Param1 is the image code (e.g. \"loyalty\" ), identifying which ObjImage definition to use. Param2 is the key code identifying the specific entity to generate the image for (must be at least 4 characters). Returns an HTML string with the Base64-encoded image, or False if the key code is too short. Notes Images are gene"
  },
  {
    "path": "factory-report/package-images/ObjReportImageLine.md",
    "title": "ObjReportImageLine",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportImageLine Renders a Seaborn line chart as an inline SVG image using query result data. Report Type IMAGELINE — set as ReportType in def report . Render Parameters are unused. Expects the query to return at least two columns: the first column is used as the X axis and the second as the Y axis. Field names are taken from self.FieldNames and used as axis labels and the chart title. The chart is rendered as SVG via Matplotlib's SVG backend and embedded directly in the HTML. Returns an HTML "
  },
  {
    "path": "factory-report/package-images/ObjReportImageWorkflow.md",
    "title": "ObjReportImageWorkflow",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportImageWorkflow Renders a workflow diagram as a Base64-encoded inline image using ObjWorkflowVisual . Report Type IMAGEWORKFLOW — set as ReportType in def report . Render Param1 is the workflow code to visualise. The workflow diagram is generated by ObjWorkflowVisual.WorkflowVisual.visualise piper , which returns a filename. That file is read and embedded as a Base64-encoded <img tag. Returns an HTML string. Notes Requires ObjWorkflowVisual from factory.core . The generated image file mus"
  },
  {
    "path": "factory-report/package-pakkie/ObjReportPakkieTable.md",
    "title": "ObjReportPakkieTable",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportPakkieTable Renders a server-side filtered data table with configurable filter controls (date, text, number, select, multiselect) driven by a token-substituted SQL query, with results loaded via RPC. Report Type PakkieTable — set as ReportType in def report . Render Param1 , Param2 , Param3 — optional default values for filter tokens named Param1 , Param2 , and Param3 respectively. If autoload is enabled in options or any Param is provided, the table loads immediately on page render. Re"
  },
  {
    "path": "factory-report/package-pakkie/ObjReportRouteMap.md",
    "title": "ObjReportRouteMap",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportRouteMap Renders a Google Maps embed that plots delivery route stops from self.data list as numbered markers, with an optional driving-directions route overlay. Report Type RouteMap — set as ReportType in def report . Render No parameters are used. Point data is read from self.data list using FieldLookup to resolve column indices for latitude / lat , longitude / lng / lon , label / name / customer name , and sequence / seq / order . Points are sorted by sequence if that column is presen"
  },
  {
    "path": "factory-report/package-pakkie/ObjReportStatusPill.md",
    "title": "ObjReportStatusPill",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportStatusPill Renders a single Bootstrap badge pill whose label and colour are determined by mapping a status code through a configurable lookup table. Report Type StatusPill — set as ReportType in def report . Render Param1 — the status code string to render (e.g. \"COMPLETED\" , \"FAILED\" ). Returns a <span class=\"badge ...\" HTML element. If the status code is not found in the map , the label defaults to a title-cased version of the code and the colour defaults to secondary . Options Option"
  },
  {
    "path": "factory-report/package-pakkie/ObjReportVisitCard.md",
    "title": "ObjReportVisitCard",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportVisitCard Renders a list of delivery visit cards with inline action buttons, a reschedule modal, and a completion modal that supports photo capture, signature drawing, and item selection. Report Type VisitCard — set as ReportType in def report . Render No parameters are used. Visit data is read from self.data list using FieldLookup to resolve column indices. Expected columns: visit id , customer name , address , scheduled time , status , type , with optional phone and sequence . Returns"
  },
  {
    "path": "factory-report/package-research/ObjReportSurvey.md",
    "title": "ObjReportSurvey",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSurvey Renders a single page of an active survey as an HTML form, with questions displayed using configurable field types including text input, single/multiple choice (vertical and horizontal), and question grouping. Report Type Survey — set as ReportType in def report . Render Param1 — the survey guid of the target survey in data surveys . The survey must be active, approved, and within its active start / active end window. Param2 — the user guid for the respondent (passed through but "
  },
  {
    "path": "factory-report/package-switchx/ObjReportDisplayBankStatement.md",
    "title": "ObjReportDisplayBankStatement",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDisplayBankStatement Renders a pivoted bank statement view with togglable columns, copy-to-clipboard value fields, a \"View Transactions\" drill-through modal, and a \"Report\" category flag modal. Report Type DisplayBankStatement — set as ReportType in def report . Render No parameters are used at the Render level; the data is expected in self.data list and self.FieldNames . The report pivots the data using pivot options from Options , appends an Actions column, and builds an HTML table wi"
  },
  {
    "path": "factory-report/package-switchx/ObjReportDisplayPayslip.md",
    "title": "ObjReportDisplayPayslip",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDisplayPayslip Renders a transposed payslip view with category-ordered rows, togglable date columns, copy-to-clipboard value fields, and a category flag modal, using tenant-specific display ordering from the database. Report Type DisplayPayslip — set as ReportType in def report . Render Param1 — the TransactionGuid used to resolve the tenant and its category display order. Data is expected in self.data list and self.FieldNames . The report transposes the dataset using transpose data (ro"
  },
  {
    "path": "factory-report/package-system/ObjReportApi.md",
    "title": "ObjReportApi",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportApi Renders an interactive API documentation browser showing all webhooks matching a filter, with sidebar navigation, per-endpoint accordion sections, Mermaid sequence diagrams, and PDF export. Architecture Class : Report in factory.report/package.system/ObjReportApi.py Inherits from : ObjReportDocumentation.Report (not ObjData directly) Companion YAML : ObjReportApi.yaml ObjReportApi is a concrete subclass of ObjReportDocumentation. It does not define its own Render() method -- it inhe"
  },
  {
    "path": "factory-report/package-system/ObjReportCalculation.md",
    "title": "ObjReportCalculation",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportCalculation Renders a timeline view of all SQL calculations in a given calculation group, showing each step's SQL with syntax highlighting and its output variable name. Report Type Calculation — set as ReportType in def report . Render Param1 — the CalculationGroup value used to filter def calculations . Only active calculations ( active='Y' ) in this group are shown, ordered by rank. Returns an HTML <ul class=\"timeline\" fragment. Each list item shows the step number, optional descripti"
  },
  {
    "path": "factory-report/package-system/ObjReportChannel.md",
    "title": "ObjReportChannel",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportChannel Renders a preview panel for each channel in self.data list , displaying the channel's email layout at its configured width. Report Type Channel — set as ReportType in def report . Render No parameters are used. The report iterates over self.data list , where each row must supply a channel code as its first element. For each channel it instantiates ObjChannel , reads the record, and calls render email(\"display\") to produce the preview HTML inside a Bootstrap panel. Returns an HTM"
  },
  {
    "path": "factory-report/package-system/ObjReportDataexport.md",
    "title": "ObjReportDataexport",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportDataexport Renders a summary configuration view for a named data export definition, including its file name, target table, export type, delimiter, remote connection, and FTP details if configured. Report Type Dataexport — set as ReportType in def report . Render Param1 — the DataexportCode to look up in def dataexport for the active package. Returns an HTML Bootstrap grid fragment with a table of export properties. If a remote FTP connection is configured, it additionally queries Def Re"
  },
  {
    "path": "factory-report/package-system/ObjReportKanban.md",
    "title": "ObjReportKanban",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportKanban Interactive ticket kanban board report built on jKanban (https://github.com/riktar/jkanban). Overview Renders a drag-and-drop kanban board where each column represents a ticket status. Cards display the ticket number, subject, priority badge, assignee initials, age, and an SLA breach warning icon. Dragging a card between columns triggers a status change via an RPC fetch call. The board auto-refreshes every 30 seconds. Columns Column Status ------------- ------------- New NEW Tria"
  },
  {
    "path": "factory-report/package-system/ObjReportRegistry.md",
    "title": "ObjReportRegistry",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportRegistry Dashboard report showing the state of the private Docker registry. Queries the registry v2 API to display: - Online/offline status and response time - Repository catalog with tag counts - Per-image layer count, size, and digest - Configuration (URLs, push commands, K3s/Docker setup) Configuration Registry URL is read from deployment.registry in config.yaml, falling back to docker.registryhost / docker.registryport . Usage"
  },
  {
    "path": "factory-report/package-system/ObjReportServerState.md",
    "title": "ObjReportServerState",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportServerState Renders a full-page AdminLTE server status dashboard populated from a live server state data dictionary, including CPU, uptime, network, disk, drive I/O, and open port information. Report Type ServerState — set as ReportType in def report . Render data — a dictionary of server metrics, typically collected by a monitoring service. Expected keys: Key Description --- --- cpucount Number of CPU cores uptime Uptime in seconds (converted to hours) ip , host , os , kernel , distrib"
  },
  {
    "path": "factory-report/package-system/ObjReportSla.md",
    "title": "ObjReportSla",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSla SLA compliance dashboard report for the Axion ticket system. Overview Renders an interactive HTML dashboard showing SLA performance metrics over a rolling 30-day window. Uses Chart.js for bar and pie chart visualisations and supports live refresh via an RPC endpoint. Dashboard Sections KPI Cards - Total tickets created in the last 30 days - Response SLA compliance percentage (met / total evaluated) - Resolution SLA compliance percentage (met / total evaluated) - Total breach count ("
  },
  {
    "path": "factory-report/package-system/ObjReportStatus.md",
    "title": "ObjReportStatus",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportStatus Container health and image status dashboard. Route : /report/status PNG : /report/status?format=png Module : factory.report/package.system/ObjReportStatus.py Purpose Renders a self-contained HTML dashboard showing the runtime state of the Axion container. Uses Playwright to generate a PNG screenshot on demand. No def report database entry required — uses a direct route short-circuit in WebPageReport. Dashboard Panels - Identity — package, hostname, IP, Python version, platform, u"
  },
  {
    "path": "factory-report/package-system/ObjReportSysGuiAlert.md",
    "title": "ObjReportSysGuiAlert",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSysGuiAlert Renders a navbar dropdown showing unread system alert notifications for the current user, styled as danger-level badges. Report Type SysGuiAlert — set as ReportType in def report . Render No parameters are used. Returns an AdminLTE navbar dropdown <li element listing unread notifications from data notify , filtered to exclude entries already acknowledged by the current user in data notify user . Methods GetNotificationCount(Param1=\"\", Param2=\"\", Param3=\"\") Counts rows in dat"
  },
  {
    "path": "factory-report/package-system/ObjReportSysGuiLeftmenu.md",
    "title": "ObjReportSysGuiLeftmenu",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSysGuiLeftmenu Renders the AdminLTE left sidebar navigation tree, listing report menu groups and workflows grouped by MenuGroup , with ACL-based visibility control per item. Report Type SysGuiLeftmenu — set as ReportType in def report . Render No parameters are used. Returns a <ul class=\"nav nav-pills nav-sidebar flex-column\" tree. Each group is rendered as a collapsible <li node containing its child report links. - Items are filtered through ACL ( acl.validate report ) when an ACL cont"
  },
  {
    "path": "factory-report/package-system/ObjReportSysGuiMenu.md",
    "title": "ObjReportSysGuiMenu",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSysGuiMenu Renders the AdminLTE sidebar navigation tree. Lists report menu groups and items with ACL-based visibility control per item. Report Type SysGuiMenu — set as ReportType in def report . Tables Table Purpose ------- --------- def menu Menu item definitions (target, glyph, params) def menugroup Menu group names and display order def report Reports with MenuRank 0 appear as menu items Schemas in ObjReportSysGuiMenu.yaml . Both def menu and def menugroup have Package in PK and Modu"
  },
  {
    "path": "factory-report/package-system/ObjReportSysGuiNotification.md",
    "title": "ObjReportSysGuiNotification",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSysGuiNotification Renders a navbar dropdown showing pending workflow interaction notifications for the current user, sourced from stage interaction . Report Type SysGuiNotification — set as ReportType in def report . Render No parameters are used. Returns an AdminLTE navbar dropdown <li element. Each notification shows the workflow name and interaction note, the number of minutes since creation, and a link to the associated form or report if applicable. Methods GetNotificationCount(Par"
  },
  {
    "path": "factory-report/package-system/ObjReportSysGuiUser.md",
    "title": "ObjReportSysGuiUser",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSysGuiUser Renders the AdminLTE sidebar user panel showing the current user's avatar, display name, and company. Report Type SysGuiUser — set as ReportType in def report . Render No parameters are used. Returns an AdminLTE .user-panel HTML block with a circular avatar image sourced from /doc/avatar/$useruuid$ and two lines of text showing $username$ and $usercompany$ . All placeholders are resolved by self.process text ."
  },
  {
    "path": "factory-report/package-system/ObjReportWebhook.md",
    "title": "ObjReportWebhook",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportWebhook Renders a summary configuration table for a single webhook definition, showing its base URL, direction, HTTP method, form flag, and payload type. Report Type Webhook — set as ReportType in def report . Render Param1 — the WebhookCode to look up in def webhook for the active package. Returns an HTML Bootstrap grid fragment containing a table of webhook properties. Returns an empty string if no matching webhook is found. Notes - Reads from def webhook . - Displays: BaseUrl , Direc"
  },
  {
    "path": "factory-report/package-system/ObjReportWebhookDashboard.md",
    "title": "ObjReportWebhookDashboard",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportWebhookDashboard Real-time inbound webhook performance dashboard. Overview Renders an interactive HTML dashboard showing webhook call volume, success rates, source breakdown, and recent calls. Uses Chart.js for visualisations and auto-refreshes every 30 seconds via RPC fetch calls. Currently sourced from bloom hcscorecr (Credico credit scoring webhook). Extendable to any bloom webhook table. Dashboard Sections KPI Cards - Total calls (30-day window) - Success rate percentage - Failed ca"
  },
  {
    "path": "factory-report/package-widgets/ObjReportAnimation.md",
    "title": "ObjReportAnimation",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportAnimation Renders a fullscreen animated background using the Vanta.js Birds particle effect. Report Type ANIMATION — set as ReportType in def report . Render Parameters are unused. Animation options are read from the report query via self. Query . Returns an HTML div with embedded Vanta.js initialisation script. Notes Loads three.js (r134) and Vanta Birds from CDN. Colour values in query results are converted from rrggbb hex notation to 0xrrggbb format as required by Vanta. The containe"
  },
  {
    "path": "factory-report/package-widgets/ObjReportInfoCard.md",
    "title": "ObjReportInfoCard",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportInfoCard Renders a live-updating AdminLTE small-box info card displaying a single scalar value fetched via RPC. Report Type INFOCARD — set as ReportType in def report . Render Parameters are unused. The initial card value is taken from data list 0 0 . The card polls the server on an interval and updates its displayed value in place. Returns an HTML string containing the card markup and polling script. Methods RpcGetseries(Data) RPC endpoint called by the card's polling timer. Executes s"
  },
  {
    "path": "factory-report/package-widgets/ObjReportInfoCardBar.md",
    "title": "ObjReportInfoCardBar",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportInfoCardBar Renders a live-updating AdminLTE info-box card with a progress bar, displaying a percentage, a numeric value, and a description line. Report Type INFOCARDBAR — set as ReportType in def report . Render Parameters are unused. Expects the query to return at least one row with three columns: 0 percentage (appends % if absent), 1 middle numeric value, 2 bottom description text. The card polls the server and updates all three elements in place. Returns an HTML string. Methods RpcG"
  },
  {
    "path": "factory-report/package-widgets/ObjReportInfoCardSpark.md",
    "title": "ObjReportInfoCardSpark",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportInfoCardSpark Renders an AdminLTE info-box card with an embedded sparkline chart, combining the InfoCardBar layout with a Sparkline sub-report. Report Type INFOCARDSPARK — set as ReportType in def report . Render Parameters are unused. Delegates sparkline rendering to ObjReportSparkline.Report , embedding its output inside the card. Expects the query to return rows where 0 is a percentage, 1 is the main numeric value, and 2 is the bottom description. Returns an HTML string. Methods RpcG"
  },
  {
    "path": "factory-report/package-widgets/ObjReportKnobOut.md",
    "title": "ObjReportKnobOut",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportKnobOut Renders a read-only jQuery Knob gauge that displays a live value with a configurable maximum, updating via RPC polling. Report Type KNOBOUT — set as ReportType in def report . Render Parameters are unused at render time; Param1 is forwarded via the RPC call at runtime. The knob is read-only ( data-readonly=\"true\" ). The query is expected to return rows of (value, max value) . Returns an HTML string with the knob canvas and polling script. Methods RpcGetseries(data) RPC endpoint."
  },
  {
    "path": "factory-report/package-widgets/ObjReportLiveWidget.md",
    "title": "ObjReportLiveWidget",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportLiveWidget Renders one or more AdminLTE small-box widgets that display a live percentage counter, note, icon, and colour, polling the server at a configurable interval. Report Type LIVEWIDGET — set as ReportType in def report . Render Parameters are unused. Iterates data list ; each row is expected to provide 0 counter, 1 note, 2 icon class (optional, defaults to ion ion-stats-bars ), 3 CSS colour class (optional, defaults to bg-success ). Refresh interval is taken from self. Client ref"
  },
  {
    "path": "factory-report/package-widgets/ObjReportPackery.md",
    "title": "ObjReportPackery",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportPackery Renders a Packery draggable grid layout where each data row provides one grid item, with positions persisted to localStorage . Report Type PACKERY — set as ReportType in def report . Render Parameters are unused. Each row in data list contributes one grid item rendered from data list i 0 (processed through process text ). Grid item positions are saved and restored from localStorage under the key packery-layout . Returns an HTML string. Options Options read from self. Options JSO"
  },
  {
    "path": "factory-report/package-widgets/ObjReportPackeryStill.md",
    "title": "ObjReportPackeryStill",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportPackeryStill Renders a static (non-draggable) Packery grid layout, inheriting all behaviour from ObjReportPackery with dragging disabled. Report Type PACKERYSTILL — set as ReportType in def report . Render Inherited from ObjReportPackery . All options and data expectations are identical; the only difference is that isDraggable() returns \"false\" , so items cannot be repositioned by the user. Notes See ObjReportPackery for full option and behaviour documentation."
  },
  {
    "path": "factory-report/package-widgets/ObjReportReveal.md",
    "title": "ObjReportReveal",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportReveal Renders a Reveal.js slide presentation from query result rows, where each row becomes a slide section. Report Type REVEAL — set as ReportType in def report . Render Parameters are unused. When the result set has more than one row, each row becomes a vertical slide group ( <section ) and each column within it becomes a nested slide. When there is only one row, each column becomes a top-level slide. Cell content is processed through process text . Returns an HTML string. Notes Load"
  },
  {
    "path": "factory-report/package-widgets/ObjReportSplideJS.md",
    "title": "ObjReportSplideJS",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSplideJS Renders a Splide.js carousel from query result rows, supporting images, HTML content, and plain text slides. Report Type SPLIDEJS — set as ReportType in def report . Render Parameters are unused. Each row in data list is a single value determining slide content: if it starts with http or /res it is rendered as an <img ; if it is a JSON object (starts with { , ends with } ) it is processed through process text ; otherwise it is used as raw HTML. Returns an HTML string. Options O"
  },
  {
    "path": "factory-report/package-widgets/ObjReportSwiper.md",
    "title": "ObjReportSwiper",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportSwiper Renders a full-screen image slideshow with optional footer links using the Swiper.js library, configured from the def promotion table. Report Type Promotion — set as ReportType in def report . Render Param1 (via self.Param1 ) — promotion code used to look up all settings from def promotion . Returns HTML containing a Swiper carousel populated with images from the promotion's ImageFolder/slides/ directory and a footer row of images from ImageFolder/footer/ each linked by entries i"
  },
  {
    "path": "factory-report/package-widgets/ObjReportYoutube.md",
    "title": "ObjReportYoutube",
    "factory": "factory.report",
    "type": "markdown",
    "tags": [],
    "body": "ObjReportYoutube Renders one or more responsive YouTube video embeds from query result rows containing YouTube video IDs. Report Type YOUTUBE — set as ReportType in def report . Render Parameters are unused. Each row in data list must provide a YouTube video ID in column 0 . Each video is wrapped in a Bootstrap embed-responsive embed-responsive-16by9 container. Multiple videos are separated by <p tags. Returns an HTML string. Notes Uses Bootstrap responsive embed classes. Videos are embedded via"
  },
  {
    "path": "factory-web/ObjAcl.md",
    "title": "ObjAcl",
    "factory": "factory.web",
    "type": "markdown",
    "tags": [],
    "body": "ObjAcl Access Control List — authentication, session management, and permission validation for the Axion web platform. Overview Stateful server-side session management. Users authenticate via login form or federated SSO (Auth0/Keycloak). The session ID is stored in sys user session and validated on each request. ACL permission maps are cached in Redis with a 15-minute TTL. Authentication Flow Login (password) 1. User submits loginname + loginpassword 2. login user() verifies against sys user (en"
  },
  {
    "path": "factory-web/ObjCss.md",
    "title": "ObjCss — Axion Component Style Guide",
    "factory": "factory.web",
    "type": "markdown",
    "tags": [],
    "body": "ObjCss — Axion Component Style Guide Palette-aware CSS component library for reports and desktop apps. All colours are driven by def colour palette via get palette() . Quick Start To load specific components only: For shared browser-cached CSS, use: This returns: The /css/components.css route serves the component stylesheet with Cache-Control and ETag headers. get css max age() controls the cache duration by deployment mode: 60 seconds in DEV, 300 seconds in UAT/STAGING, and 3600 seconds in prod"
  },
  {
    "path": "factory-web/ObjKeycloakAdmin.md",
    "title": "ObjKeycloakAdmin - Keycloak Administrative CLI",
    "factory": "factory.web",
    "type": "markdown",
    "tags": [],
    "body": "ObjKeycloakAdmin - Keycloak Administrative CLI Comprehensive administrative tools for managing users, sessions, and Keycloak sync operations. Overview ObjKeycloakAdmin provides a powerful CLI for system administrators to manage user accounts, sessions, and Keycloak synchronization. Supports bulk operations, emergency modes, and detailed system statistics. Features ✅ User management (enable, disable, password reset) ✅ Bulk user operations ✅ Session inspection and management ✅ Force logout capabil"
  },
  {
    "path": "factory-web/ObjRichBridge.md",
    "title": "ObjRichBridge — Rich TUI to HTML Bridge",
    "factory": "factory.web",
    "type": "markdown",
    "tags": [],
    "body": "ObjRichBridge — Rich TUI to HTML Bridge Renders Rich console output (Tables, Panels, Layouts) into a full xterm.js terminal in HTML. Use it to convert any existing TUI into a desktop app window. Quick Start Constructor Parameters Parameter Type Default Description --- --- --- --- width int 160 Console width in characters background str \" 0f1923\" Terminal background colour font size str \"14px\" Terminal font size font family str Cascadia/Fira/monospace Terminal font stack padding str \"16px\" Termin"
  },
  {
    "path": "factory-web/ObjSingleSignon.md",
    "title": "ObjSingleSignon",
    "factory": "factory.web",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSingleSignon.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-web/ObjUser.md",
    "title": "TABLE : sys_user",
    "factory": "factory.web",
    "type": "markdown",
    "tags": [],
    "body": "TABLE : sys user Report levels: 1,2 : Open to the world, 1 for website and 2 for dashboards and screens. The distinction is purely for administration. 5 - 9 : Reports and forms open to any user eg. summaries, user queries and policies 10 - 19 : Active system agents. 20+ : System administration Reports levels combine with user groups. Password requirements Verifiers and CSPs SHALL require passwords to be a minimum of eight characters in length and SHOULD require passwords to be a minimum of 15 ch"
  },
  {
    "path": "factory-web/ObjUser_yaml_migration.md",
    "title": "ObjUser.yaml Migration Guide",
    "factory": "factory.web",
    "type": "markdown",
    "tags": [],
    "body": "ObjUser.yaml Migration Guide Overview The ObjUser.yaml configuration file centralizes all SQL queries, configuration settings, and user group definitions used by the ObjUser class. Benefits 1. Separation of Concerns : SQL queries separated from Python code 2. Maintainability : Easy to update queries without changing Python 3. Consistency : Standard configuration format across all Obj classes 4. Testability : Queries can be tested independently 5. Documentation : Self-documenting query names and "
  },
  {
    "path": "factory-web/ObjWebFormElement.md",
    "title": "ObjWebFormElement",
    "factory": "factory.web",
    "type": "markdown",
    "tags": [],
    "body": "// : < (HIRAR START) classDiagram direction LR class ObjField{ } class PackageUk{ <<Interface PackageUk +factory() } ObjField < -- PackageUk : Inheritance class PackageCore{ <<Interface PackageCore +factory() } ObjField < -- PackageCore : Inheritance class ObjFieldFileUploadObjFieldElement{ } PackageCore <.. ObjFieldFileUploadObjFieldElement :Composition class ObjFieldDisplayStaticObjFieldElement{ } PackageCore <.. ObjFieldDisplayStaticObjFieldElement :Composition class ObjFieldRadioObjFieldElem"
  },
  {
    "path": "factory-web/ObjWeblog.md",
    "title": "ObjWeblog",
    "factory": "factory.web",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjWeblog.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-web/WebForm.md",
    "title": "Validation notes",
    "factory": "factory.web",
    "type": "markdown",
    "tags": [],
    "body": "// : < (HIRAR START) Updated : 2025-02-27 // : < (HIRAR END) Validation notes -- Need review for 7.x 1) Save your validator to a variable/global. var oValidator = $(\" myform\").validate(); 2) DO NOT call $(\" myform\").validate() EVER again. If you call $(\" myform\").validate() more than once, it may cause focus/key/error-hiding issues. 3) Use the variable/global and call form. var bIsValid = oValidator.form(); Form return Form return structure // : < (CYTHON START) Cython compile cythonize -3 -a -i"
  },
  {
    "path": "factory-web/WebFormElement.md",
    "title": "WebFormElement",
    "factory": "factory.web",
    "type": "markdown",
    "tags": [],
    "body": "// : < (HIRAR START) Updated : 2025-02-27 // : < (HIRAR END) // : < (CYTHON START) Cython compile cythonize -3 -a -i WebFormElement.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-web/WebFormTest.md",
    "title": "WebFormTest",
    "factory": "factory.web",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i WebFormTest.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-web/WebHooks.md",
    "title": "HTTP/2",
    "factory": "factory.web",
    "type": "markdown",
    "tags": [],
    "body": "HTTP/2 To enable support to http/2 we need to add a module sudo a2enmod http2 In the apache config, we need a directive to switch on the mod. Insert the directive below after the <VirtualHost :443 tag. Protocols h2 http/1.1 To test webhooks supporting HTTP/2 - Support for HTTP/2 and HTTP/3. - Collection-scoped environments. - Easy variable management. - Secret variables. - Collections and environments can be exported together in a single file. - Full export and import compatibility with Postman."
  },
  {
    "path": "factory-web/WebObject.md",
    "title": "WebObject",
    "factory": "factory.web",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i WebObject.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-web/WebServer.md",
    "title": "WebServer",
    "factory": "factory.web",
    "type": "markdown",
    "tags": [],
    "body": "Our services support both HTTP/1.1 and HTTP/2 over HTTPS. Any REST APIs built on HTTP/1.1 will continue to work transparently as before, with no changes to be made to applications. HTTP/2 is designed to use fewer connections so servers and networks will enjoy less load. This is especially important when the network is getting congested because HTTP/1’s use of multiple connections for parallelism adds to the problem. Static Asset Caching CachedStaticFiles Class Replaces the previous NoCacheStatic"
  },
  {
    "path": "factory-web/WebSession.md",
    "title": "WebSession",
    "factory": "factory.web",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i WebSession.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-web/WebTest.md",
    "title": "WebTest - JavaScript Testing & Linting for Axion",
    "factory": "factory.web",
    "type": "markdown",
    "tags": [],
    "body": "WebTest - JavaScript Testing & Linting for Axion Automated JavaScript code quality system for the Axion framework --- Table of Contents - Overview ( overview) - Features ( features) - Prerequisites ( prerequisites) - Installation ( installation) - Usage ( usage) - Configuration ( configuration) - Linting Standards ( linting-standards) - Common Issues & Fixes ( common-issues--fixes) - Workflow ( workflow) - CI/CD Integration ( cicd-integration) - Troubleshooting ( troubleshooting) - Reference Doc"
  },
  {
    "path": "factory-conversation/ObjConversationDialog360.md",
    "title": "ObjConversationDialog360",
    "factory": "factory.conversation",
    "type": "markdown",
    "tags": [],
    "body": "ObjConversationDialog360 360dialog WhatsApp engine for the Axion conversation framework. Uses the 360dialog v1 REST API with the Meta Cloud API payload format. Relationship to ObjConversationWhatsapp ObjConversationWhatsapp uses Channel360 directly and has its own WhatsAppConversationHandler class structure. This module follows the standard ConversationInterface / ConversationBroker pattern and targets the same underlying 360dialog endpoint ( https://waba.360dialog.io/v1/messages ). The EMOJI MA"
  },
  {
    "path": "factory-conversation/ObjConversationDiscord.md",
    "title": "ObjConversationDiscord",
    "factory": "factory.conversation",
    "type": "markdown",
    "tags": [],
    "body": "ObjConversationDiscord Discord engine for the Axion conversation framework. Classes ConversationInterface Sends messages to Discord via the Discord REST API ( requests ). Inherits from ObjConversationEngine.ConversationInterface . Config section: discord Key Description --- --- bottoken Discord bot token channel id Default channel for outbound messages Methods: - init client() — loads credentials from config - transmit message(message, channel id=\"\") — POSTs to the Discord REST API; truncates at"
  },
  {
    "path": "factory-conversation/ObjConversationInfobip.md",
    "title": "ObjConversationInfobip",
    "factory": "factory.conversation",
    "type": "markdown",
    "tags": [],
    "body": "ObjConversationInfobip Infobip WhatsApp engine for the Axion conversation framework. Uses the Infobip WhatsApp Messaging API with App token authentication. Relationship to ObjConversationWhatsapp ObjConversationWhatsapp uses the Channel360 provider. This module uses Infobip as the provider and follows the standard ConversationInterface / ConversationBroker pattern with Infobip-specific payload structures. The EMOJI MAP and EMOJI RE are imported from ObjConversationWhatsapp — no duplication of th"
  },
  {
    "path": "factory-conversation/ObjConversationMessageBird.md",
    "title": "ObjConversationMessageBird",
    "factory": "factory.conversation",
    "type": "markdown",
    "tags": [],
    "body": "ObjConversationMessageBird MessageBird WhatsApp engine for the Axion conversation framework. Uses the MessageBird Conversations API with AccessKey authentication. Relationship to ObjConversationWhatsapp ObjConversationWhatsapp uses the Channel360 provider. This module uses MessageBird as the provider and follows the standard ConversationInterface / ConversationBroker pattern. The EMOJI MAP and EMOJI RE are imported from ObjConversationWhatsapp — no duplication of the emoji system. Classes Conver"
  },
  {
    "path": "factory-conversation/ObjConversationMessenger.md",
    "title": "ObjConversationMessenger",
    "factory": "factory.conversation",
    "type": "markdown",
    "tags": [],
    "body": "ObjConversationMessenger Facebook Messenger engine for the Axion conversation framework. Classes ConversationInterface Sends messages to Messenger via the Graph API Send API ( requests ). Inherits from ObjConversationEngine.ConversationInterface . Config section: messenger Key Description --- --- page access token Facebook page access token verify token Webhook setup verification token app secret App secret for HMAC signature verification Methods: - init client() — loads page access token from c"
  },
  {
    "path": "factory-conversation/ObjConversationSlack.md",
    "title": "ObjConversationSlack Module",
    "factory": "factory.conversation",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjConversationSlack Module Overview The ObjConversationSlack.py module implements the Slack channel engine for the Axion conversation framework. It follows the same factory pattern as the Console, WhatsApp, and Discord engines, providing a ConversationInterface for message delivery and a ConversationBroker for Slack slash-command handling. The module contains two c"
  },
  {
    "path": "factory-conversation/ObjConversationTelegram.md",
    "title": "ObjConversationTelegram",
    "factory": "factory.conversation",
    "type": "markdown",
    "tags": [],
    "body": "ObjConversationTelegram Telegram engine for the Axion conversation framework. Classes ConversationInterface Sends messages and option menus to Telegram via the Bot API ( requests ). Inherits from ObjConversationEngine.ConversationInterface . Config section: telegram Key Description --- --- bottoken Telegram bot token from BotFather Methods: - init client() — loads token from config - api(method, payload) — internal helper; POSTs to api.telegram.org - transmit message(message, chat id=\"\") — sends"
  },
  {
    "path": "factory-conversation/ObjConversationTui.md",
    "title": "ObjConversationTui Module",
    "factory": "factory.conversation",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjConversationTui Module Overview The ObjConversationTui.py module provides a fullscreen Rich TUI for testing conversation flows from the terminal. It implements the conversation engine interface for styled rendering and includes a chat CLI command that drives a fullscreen REPL with inline character-by-character input. The module contains two engine classes and fou"
  },
  {
    "path": "factory-conversation/ObjConversationTwilio.md",
    "title": "ObjConversationTwilio",
    "factory": "factory.conversation",
    "type": "markdown",
    "tags": [],
    "body": "ObjConversationTwilio Twilio engine for the Axion conversation framework. Supports both SMS and WhatsApp-via-Twilio from a single engine. Relationship to ObjConversationWhatsapp ObjConversationWhatsapp uses Channel360 as its API provider and has its own class structure ( WhatsAppConversationHandler ). This module uses Twilio as the provider and follows the standard ConversationInterface / ConversationBroker pattern. The EMOJI MAP and EMOJI RE are imported directly from ObjConversationWhatsapp — "
  },
  {
    "path": "factory-conversation/ObjConversationWeb.md",
    "title": "ObjConversationWeb",
    "factory": "factory.conversation",
    "type": "markdown",
    "tags": [],
    "body": "ObjConversationWeb WEB channel engine for the Axion conversation framework. Purpose ObjConversationWeb implements the WEB conversation channel. Unlike other engines (Discord, Telegram, WhatsApp) that push messages to an external API, this engine writes bot replies directly to the data web conversation database table. An interactive report ( ObjReportConversation ) polls the table via HTTP and renders the conversation in the browser. No API credentials or external service accounts are required. A"
  },
  {
    "path": "factory-conversation/ObjConversationWhatsapp.md",
    "title": "ObjConversationWhatsapp.py",
    "factory": "factory.conversation",
    "type": "markdown",
    "tags": [],
    "body": "ObjConversationWhatsapp.py TechnoCore Automate — Internal Documentation Handles WhatsApp conversation flow via the Channel360 messaging API. --- Overview ObjConversationWhatsapp.py contains the WhatsAppConversationHandler class, which acts as the bridge between TechnoCore's internal conversation engine ( ObjConversation ) and the Channel360 WhatsApp API. It follows a stateless request/response pattern : each incoming WhatsApp message is processed, the conversation state is loaded from the databa"
  },
  {
    "path": "factory-ai/ObjAiVision.md",
    "title": "ObjAiVision",
    "factory": "factory.ai",
    "type": "markdown",
    "tags": [],
    "body": "ObjAiVision Producer/consumer pipeline orchestrator for image analysis. Module : factory.ai/ObjAiVision.py Class : ObjAiVision Version : 8.0 --- Overview ObjAiVision sits in the middle of an image analysis pipeline — it connects any image producer to ObjAI's vision-model consumer interface. The orchestrator is deliberately agnostic about which model handles each end. Every analysis is automatically persisted to def vision analysis . --- Constructor Parameter Type Default Description ----------- "
  },
  {
    "path": "factory-ai/package-image/ObjAIImage.md",
    "title": "ObjAIImage",
    "factory": "factory.ai",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjAIImage.py Updated : 2025-06-08 // : < (CYTHON END)"
  },
  {
    "path": "factory-ai/package-image/ObjAIImageStableDiffusion.md",
    "title": "ObjAIImageStableDiffusion",
    "factory": "factory.ai",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjAIImageStableDiffusion.py Updated : 2025-06-08 // : < (CYTHON END)"
  },
  {
    "path": "factory-ai/package-llm/ObjAICommit.md",
    "title": "ObjAICommit",
    "factory": "factory.ai",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjAICommit.py Updated : 2025-06-08 // : < (CYTHON END)"
  },
  {
    "path": "factory-ai/package-llm/ObjAILlm.md",
    "title": "ObjAILlm",
    "factory": "factory.ai",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjAILlm.py Updated : 2025-06-08 // : < (CYTHON END)"
  },
  {
    "path": "factory-ai/package-llm/ObjAILlmLlava.md",
    "title": "ObjAILlmLlava — Legacy LLaVA Vision Interface",
    "factory": "factory.ai",
    "type": "markdown",
    "tags": [],
    "body": "ObjAILlmLlava — Legacy LLaVA Vision Interface Ported 2026-02-23 — implementation now delegates to ObjAiMcpOllama . Prefer ObjAiVision or the MCP layer in new code: LLaVA (Large Language and Vision Assistant) combines visual understanding with language generation via the Ollama runtime. Legacy interface (still functional) Methods Method Description -------- ------------- init (DB, model) Initialises provider; defaults to llava set model(model) Switch the active model query prompt(role, prompt, im"
  },
  {
    "path": "factory-ai/package-llm/ObjAILlmOllama.md",
    "title": "ObjAILlmOllama — Legacy Ollama Text Interface",
    "factory": "factory.ai",
    "type": "markdown",
    "tags": [],
    "body": "ObjAILlmOllama — Legacy Ollama Text Interface Ported 2026-02-23 — implementation now delegates to ObjAiMcpOllama . Prefer the MCP layer in new code: Legacy interface (still functional) Methods Method Description -------- ------------- init (DB, model) Initialises provider; defaults to mistral set model(model) Switch the active model query prompt(role, prompt, image) One-shot text prompt; returns str // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjAILlmOllama.py // : < (CYTHON END)"
  },
  {
    "path": "factory-ai/package-mcp/ObjAiMcpAnthropic.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.ai",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. Anthropic (Claude) MCP Provider The ObjAiMcpAnthropic class provides an interface to Anthropic's language models, such as the Claude family. It is part of the Multi-Cloud Provider (MCP) framework and inherits from the ObjAiMcpBase class. Initialization The class is initialized with the following parameters: - db : The database connection object. - api key : Your Anthropic API key. - model : The s"
  },
  {
    "path": "factory-ai/package-mcp/ObjAiMcpDatabase.md",
    "title": "ObjAiMcpDatabase",
    "factory": "factory.ai",
    "type": "markdown",
    "tags": [],
    "body": "ObjAiMcpDatabase Location : factory.ai/package.mcp/ObjAiMcpDatabase.py Version : 8.0 Inherits from : ObjAiMcpBase Purpose Database schema and calculation-SQL context provider for the AI layer. ObjAiMcpDatabase is a data-context provider — it fetches live database information (table DDL and SQL strings) so that AI prompts can be grounded in the actual schema and data, rather than relying on static knowledge. It does not route prompts to a language model. Use it in combination with an LLM provider"
  },
  {
    "path": "factory-ai/package-mcp/ObjAiMcpGoogle.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.ai",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. Google (Gemini) MCP Provider The ObjAiMcpGoogle class provides an interface to Google's Gemini family of language models. It is part of the Multi-Cloud Provider (MCP) framework and inherits from the ObjAiMcpBase class. Initialization The class is initialized with the following parameters: - db : The database connection object. - api key : Your Google AI API key. - model : The specific Gemini mode"
  },
  {
    "path": "factory-ai/package-mcp/ObjAiMcpGroq.md",
    "title": "Groq MCP Provider",
    "factory": "factory.ai",
    "type": "markdown",
    "tags": [],
    "body": "Groq MCP Provider The ObjAiMcpGroq class routes prompts through Groq (https://groq.com), which serves open-weight models on its own LPU hardware behind an OpenAI-compatible endpoint. The free tier offers generous rate limits on several large models and is several times faster than local Ollama for the same workload. Inherits from ObjAiMcpBase and reuses the official openai Python client with a custom base url . Initialization - db : database connection. - api key : Groq API key ( gsk ... ). - mo"
  },
  {
    "path": "factory-ai/package-mcp/ObjAiMcpHuggingface.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.ai",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. Hugging Face MCP Provider The ObjAiMcpHuggingface class provides an interface to the Hugging Face Hub, allowing you to use a vast range of open-source language models via their Inference API. It is part of the Multi-Cloud Provider (MCP) framework and inherits from the ObjAiMcpBase class. Initialization The class is initialized with the following parameters: - db : The database connection object. "
  },
  {
    "path": "factory-ai/package-mcp/ObjAiMcpMistral.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.ai",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. Mistral AI MCP Provider The ObjAiMcpMistral class provides an interface to Mistral AI's language models. It is part of the Multi-Cloud Provider (MCP) framework and inherits from the ObjAiMcpBase class. Initialization The class is initialized with the following parameters: - db : The database connection object. - api key : Your Mistral AI API key. - model : The specific Mistral AI model to use (e."
  },
  {
    "path": "factory-ai/package-mcp/ObjAiMcpOllama.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.ai",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. Ollama MCP Provider The ObjAiMcpOllama class provides an interface to a local Ollama server, allowing you to run open-source language models on your own hardware. It is part of the Multi-Cloud Provider (MCP) framework and inherits from the ObjAiMcpBase class. Initialization The class is initialized with the following parameters: - db : The database connection object. - api key : Not used for Olla"
  },
  {
    "path": "factory-ai/package-mcp/ObjAiMcpOpenai.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.ai",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. OpenAI MCP Provider The ObjAiMcpOpenai class provides an interface to OpenAI's language models, such as GPT-4. It is part of the Multi-Cloud Provider (MCP) framework and inherits from the ObjAiMcpBase class. Initialization The class is initialized with the following parameters: - db : The database connection object. - api key : Your OpenAI API key. - model : The specific OpenAI model to use (e.g."
  },
  {
    "path": "factory-ai/package-mcp/ObjAiMcpOpenrouter.md",
    "title": "OpenRouter MCP Provider",
    "factory": "factory.ai",
    "type": "markdown",
    "tags": [],
    "body": "OpenRouter MCP Provider The ObjAiMcpOpenrouter class routes prompts through OpenRouter (https://openrouter.ai), an OpenAI-compatible aggregator that exposes hundreds of hosted models behind a single endpoint. Several models are tagged :free and run at no cost (with rate limits). Inherits from ObjAiMcpBase and reuses the official openai Python client with a custom base url . Initialization - db : database connection. - api key : OpenRouter API key ( sk-or-... ). - model : OpenRouter model id, ven"
  },
  {
    "path": "factory-ai/package-time/ObjAITime.md",
    "title": "ObjAITime` Module Documentation",
    "factory": "factory.ai",
    "type": "markdown",
    "tags": [],
    "body": "ObjAITime Module Documentation This document provides documentation for the ObjAITime module, which serves as a base class for time-series AI forecasting within the Axion project. ObjAIQuery Class This is the primary class in the module, inheriting from ObjApi . It provides a framework for executing time-series analysis and forecasting tasks. Class Members Member Type Description ---------------------- ------ --------------------------------------------------------------------------- Modelname s"
  },
  {
    "path": "factory-ai/package-time/ObjAITimeProphet.md",
    "title": "ObjAITimeProphet` Module Documentation",
    "factory": "factory.ai",
    "type": "markdown",
    "tags": [],
    "body": "ObjAITimeProphet Module Documentation This document provides documentation for the ObjAITimeProphet module. This module provides a specific implementation of the ObjAITime base class, using the Prophet library for time-series forecasting. ObjAIQuery Class This class inherits from ObjAITime.ObjAIQuery and is tailored to use the Prophet forecasting model. Inheritance This class inherits all public methods and class members from ObjAITime.ObjAIQuery , including read , get date range , insert predic"
  },
  {
    "path": "factory-field/ObjFieldApi.md",
    "title": "Form API integration",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "Form API integration ObjFieldApi will run an api and create a dropdown based on the result, however it is more of an example template to display how to use API integration in your own form fields. FieldType in def formfield is where you put the url: Fieldoptions takes a number of parameters in the format of a json object: e.g.1 e.g.2 iteration start tells the code at what point an array starts. Indexes are the ordered flow of the dictionary indexes. for example, e.g.2 has the following output: i"
  },
  {
    "path": "factory-field/ObjFieldAutoMap.md",
    "title": "ObjFieldAutoMap",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldAutoMap.py Updated : 2025-06-08 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldBarcode.md",
    "title": "ObjFieldBarcode",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldBarcode.py Updated : 2025-06-08 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldBit.md",
    "title": "ObjFieldBit",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldBit.py Updated : 2025-06-08 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldBoolean.md",
    "title": "ObjFieldBoolean",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldBoolean Author : Max@technocore.co.za Returns a True('Y') or False('N') value based on the users selection Example: ! Advanced Field Settings (resource.documentation/img/ObjFieldBoolean-Example.png \"Plac holder\") Requirements: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldBoolean.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldCheckAccordian.md",
    "title": "ObjFieldCheckAccordian",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldCheckAccordian.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldCheckStatic.md",
    "title": "ObjFieldCheckStatic",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldCheckStatic.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldColour.md",
    "title": "ObjFieldColour",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldColour.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldCurrency.md",
    "title": "ObjFieldCurrency",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldCurrency.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldCurrencyView.md",
    "title": "ObjFieldCurrencyView",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldCurrencyView.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldDate.md",
    "title": "ObjFieldDate",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldDate.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldDateDOB.md",
    "title": "ObjFieldDateDOB",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldDateDOB Author: Max@technocore.co.za Choose a date from a drop down Calendar. Default : Today's Date Date range : no limit Format : YYYY-MM-DD Example: ! Example (resource.documentation/img/ObjFieldDateDOB Example.png \"Example\") Requirements: if your Computer isn't running Windows or Linux when filling out the form, the Date field will change to the 'Datebasic'(see ObjFieldDatebasic) type. Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldDat"
  },
  {
    "path": "factory-field/ObjFieldDateOnly.md",
    "title": "ObjFieldDateOnly",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldDateOnly.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldDatebasic.md",
    "title": "ObjFieldDatebasic",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldDatebasic Author: Max@technocore.co.za Choose a date from a drop down Calendar. Default : Today's Date Date range : no limit Format : YYYY-MM-DD Example: ! Example (resource.documentation/img/ObjFieldDatebasic Example.png \"Example\") Requirements: Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldDatebasic.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldDatecustom.md",
    "title": "ObjFieldDatecustom",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldDatecustom.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldDateddmmyyyy.md",
    "title": "ObjFieldDateddmmyyyy",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldDateddmmyyyy Author: Max@technocore.co.za Choose a date from a drop down Calendar. Default Value is Today's Date. Default : Today's Date Date range : no limit Format : DD-MM-YYYY Example: ! Example (resource.documentation/img/ObjFieldDateddmmyyyy Example.png \"Example\") Requirements: if your Computer isn't running Windows or Linux when filling out the form, the Date field will change to the 'Datebasic'(see ObjFieldDatebasic) type(Format will become: YYYY-MM-DD) Field Settings: GENERATED H"
  },
  {
    "path": "factory-field/ObjFieldDatefull.md",
    "title": "ObjFieldDatefull",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldDatefull Author: Max@technocore.co.za Choose a date from a drop down Calendar. Default : Today's Date Date range : no limit Format : YYYY-MM-DD Example: ! Example (resource.documentation/img/ObjFieldDatefull Example.png \"Example\") Requirements: if your Computer isn't running Windows or Linux when filling out the form, the Date field will change to the 'Datebasic'(see ObjFieldDatebasic) type. Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldD"
  },
  {
    "path": "factory-field/ObjFieldDaterange.md",
    "title": "ObjFieldDateRange",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldDateRange Author: info@technocore.co.za Choose a custom Date range or one of the set options (e.g. 'Last 7 days') Default : Today's Date - Today's Date Date range : no limit Format : YYYY-MM-DD - YYYY-MM-DD Example: ! Example (resource.documentation/img/ObjFieldDateRange Example.png \"Example\") Requirements: if your Computer isn't running Windows or Linux when filling out the form, the Date field will change to the 'Datebasic'(see ObjFieldDatebasic) type (no lower limit on the date). Fiel"
  },
  {
    "path": "factory-field/ObjFieldDatetime.md",
    "title": "ObjFieldDateTime",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldDateTime Author: info@technocore.co.za Choose a date along with a time. Default : Today's Date at midnight(00:00) Date range : no limit Format : YYYY-MM-DD HH:mm(24 hour clock format, e.g. 1pm = 13:00) NOTE: minutes are only in 15 minute intervals: (00, 15, 30 ,45) Example: ! Example (resource.documentation/img/ObjFieldDateTime Example.png \"Example\") Requirements: Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldDatetime.py Updated : 2025-06"
  },
  {
    "path": "factory-field/ObjFieldDatetimebasic.md",
    "title": "ObjFieldDatetimebasic",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldDatetimebasic.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldDualpass.md",
    "title": "ObjFieldDualpass",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldDualpass.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldEmpty.md",
    "title": "ObjFieldEmpty",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldEmpty Author: info@technocore.co.za simply an empty/hidden field. Example: ! Example (resource.documentation/img/ObjFieldEmpty.png \"Example\") Requirements: Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldEmpty.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldFile.md",
    "title": "ObjFieldFile",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldFile.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldFixedNo.md",
    "title": "ObjFieldFixedNo",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldFixedNo.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldHeading.md",
    "title": "ObjFieldHeading",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldHeading.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldIdentity.md",
    "title": "ObjFieldIdentity",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldIdentity Author: info@technocore.co.za Field for South African ID number . Will display an error message('The value is not a valid SA ID number') if the user attempts to submit an invalid number Example: Valid ! Valid Example (resource.documentation/img/ObjFieldIdentity Example.png \"Valid Example\") Invalid ! Invalid Example (resource.documentation/img/ObjFieldIdentity Example2.png \"Invalid Example\") Requirements: Field Settings: ! Invalid Example (resource.documentation/img/ObjFieldIdent"
  },
  {
    "path": "factory-field/ObjFieldIdnum.md",
    "title": "ObjFieldIdnum",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldIdnum Author: info@technocore.co.za Field for ID number . Will display an error message(\"The entered ID Number is invalid\") while the number/value entered is invalid. Example: Valid ! Valid Example (resource.documentation/img/ObjFieldIdentity Example.png \"Valid Example\") Invalid ! Invalid Example (resource.documentation/img/ObjFieldIdnum Example.png \"Invalid Example\") Requirements: Field Settings: ! Invalid Example (resource.documentation/img/ObjFieldIdnum FieldSettings.png \"Invalid Exam"
  },
  {
    "path": "factory-field/ObjFieldIdnumber.md",
    "title": "ObjFieldIdnumber",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldIdnumber.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldImage.md",
    "title": "ObjFieldImage",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldImage.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldInt.md",
    "title": "ObjFieldInt",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldInt Author: info@technocore.co.za Field for inputting Integer Values. There are arrow keys aligned to the right of the field to increment or decrement the value, or the user can just type in the value. Example: ! Example (resource.documentation/img/ObjFieldInt Example.png) \"Example\") Requirements: Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldInt.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldLocalJson.md",
    "title": "ObjFieldLocalJson",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldLocalJson.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldLong.md",
    "title": "ObjFieldInt",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldInt Author: info@technocore.co.za Field for inputting long values. There are arrow keys aligned to the right of the field to increment or decrement the value, or the user can just type in the value. Example: ! Example (resource.documentation/img/ObjFieldInt Example.png) \"Example\") Requirements: Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldLong.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldMask.md",
    "title": "ObjFieldMask",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldMask.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldMobile.md",
    "title": "ObjFieldMobile",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldMobile Author: info@technocore.co.za Field for SA mobile number . Will display an error message while the number/value entered is invalid. Format: +27(followed by an additional 9 numbers) Example: Invalid ! Example (resource.documentation/img/ObjFieldMobile Example.png \"Example\") valid ! Example (resource.documentation/img/ObjFieldMobile Example2.png \"Example\") Requirements: Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldMobile.py Updated "
  },
  {
    "path": "factory-field/ObjFieldMonth.md",
    "title": "ObjFieldMonth",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldMonth.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldMultiCheck.md",
    "title": "ObjFieldMultiCheck",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldMultiCheck.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldMultiDatespicker.md",
    "title": "ObjFieldMultiDatespicker",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldMultiDatespicker Author: info@technocore.co.za Choose multiple date(s) from a drop down Calendar. The dates are seperated by a comma. Default : empty Date range : today -- no limit Format : YYYY-MM-DD,YYYY-MM-DD, ... Example: ! Example (resource.documentation/img/ObjFieldMultiDatespicker Example2.png \"Example\") Requirements: Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldMultiDatespicker.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldMultilist.md",
    "title": "ObjFieldMultilist",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldMultilist.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldMultipair.md",
    "title": "ObjFieldMultipair",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldMultipair.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldMultiquery.md",
    "title": "ObjFieldMultiquery",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldMultiquery.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldMultiselect.md",
    "title": "ObjFieldMultiselect",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldMultiselect.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldNone.md",
    "title": "ObjFieldNone",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldNone Author: info@technocore.co.za Literally nothing. Example: ! Example (resource.documentation/img/ObjFieldNone Example.png \"Example\") Requirements: Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldNone.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldNow.md",
    "title": "NAME",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "NAME Author: info@technocore.co.za Todays Date + Time. Cannot be edited. Format: YYYY-MM-DD HH:MM:SS.ssssss Example: ! Example (resource.documentation/img/ObjFieldNow Example.png \"Example\") Requirements: Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldNow.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldNumber.md",
    "title": "ObjFieldNumber",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldNumber Author: info@technocore.co.za Field for inputting Integer values. There are arrow keys aligned to the right of the field to increment or decrement the value, or the user can just type in the value. Example: ! Example (resource.documentation/img/ObjFieldInt Example.png) \"Example\") Requirements: Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldNumber.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldPostcode.md",
    "title": "ObjFieldPostcode",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldPostcode.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldQuerydisplay.md",
    "title": "ObjFieldQuerydisplay",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldQuerydisplay.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldQuerydisplayedit.md",
    "title": "ObjFieldQuerydisplayedit",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldQuerydisplayedit.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldQuerydisplaystatic.md",
    "title": "ObjFieldQuerydisplaystatic",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldQuerydisplaystatic.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldRange.md",
    "title": "ObjFieldRange",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldRange.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldSelect.md",
    "title": "ObjFieldSelect",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldSelect.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldStatic.md",
    "title": "ObjFieldStatic",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldStatic.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldTemplate.md",
    "title": "ObjFieldTemplate",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldTemplate.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldText.md",
    "title": "ObjFieldText",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldText.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldTime.md",
    "title": "ObjFieldTime",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldTime.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldTiny.md",
    "title": "ObjFieldTiny",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldTiny.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldTitatoggle.md",
    "title": "ObjFieldTitatoggle",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldTitatoggle.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldTitle.md",
    "title": "ObjFieldTitle",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldTitle.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldToggle.md",
    "title": "ObjFieldToggle",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldToggle.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldToggleV.md",
    "title": "ObjFieldToggleV",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldToggleV.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldUpload.md",
    "title": "ObjFieldUpload",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldUpload.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldUploadXt.md",
    "title": "ObjFieldUploadXt",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldUploadXt.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldUrl.md",
    "title": "ObjFieldUrl",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldUrl.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldUser.md",
    "title": "ObjFieldUser",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldUser.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldValue.md",
    "title": "ObjFieldValue",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldValue.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/ObjFieldVoucher.md",
    "title": "ObjFieldVoucher",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldVoucher.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldAvatar.md",
    "title": "ObjFieldAvatar",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldAvatar Author : Max@technocore.co.za choose a small image from a selection located in Axion/local/avatar Example: ! Advanced Field Settings (/resource.documentation/img/ObjFieldAvatar Example.png \"Place holder\") Requirements: Field Settings: ! Advanced Field Settings (/resource.documentation/img/ObjFieldAvatar FieldSettings2.png \"Place holder\") Name Default Description Required :----------- :-------: :------------------------------------------- :--------: Place holder None user can speci"
  },
  {
    "path": "factory-field/package-core/ObjFieldBlob.md",
    "title": "ObjFieldBlob",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldBlob Author: Max Weihe Creates a text-box that the user can adjust the size of and becomes scrollable once the text exceeds the blobs size. Example: ! Advanced Field Settings (../resource.documentation/img/ObjFieldBlob Example.png \"Plac holder\") Requirements: Field Settings: ! Advanced Field Settings (../resource.documentation/img/ObjFieldBlob FieldSettings.png \"Plac holder\") Name Default Description Required :----------- :-------: :------------------------------------------- :--------: "
  },
  {
    "path": "factory-field/package-core/ObjFieldCamera.md",
    "title": "ObjFieldCamera",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldCamera Author: Max@technocore.co.za Upload a chosen Image From your Computer. Example: ! Advanced Field Settings (resource.documentation/img/ObjFieldCamera Example.png \"Example\") Requirements: In 'Base Setup' ensure 'Is this a binary stream form?' = 'Y' ! Advanced Field Settings (resource.documentation/img/ObjFieldCamera Requirements.png \"Plac holder\") Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldCamera.py Updated : 2025-06-09 // : < (CY"
  },
  {
    "path": "factory-field/package-core/ObjFieldCheck.md",
    "title": "ObjFieldCheck",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldCheck Author: cto@technocore.co.za Create a check-box that can be used as a terms and conditions agreement or just to get a boolean value from the user. Example: ! Example (resource.documentation/img/ObjFieldCheck Example.png \"Example\") Requirements: Field Settings: ! Advanced Field Settings (resource.documentation/img/ObjFieldCheck FieldSettings.png \"Plac holder\") Name Default Description Required :----------- :-------: :------------------------------------------- :--------: Required N "
  },
  {
    "path": "factory-field/package-core/ObjFieldCheckLeft.md",
    "title": "ObjFieldCheckLeft",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldCheckLeft Author: Max@technocore.co.za Same as 'Check'(see ObjFieldCheck) but to the left of the label. Create a check-box that can be used to stop the user from proceeding unless check (e.g. terms and conditions agreement) or just to get a boolean value from the user. Example: ! Example (resource.documentation/img/ObjFieldCheckLeft Example.png \"Example\") Requirements: Field Settings: ! Advanced Field Settings (resource.documentation/img/ObjFieldCheckLeft FieldSettings.png \"Field Setting"
  },
  {
    "path": "factory-field/package-core/ObjFieldCheckgroup.md",
    "title": "ObjFieldCheckgroup",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldCheckgroup.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldColourPicker.md",
    "title": "ObjFieldColourPicker",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldColourPicker Author: Max@technocore.co.za Allows User to choose a Colour which is then saved as hexadecimal Triplets For example, for the color red, the color code is FF0000, which is '255' red, '0' green, and '0' blue. There are 16,777,216 possible HTML color codes, and all are visible on a 24-bit display. Example: ! Example (resource.documentation/img/ObjFieldColourPicker Example.png \"Example\") Requirements: Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize"
  },
  {
    "path": "factory-field/package-core/ObjFieldComplete.md",
    "title": "ObjFieldComplete",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldComplete.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldDatalist.md",
    "title": "ObjFieldDatalist",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldDatalist.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldDate.md",
    "title": "NAME",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "NAME Author: Max@technocore.co.za Choose a date from a drop down Calendar. Default : Today's Date Date range : today -- no limit Format : YYYY-MM-DD Example: ! Example (resource.documentation/img/ObjFieldDate Example.png \"Example\") Requirements: if your Computer isn't running Windows or Linux when filling out the form, the Date field will change to the 'Datebasic'(see ObjFieldDatebasic) type (no lower limit on the date). Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cython"
  },
  {
    "path": "factory-field/package-core/ObjFieldDateTimeRange.md",
    "title": "ObjFieldDateTimeRange",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldDateTimeRange Author: info@technocore.co.za Choose a custom Date range or one of the set options (e.g. 'Last 7 days') Default : Today's Date + current time - Today's Date + current time Date range : no limit Format : YYYY-MM-DD HH:mm - YYYY-MM-DD HH:mm (24 hour clock format, e.g. 1pm = 13:00) NOTE: minutes are only in 15 minute intervals: (options: 00, 15, 30 ,45) Example: ! Example (resource.documentation/img/ObjFieldDateTimeRange Example.png \"Example\") Requirements: Field Settings: GEN"
  },
  {
    "path": "factory-field/package-core/ObjFieldDatehtml.md",
    "title": "ObjFieldDatehtml",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldDatehtml.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldDisplay.md",
    "title": "ObjFieldDisplay",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldDisplay.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldDisplayHtml.md",
    "title": "ObjFieldDisplayHtml",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldDisplayHtml.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldDisplayStatic.md",
    "title": "ObjFieldDisplayStatic",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldDisplayStatic.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldEmail.md",
    "title": "ObjFieldEmail",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldEmail Author: info@technocore.co.za Ensures only a valid email address can be submitted and shows an error message while the email/text entered is invalid. Example: invalid email ! Invalid Example (../resource.documentation/img/ObjFieldEmail Example.png \"Invalid Example\") valid email ! Invalid Example (../resource.documentation/img/ObjFieldEmail Example2.png \"Invalid Example\") Requirements: Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldEm"
  },
  {
    "path": "factory-field/package-core/ObjFieldFileUpload.md",
    "title": "ObjFieldFileUpload",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldFileUpload.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldFloat.md",
    "title": "ObjFieldFloat",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldFloat.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldGeolocation.md",
    "title": "ObjFieldGeolocation",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldGeolocation Author: info@technocore.co.za Hidden Field that gets the location of the user (browser will prompt the user on wheter they wish to share thier location) Example: ! Example (../resource.documentation/img/ObjFieldGeolocation Example.png \"Example\") Requirements: Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldGeolocation.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldHidden.md",
    "title": "ObjFieldHidden",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldHidden Author: info@technocore.co.za Creates a blank label and field. Example: ! Example (../resource.documentation/img/ObjFieldHidden Example.png \"Example\") Requirements: Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldHidden.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldHiddenStatic.md",
    "title": "ObjFieldHiddenStatic",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldHiddenStatic Author: info@technocore.co.za Creates a static blank label and field. Example: ! Example (resource.documentation/img/ObjFieldHiddenStatic Example.png \"Example\") Requirements: Field Settings: GENERATED HTML: // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldHiddenStatic.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldList.md",
    "title": "ObjFieldList",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldList.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldLongmobile2.md",
    "title": "ObjFieldLongmobile2",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldLongmobile2.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldLookup.md",
    "title": "ObjFieldLookup",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldLookup.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldMsisdn.md",
    "title": "ObjFieldMsisdn",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldMsisdn.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldNull.md",
    "title": "ObjFieldNull",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldNull.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldPassword.md",
    "title": "Notes",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "Notes When password auto-complete is enabled, the browser will remember the password entered into the login form, such that it will automatically fill it next time the user tries to login. However, if an attacker gains physical access to the victim's computer, he can retrieve the saved password from the browser's memory and use it to gain access to the victim's account in the application. Furthermore, if the application is also vulnerable to Cross-Site Scripting, the attacker could steal the sav"
  },
  {
    "path": "factory-field/package-core/ObjFieldQuadd.md",
    "title": "ObjFieldQuadd",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldQuadd.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldQuery.md",
    "title": "ObjFieldQuery",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldQuery.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldQueryC.md",
    "title": "ObjFieldQueryC",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldQueryC.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldQueryFilter.md",
    "title": "ObjFieldQueryFilter",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldQueryFilter.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldQueryFilterMultiple.md",
    "title": "ObjFieldQueryFilterMultiple",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldQueryFilterMultiple.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldRadio.md",
    "title": "ObjFieldRadio",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldRadio.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldRadioH.md",
    "title": "ObjFieldCheckLeft",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldCheckLeft Author: Max@technocore.co.za Same as 'Check'(see ObjFieldCheck) but to the left of the label. Create a check-box that can be used to stop the user from proceeding unless check (e.g. terms and conditions agreement) or just to get a boolean value from the user. Example: ! Example (resource.documentation/img/ObjFieldCheckLeft Example.png \"Example\") Requirements: Field Settings: ! Advanced Field Settings (resource.documentation/img/ObjFieldCheckLeft FieldSettings.png \"Field Setting"
  },
  {
    "path": "factory-field/package-core/ObjFieldRadioInline.md",
    "title": "ObjFieldRadioInline",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldRadioInline.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldRadioV.md",
    "title": "ObjFieldCheckLeft",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldCheckLeft Author: Max@technocore.co.za Same as 'Check'(see ObjFieldCheck) but to the left of the label. Create a check-box that can be used to stop the user from proceeding unless check (e.g. terms and conditions agreement) or just to get a boolean value from the user. Example: ! Example (resource.documentation/img/ObjFieldCheckLeft Example.png \"Example\") Requirements: Field Settings: ! Advanced Field Settings (resource.documentation/img/ObjFieldCheckLeft FieldSettings.png \"Field Setting"
  },
  {
    "path": "factory-field/package-core/ObjFieldSelectDisplay.md",
    "title": "ObjFieldSelectDisplay",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldSelectDisplay.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldSignature.md",
    "title": "ObjFieldSignature",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldSignature.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldString.md",
    "title": "ObjFieldString",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldString.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldStringQuery.md",
    "title": "ObjFieldStringQuery",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldStringQuery.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldSumoselect.md",
    "title": "ObjFieldSumoselect",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldSumoselect.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldSumoselectsingle.md",
    "title": "ObjFieldSumoselectsingle",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldSumoselectsingle.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldTimer.md",
    "title": "ObjFieldTimer",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldTimer.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldTimestamp.md",
    "title": "ObjFieldTimestamp",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldTimestamp.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFieldTurnstile.md",
    "title": "ObjFieldTurnstile",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "Turnstile Turnstile delivers frustration-free, CAPTCHA-free web experiences to website visitors - with just a simple snippet of free code. Moreover, Turnstile stops abuse and confirms visitors are real without the data privacy concerns or awful UX that CAPTCHAs thrust on users. Turnstile : Ashpool Remote connections : Code: The challenge runs after the render() function has been called, by invoking the turnstile.execute(container: string HTMLElement, jsParams?: RenderParameters) function separat"
  },
  {
    "path": "factory-field/package-core/ObjFieldTypeAhead.md",
    "title": "ObjFieldTypeAhead",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFieldTypeAhead.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-core/ObjFormNull.md",
    "title": "ObjFormNull",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjFormNull.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-field/package-editors/ObjFieldCodeedit.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.base/generic code.svg \"\" ) (c) Technocore - All Rights Reserved. ObjFieldCodeedit.py Explained This document explains the functionality of the ObjFieldCodeedit.py component. It serves as a foundational building block for creating advanced code-editing fields within web forms, utilizing the Ace.js library. Core Concept The primary goal is to replace a standard HTML <textarea with a feature-rich code editor. This is achieved by using a <div as the visible edit"
  },
  {
    "path": "factory-field/package-editors/ObjFieldCodeeditcss.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.base/generic code.svg \"\" ) (c) Technocore - All Rights Reserved. ObjFieldCodeeditcss.py Explained This component provides a specialized code editor for CSS stylesheets within a web form. Core Functionality It inherits all its functionality from the base ObjFieldCodeedit.ObjFieldElement class. The primary purpose of this class is to configure the Ace.js editor for a specific language. Implementation Details init Method The constructor overrides the default se"
  },
  {
    "path": "factory-field/package-editors/ObjFieldCodeeditgherkin.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.base/generic code.svg \"\" ) (c) Technocore - All Rights Reserved. ObjFieldCodeeditgherkin.py Explained This component provides a specialized code editor for Gherkin syntax within a web form. Gherkin is the language used for writing feature files in the Cucumber testing framework. Core Functionality This class extends the base ObjFieldCodeedit.ObjFieldElement to create a Gherkin-specific editor. It inherits the core logic of rendering an Ace.js editor and sync"
  },
  {
    "path": "factory-field/package-editors/ObjFieldCodeedithtml.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.base/generic code.svg \"\" ) (c) Technocore - All Rights Reserved. ObjFieldCodeedithtml.py Explained This component provides a specialized code editor for HTML markup within a web form. Core Functionality It inherits its core functionality from the ObjFieldCodeedit.ObjFieldElement base class. Its main purpose is to configure the Ace.js editor for HTML editing. Implementation Details init Method The constructor sets the specific properties for the HTML editor. "
  },
  {
    "path": "factory-field/package-editors/ObjFieldCodeeditjs.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.base/generic code.svg \"\" ) (c) Technocore - All Rights Reserved. ObjFieldCodeeditjs.py Explained This component provides a specialized code editor for JavaScript code within a web form. Core Functionality This class is a specialization of the ObjFieldCodeedit.ObjFieldElement base class. It leverages the parent's rendering logic to create an Ace.js editor configured specifically for JavaScript. Implementation Details init Method The constructor overrides the "
  },
  {
    "path": "factory-field/package-editors/ObjFieldCodeeditpy.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjFieldCodeeditpy.py Explained This component provides a specialized code editor for Python code within a web form. Core Functionality This class extends ObjFieldCodeedit.ObjFieldElement to create a Python-specific version of the Ace.js editor. It inherits the core rendering and data-syncing logic from its parent. Implementation Details init Method The constructor configures the editor for Python development. - self.Mode = \"python\" : This sets the Ace.js ed"
  },
  {
    "path": "factory-field/package-editors/ObjFieldCodeeditr.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjFieldCodeeditr.py Explained This component provides a specialized code editor for the R programming language within a web form. Core Functionality This class is a specialization of the ObjFieldCodeedit.ObjFieldElement base class. It is designed to configure the Ace.js editor for editing R code. Implementation Details init Method The constructor sets the specific mode and resources for the R editor. - self.Mode = \"r\" : This line configures the Ace.js insta"
  },
  {
    "path": "factory-field/package-editors/ObjFieldCodeeditsql.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjFieldCodeeditsql.py Explained This component provides a specialized code editor for SQL queries within a web form. Core Functionality This class inherits from ObjFieldCodeedit.ObjFieldElement and configures the Ace.js editor for SQL syntax. Implementation Details init Method The constructor sets the editor's mode to SQL. - self.Mode = \"sql\" : This sets the Ace.js editor to use its SQL language mode, which provides syntax highlighting for SQL keywords and "
  },
  {
    "path": "factory-field/package-editors/ObjFieldEdit.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved."
  },
  {
    "path": "factory-field/package-editors/ObjFieldEditTabulator.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjFieldEditTabulator.py Explained This document explains the functionality of the ObjFieldEditTabulator.py component. Its purpose is to provide an intuitive, spreadsheet-like interface for editing JSON data within a web form, utilizing the Tabulator.js library. Core Concept The component replaces a standard text field with an interactive table for editing JSON. It maintains a hidden <textarea to store the raw JSON string, ensuring seamless integration with "
  },
  {
    "path": "factory-field/package-editors/ObjFieldEditTinymce.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjFieldTinymce.py Explained This document breaks down how the ObjFieldTinymce.py component works. Its primary purpose is to provide a rich, WYSIWYG (What You See Is What You Get) editor for markdown content within a web form, leveraging the TinyMCE JavaScript library. Core Concept The fundamental design pattern is to enhance a standard HTML <textarea with a powerful editor while ensuring the edited content can be submitted as part of a form. This is achieve"
  },
  {
    "path": "factory-field/package-research/ObjFieldRadioH.md",
    "title": "ObjFieldCheckLeft",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldCheckLeft Author: Max@technocore.co.za Same as 'Check'(see ObjFieldCheck) but to the left of the label. Create a check-box that can be used to stop the user from proceeding unless check (e.g. terms and conditions agreement) or just to get a boolean value from the user. Example: ! Example (resource.documentation/img/ObjFieldCheckLeft Example.png \"Example\") Requirements: Field Settings: ! Advanced Field Settings (resource.documentation/img/ObjFieldCheckLeft FieldSettings.png \"Field Setting"
  },
  {
    "path": "factory-field/package-research/ObjFieldRadioV.md",
    "title": "ObjFieldCheckLeft",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldCheckLeft Author: Max@technocore.co.za Same as 'Check'(see ObjFieldCheck) but to the left of the label. Create a check-box that can be used to stop the user from proceeding unless check (e.g. terms and conditions agreement) or just to get a boolean value from the user. Example: ! Example (resource.documentation/img/ObjFieldCheckLeft Example.png \"Example\") Requirements: Field Settings: ! Advanced Field Settings (resource.documentation/img/ObjFieldCheckLeft FieldSettings.png \"Field Setting"
  },
  {
    "path": "factory-field/package-uk/ObFieldMobileuk.md",
    "title": "ObjFieldMobileuk",
    "factory": "factory.field",
    "type": "markdown",
    "tags": [],
    "body": "ObjFieldMobileuk Author: info@technocore.co.za Field for UK Mobile number . Will display an error message(\"The value is not a valid contact number\") while the number/value entered is invalid. Format: +44(followed by an additional 7-10 numbers) Example: Invalid ! Invalid Example (../resource.documentation/img/ObjFieldMobile Example.png \"Invalid Example\") Valid ! Valid Example (../resource.documentation/img/ObFieldMobileuk Example.png \"Valid Example\") Requirements: Field Settings: GENERATED HTML:"
  },
  {
    "path": "factory-export/ObjDataExportArrow.md",
    "title": "ObjDataExportArrow",
    "factory": "factory.export",
    "type": "markdown",
    "tags": [],
    "body": "ObjDataExportArrow Exports data as an Apache Arrow IPC (Feather v2) file using pyarrow . Overview Builds a RecordBatch from column data and writes it as an IPC file format. Column types are inferred by pyarrow from the actual values. Rows are buffered in memory and the file is written when CloseFile is called. Dependencies - pyarrow (listed in requirements.txt) Usage Interface Method Description --- --- OpenFile(filename) Set output path and reset row buffer WriteHeader(fields) Store column name"
  },
  {
    "path": "factory-export/ObjDataExportAvro.md",
    "title": "ObjDataExportAvro",
    "factory": "factory.export",
    "type": "markdown",
    "tags": [],
    "body": "ObjDataExportAvro Exports data as an Apache Avro file using the fastavro library. Overview Generates an Avro schema with all fields typed as \"string\" and writes records using fastavro.writer . Null values are converted to empty strings. Rows are buffered in memory and the file is written when CloseFile is called. Dependencies - fastavro (listed in requirements.txt) Usage Interface Method Description --- --- OpenFile(filename) Set output path and reset row buffer WriteHeader(fields) Store column "
  },
  {
    "path": "factory-export/ObjDataExportCsv.md",
    "title": "ObjDataExportCsv",
    "factory": "factory.export",
    "type": "markdown",
    "tags": [],
    "body": "// : < (COMPLEXITY START) Cyclomatic complexity A quantitative measure of the number of linearly independent paths through a program's source code. Halstead metrics Halstead’s goal was to identify measurable properties of software, and the relations between them. These numbers are statically computed from the source code η1 = the number of distinct operators η2 = the number of distinct operands N1 = the total number of operators N2 = the total number of operands Maintainability Index Maintainabi"
  },
  {
    "path": "factory-export/ObjDataExportCsvProcess.md",
    "title": "ObjDataExportCsvProcess",
    "factory": "factory.export",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjDataExportCsvProcess.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-export/ObjDataExportGsheets.md",
    "title": "ObjDataExportGsheets",
    "factory": "factory.export",
    "type": "markdown",
    "tags": [],
    "body": "ObjDataExportGsheets Exports data to a Google Sheets spreadsheet via the gspread library. Overview Opens a Google Sheets spreadsheet by URL or title, clears the first worksheet, and writes headers plus data rows in a single batch update. Credentials are loaded from a service account JSON file configured in config.yaml under google.service account file , or set directly via self.credentials file . Dependencies - gspread (listed in requirements.txt) - google-auth (listed in requirements.txt) - A G"
  },
  {
    "path": "factory-export/ObjDataExportHtml.md",
    "title": "ObjDataExportHtml",
    "factory": "factory.export",
    "type": "markdown",
    "tags": [],
    "body": "ObjDataExportHtml Exports data as an HTML table document. Overview Writes a complete HTML5 document with a <table element containing <thead for column headers and <tbody for data rows. Simple inline CSS is included for readability (borders, padding, alternating row colours). All values are HTML-escaped to prevent XSS injection. Dependencies - html (Python stdlib, no external dependency) Usage Interface Method Description --- --- OpenFile(filename) Open file and write HTML preamble WriteHeader(fi"
  },
  {
    "path": "factory-export/ObjDataExportJson.md",
    "title": "ObjDataExportJson",
    "factory": "factory.export",
    "type": "markdown",
    "tags": [],
    "body": "// : < (COMPLEXITY START) Cyclomatic complexity A quantitative measure of the number of linearly independent paths through a program's source code. Halstead metrics Halstead’s goal was to identify measurable properties of software, and the relations between them. These numbers are statically computed from the source code η1 = the number of distinct operators η2 = the number of distinct operands N1 = the total number of operators N2 = the total number of operands Maintainability Index Maintainabi"
  },
  {
    "path": "factory-export/ObjDataExportMarkdown.md",
    "title": "ObjDataExportMarkdown",
    "factory": "factory.export",
    "type": "markdown",
    "tags": [],
    "body": "// : < (COMPLEXITY START) Cyclomatic complexity A quantitative measure of the number of linearly independent paths through a program's source code. Halstead metrics Halstead’s goal was to identify measurable properties of software, and the relations between them. These numbers are statically computed from the source code η1 = the number of distinct operators η2 = the number of distinct operands N1 = the total number of operators N2 = the total number of operands Maintainability Index Maintainabi"
  },
  {
    "path": "factory-export/ObjDataExportMysql.md",
    "title": "ObjDataExportMysql",
    "factory": "factory.export",
    "type": "markdown",
    "tags": [],
    "body": "// : < (COMPLEXITY START) Cyclomatic complexity A quantitative measure of the number of linearly independent paths through a program's source code. Halstead metrics Halstead’s goal was to identify measurable properties of software, and the relations between them. These numbers are statically computed from the source code η1 = the number of distinct operators η2 = the number of distinct operands N1 = the total number of operators N2 = the total number of operands Maintainability Index Maintainabi"
  },
  {
    "path": "factory-export/ObjDataExportMysqltable.md",
    "title": "ObjDataExportMysqltable",
    "factory": "factory.export",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjDataExportMysqltable.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-export/ObjDataExportOds.md",
    "title": "ObjDataExportOds",
    "factory": "factory.export",
    "type": "markdown",
    "tags": [],
    "body": "ObjDataExportOds Exports data as an ODS (OpenDocument Spreadsheet) file using the odfpy library. Overview Produces a single-sheet ODS document with column headers in the first row followed by data rows. All values are written as text cells. Rows are buffered in memory and the file is written when CloseFile is called. Dependencies - odfpy (listed in requirements.txt) Usage Interface Method Description --- --- OpenFile(filename) Set output path and reset row buffer WriteHeader(fields) Store column"
  },
  {
    "path": "factory-export/ObjDataExportOrc.md",
    "title": "ObjDataExportOrc",
    "factory": "factory.export",
    "type": "markdown",
    "tags": [],
    "body": "ObjDataExportOrc Exports data as an Apache ORC columnar file using the pyorc library. Overview Writes all columns as string type in a struct schema derived from the header names. Rows are buffered in memory and the ORC file is written when CloseFile is called. Null values are converted to empty strings. Dependencies - pyorc (listed in requirements.txt) Usage Interface Method Description --- --- OpenFile(filename) Set output path and reset row buffer WriteHeader(fields) Store column names and tra"
  },
  {
    "path": "factory-export/ObjDataExportSftp.md",
    "title": "ObjDataExportSftp",
    "factory": "factory.export",
    "type": "markdown",
    "tags": [],
    "body": "ObjDataExportSftp SFTP transport wrapper that writes data to a local temporary file using a delegate exporter, then uploads the result via SFTP. Overview The delegate exporter is automatically selected based on the remote filename extension (e.g., .csv uses ObjDataExportCsv , .json uses ObjDataExportJson ). All WriteHeader and WriteData calls are forwarded to the delegate. On CloseFile , the delegate finalises the local file and the wrapper uploads it to the SFTP server, then removes the tempora"
  },
  {
    "path": "factory-export/ObjDataExportSql.md",
    "title": "ObjDataExportSql",
    "factory": "factory.export",
    "type": "markdown",
    "tags": [],
    "body": "// : < (COMPLEXITY START) Cyclomatic complexity A quantitative measure of the number of linearly independent paths through a program's source code. Halstead metrics Halstead’s goal was to identify measurable properties of software, and the relations between them. These numbers are statically computed from the source code η1 = the number of distinct operators η2 = the number of distinct operands N1 = the total number of operators N2 = the total number of operands Maintainability Index Maintainabi"
  },
  {
    "path": "factory-export/ObjDataExportSqlite.md",
    "title": "ObjDataExportSqlite",
    "factory": "factory.export",
    "type": "markdown",
    "tags": [],
    "body": "ObjDataExportSqlite Exports data as a SQLite database file using the stdlib sqlite3 module. Overview Creates a single table with all columns typed as VARCHAR and inserts rows via executemany . The table name defaults to \"exported data\" but can be customised by setting self.table name before calling WriteHeader . The database connection is opened on OpenFile and committed/closed on CloseFile . Dependencies - sqlite3 (Python stdlib, no external dependency) Usage Interface Method Description --- --"
  },
  {
    "path": "factory-export/ObjDataExportXls.md",
    "title": "ObjDataExportXls",
    "factory": "factory.export",
    "type": "markdown",
    "tags": [],
    "body": "// : < (COMPLEXITY START) Cyclomatic complexity A quantitative measure of the number of linearly independent paths through a program's source code. Halstead metrics Halstead’s goal was to identify measurable properties of software, and the relations between them. These numbers are statically computed from the source code η1 = the number of distinct operators η2 = the number of distinct operands N1 = the total number of operators N2 = the total number of operands Maintainability Index Maintainabi"
  },
  {
    "path": "factory-export/ObjDataExportXlsx.md",
    "title": "c) TechnoCore - All Rights Reserved.",
    "factory": "factory.export",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\") (c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. The intellectual and technical concepts contained herein are proprietary to TechnoCore Automate and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore Automate. ObjDataExportXlsx Excel .xlsx exporter using op"
  },
  {
    "path": "factory-export/ObjDataExportYaml.md",
    "title": "ObjDataExportYaml",
    "factory": "factory.export",
    "type": "markdown",
    "tags": [],
    "body": "// : < (COMPLEXITY START) Cyclomatic complexity A quantitative measure of the number of linearly independent paths through a program's source code. Halstead metrics Halstead’s goal was to identify measurable properties of software, and the relations between them. These numbers are statically computed from the source code η1 = the number of distinct operators η2 = the number of distinct operands N1 = the total number of operators N2 = the total number of operands Maintainability Index Maintainabi"
  },
  {
    "path": "factory-import/ObjDataImportArrow.md",
    "title": "ObjImportApi for Apache Arrow IPC Files",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjImportApi for Apache Arrow IPC Files The ObjImportApi class in ObjDataImportArrow.py imports data from Apache Arrow IPC files. It supports both the Arrow IPC file format ( .arrow ) and Feather v2 ( .feather ) — these are the same on-disk format. Arrow is a columnar in-memory format designed for zero-copy reads. It is significantly faster to read than Parquet for "
  },
  {
    "path": "factory-import/ObjDataImportAvro.md",
    "title": "ObjImportApi for Apache Avro Files",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjImportApi for Apache Avro Files The ObjImportApi class in ObjDataImportAvro.py imports data from Apache Avro ( .avro ) files using the fastavro library. It follows the same open file / column list / next row / close file interface used by all other ObjDataImport modules. Each Avro record is natively a dict, so no conversion is needed. The entire file is read into"
  },
  {
    "path": "factory-import/ObjDataImportCSV.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. ObjImportApi for CSV Files The ObjImportApi class in ObjDataImportCSV.py is a specialized data import tool designed to handle CSV (Comma-Separated Values) files. It extends the core ObjData.ObjData class, providing functionalities to open, read, and process data from CSV files efficiently. Key Features - Automatic Delimiter Detection : The class can automatically detect the delimiter used in the "
  },
  {
    "path": "factory-import/ObjDataImportFwf.md",
    "title": "ObjImportApi for Fixed-Width Format Files",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjImportApi for Fixed-Width Format Files The ObjImportApi class in ObjDataImportFwf.py imports data from Fixed-Width Format (FWF) files, also known as flat files or positional files. Each column occupies a fixed character range on every line. This format is common in mainframe exports, banking bureau files (e.g. Experian flat-file feeds), and legacy government data"
  },
  {
    "path": "factory-import/ObjDataImportGsheets.md",
    "title": "ObjImportApi for Google Sheets",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjImportApi for Google Sheets The ObjImportApi class in ObjDataImportGsheets.py imports data from Google Sheets using the gspread library with service account authentication. It follows the same open file / column list / next row / close file interface used by all other ObjDataImport modules. All cell values are returned as strings. The entire worksheet is read int"
  },
  {
    "path": "factory-import/ObjDataImportHtml.md",
    "title": "ObjImportApi for HTML Tables",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjImportApi for HTML Tables The ObjImportApi class in ObjDataImportHtml.py imports data from HTML tables using pandas.read html() . It follows the same open file / column list / next row / close file interface used by all other ObjDataImport modules. The first <table found in the HTML is used. Both local files and URLs (http/https) are supported. Methods prep file("
  },
  {
    "path": "factory-import/ObjDataImportJson.md",
    "title": "ObjImportApi for JSON Files",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjImportApi for JSON Files The ObjImportApi class in ObjDataImportJson.py imports data from JSON files that contain a top-level array of objects. It follows the same open file / column list / next row / close file interface used by all other ObjDataImport modules. The entire file is loaded into memory on open file , making it suitable for files that fit comfortably"
  },
  {
    "path": "factory-import/ObjDataImportLog.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. ObjImportApi for Log Files The ObjImportApi class in ObjDataImportLog.py is a specialized tool for importing and parsing log files. It is designed to handle specific log formats, such as Apache error logs, by extending the ObjData.ObjData class. Key Features - Log Format Specificity : Tailored to parse log files where entries are enclosed in brackets ( ). - Structured Data Extraction : Capable of"
  },
  {
    "path": "factory-import/ObjDataImportNdjson.md",
    "title": "ObjImportApi for NDJSON Files",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjImportApi for NDJSON Files The ObjImportApi class in ObjDataImportNdjson.py imports data from Newline-Delimited JSON files (NDJSON, also known as JSON Lines / .jsonl ). Each line in the file must be a self-contained JSON object. Unlike ObjDataImportJson , this class streams the file line by line and never loads more than one record into memory at a time, making i"
  },
  {
    "path": "factory-import/ObjDataImportOds.md",
    "title": "ObjImportApi for OpenDocument Spreadsheet Files",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjImportApi for OpenDocument Spreadsheet Files The ObjImportApi class in ObjDataImportOds.py imports data from OpenDocument Spreadsheet ( .ods ) files — the native format for LibreOffice Calc and a common format in South African government and public-sector data. The first row of the selected sheet is treated as the column header. Requires: odfpy Methods prep file("
  },
  {
    "path": "factory-import/ObjDataImportOrc.md",
    "title": "ObjImportApi for Apache ORC Files",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjImportApi for Apache ORC Files The ObjImportApi class in ObjDataImportOrc.py imports data from Apache ORC (Optimized Row Columnar) files. ORC is a columnar storage format widely used in the Hadoop/Hive ecosystem and is the native format for many data warehouse exports. Unlike Parquet and Arrow, rows are streamed from the file one at a time without loading the ent"
  },
  {
    "path": "factory-import/ObjDataImportParquet.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. ObjImportApi for Parquet Files The ObjImportApi class in ObjDataImportParquet.py is designed for importing data from Apache Parquet files. It leverages the pandas library to read Parquet files into a DataFrame, making it easy to process columnar data efficiently. Key Features - High-Performance Data Reading : Utilizes pandas.read parquet for fast and efficient reading of Parquet files. - Column N"
  },
  {
    "path": "factory-import/ObjDataImportQuery.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. ObjImportApi for Database Queries The ObjImportApi class in ObjDataImportQuery.py is a powerful tool for importing data directly from a database using SQL queries. It is designed to fetch data in manageable chunks, making it suitable for handling large datasets without overwhelming system resources. Key Features - Paginated Data Retrieval : Fetches query results in windows (pages), which is memor"
  },
  {
    "path": "factory-import/ObjDataImportSftp.md",
    "title": "ObjDataImportSftp",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "ObjDataImportSftp Overview SFTP transport wrapper for data import. Downloads a file from an SFTP server, detects its format from the file extension, and delegates to the matching format handler. Supports any format that has an ObjDataImport handler: CSV, JSON, XLSX, XML, Avro, Parquet, YAML, ODS, etc. Class ObjImportApi inherits from ObjData.ObjData . Connection Methods SFTP credentials are resolved in this order: 1. SFTP URI : sftp://user:pass@host:port/path/file.csv 2. Parent attributes : Host"
  },
  {
    "path": "factory-import/ObjDataImportSqlite.md",
    "title": "ObjImportApi for SQLite Files",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjImportApi for SQLite Files The ObjImportApi class in ObjDataImportSqlite.py imports data from SQLite database files ( .db , .sqlite ). It follows the same open file / column list / next row / close file interface used by all other ObjDataImport modules. Uses the Python standard library sqlite3 module. All rows from the target table are read into memory on open fi"
  },
  {
    "path": "factory-import/ObjDataImportXls.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. ObjImportApi for XLS Files The ObjImportApi class in ObjDataImportXls.py is designed to import data from legacy Excel ( .xls ) files. It uses the xlrd library to read and parse the structure and content of XLS spreadsheets. Key Features - Sheet Selection : Allows specifying which sheet to import, either by name ( Sheetname ) or by index ( SheetNumber ). - Data Type Handling : Automatically conver"
  },
  {
    "path": "factory-import/ObjDataImportXlsx.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. ObjImportApi for XLSX Files The ObjImportApi class in ObjDataImportXlsx.py is designed to handle modern Excel ( .xlsx ) files by converting them to CSV format for further processing. It extends the ObjImportCSV.ObjImportApi class, leveraging its CSV handling capabilities after the conversion. Key Features - XLSX to CSV Conversion : The primary function of this class is to convert .xlsx files into"
  },
  {
    "path": "factory-import/ObjDataImportXml.md",
    "title": "ObjImportApi for XML Files",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjImportApi for XML Files The ObjImportApi class in ObjDataImportXml.py imports data from XML files structured as a flat list of sibling record elements under a root container. Both element attributes and child-element text content are captured as columns. The column list is the union of all attribute names and child-element tags found across every record, preservi"
  },
  {
    "path": "factory-import/ObjDataImportYaml.md",
    "title": "ObjImportApi for YAML Files",
    "factory": "factory.import",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjImportApi for YAML Files The ObjImportApi class in ObjDataImportYaml.py imports data from YAML files that contain either a top-level list of dicts or a dict with a nested list of dicts. It follows the same open file / column list / next row / close file interface used by all other ObjDataImport modules. Uses yaml.safe load() exclusively (never FullLoader) for sec"
  },
  {
    "path": "factory-text/ObjTextDict.md",
    "title": "ObjTextDict",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextDict.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextDocForm.md",
    "title": "ObjTextDocForm",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextDocForm.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextDownloadXlsx.md",
    "title": "ObjTextDownloadXlsx",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextDownloadXlsx.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextField.md",
    "title": "ObjTextField",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextField.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextForm.md",
    "title": "ObjTextForm",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextForm.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextHelpup.md",
    "title": "ObjTextHelpup",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextHelpup.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextLinuxcmd.md",
    "title": "ObjTextLinuxcmd",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextLinuxcmd.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextLocal.md",
    "title": "ObjTextLocal",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextLocal.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextMaps.md",
    "title": "ObjTextMaps",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextMaps.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextNavigate.md",
    "title": "ObjTextNavigate",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextNavigate.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextQRImage.md",
    "title": "ObjTextQRImage",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextQRImage.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextQuery.md",
    "title": "ObjTextQuery",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextQuery.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextQueryfull.md",
    "title": "ObjTextQueryfull",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextQueryfull.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextReportpdf.md",
    "title": "Generate PDF only",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextReportpdf Renders an Axion report as a PDF using Playwright's headless Chromium browser. Optionally generates a PNG preview via a screenshot of the same report URL. Replaces the legacy weasyprint approach. Playwright renders the full page including JavaScript-generated content and @media print CSS automatically. Usage Parameters (pipe ^ delimited) - Position 0 — report name - Position 1–8 — report parameters (mapped to param1 – param8 ) - Position 9 — PDF password (optional; encrypts outp"
  },
  {
    "path": "factory-text/ObjTextReportpdfLocal.md",
    "title": "Generate PDF only",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextReportpdfLocal Renders an Axion report as a PDF using Playwright's headless Chromium browser. Variant of ObjTextReportpdf — functionally identical, kept for backwards compatibility. Replaces the legacy weasyprint + requests approach. The previous UseUrl=0 mode (which fetched raw HTML with requests and passed it to weasyprint as a string) is no longer needed: Playwright always fetches the URL directly with a full browser context. Usage Parameters (pipe ^ delimited) Password (position 9) en"
  },
  {
    "path": "factory-text/ObjTextReportshot.md",
    "title": "ObjTextReportshot",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextReportshot Takes a screenshot of an internal Axion report URL and returns an HTML <img tag. Replaces the legacy xvfb-run cutycapt approach with Playwright via ObjMcpClient . No X11 virtual display or external tools required. Usage (text tag) - Param1 — report name ( base param ) - Param2 — ^ -delimited parameter string ( param1^param2^param3...^width ) - Image display width is the last ^ -delimited value (default: 500) Screenshots are saved to $hostbasedir$local/screenshots/ . Prerequisit"
  },
  {
    "path": "factory-text/ObjTextRunsql.md",
    "title": "ObjTextRunsql",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextRunsql.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextScreenshot.md",
    "title": "ObjTextScreenshot",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextScreenshot Takes a screenshot of a webpage URL and returns an HTML <img tag. Replaces the legacy xvfb-run cutycapt approach with Playwright via ObjMcpClient . No X11 virtual display or external tools required. Usage (text tag) - Param1 — host and path (e.g. fhgo.co.za/report/rep=myrep ) - Param2 — port or suffix (joined with : to form full URL) - Param3 — output filename (defaults to Param2) - Param4 — image display width in pixels (default: 500) Screenshots are saved to $hostbasedir$/loc"
  },
  {
    "path": "factory-text/ObjTextShowPdf.md",
    "title": "ObjTextShowPdf",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextShowPdf.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextSplittext.md",
    "title": "ObjTextSplittext",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextSplittext.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextTexttosqlin.md",
    "title": "ObjTextTexttosqlin",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextTexttosqlin.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextTimeListToHuman.md",
    "title": "ObjTextTimeListToHuman",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextTimeListToHuman.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextTimeago.md",
    "title": "ObjTextTimeago",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextTimeago.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextTimeagoPy.md",
    "title": "ObjTextTimeagoPy",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextTimeagoPy.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextUser.md",
    "title": "ObjTextUser",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextUser.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/ObjTextWavePlayer.md",
    "title": "ObjTextWavePlayer",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextWavePlayer.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-core/ObjTextAuth0.md",
    "title": "ObjTextAuth0",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextAuth0.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-core/ObjTextBadge.md",
    "title": "ObjTextBadge",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextBadge.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-core/ObjTextBigavatar.md",
    "title": "ObjTextBigavatar",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextBigavatar.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-core/ObjTextButton.md",
    "title": "ObjTextButton",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextButton.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-core/ObjTextCalculation.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjTextCalculation The ObjTextCalculation module provides a text processing object that interfaces with the ObjServiceCalculation service. It is used to trigger complex calculations from within the Axion text processing engine. Description This module acts as a bridge between the text processing layer and the calculation service. It takes a group name as input, which corresponds to a defined set of calculation rules, and initiates the computation process. Th"
  },
  {
    "path": "factory-text/package-core/ObjTextCallout.md",
    "title": "ObjTextCallout",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextCallout.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-core/ObjTextCreate.md",
    "title": "ObjTextCreate",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextCreate This document describes the ObjTextCreate text factory ( factory.text/package.core/ObjTextCreate.py ) and its YAML configuration ( factory.text/package.core/ObjTextCreate.yaml ). It covers how the {create:...} macro renders a modal form, how the RPC save works, and how optional report refresh is triggered. Purpose ObjTextCreate provides a reusable “Create <type ” modal button that: - Renders a form from a YAML definition. - Submits data via /rpc/ using existing report RPC handlers."
  },
  {
    "path": "factory-text/package-core/ObjTextCurrency.md",
    "title": "ObjTextCurrency",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextCurrency.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-core/ObjTextDecrypt.md",
    "title": "ObjTextDecrypt",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextDecrypt Decrypts text using the package-specific encryption key via ObjData.decrypt . Conforms to the factory.text module contract: class name is always ObjProcessText , and init accepts (db=0, page=0) to avoid accidental TUI activation when instantiated by the text processor factory. For more information on encryption, see encryption.md (../../../resource.notes/encryption.md)."
  },
  {
    "path": "factory-text/package-core/ObjTextDocicon.md",
    "title": "ObjTextDocicon",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextDocicon Resolves and returns the icon URL for a document stored in the Axion document system. Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 Document identifier (passed to ObjDocument.read ) Param2 Secondary identifier / type (passed to ObjDocument.read ) Behaviour Instantiates ObjDocument.Document , reads the document by Param1 / Param2 , sets BaseUrl from get ini value(\"site\", \"url\") , then returns get icon url() . Output Returns the i"
  },
  {
    "path": "factory-text/package-core/ObjTextEmail.md",
    "title": "ObjTextEmail",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextEmail.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-core/ObjTextEncrypt.md",
    "title": "ObjTextEncrypt",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextEncrypt Encrypts text using the package-specific encryption key via ObjData.encrypt . Conforms to the factory.text module contract: class name is always ObjProcessText , and init accepts (db=0, page=0) to avoid accidental TUI activation when instantiated by the text processor factory. For more information on encryption, see encryption.md (../../../resource.notes/encryption.md)."
  },
  {
    "path": "factory-text/package-core/ObjTextEscape.md",
    "title": "ObjTextEscape",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextEscape Escapes single and double quote characters in a string for safe embedding in HTML attributes or JavaScript contexts. Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 The string to escape Behaviour Replaces ' with \\' and \" with \\\" . All other characters are passed through unchanged. Output Returns the escaped string. Class ObjProcessText(ObjData.ObjData) — inherits database and config access from ObjData . // : < (CYTHON START) Cytho"
  },
  {
    "path": "factory-text/package-core/ObjTextFacebook.md",
    "title": "ObjTextFacebook",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextFacebook.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-core/ObjTextField.md",
    "title": "ObjTextField",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextField.py Updated : 2023-11-17 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-core/ObjTextGitbranch.md",
    "title": "ObjTextGitbranch",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextGitbranch.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-core/ObjTextGitdate.md",
    "title": "ObjTextGitdate",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextGitdate.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-core/ObjTextHighlight64.md",
    "title": "ObjTextHighlight64",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextHighlight64 Renders a syntax-highlighted code block using the highlight.js library. Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 Code string to syntax-highlight Behaviour Injects highlight.min.js and highlight/default.min.css as page resources, then renders the code in a <pre <code class='sql' block and calls hljs.initHighlightingOnLoad() . NOTE : Param1 is injected directly into the HTML without escaping — callers must ensure the valu"
  },
  {
    "path": "factory-text/package-core/ObjTextHighlightSql.md",
    "title": "ObjTextHighlightSql",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextHighlightSql.py Updated : 2023-11-17 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-core/ObjTextIf.md",
    "title": "ObjTextIf",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextIf.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-core/ObjTextImage.md",
    "title": "ObjTextImage",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextImage Renders an HTML <img tag from image parameters, resolving local vs remote sources. Usage Registered as a process-text handler. Called with up to 8 positional parameters: Parameter Description ----------- ------------- Param1 Image source: data for inline data URIs, or a filename to resolve locally/remotely Param2 For data images: MIME type / data string. For local images: optional width. For fallback: URL suffix Param3 Optional width override (used for data and fallback modes) Resol"
  },
  {
    "path": "factory-text/package-core/ObjTextInitials.md",
    "title": "ObjTextInitials",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextInitials Abbreviates a full name by reducing all words except the last (surname) to their first letter. Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 Full name string (e.g. John Peter Smith ) Behaviour Splits the input on whitespace. Returns the first letter of each word except the last, space-separated. The surname is omitted from the output entirely. Example : \"John Peter Smith\" → \"J P\" Output Returns the initials as a space-separated"
  },
  {
    "path": "factory-text/package-core/ObjTextInt.md",
    "title": "ObjTextInt",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextInt Converts a value to its integer string representation, discarding any non-numeric input. Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 The value to convert Behaviour Attempts str(int(Param1)) . Returns an empty string if the conversion fails (e.g. non-numeric input). Output Returns the integer as a string, or \"\" on failure. Class ObjProcessText(ObjData.ObjData) — inherits database and config access from ObjData . // : < (CYTHON STAR"
  },
  {
    "path": "factory-text/package-core/ObjTextJson.md",
    "title": "ObjTextJson",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextJson Renders a JSON value as a pretty-printed HTML block using a JavaScript JSON.stringify call. Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 JSON string or value to display Behaviour Generates a unique element ID via get uuid() , renders a <pre tag, and injects a <script block that calls JSON.stringify(data, undefined, 2) to pretty-print the value into the element at runtime. NOTE : Param1 is injected directly into the script block wi"
  },
  {
    "path": "factory-text/package-core/ObjTextLink.md",
    "title": "ObjTextLink",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextLink Renders an HTML hyperlink from URL parameters. Usage Registered as a process-text handler. Called with up to 8 positional parameters: Parameter Description ----------- ------------- Param1 Link label (display text, passed through process text ) Param2 URL path, or http / https keyword for absolute URLs. If empty, falls back to Param1 Param3 For http / https keywords: full URL suffix. Otherwise: optional path segment appended with / Pipe characters ( ) in Param1 and Param2 are normali"
  },
  {
    "path": "factory-text/package-core/ObjTextList.md",
    "title": "ObjTextList",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextList Renders a comma-separated string as an HTML table, one item per row. Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 Comma-separated string of items Behaviour Splits Param1 on , and wraps each item in a <tr <td row inside a <table with <font size=-1 . Example : \"apples,bananas,pears\" → a 3-row HTML table. Output Returns an HTML <table fragment. Class ObjProcessText(ObjData.ObjData) — inherits database and config access from ObjData ."
  },
  {
    "path": "factory-text/package-core/ObjTextLookup.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjTextLookup The ObjProcessText class within ObjTextLookup.py is a specialized text processor designed to perform dynamic SQL lookups. "
  },
  {
    "path": "factory-text/package-core/ObjTextModal.md",
    "title": "ObjTextModal",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextModal Renders a Bootstrap button that triggers an AxionGetUpdate modal call. Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 First argument passed to AxionGetUpdate (typically a report or form identifier) Param2 Second argument passed to AxionGetUpdate Param3 FontAwesome icon class (default: fa-pencil-square-o ) Param4 Optional button label text Behaviour Generates a unique element ID via get uuid() . Renders a <button class='btn btn-succ"
  },
  {
    "path": "factory-text/package-core/ObjTextMp3Player.md",
    "title": "ObjTextMp3Player",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextMp3Player Renders an HTML5 audio player element. Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 Audio source (currently unused — see TODO) Param2 Fallback link label; cleared if it parses as a positive integer Behaviour Returns \"\" if Param1 is empty. Otherwise renders an <audio controls element. TODO : The audio src and fallback href currently use hardcoded placeholder URLs from w3schools. Param1 should be wired as the audio source. < Ou"
  },
  {
    "path": "factory-text/package-core/ObjTextMultiply.md",
    "title": "ObjTextMultiply",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextMultiply.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-core/ObjTextNotation.md",
    "title": "ObjTextNotation",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextNotation Converts a lightweight notation string to HTML, supporting bold, italic, and line breaks. Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 Input string using notation tokens Notation tokens Token Output ------- -------- Toggles <b / </b Toggles <i / </i /n Inserts <br Example : \" hello world \" → \"<b hello</b <i world</i \" NOTE : /n is matched as the two-character string /n , not a newline character \\n . < Output Returns the transf"
  },
  {
    "path": "factory-text/package-core/ObjTextPrice.md",
    "title": "ObjTextPrice",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextPrice.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-core/ObjTextProper.md",
    "title": "ObjTextProper",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextProper Converts a string to title case, replacing formatting tokens with their display equivalents. Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 The string to convert Behaviour Applies the following transformations in order: 1. Replaces with <br (line break) 2. Replaces with a space 3. Applies Python's .title() — capitalises the first letter of each word Example : \"john peter smith\" → \"John Peter<br Smith\" Output Returns the transforme"
  },
  {
    "path": "factory-text/package-core/ObjTextPublish.md",
    "title": "ObjTextPublish",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextPublish Renders an HTML hyperlink from a URL parameter, with an external-link icon. Usage Registered as a process-text handler. Called with up to 8 positional parameters: Parameter Description ----------- ------------- Param1 Link label (display text, passed through process text ) Param2 URL path or full URL. If empty, falls back to Param1 Param3 Optional suffix appended to the URL Pipe characters ( ) in Param1 and Param2 are normalised to colons before processing. URL resolution - If Par"
  },
  {
    "path": "factory-text/package-core/ObjTextQuerybuilder.md",
    "title": "ObjTextQuerybuilder",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextQuerybuilder Builds a UNION ALL SQL query across a list of tables retrieved from the database. Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 SQL fragment prepended to each table name (e.g. SELECT FROM ) Param2 SQL used to retrieve the list of table names via sql get list Param3 Optional SQL suffix appended to each sub-query (e.g. WHERE active = 1 ) Behaviour Calls sql get list(Param2) to get a list of table names, then builds a UNION AL"
  },
  {
    "path": "factory-text/package-core/ObjTextRenderJson.md",
    "title": "ObjTextRenderJson",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextRenderJson Decodes a base64-encoded JSON array and renders it as a Bootstrap-styled HTML table. Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 Base64-encoded JSON array of arrays (first row treated as headers) Behaviour Decodes Param1 via base64.b64decode , parses the JSON, then iterates over rows: - Row 0 → <th header cells - Rows 1+ → <td data cells; commas in cell values are replaced with <br All cell values are passed through process"
  },
  {
    "path": "factory-text/package-core/ObjTextReport.md",
    "title": "ObjTextReport",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextReport.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-core/ObjTextSqlFormat.md",
    "title": "ObjTextSqlFormat",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextSqlFormat Formats a raw SQL string for human-readable display using sqlparse . Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 Raw SQL string to format Behaviour Passes Param1 through sqlparse.format() with reindent=True , then wraps the result in a <pre block. Output Returns an HTML <pre block containing the formatted SQL. Class ObjProcessText(ObjData.ObjData) — inherits database and config access from ObjData . // : < (CYTHON START) Cyt"
  },
  {
    "path": "factory-text/package-core/ObjTextTel.md",
    "title": "ObjTextTel",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "Represents a text processing object for generating specific HTML content. This class is designed to handle the generation of HTML content for specific purposes, such as creating a clickable telephone link. It extends from ObjData.ObjData and provides additional processing functionality specifically for textual and HTML-based data. It utilizes attributes like object type and versioning to define metadata about the processing behavior. // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTex"
  },
  {
    "path": "factory-text/package-core/ObjTextXmlToSql.md",
    "title": "ObjTextXmlToSql",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextXmlToSql.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-fullhouse/ObjTextEasypay.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjTextEasypay ObjTextEasypay is a Python module designed to generate and validate EasyPay numbers, which are commonly used for bill payments in South Africa. The module provides functionality to create EasyPay numbers based on a given input number and prefix, and includes methods for validating these numbers using the Luhn algorithm. Key Features - EasyPay Number Generation : Creates a valid EasyPay number from a base number and an optional prefix. - Luhn A"
  },
  {
    "path": "factory-text/package-fullhouse/ObjTextFHDeletePimsImage.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjTextFHDeletePimsImage ObjTextFHDeletePimsImage is a Python module designed to delete PIMS (Product Information Management System) images from the filesystem. This module is typically used in workflows where product images need to be programmatically removed. Key Features - Image Deletion : Deletes a specified PIMS image file from a predefined directory. Methods init (self, db connection=0, page=0) Initializes the ObjTextFHDeletePimsImage object. - db conn"
  },
  {
    "path": "factory-text/package-fullhouse/ObjTextFHDescription.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjTextFHDescription ObjTextFHDescription is a Python module responsible for generating a consolidated product description by aggregating individual feature fields from a database. It reads up to 15 feature fields, concatenates them into a single pipe-separated string, and updates the product's description field in the database. Key Features - Feature Aggregation : Combines multiple feature fields into a single description string. - Database Interaction : Re"
  },
  {
    "path": "factory-text/package-fullhouse/ObjTextFHFeatures.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjTextFHFeatures ObjTextFHFeatures is a Python module that processes and structures product feature descriptions from a database. It reads a raw feature string, cleans and splits it into individual features, and then updates the database with both the structured feature set and a consolidated description. Key Features - Feature Extraction : Reads feature descriptions from trader.meta product or trader.product notes tables. - Data Cleaning : Cleans the raw f"
  },
  {
    "path": "factory-text/package-fullhouse/ObjTextFHInstalment.md",
    "title": "Calculate instalment matrix for a product",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. Author : vheyn@technocore.co.za Calculate instalment matrix for a product Parameters: - Param1: Product code Code: python3 factory.text/"
  },
  {
    "path": "factory-text/package-fullhouse/ObjTextFHSettlement.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjTextFHSettlement ObjTextFHSettlement is a Python module for calculating the settlement amount for a hire purchase (HP) agreement. It retrieves contract details from the database and uses financial calculations to determine the outstanding balance, including interest adjustments. Key Features - Settlement Calculation : Computes the settlement figure for a given HP contract. - Interest Calculation : Uses numpy.ipmt to calculate interest portions of payments"
  },
  {
    "path": "factory-text/package-fullhouse/ObjTextFHTotal.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjTextFHTotal ObjTextFHTotal is a Python module that calculates the total payment amount for a hire purchase (HP) agreement. It inherits from ObjTextFHInstalment and utilizes its compute method to determine the total cost over the loan term. Key Features - Total Payment Calculation : Computes the total amount payable for an HP agreement. - Inheritance : Leverages the calculation logic from ObjTextFHInstalment . Methods init (self, db connection: DatabaseCon"
  },
  {
    "path": "factory-text/package-fullhouse/ObjTextNPER.md",
    "title": "ObjTextNPER",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextNPER Calculates the number of periods required to pay off a loan using numpy financial functions. Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 Annual interest rate as a percentage (e.g. 12 for 12%) Param2 Payment amount per period Param3 Present value (loan amount) Behaviour Divides Param1 by 100 to get the decimal rate, then divides by 12 to get the monthly rate before calling numpy.nper(monthly rate, payment, amount) . The result is "
  },
  {
    "path": "factory-text/package-fullhouse/ObjTextPMT.md",
    "title": "ObjTextPMT",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextPMT Calculates the fixed periodic payment for a loan using numpy financial functions. Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 Annual interest rate as a percentage (e.g. 12 for 12%) Param2 Number of periods (term) Param3 Present value (loan amount) Behaviour Divides Param1 by 100 to get the decimal rate, then calls numpy.pmt(rate, term, amount) . The result is rounded to 2 decimal places and returned as a positive value. Output Ret"
  },
  {
    "path": "factory-text/package-fullhouse/ObjTextPV.md",
    "title": "ObjTextPV",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextPV Calculates the present value (PV) of a loan or investment using numpy financial functions. Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 Annual interest rate as a percentage (e.g. 12 for 12%) Param2 Number of periods (term) Param3 Payment amount per period Behaviour Divides Param1 by 100 to get the decimal rate, then calls numpy.pv(rate, term, amount) . The result is rounded to 2 decimal places and returned as a positive value. Outpu"
  },
  {
    "path": "factory-text/package-fullhouse/ObjTextPrintcurrency.md",
    "title": "ObjTextPrintcurrency",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextPrintcurrency Formats a numeric value as a South African Rand currency string. Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 Numeric value to format Behaviour Converts Param1 to a float, applies math.ceil , then formats the result: - Values of 3 digits or fewer are returned as-is - Longer values have a space inserted before the last 3 digits (e.g. 12500 → 12 500 ) The result is prefixed with R . On conversion failure, returns the origin"
  },
  {
    "path": "factory-text/package-fullhouse/ObjTextRATE.md",
    "title": "ObjTextRATE",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "ObjTextRATE Calculates the interest rate per period for a loan or investment using numpy financial functions. Usage Registered as a process-text handler. Parameter Description ----------- ------------- Param1 Number of periods (term) Param2 Payment amount per period (negated internally) Param3 Present value (loan amount) Behaviour Negates Param2 before passing to numpy.rate(term, payment, amount, 0) . Multiplies the result by 100 to convert to a percentage, rounds to 2 decimal places, and return"
  },
  {
    "path": "factory-text/package-intelect/ObjTextFixmobile.md",
    "title": "ObjTextFixmobile",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": ""
  },
  {
    "path": "factory-text/package-system/ObjTextAvatar.md",
    "title": "ObjTextAvatar",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextAvatar.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-system/ObjTextGitbranch.md",
    "title": "ObjTextGitbranch",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextGitbranch.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-system/ObjTextGitdate.md",
    "title": "ObjTextGitdate",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextGitdate.py Updated : 2025-09-10 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-web/ObjTextBanner.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjTextBanner The ObjTextBanner object is responsible for generating HTML"
  },
  {
    "path": "factory-text/package-web/ObjTextCode128.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjTextCode128 The ObjTextCode128 object is a utility for generating Code"
  },
  {
    "path": "factory-text/package-web/ObjTextDataimage.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjTextDataimage The ObjTextDataimage object is a utility for embedding a"
  },
  {
    "path": "factory-text/package-web/ObjTextDocimage.md",
    "title": "ObjTextDocimage",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextDocimage.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-web/ObjTextEmoji.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjTextEmoji The ObjTextEmoji object is a simple utility for rendering a "
  },
  {
    "path": "factory-text/package-web/ObjTextFlag.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjTextFlag This object is designed to display a country's flag as an HTML <img tag. It constructs the image URL based on a provided country code and checks if the corresponding flag image exists on the server before generating the HTML. Dependencies This object requires flag images to be present in the SiteBaseDir /local/flags/ directory. The images must be named according to their two-letter lowercase country code (e.g., us.png , za.png ). Usage The Proces"
  },
  {
    "path": "factory-text/package-web/ObjTextGauge.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjTextGauge The ObjTextGauge object is responsible for rendering a clien"
  },
  {
    "path": "factory-text/package-web/ObjTextGo.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjTextGo The ObjTextGo module provides a text processing object that integrates with the ObjGo service to create shortened, trackable URLs. Description This module acts as a bridge to the ObjGo URL shortening service. It takes a shortcode and a destination link, passes them to the ObjGo service to generate a shortened URL, and then returns that URL. This is useful for creating clean, trackable links within content managed by the text processing engine. Para"
  },
  {
    "path": "factory-text/package-web/ObjTextHighlightJson.md",
    "title": "ObjTextHighlightJson",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjTextHighlightJson.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-text/package-web/ObjTextHighlightScript.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjTextHighlightScript This object is used to render a string of JavaScript code as a syntax-highlighted HTML block on a web page. It leverages the highlight.js library to achieve the syntax highlighting. When the Process method is called, it automatically includes the necessary highlight.min.js and highlight/default.min.css files in the page's resources. Usage The Process method takes a single primary parameter: script content (string) : The raw JavaScript "
  },
  {
    "path": "factory-text/package-web/ObjTextHighlightSql.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjTextHighlightSql This object is used to render a SQL query string as a syntax-highlighted block of HTML on a web page. It utilizes the highlight.js library to perform the syntax highlighting. The necessary JavaScript and CSS files ( highlight.min.js and highlight/default.min.css ) are automatically added to the page resources when the Process method is called. Usage The Process method takes a single primary parameter: sql query (string) : The raw SQL quer"
  },
  {
    "path": "factory-text/package-web/ObjTextIframe.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjTextIframe The ObjTextIframe module provides a text processing object that generates an HTML <iframe element. It is designed to be used within the Axion text processing engine to embed external web content. Description This module takes a URL as input and wraps it in an <iframe tag. The iframe is configured to be seamless and occupy the full width and height of its container. If the provided URL does not start with http , the module automatically prepends"
  },
  {
    "path": "factory-text/package-web/ObjTextKnob.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjTextKnob The ObjTextKnob module provides a text processing object that generates a circular, dial-like input control known as a \"knob.\" It is designed to be used within the Axion text processing engine to create interactive, visually appealing controls for numeric input. Description This module generates the necessary HTML and CSS to render a knob control using the jQuery.knob.js library. It also dynamically adds the required JavaScript and CSS files to t"
  },
  {
    "path": "factory-text/package-web/ObjTextMermaid.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjTextMermaid The ObjTextMermaid object is a utility for rendering diagr"
  },
  {
    "path": "factory-text/package-web/ObjTextPanel.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjTextPanel The ObjTextPanel object is a utility for generating a standa"
  },
  {
    "path": "factory-text/package-web/ObjTextQR.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjTextQR This object is responsible for creating a shortened, trackable URL from a longer link. It uses the ObjGo service to generate this short URL. While the name implies QR code generation, and the underlying ObjGo service does create a QR code, this specific Process method only returns the final shortened URL string. Dependencies This object relies on the ObjGo class to handle the URL shortening and mapping. Usage The Process method takes the following "
  },
  {
    "path": "factory-text/package-web/ObjTextTilt.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjTextTilt The ObjTextTilt object is a utility for applying a subtle, 3D"
  },
  {
    "path": "factory-text/package-web/ObjTextYoutube.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.text",
    "type": "markdown",
    "tags": [],
    "body": "z! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjTextYoutube The ObjTextYoutube object is designed to generate the nec"
  },
  {
    "path": "factory-sms/ObjSmsConnect.md",
    "title": "ObjSmsConnect",
    "factory": "factory.sms",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSmsConnect.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-sms/ObjSmsEbulk.md",
    "title": "ObjSmsEbulk",
    "factory": "factory.sms",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSmsEbulk.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-sms/ObjSmsEsoft.md",
    "title": "ObjSmsEsoft",
    "factory": "factory.sms",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSmsEsoft.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-sms/ObjSmsFreshdesk.md",
    "title": "ObjSmsFreshdesk",
    "factory": "factory.sms",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSmsFreshdesk.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-sms/ObjSmsMT2.md",
    "title": "ObjSmsMT2",
    "factory": "factory.sms",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSmsMT2.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-sms/ObjSmsMT2Utf.md",
    "title": "ObjSmsMT2Utf",
    "factory": "factory.sms",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSmsMT2Utf.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-sms/ObjSmsSmsPortal.md",
    "title": "ObjSmsSmsPortal",
    "factory": "factory.sms",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSmsSmsPortal.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-sms/ObjSmsSphinx.md",
    "title": "ObjSmsSphinx",
    "factory": "factory.sms",
    "type": "markdown",
    "tags": [],
    "body": "ObjSmsSphinx Module: factory.sms/ObjSmsSphinx.py Product: Sphinx SMS provider that forwards to the centralised Sphinx SMS Gateway ( ServeSms.py ) instead of sending directly to an external service. How It Works When a package sets Provider = 'Sphinx' in def sms , the ObjSms.service factory(\"Sphinx\") loads this provider. Instead of calling an external SMS API, it POSTs to the Sphinx gateway which resolves the actual provider at runtime based on the package's configuration. Request Config Migratio"
  },
  {
    "path": "factory-sms/ObjSmsWhatsapp.md",
    "title": "ObjSmsWhatsapp",
    "factory": "factory.sms",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSmsWhatsapp.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-sms/package-core/ObjNotifyDiscord.md",
    "title": "c) Technocore - All Rights",
    "factory": "factory.sms",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights NOTICE: All information contained herein is, and remains the property of TechnoCore. The intellectual and technical concepts contained herein are proprietary to TechnoCore and dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from TechnoCore. ObjNotifyDiscord This object is used to send notifications to a Discord channel. Configuration To use this object, you need to add a discord secti"
  },
  {
    "path": "factory-sms/package-core/ObjNotifyPagerduty.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.sms",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjNotifyPagerduty The ObjNotifyPagerduty class provides an interface for sending incident alerts to PagerDuty using the Events API v2. It is designed to be used as part of the centralized notification system for critical alerts and incident management. Configuration The class is configured through the main config.yaml file. The following section must be present for the class to initialize correctly: - integration key : The PagerDuty Integration Key (also ca"
  },
  {
    "path": "factory-sms/package-core/ObjNotifySlack.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.sms",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjNotifySlack The ObjNotifySlack class provides a straightforward interface for sending messages and files to Slack channels from within the backend application. It is designed to be used as part of the centralized notification system. Configuration The class is configured through the main config.yaml file. The following section must be present for the class to initialize correctly: - token : The Slack Bot User OAuth Token for your Slack workspace. - channe"
  },
  {
    "path": "factory-sms/package-core/ObjSmsDiscord.md",
    "title": "ObjSmsDiscord",
    "factory": "factory.sms",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSmsDiscord.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-sms/package-core/ObjSmsMqtt.md",
    "title": "ObjSmsMqtt",
    "factory": "factory.sms",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSmsMqtt.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-sms/package-core/ObjSmsSkype.md",
    "title": "ObjSmsSkype",
    "factory": "factory.sms",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSmsSkype.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-sms/package-core/ObjSmsSlack.md",
    "title": "ObjSmsSlack",
    "factory": "factory.sms",
    "type": "markdown",
    "tags": [],
    "body": "Configure a Slack App To start, make sure you have a Slack account, you are a member of a Slack workspace that you have admin access to, and you’re signed in with this Slack account. If not, head over to slack.com and create a new account and workspace. https://api.slack.com/app // : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSmsSlack.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-sms/package-core/ObjSmsSmsPortal.md",
    "title": "ObjSmsSmsPortal",
    "factory": "factory.sms",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i ObjSmsSmsPortal.py Updated : 2025-06-09 // : < (CYTHON END)"
  },
  {
    "path": "factory-sms/package-core/ObjSmsVirtual.md",
    "title": "ObjSmsVirtual",
    "factory": "factory.sms",
    "type": "markdown",
    "tags": [],
    "body": "We use dweet as a contra for testing online services https://dweet.io/ If your product, device, machine, gadget or thing can connect to the Internet, it can use dweet.io to easily publish and subscribe to data. dweet.io doesn't require any setup or sign-up— just publish and go. Send data from your thing to the cloud by \"dweeting\" it with a simple HAPI web API. You can also play with dweet.io using our API console. To dweet from your service, simply call a URL like: https://dweet.io/dweet/for/axi"
  },
  {
    "path": "factory-pages/WebPageAuth.md",
    "title": "WebPageAuth",
    "factory": "factory.pages",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i WebPageAuth.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-pages/WebPageBase.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.pages",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. // : < (CYTHON START) Cython compile cythonize -3 -a -i WebPageBase.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-pages/WebPageDocument.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.pages",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. // : < (CYTHON START) Cython compile cythonize -3 -a -i WebPageDocument.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-pages/WebPageFlow.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.pages",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. // : < (CYTHON START) Cython compile cythonize -3 -a -i WebPageFlow.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-pages/WebPageForm.md",
    "title": "Compressing a transfer",
    "factory": "factory.pages",
    "type": "markdown",
    "tags": [],
    "body": "Compressing a transfer On the Python side we have On the JS side we have // : < (CYTHON START) Cython compile cythonize -3 -a -i WebPageForm.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-pages/WebPageGo.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.pages",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. Patches needed for apache balancer proxy And map Possible QR url - this will display the QR that relates to a map http://{ip addr}/qr/{short code} // : < (CYTHON START) Cython compile cythonize -3 -a -i WebPageGo.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-pages/WebPageLoginFacebook.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.pages",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. // : < (CYTHON START) Cython compile cythonize -3 -a -i WebPageLoginFacebook.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-pages/WebPageLoginGoogle.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.pages",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. Activate Google OAuth - Go to the Google Cloud Console. - Create a new project. - Enable the Google OAuth API. - Create OAuth 2.0 credentials and get the Client ID and Client Secret. - Set the redirect URI to something like https://axion.technocore.co.za/google/callback Setting up OAuth 2.0 To use OAuth 2.0 in your application, you need an OAuth 2.0 client ID, which your application uses when requesting an OAuth 2.0 access token. To create an OAuth 2.0 clien"
  },
  {
    "path": "factory-pages/WebPageMail.md",
    "title": "WebPageMail",
    "factory": "factory.pages",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i WebPageMail.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-pages/WebPagePWA.md",
    "title": "WebPagePWA",
    "factory": "factory.pages",
    "type": "markdown",
    "tags": [],
    "body": "// : < (CYTHON START) Cython compile cythonize -3 -a -i WebPagePWA.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-pages/WebPageReport.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.pages",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. Performance and Caching HTML Minification safe minify html(html) - str HTML-aware minifier that reduces response size while preserving content integrity. Enabled when DO COMPRESS = True (default). Preserved blocks (content inside these tags is never modified): - <pre / </pre - <textarea / </textarea - <script / </script - <style / </style Minification steps (applied to content outside preserved blocks): 1. Removes HTML comments ( <!-- ... -- ) 2. Collapses r"
  },
  {
    "path": "factory-pages/WebPageWebhook.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.pages",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. // : < (CYTHON START) Cython compile cythonize -3 -a -i WebPageWebhook.py Updated : 2025-10-02 // : < (CYTHON END)"
  },
  {
    "path": "factory-workflow/ObjWorkflowAcl.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowAcl Module Overview The ObjWorkflowAcl module implements the ACL node type for workflows. Node Types This module handles the following node types: - ACL Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWorkflow.py : Workflow orchestration ---"
  },
  {
    "path": "factory-workflow/ObjWorkflowApi.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowApi Module Overview The ObjWorkflowApi module implements the API node type for workflows. Node Types This module handles the following node types: - API Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWorkflow.py : Workflow orchestration ---"
  },
  {
    "path": "factory-workflow/ObjWorkflowClassification.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowClassification Module Overview The ObjWorkflowClassification module implements the CLASSIFICATION node type for workflows. Node Types This module handles the following node types: - CLASSIFICATION Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class -"
  },
  {
    "path": "factory-workflow/ObjWorkflowConstants.md",
    "title": "c) TechnoCore Automate - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore Automate - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjWorkflowConstants Overview Implements the CONSTANTS workflow node. Reads all rows from a named database table and injects them as key-value pairs into run context 'result' , making them available to downstream nodes as $key$ placeholders in CALC SQL statements and service attributes. The first column of each row is used as the key (lowercased); the secon"
  },
  {
    "path": "factory-workflow/ObjWorkflowDatastore.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowDatastore Module Overview The ObjWorkflowDatastore module implements the DATASTORE node type for workflows. Node Types This module handles the following node types: - DATASTORE Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWorkflow.py : Wo"
  },
  {
    "path": "factory-workflow/ObjWorkflowDatatransfer.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowDatatransfer Module Overview The ObjWorkflowDatatransfer module implements the DATATRANSFER node type for workflows. Node Types This module handles the following node types: - DATATRANSFER Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWork"
  },
  {
    "path": "factory-workflow/ObjWorkflowDecision.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowDecision Module Overview The ObjWorkflowDecision module implements the DECISION node type for workflows. Node Types This module handles the following node types: - DECISION Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWorkflow.py : Workfl"
  },
  {
    "path": "factory-workflow/ObjWorkflowDecisionSegment.md",
    "title": "ObjWorkflowDecisionSegment",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "ObjWorkflowDecisionSegment Module: factory.workflow/ObjWorkflowDecisionSegment.py Product: Arbiter Workflow node executor for the DECISIONSEGMENT node type. Registered via @ObjNodeRegistry.register(\"DECISIONSEGMENT\") . Execution Flow When the workflow engine encounters a DECISIONSEGMENT node: 1. Creates ObjDecisionSegmentation with the workflow's DB connection 2. Calls seg.read(name.lower()) to load the segment definition 3. If not found, returns context unchanged 4. Calls seg.evaluate(context R"
  },
  {
    "path": "factory-workflow/ObjWorkflowDocument.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowDocument Module Overview The ObjWorkflowDocument module implements the DOCUMENT node type for workflows. Node Types This module handles the following node types: - DOCUMENT - DOCEXTRACT - DOCDOWNLOAD - DOCTEMPLATE Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode."
  },
  {
    "path": "factory-workflow/ObjWorkflowEdit.md",
    "title": "c) TechnoCore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjWorkflowEdit.py Documentation ObjWorkflowEdit.py is a command-line tool for editing, analyzing, and managing workflows within the Axion framework. It provides a suite of commands to interact with workflow definitions stored in the database, allowing for creation, modification, and analysis of workflows and their components. Key Features - Workflow Analysis : Scan"
  },
  {
    "path": "factory-workflow/ObjWorkflowEmail.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowEmail Module Overview The ObjWorkflowEmail module implements the EMAIL node type for workflows. Node Types This module handles the following node types: - EMAIL Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWorkflow.py : Workflow orchestra"
  },
  {
    "path": "factory-workflow/ObjWorkflowExport.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowExport Module Overview The ObjWorkflowExport module implements the EXPORT node type for workflows. Node Types This module handles the following node types: - EXPORT Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWorkflow.py : Workflow orche"
  },
  {
    "path": "factory-workflow/ObjWorkflowFeatureRender.md",
    "title": "ObjWorkflowFeatureRender",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-17 // : < (CLASSES END) Overview ObjWorkflowFeatureRender is the FEATURERENDER workflow node executor. It renders feature store values into templates within a workflow DAG. Registered as WorkflowNodeType.FEATURERENDER via @ObjNodeRegistry.register . Node Type FEATURERENDER — resolves $xxx$ placeholders in templates using feat"
  },
  {
    "path": "factory-workflow/ObjWorkflowFeatureStore.md",
    "title": "ObjWorkflowFeatureStore",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-17 // : < (CLASSES END) Overview ObjWorkflowFeatureStore is the FEATURESTORE workflow node executor. It computes, validates, and manages feature store tables within a workflow DAG. Registered as WorkflowNodeType.FEATURESTORE via @ObjNodeRegistry.register . Node Type FEATURESTORE — computes and manages feature store operations"
  },
  {
    "path": "factory-workflow/ObjWorkflowFlow.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowFlow Module Overview The ObjWorkflowFlow module implements the FORMFLOW node type for workflows. Node Types This module handles the following node types: - FORMFLOW - FORMGUI - REPORTFLOW - REPORTGUI Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base clas"
  },
  {
    "path": "factory-workflow/ObjWorkflowGateExclusive.md",
    "title": "c) TechnoCore Automate - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore Automate - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjWorkflowGateExclusive Overview Implements the GATE-EXCLUSIVE (XOR) gateway. Evaluates the incoming current result value against each outgoing branch's BranchDirect condition and routes execution to exactly one matching branch. The GATE alias is also handled by this module and behaves identically. Node Types Node Type Icon BPMN Status ----------- ------ -"
  },
  {
    "path": "factory-workflow/ObjWorkflowGateFanIn.md",
    "title": "c) TechnoCore Automate - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore Automate - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjWorkflowGateFanIn Overview Implements the GATE-FAN-IN gateway. The aggregation counterpart to GATE-FAN-OUT . Waits for all child worker instances spawned by the corresponding fan-out node to complete, then merges their results back into the parent workflow context. Currently registered in the node registry but the execution body is a pass-through placeho"
  },
  {
    "path": "factory-workflow/ObjWorkflowGateFanOut.md",
    "title": "c) TechnoCore Automate - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore Automate - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjWorkflowGateFanOut Overview Implements the GATE-FAN-OUT gateway. Designed for bulk workflow patterns where a single workflow instance distributes a workload across multiple parallel worker instances. Each worker processes a subset of the input data, and a corresponding GATE-FAN-IN node aggregates the results. Currently registered in the node registry but"
  },
  {
    "path": "factory-workflow/ObjWorkflowGateGather.md",
    "title": "c) TechnoCore Automate - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore Automate - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjWorkflowGateGather Overview Implements the GATE-GATHER gateway. A convergence node that merges multiple incoming execution branches into a single outgoing token. Used after GATE-PARALLEL or GATE-INCLUSIVE to resynchronise parallel paths before continuing sequential execution. Currently registered in the node registry but the execution body is a pass-thro"
  },
  {
    "path": "factory-workflow/ObjWorkflowGateInclusive.md",
    "title": "c) TechnoCore Automate - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore Automate - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjWorkflowGateInclusive Overview Implements the GATE-INCLUSIVE (OR) gateway. Intended to evaluate all outgoing branches and activate every branch whose condition is satisfied — unlike the exclusive gateway which activates exactly one. Currently registered in the node registry but the execution body is a pass-through placeholder. Node Types Node Type Icon B"
  },
  {
    "path": "factory-workflow/ObjWorkflowGateParallel.md",
    "title": "c) TechnoCore Automate - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore Automate - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. ObjWorkflowGateParallel Overview Implements the GATE-PARALLEL (AND) gateway. Intended to split execution into multiple parallel branches, all of which execute simultaneously. Currently registered in the node registry but the execution body is a pass-through placeholder — all branches must be managed externally until full parallel execution support is added."
  },
  {
    "path": "factory-workflow/ObjWorkflowGui.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowGui Module Overview The ObjWorkflowGui module implements the GUI node type for workflows. Node Types This module handles the following node types: - GUI - FORM Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWorkflow.py : Workflow orchestrat"
  },
  {
    "path": "factory-workflow/ObjWorkflowImap.md",
    "title": "ObjWorkflowImap",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-25 // : < (CLASSES END) Overview ObjWorkflowImap is a workflow node that runs IMAP email ingestion as a batch operation. It scans configured IMAP hooks to populate bloom tables, then optionally classifies emails into tickets via the AI-powered ObjServiceEmailTicket . Registered as WorkflowNodeType.IMAP . Context Keys Read Key"
  },
  {
    "path": "factory-workflow/ObjWorkflowImport.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowImport Module Overview The ObjWorkflowImport module implements the IMPORT node type for workflows. Node Types This module handles the following node types: - IMPORT Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWorkflow.py : Workflow orche"
  },
  {
    "path": "factory-workflow/ObjWorkflowMatrix.md",
    "title": "ObjWorkflowMatrix",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-27 // : < (CLASSES END) Overview ObjWorkflowMatrix is a workflow node that executes decision matrix lookups. It resolves row and column axis values from the workflow context, looks up the matching cell value, and writes it back to the context. Registered as WorkflowNodeType.MATRIX . Context Keys Read Key Fallback Description "
  },
  {
    "path": "factory-workflow/ObjWorkflowNode.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowNode Module Overview ObjWorkflowNode is the base class for all workflow node type implementations. It provides common functionality, helper methods, and a consistent interface that all workflow nodes inherit from. This architecture separates node-specific logic into individual, maintainable modules while sharing common patterns through inheritance. Architecture Class Design Initialization All node classes receive a reference to the parent Workflow"
  },
  {
    "path": "factory-workflow/ObjWorkflowNotify.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowNotify Module Overview The ObjWorkflowNotify module implements the NOTIFY node type for workflows. Node Types This module handles the following node types: - NOTIFY Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWorkflow.py : Workflow orche"
  },
  {
    "path": "factory-workflow/ObjWorkflowScheduler.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowScheduler Module Overview The ObjWorkflowScheduler module implements the SCHEDULER node type for workflows. Node Types This module handles the following node types: - SCHEDULER Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWorkflow.py : Wo"
  },
  {
    "path": "factory-workflow/ObjWorkflowScorecard.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowScorecard Module Overview The ObjWorkflowScorecard module implements the SCORECARD node type for workflows. Node Types This module handles the following node types: - SCORECARD Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWorkflow.py : Wo"
  },
  {
    "path": "factory-workflow/ObjWorkflowSegment.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowSegment Module Overview The ObjWorkflowSegment module implements the SEGMENT node type for workflows. Node Types This module handles the following node types: - SEGMENT Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWorkflow.py : Workflow o"
  },
  {
    "path": "factory-workflow/ObjWorkflowSendMail.md",
    "title": "config.yaml",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-17 // : < (CLASSES END) Overview ObjWorkflowSendMail is the SENDMAIL workflow node executor. It sends emails directly via SMTP using WebMail.send report() , with optional template rendering via ObjTemplate and AI-generated summaries via ObjAI . Registered as WorkflowNodeType.SENDMAIL via @ObjNodeRegistry.register . Node Type "
  },
  {
    "path": "factory-workflow/ObjWorkflowService.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowService Module Overview The ObjWorkflowService module implements the SERVICE node type for workflows. SERVICE nodes dynamically load and execute custom service classes that contain business logic. This provides a flexible mechanism for extending workflow functionality without modifying the core workflow engine. Purpose SERVICE nodes enable: - Dynamic service loading - Load service classes by name at runtime - Business logic encapsulation - Keep do"
  },
  {
    "path": "factory-workflow/ObjWorkflowSignal.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowSignal Module Overview The ObjWorkflowSignal module implements the SIGNAL node type for workflows. Node Types This module handles the following node types: - SIGNAL Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWorkflow.py : Workflow orche"
  },
  {
    "path": "factory-workflow/ObjWorkflowSimul.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "! Technocore (resource.images/package.reference/admin.png \"\" ) (c) Technocore - All Rights Reserved. ObjWorkflowSimul Overview The WorkflowSimul class extends the base Workflow class to provide a comprehensive simulation environment for testing, performance analysis, and validation of workflows. It is designed to run a defined workflow against a set of test data, either in-process ('direct' mode) or by simulating API calls ('api' mode). This class leverages multi-threading to execute simulations"
  },
  {
    "path": "factory-workflow/ObjWorkflowSleep.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowSleep Module Overview The ObjWorkflowSleep module implements the SLEEP node type for workflows. Node Types This module handles the following node types: - SLEEP Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWorkflow.py : Workflow orchestra"
  },
  {
    "path": "factory-workflow/ObjWorkflowSms.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowSms Module Overview The ObjWorkflowSms module implements the SMS node type for workflows. Node Types This module handles the following node types: - SMS Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWorkflow.py : Workflow orchestration ---"
  },
  {
    "path": "factory-workflow/ObjWorkflowTicket.md",
    "title": "ObjWorkflowTicket",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-25 // : < (CLASSES END) Overview ObjWorkflowTicket is a workflow node that creates, updates, assigns, or comments on tickets from within a workflow DAG. Registered as WorkflowNodeType.TICKET . Context Keys Read Key Used By Description ----- --------- ------------- ticket action all create, assign, status, comment, resolve, cl"
  },
  {
    "path": "factory-workflow/ObjWorkflowValue.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowValue Module Overview The ObjWorkflowValue module implements the VALUE node type for workflows. Node Types This module handles the following node types: - VALUE - VALUES Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWorkflow.py : Workflow "
  },
  {
    "path": "factory-workflow/ObjWorkflowWebhook.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowWebhook Module Overview The ObjWorkflowWebhook module implements the WEBHOOK node type for workflows. Node Types This module handles the following node types: - WEBHOOK Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWorkflow.py : Workflow o"
  },
  {
    "path": "factory-workflow/ObjWorkflowWorkflow.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. ObjWorkflowWorkflow Module Overview The ObjWorkflowWorkflow module implements the WORKFLOW node type for workflows. Node Types This module handles the following node types: - WORKFLOW - WORKFLOWSYNC Purpose TODO: Document purpose and functionality Usage in Workflow Definitions Execution Flow TODO: Document execution flow Configuration TODO: Document configuration options Examples TODO: Add examples Related Modules - ObjWorkflowNode.py : Base class - ObjWorkf"
  },
  {
    "path": "factory-workflow/WORKFLOW_NODES.md",
    "title": "Axion Workflow Node Types Reference",
    "factory": "factory.workflow",
    "type": "markdown",
    "tags": [],
    "body": "Axion Workflow Node Types Reference Auto-generated documentation for all workflow node implementations. Version: 8.0 Overview The Axion platform provides 33 workflow node types for building business process automation flows. Nodes are categorized into: - Source Marker Nodes (4): Mark workflow invocation source - Data Processing Nodes (12): Transform and compute data - Communication Nodes (3): Send notifications and messages - Integration Nodes (3): Connect to external systems - Gateway Nodes (6)"
  },
  {
    "path": "factory-webhook/ObjHookBuild.md",
    "title": "ObjHookBuild",
    "factory": "factory.webhook",
    "type": "markdown",
    "tags": [],
    "body": "ObjHookBuild Webhook handler that triggers the Axion build pipeline. Webhook Payload All fields are optional — defaults to the active package, native platform, no email, full pipeline. Bitbucket Integration Configure a Bitbucket webhook to POST to: The build runs asynchronously in a background thread and returns immediately with {\"status\": \"accepted\"} . Results are emailed via --notify if provided. Response"
  },
  {
    "path": "factory-webhook/ObjHookWorkflow.md",
    "title": "ObjHookWorkflow",
    "factory": "factory.webhook",
    "type": "markdown",
    "tags": [],
    "body": "ObjHookWorkflow Webhook handler that triggers a named workflow from the incoming payload. Class Diagram Methods Method Description -------- ------------- init (database connection, page object) Initialise the webhook handler with database connection and optional page object. Process(payload, webhook code, param 1..param 8) Extract the workflow name from the JSON payload and execute it via the workflow engine. Attributes Attribute Description ----------- ------------- kafka Kafka connection place"
  },
  {
    "path": "factory-webhook/package-homechoice/ObjHookBotswana.md",
    "title": "ObjHookBotswana",
    "factory": "factory.webhook",
    "type": "markdown",
    "tags": [],
    "body": "ObjHookBotswana Webhook handler for Botswana HomeChoice SMS reconciliation messages. Class Diagram Methods Method Description -------- ------------- init (database connection, page object) Initialise the webhook handler with database connection and optional page object. Process(payload data, param 1..param 8) Read unactioned XML records from data botswana homechoice , parse message envelopes, insert into HomeChoice Recon , and mark as actioned. Attributes Attribute Description ----------- ------"
  },
  {
    "path": "factory-webhook/package-homechoice/ObjHookHCSCoreAO.md",
    "title": "Documentation for ObjHookHCScoreAO.py",
    "factory": "factory.webhook",
    "type": "markdown",
    "tags": [],
    "body": "Documentation for ObjHookHCScoreAO.py Overview This script, ObjHookHCScoreAO.py , serves as a webhook handler for processing customer scoring data, likely originating from an \"AO\" (Affordability Online) channel. Its primary function is to receive customer data, normalize it, store it in a central scoring table, and then trigger a dedicated workflow to perform the actual scoring. Workflow The script follows a clear, sequential process: 1. Receive GUID: The process starts when the script is called"
  },
  {
    "path": "factory-webhook/package-homechoice/ObjHookHCSCoreCR.md",
    "title": "Documentation for ObjHookHCScoreCR.py",
    "factory": "factory.webhook",
    "type": "markdown",
    "tags": [],
    "body": "Documentation for ObjHookHCScoreCR.py Overview This script, ObjHookHCScoreCR.py , is a webhook handler designed to process customer scoring data from Credico. It receives a payload with customer information, normalizes and inserts this data into the bloom hcscore table, triggers a scoring workflow, and then sends an SMS notification. Workflow The script executes the following steps: 1. Receives a GUID: The script is triggered with a GUID ( Param1 ) that uniquely identifies the customer scoring r"
  },
  {
    "path": "factory-webhook/package-homechoice/ObjHookHCSCoreWA.md",
    "title": "Documentation for ObjHookHCScoreWA.py",
    "factory": "factory.webhook",
    "type": "markdown",
    "tags": [],
    "body": "Documentation for ObjHookHCScoreWA.py Overview This script, ObjHookHCScoreWA.py , is a webhook handler designed to process customer scoring data received from a WhatsApp channel. It takes a customer's data, normalizes it, inserts it into a central scoring table, triggers a scoring workflow, and then sends a confirmation SMS. Workflow The script follows these steps: 1. Receive GUID: The process is initiated with a GUID ( Param1 ) that uniquely identifies the scoring request from the WhatsApp chan"
  },
  {
    "path": "factory-webhook/package-homechoice/ObjHookHCScore.md",
    "title": "ObjHookHCScore",
    "factory": "factory.webhook",
    "type": "markdown",
    "tags": [],
    "body": "ObjHookHCScore Webhook handler for the HCScore service. Class Diagram Methods Method Description -------- ------------- init (database connection, page object) Initialise the webhook handler with database connection and optional page object. Process(payload data, webhook code, param 1..param 8) Run the workflow identified by webhook code , using param 1 as the record GUID. Attributes Attribute Description ----------- ------------- payload Raw payload string placeholder. Sample Payload Usage Rece"
  },
  {
    "path": "factory-webhook/package-homechoice/ObjHookHCScoreAO.md",
    "title": "ObjHookHCScoreAO",
    "factory": "factory.webhook",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-20 // : < (CLASSES END) Overview ObjHookHCScoreAO handles inbound Account Origination lead scoring webhooks. When an AO lead arrives, the hook: 1. Normalizes the raw payload from bloom hcscoreao payload into bloom hcscore format 2. Triggers the HCSCORE workflow (bureau check + scoring) Unlike the Credico and WhatsApp variants"
  },
  {
    "path": "factory-webhook/package-homechoice/ObjHookHCScoreCR.md",
    "title": "ObjHookHCScoreCR",
    "factory": "factory.webhook",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-20 // : < (CLASSES END) Overview ObjHookHCScoreCR handles inbound Credico lead scoring webhooks. When a Credico lead arrives, the hook: 1. Normalizes the raw payload from bloom hcscorecr payload into bloom hcscore format 2. Triggers the HCSCORE workflow (bureau check + scoring) 3. Forwards the lead to the HC AWS gateway for a"
  },
  {
    "path": "factory-webhook/package-homechoice/ObjHookHCScoreCR_UAT.md",
    "title": "ObjHookHCScoreCR_UAT",
    "factory": "factory.webhook",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-20 // : < (CLASSES END) Overview ObjHookHCScoreCR UAT is the UAT variant of ObjHookHCScoreCR . It handles inbound Credico lead scoring webhooks against the UAT payload table. When a Credico UAT lead arrives, the hook: 1. Normalizes the raw payload from bloom hcscorecr uat payload into bloom hcscore format 2. Triggers the HCSC"
  },
  {
    "path": "factory-webhook/package-homechoice/ObjHookHCScoreWA.md",
    "title": "ObjHookHCScoreWA",
    "factory": "factory.webhook",
    "type": "markdown",
    "tags": [],
    "body": "(c) TechnoCore - All Rights Reserved. NOTICE: All information contained herein is, and remains the property of TechnoCore Automate. // : < (CLASSES START) Updated : 2026-03-20 // : < (CLASSES END) Overview ObjHookHCScoreWA handles inbound WhatsApp lead scoring webhooks. When a WhatsApp lead arrives, the hook: 1. Normalizes the raw payload from bloom hcscorewa payload into bloom hcscore format 2. Triggers the HCSCORE workflow (bureau check + scoring) 3. Forwards the lead to the HC AWS gateway for"
  },
  {
    "path": "factory-webhook/package-homechoice/ObjHookScore.md",
    "title": "ObjHookScore",
    "factory": "factory.webhook",
    "type": "markdown",
    "tags": [],
    "body": "Sample input for the API call Sample output for the API without pinpoint details"
  },
  {
    "path": "factory-webhook/package-janee/ObjHookSabcLicenceCheck.md",
    "title": "ObjHookSabcLicenceCheck",
    "factory": "factory.webhook",
    "type": "markdown",
    "tags": [],
    "body": "ObjHookSabcLicenceCheck Overview Webhook handler that initiates an SABC TV licence check. Acts as a bridge between an initial data payload and the backend ObjServiceSabc service. When triggered, it retrieves a South African ID number from a payload table, creates a new service request, and executes the licence check service directly. Class Diagram Methods Method Description -------- ------------- init (DB, Page) Initialises the hook with database connection and page reference Process(Payload, Pa"
  },
  {
    "path": "factory-webhook/package-reference/ObjHookScore.md",
    "title": "ObjHookScore",
    "factory": "factory.webhook",
    "type": "markdown",
    "tags": [],
    "body": "ObjHookScore Overview Webhook handler for XDS score processing. Retrieves the service stage record for a given GUID and delegates processing to ObjService.ServiceSet for score evaluation. Class Diagram Methods Method Description -------- ------------- init (DB, Page) Initialises the hook with database connection and page reference Process(Payload, Param1..Param8) Reads the Stage Service record for the given GUID and runs the service set to complete score evaluation Workflow 1. Query Stage : Read"
  },
  {
    "path": "factory-webhook/package-sunswept/ObjHookGenomiPush.md",
    "title": "ObjHookGenomiPush",
    "factory": "factory.webhook",
    "type": "markdown",
    "tags": [],
    "body": "ObjHookGenomiPush Overview Webhook handler for Genomi PMS (Property Management System) push notifications. Processes XML-based push events including check-in, check-out, room moves, client changes, and reservation list updates. Dynamically creates database columns based on incoming data keys. Class Diagram Methods Method Description -------- ------------- init (DB, Page) Initialises the hook with database connection and page reference Process(Payload, Param1..Param8) Parses XML payload, determin"
  },
  {
    "path": "factory-webhook/package-switchx/ObjHookDevelopments.md",
    "title": "ObjHookDevelopments",
    "factory": "factory.webhook",
    "type": "markdown",
    "tags": [],
    "body": "ObjHookDevelopments Overview Webhook handler for NDD property development lookups. Provides a two-phase API: broad search returns a list of matching developments with fuzzy matching, and narrow search returns detailed development and bank information for a specific development ID. Class Diagram Methods Method Description -------- ------------- init (DB, Page) Initialises the hook with database connection Process(payload, webhook code, Param1..Param8) Reads auth group and development ID from bloo"
  },
  {
    "path": "factory-webhook/package-switchx/ObjHookDevelopmentsOld.md",
    "title": "ObjHookDevelopmentsOld",
    "factory": "factory.webhook",
    "type": "markdown",
    "tags": [],
    "body": "ObjHookDevelopmentsOld Overview Legacy webhook handler for NDD property data lookups. Original implementation superseded by ObjHookDevelopments . Provides a two-phase API: broad search with fuzzy matching and narrow search for detailed development and bank information. Organisation ID is resolved from request parameters or the external GUID query string. Class Diagram Methods Method Description -------- ------------- init (DB, Page) Initialises the hook with database connection Process(payload, "
  },
  {
    "path": "resource-notes/ObjFeatureStore_DefFeature_UserGuide.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. Def Feature User Guide This guide is for users who maintain Feature Store metadata directly in database tables. It covers: - def feature - def features - def feature dependency - def feature expectation - def feature version - def feature lineage - def feature statistics All SQL below uses explicit schema quoting, e.g. hcplanning.dev . def feature . 1. Feature Store Data Model - def feature : One row per feature set ( FeatureCode + Package ). - def features "
  },
  {
    "path": "resource-notes/RemoteConnectionsUsage.md",
    "title": "Remote Connections Usage Documentation",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Remote Connections Usage Documentation This document tracks which modules use the remote connection functionality in the Axion codebase. Overview The codebase has two approaches for managing remote database connections: 1. YAML-based Remote Connections (Modern Approach) - Configuration : config.yaml under database.connections - Status : ✅ Active - Currently used in production - Future : 🔄 Will be migrated to Infisical secret management - Example : 2. Database Table-based Remote Connections (Lega"
  },
  {
    "path": "resource-notes/SLA_Monthly_Quarterly_Report_Template.md",
    "title": "SLA Report Template (Monthly / Quarterly)",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "SLA Report Template (Monthly / Quarterly) 1. Document Control - Report Period: <YYYY-MM or <YYYY-Q - Service / Platform: <Service Name - Environment: <PROD/UAT/etc - Customer / Business Unit: <Name - Report Owner: <Name - Date Published: <YYYY-MM-DD - Version: <v1.0 2. Executive Summary - SLA Compliance Status: <Met / Partially Met / Not Met - Key Highlights: - <Highlight 1 - <Highlight 2 - Key Risks / Exceptions: - <Risk 1 - <Risk 2 - Actions for Next Period: - <Action 1 - <Action 2 3. SLA Targ"
  },
  {
    "path": "resource-notes/add_new_user.md",
    "title": "add_new_user",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Create the user account First, create the user account using the standard Linux/UNIX useradd command: NEWUSER='newusername' SSHPUBKEY='ssh-ed25519 AAAA..xyz jamieson@desktop' sudo useradd -m $NEWUSER Add the SSH public key to that user's authorized keys file It's critical to chown the directory back to the user, or the SSH daemon will reject the file that's owned by root and not $NEWUSER. (Another way to do this is to use ssh-copy-id, but this way can be done in the same login session.) sudo mkd"
  },
  {
    "path": "resource-notes/antipatterns.md",
    "title": "Axion Code Review Antipatterns",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Axion Code Review Antipatterns Common mistakes to avoid when writing code for the Axion platform. SQL & Database Antipatterns 1. Hardcoded Collation Strings When reviewing SQL or table creation code, flag any hardcoded collation/charset strings. These should always use self.get collation() or the {collation} placeholder. Bad: Good: 2. Missing Module Column in def Tables Every def table MUST include the Module column for system organization. Bad: Good: Critical : Column name is capitalized: Modul"
  },
  {
    "path": "resource-notes/architecture.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. Axion Architecture and Governance for $package-client$ 1. Executive Summary The Axion system is a modular, service-oriented architecture designed for robust data processing, workflow automation, and secure integration for $package-client$. Built on a Python backend, it leverages a polyglot persistence model (MariaDB and MongoDB) and uses RabbitMQ for resilient, asynchronous communication. The architecture is designed from the ground up to be compliant with a"
  },
  {
    "path": "resource-notes/architecture_base.md",
    "title": "architecture_base",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": ""
  },
  {
    "path": "resource-notes/architecture_extend_visual.md",
    "title": "Architecture: factory.core/extend.visual",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Architecture: factory.core/extend.visual Purpose extend.visual contains all visualization, rendering, and diagram generation code. Modules here produce visual output (PNG, HTML charts, Mermaid diagrams) but do NOT handle data persistence or business logic. Design Principle Separation of concerns : Core modules ( ObjDecisionSwitch , ObjFeatureStore , ObjWorkflow ) handle evaluation and data. Visual modules handle rendering and presentation. Edit modules handle CRUD and persistence. Modules ObjVis"
  },
  {
    "path": "resource-notes/bureau_submission_service_spec.md",
    "title": "Bureau Submission Service — Specification",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Bureau Submission Service — Specification Date: 2026-03-29 Status: Proposal Author: Francois van Heyningen --- Overview Bureau submission (also called \"PUB\" — Publishing to Bureau) is the process of credit providers reporting account performance data to credit bureaux. This is a legal compliance obligation under the National Credit Act (NCA) in South Africa and equivalent legislation in other markets. Most credit providers struggle with this because: - Complex file formats (fixed-width, specific"
  },
  {
    "path": "resource-notes/cdn_testing.md",
    "title": "CDN Testing Guide",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "CDN Testing Guide Version: 1.0.0 Last Updated: 2025-12-21 --- Overview This guide explains how to test all CDN mappings configured in the Axion framework before committing the deletion of local JavaScript and CSS files. Quick Start Run All CDN Tests This will: 1. ✅ Test CDN mapping logic and configuration 2. ✅ Test all 71 CDN URLs are accessible 3. ✅ Validate HTTP 200 responses 4. ✅ Check content is valid (not 404 pages) Run Only Fast Tests (No Network) This tests the CDN mapping logic without m"
  },
  {
    "path": "resource-notes/cdns.md",
    "title": "CDN Reference Guide",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "CDN Reference Guide All frontend library CDN URLs are defined in factory.core/ObjConstants.py under CdnConstants . WebObject.yaml maps local filenames to CDN URLs — reports use add resource script() / add resource css() with local names and the mapping transparently redirects to CDNs. CDN Providers Provider Base URL Used For ---------- ---------- ---------- jsDelivr cdn.jsdelivr.net Most libraries cdnjs cdnjs.cloudflare.com Highlight.js, Three.js, Morris, Raphael DataTables cdn.datatables.net Da"
  },
  {
    "path": "resource-notes/clients.md",
    "title": "TechnoCore — Client List",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "TechnoCore — Client List Last updated: 2026-03-29 --- Active Clients Client Package Industry Services Status -------- --------- ---------- ---------- -------- HomeChoice homechoice Retail credit / Financial services Credit scoring (HCScore), bureau integration (TransUnion, XDS, MyData), SAFPS fraud detection, collections strategy, affordability calculations, Tradedesk API, WhatsApp leads Active — primary client FullHouse Furniture fullhouse Retail furniture / E-commerce Shopify integration, SMS "
  },
  {
    "path": "resource-notes/clitools.md",
    "title": "CLI Tools",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "CLI Tools Installed via resource.bin/install cli.sh . lazygit Terminal UI for git. - Stage, commit, push, branch, and resolve conflicts without leaving the terminal. - Press ? for keybindings help. glow Terminal markdown renderer. - Renders markdown with syntax highlighting and formatting in the terminal. - Run without arguments to browse all .md files in the current directory. llm Simon Willison's CLI for running LLMs from the terminal. - Supports OpenAI, Anthropic, Ollama, and many other provi"
  },
  {
    "path": "resource-notes/coding_style.md",
    "title": "Project Coding Style and Conventions",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Project Coding Style and Conventions This document outlines the primary coding style rules and conventions to be followed for this project. 1. Naming Conventions 1.1. General Variables and Parameters All local variables and function/method parameters should use snake case . Names should be descriptive and meaningful. - GOOD: worker queue , file path , data import code - BAD: q , fp , dic 1.2. Function and Method Names All function and method names should use snake case , including CRUD operation"
  },
  {
    "path": "resource-notes/coding_tools.md",
    "title": "coding_tools",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "https://www.nerdfonts.com/font-downloads"
  },
  {
    "path": "resource-notes/config.md",
    "title": "config.yaml` Setup Guide",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "config.yaml Setup Guide Overview The config.yaml file is the central configuration file for the application. It is used to configure database connections, package-specific settings, and other operational parameters. The application reads this file on startup to initialize its configuration. Structure The config.yaml file has a hierarchical structure. The root of the configuration is determined by the package key. Under the package, the configuration is divided into sections, which in turn contai"
  },
  {
    "path": "resource-notes/create_modal_quickstart.md",
    "title": "Create Modal Quick Start Guide",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Create Modal Quick Start Guide The {create:...} macro provides an easy way to add \"Create New\" functionality to any report or page. Quick Examples Create a Workflow Result: Button labeled \"+ Create Workflow\" that opens a modal form Customized Button Result: Button labeled \"+ New Workflow\", modal title \"Create New Workflow\", submit button \"Save\" With Report Refresh Result: Default labels, submits to EditWorkflow RPC, refreshes \"workflows\" report after save Parameter Reference Position Parameter R"
  },
  {
    "path": "resource-notes/data_representation_primer.md",
    "title": "Data Representation Primer — Platforms, Tools and Algorithms",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Data Representation Primer — Platforms, Tools and Algorithms Source: TechnoCore System Update presentation Last updated: 2026-03-29 --- Data Models Matrix Real-time / Live Batch / Bulk -------------------- --------------------------- -------------------- Relational/Row MySQL, MariaDB Column store ClickHouse Parquet Directed graph GraphX Schema free Hadoop HDFS --- 1. Relational / Row Store MySQL / MariaDB - Primary database for Axion platform - Row-oriented storage — optimised for transactional "
  },
  {
    "path": "resource-notes/database_schema_comparison.md",
    "title": "Database Schema Comparison: Schema Files vs. Actual Database",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Database Schema Comparison: Schema Files vs. Actual Database Current Database Status Database : trader Package : FULLHOUSE Total Tables : 525 tables Schema Type : Legacy retail POS system with multi-store architecture User and Group Tables Current Database Tables (trader) 1. users - Main User Table - Primary Key : (US STORE ID, US ID) - Records : 2,200 users - Key Columns : - US STORE ID - Store identifier - US ID - User ID (unique per store) - US USERNAME - Login username - US PASSWORD - Passwo"
  },
  {
    "path": "resource-notes/documentation_index.md",
    "title": "Axion Documentation Index",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Axion Documentation Index Core Module Documentation Alert and Incident Management ObjAlertIncident.md (../factory.core/ObjAlertIncident.md) Incident Management System - NEW Comprehensive documentation for the incident management module including: - Incident lifecycle management (CREATED → INVESTIGATING → MONITORING → CLOSED) - Investigation notes and documentation (ROOT CAUSE, RESOLUTION, INVESTIGATION, MITIGATION) - Communication tracking with unique short references (REF-YYYYMMDD-XXX) - Multi-"
  },
  {
    "path": "resource-notes/done.md",
    "title": "Go through all the system tables (sys, def, etc.) that do not have a package column and add it OR remove the table if we no longer need it. As at 2024-01-29 these are:",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Go through all the system tables (sys, def, etc.) that do not have a package column and add it OR remove the table if we no longer need it. As at 2024-01-29 these are: Add package as a PK (not null default CORE) - def backup DONE - def bureau DONE - def company DONE - def conversation DONE - def conversation page DONE - def document parameters DONE - def formflow DONE - def formflow forms DONE - def go DONE - def package groups DONE - def package tables DONE - def package templates DONE - def pa"
  },
  {
    "path": "resource-notes/encryption.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. Axion Encryption and Decryption Workflow This document provides a comprehensive explanation of the asymmetric encryption system used within the Axion framework. The core logic is centralized in factory.core/ConfigIni.py and is exposed via the ObjTextEncrypt and ObjTextDecrypt text processing objects. Core Concepts: Asymmetric Cryptography The system uses asymmetric cryptography , also known as public-key cryptography. This method involves a pair of keys for "
  },
  {
    "path": "resource-notes/future_plan.md",
    "title": "Axion Testing & Optimization - Future Plan",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Axion Testing & Optimization - Future Plan This document tracks the comprehensive testing and optimization plan for the Axion project. Update this file as goals are achieved. Last Updated : 2026-02-06 Current Branch : feat/secrets Overall Test Progress : 2,527+ tests in factory.core alone (99%+ passing) Latest Commit : 9a6c73820 - Phase 7 progress update Test Collection : 2,527 tests collected in factory.core (852.93s) Phase 2 Status : ✅ COMPLETE (16/16 files, 395/401 tests passing - 98.5%) Phas"
  },
  {
    "path": "resource-notes/future_plans.md",
    "title": "Axion Future Plans",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Axion Future Plans This document tracks planned enhancements, features, and improvements identified during development reviews. Last Updated : 2026-02-22 Current Branch : feat/schedule Sections : - TUI Dashboard Expansion ( tui-dashboard-expansion) - MCP Server Integrations ( mcp-server-integrations) --- TUI Dashboard Expansion Background The factory.core/extend.tui/ directory was established on the feat/schedule branch as the home for Rich-based terminal UI extensions. Two TUI dashboards are al"
  },
  {
    "path": "resource-notes/futures/01_axion_go.md",
    "title": "01 — Axion Go: Field Agent Platform",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "01 — Axion Go: Field Agent Platform Overview Offline-capable PWA forms for field agents. Free tier (5 users), paid per-agent/month. What's Built - ServeGo + WebPageGo (factory.pages) - PWA with service worker, offline storage - All field types (text, date, camera, GPS, signature, voucher) - Workflow integration for form submission routing - Biometric auth support What's Missing - Landing page + pricing page - User provisioning self-service (currently manual DB) - Usage metering + billing integra"
  },
  {
    "path": "resource-notes/futures/02_axion_voucher.md",
    "title": "02 — Axion Voucher: Marketing Campaign Platform",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "02 — Axion Voucher: Marketing Campaign Platform Overview Campaign-driven voucher generation, distribution (SMS/WhatsApp), and redemption tracking via Go forms. What's Built - ObjFieldVoucher field type - data voucher schema + generate-vouchers CLI - Campaign from Query pattern - Go forms for QR/barcode redemption - SMS + WhatsApp distribution channels What's Missing - Campaign management dashboard - Redemption analytics report - Fraud detection (duplicate scans, expired vouchers) - Batch SMS bla"
  },
  {
    "path": "resource-notes/futures/03_axion_score.md",
    "title": "03 — Axion Score: Credit Scoring Platform",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "03 — Axion Score: Credit Scoring Platform Overview Extend existing credit scoring service into a self-service platform. Custom scorecard builder, bureau integration, simulation with AI analysis, real-time API. What's Built - ObjScorecard — custom scorecard engine - ObjDecisionSwitch — decision tree execution - Simulation engine with AI review (local Ollama) - Email reports with decision analysis - Client acquisition pipeline What's Missing - Scorecard builder UI (web-based) - Bureau API integrat"
  },
  {
    "path": "resource-notes/futures/06_meridian_decisions.md",
    "title": "06 — Meridian Decisions: Decision-as-a-Service API",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "06 — Meridian Decisions: Decision-as-a-Service API Overview Rules upload → simulation → real-time decision API. Companies define business rules (credit, pricing, eligibility), Axion runs simulations and serves decisions via REST API. What's Built - ObjDecisionSwitch — rule engine with tree traversal - ObjDecisionMatrix — matrix-based decisions - ObjDecisionRuleset — rule set execution - Simulation engine with outcome tracking - AI-powered simulation analysis (local Ollama) - Email reports with d"
  },
  {
    "path": "resource-notes/futures/08_axion_acquire.md",
    "title": "08 — Axion Acquire: Client Acquisition Engine",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "08 — Axion Acquire: Client Acquisition Engine Overview Full-funnel client acquisition: lead capture (Go forms) → AI scoring (ObjScorecard) → decisioning (ObjDecisionSwitch) → workflow routing → onboarding (document collection) → activation. What's Built - Go forms for lead capture - Credit scoring engine (ObjScorecard) - Decision engine (ObjDecisionSwitch) - Workflow engine for routing - SMS/WhatsApp/Email channels - Document upload + classification - Existing client acquisition service What's M"
  },
  {
    "path": "resource-notes/futures/21_helix_lend.md",
    "title": "21 — Helix Lend: Digital Lending Platform",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "21 — Helix Lend: Digital Lending Platform Overview End-to-end digital lending: application (Go) → bureau pull → AI scoring → decisioning → offer → e-sign → disbursement → collections. White-label for micro-lenders and fintechs. What's Built - Go forms for loan applications - ObjScorecard for credit scoring - ObjDecisionSwitch for underwriting rules - Workflow engine for loan lifecycle - SMS/WhatsApp notifications - Data transfer for bureau integration - Document upload + verification - Email rep"
  },
  {
    "path": "resource-notes/futures/24_axion_marketplace.md",
    "title": "24 — Axion Marketplace: Platform-as-a-Platform",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "24 — Axion Marketplace: Platform-as-a-Platform Overview Package all Axion products into a self-service marketplace. Clients pick modules, deploy via K3s, pay per usage. Each client gets their own namespace, own AI models, own data. TechnoCore takes a platform fee. What's Built - Multi-package architecture (config.yaml per client) - K3s deployment pipeline (one command per client) - Per-service Docker images with tier-based venvs - Registry with auth (registry.technocore.co.za) - Build tracking, "
  },
  {
    "path": "resource-notes/futures/README.md",
    "title": "Axion Future Products",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Axion Future Products Product plans built on the Axion Meridian 8 platform. Each product shares the existing codebase and K3s infrastructure. Strategy - Zero capital — bootstrap from existing revenue - Each product funds the next - One developer can ship Phase 1 products - All AI runs on-premise (Ollama) — zero data leakage - Each client = one config.yaml package, deployed with one command Plans Plan Status Phase ------ -------- ------- 01 — Axion Go (01 axion go.md) Ready to package 1 02 — Axio"
  },
  {
    "path": "resource-notes/glossary_api.md",
    "title": "API Glossary",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "API Glossary This document defines key terms and concepts related to the API architecture and data contracts used in this project. --- API Contract A machine-readable definition of an API interface. It provides a clear description of the available resources, how to interact with them, and the legal and operational terms governing their use. The contract is a comprehensive agreement between the API provider and the consumer. Key Components of the API Contract: - Interface Definition: The technica"
  },
  {
    "path": "resource-notes/howto/cloudflare-cdn-setup.md",
    "title": "Cloudflare CDN Setup for Axion",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Cloudflare CDN Setup for Axion Overview Cloudflare acts as a reverse proxy in front of the Axion report server. Static assets (JS, CSS, fonts, images) are cached at Cloudflare's 300+ global edge locations. The free tier provides unlimited bandwidth with no egress fees. Axion already sets proper Cache-Control and ETag headers on all assets — Cloudflare respects these automatically. What gets cached Path Cache-Control Source ------ -------------- -------- /css/components.css DEV=60s, UAT=300s, PRO"
  },
  {
    "path": "resource-notes/howto/data_formats.md",
    "title": "Data Import & Export Formats",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Data Import & Export Formats Axion supports 19 data formats for import and export. This guide describes each format, when to use it, and the libraries that power them. Quick Reference Format Import Export Extension Library -------- -------- -------- ----------- --------- CSV Yes Yes .csv stdlib csv JSON Yes Yes .json orjson / json NDJSON Yes Yes .ndjson line-delimited JSON XLSX Yes Yes .xlsx openpyxl XLS Yes Yes .xls xlrd / xlwt ODS Yes Yes .ods odfpy XML Yes Yes .xml lxml / defusedxml Parquet Y"
  },
  {
    "path": "resource-notes/howto/datamodel.md",
    "title": "ObjDataModel — Schema-Driven Data Layer",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "ObjDataModel — Schema-Driven Data Layer What It Does ObjDataModel is the standardised way to define, create, and interact with data and list tables in Axion. Instead of writing a custom Python class per entity, you define a YAML schema once and get CRUD, validation, pagination, and soft-delete for free. ObjDataModelEdit is the lifecycle layer on top. It loads a model YAML into the database (creates tables, seeds reference data, registers ownership), exports live DB state back to YAML (for versio"
  },
  {
    "path": "resource-notes/howto/deployment_architecture.md",
    "title": "Deployment Architecture — Local (Proxmox) vs Cloud (AWS)",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Deployment Architecture — Local (Proxmox) vs Cloud (AWS) Local — Proxmox / K3s CI/CD Pipeline Flow Harbor Registry Setting Value --------- ------- URL https://registry.technocore.co.za LXC 136 \"registry\" (10.0.10.5, WG 10.100.0.5) Version Harbor v2.12 Port 5000 (HTTP), TLS at anchor Admin admin / AsusROG1206 Robot robot$axion+pipeline (CI/CD push/pull/scan) Projects axion (service images), dockerhub-cache (proxy cache) Auto-scan Trivy on every push Prevention Block pull of CRITICAL severity Rete"
  },
  {
    "path": "resource-notes/howto/how_to_create_a_report.md",
    "title": "How to Create a New Self-Contained Report",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "How to Create a New Self-Contained Report This guide outlines the standard procedure for creating a new, self-contained HTML report within the Axion project. The process involves creating a Python class to handle the logic and a corresponding YAML file to store the HTML template. 1. Create the Report Files 1. Navigate to the Reports Directory: All reports are located under factory.report/ . 2. Choose a Sub-Package: Select an existing sub-package that matches the report's domain (e.g., package.sy"
  },
  {
    "path": "resource-notes/howto/howto_alerts_and_incidents.md",
    "title": "Alerts and Incidents System",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) Alerts and Incidents System The Axion alerts and incidents system provides comprehensive monitoring, incident management, and communication tracking capabilities. This guide covers how to work with alerts, incidents, and their integration with notification systems. Overview What are Alerts? Alerts are automated notifications triggered by monitoring systems when specific conditions are met. They represent individual events that require attention, such as: "
  },
  {
    "path": "resource-notes/howto/howto_asterisk.md",
    "title": "Asterisk Setup Instructions",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Asterisk Setup Instructions --- 1. Install Dependencies --- 2. Download and Extract Asterisk --- 3. Install Prerequisites --- 4. Build and Install Menuselect Options Enable: --- 5. PJSIP Configuration Edit: --- 6. Dialplan Configuration Edit: --- 6.1 With Call Recording --- 6.2 Without Call Recording --- 7. HTTP Configuration Edit: --- 8. RTP Configuration Edit: --- Done ✅ You can now start Asterisk:"
  },
  {
    "path": "resource-notes/howto/howto_async_workflows.md",
    "title": "Asynchronous Workflows",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) Asynchronous Workflows Setup SQL To enable asynchronous workflows, add a column named async to the def workflow table. Set the value of this column to 'Y' for workflows you want to run asynchronously. YAML Configure the RabbitMQ server and add its details to your YAML file. The configuration should resemble the following: Accessing RabbitMQ Server: Use the following URL structure to access the RabbitMQ server: Checking MongoDB Status: In MongoDB Compass, "
  },
  {
    "path": "resource-notes/howto/howto_build_pipeline.md",
    "title": "Axion Build Pipeline — Complete Reference",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Axion Build Pipeline — Complete Reference Overview The Axion build pipeline compiles, packages, scans, and deploys the platform as per-service Docker images to a Kubernetes (K3s) cluster. Every step is tracked in MySQL, and a branded email report is sent on completion. Quick Start Pipeline Steps in Detail Step 1: Config Validation ObjConfig.validate config(package) checks: - config.yaml exists and is valid YAML - Target package section exists - Database credentials are present - Required section"
  },
  {
    "path": "resource-notes/howto/howto_channel.md",
    "title": "Channels",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) Channels In axion, you can send emails, which are known as 'channels'. The 'def channel' table has all of the fields required for the system to generate an email. def channel The following are the most noteworthy columns in def channel: - Channel -- The name of the channel to the axion system. - Email -- The address that will send the email. - Notes -- The HTML of the email. This field is string processed, so system variables such as \\$user\\$ can be used."
  },
  {
    "path": "resource-notes/howto/howto_commission_slackbot.md",
    "title": "How-To Guide: Commissioning a Slack Bot",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "How-To Guide: Commissioning a Slack Bot This guide provides a step-by-step walkthrough for creating a new Slack App, generating the necessary API tokens, and inviting the bot into a channel so it can send and receive messages. --- 1. Creating a New Slack App The first step is to create a \"Slack App\" within your workspace. This app represents your bot. 1. Navigate to the App Creation Page: Go to api.slack.com/apps (https://api.slack.com/apps). 2. Create a New App: - Click on the \"Create New App\" "
  },
  {
    "path": "resource-notes/howto/howto_configure_data_import.md",
    "title": "How-To: Configure a New Data Import",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "How-To: Configure a New Data Import This guide explains how to configure a new file import process by adding an entry to the def dataimport database table. 1. Introduction Every import process is defined by a single record in the def dataimport table. The ObjDataImport service reads these records to understand where to look for files, how to parse them, and what to do with the data. 2. Key Configuration Fields To create a new import, you need to insert a new row into def dataimport with the foll"
  },
  {
    "path": "resource-notes/howto/howto_container_test_harness.md",
    "title": "Container Test Harness",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Container Test Harness Overview Every Axion container image includes a built-in test harness at /report/status . It runs 110+ automated assertions that validate the container is correctly built, compiled, configured, and ready to serve. The harness is the quality gate between a successful docker build and a production deployment. Endpoints URL Format Purpose ----- -------- --------- /report/status HTML Visual dashboard for operators /report/status?format=png PNG Playwright screenshot for reports"
  },
  {
    "path": "resource-notes/howto/howto_dataimport.md",
    "title": "c) Technocore - All Rights Reserved.",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "(c) Technocore - All Rights Reserved. How-To: Configure Data Imports The Axion data import system is a powerful, database-driven tool for orchestrating file-based data imports. This guide provides a detailed walkthrough of the configuration process, with a focus on a complex scenario: importing multiple data files from a single ZIP archive. 1. Core Concepts: The def dataimport Table All import processes are defined by records in the def dataimport table. The system's ServeImport.py process reads"
  },
  {
    "path": "resource-notes/howto/howto_decision_tree_cli.md",
    "title": "How to Use Decision Tree CLI Commands",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "How to Use Decision Tree CLI Commands This guide shows you how to manage and execute decision trees using the command-line interface. Quick Start All commands are run from the project root: Common Tasks List Available Decision Trees Output shows all trees in your current package with node counts: View Decision Tree Details Shows metadata including: - Total nodes (start, decision, outcome) - Required input fields - Configured data table - Default outcome Run a Simulation Results are stored in blo"
  },
  {
    "path": "resource-notes/howto/howto_design_frontend.md",
    "title": "howto_design_frontend",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Guids should never be set or seen, unless being used for tracing purposes Colours should always be from a limited set from def palette, they should not be picked individually."
  },
  {
    "path": "resource-notes/howto/howto_docker_build.md",
    "title": "Building Docker Images for Axion",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Building Docker Images for Axion Overview Axion uses a multi-stage Docker pipeline to produce compiled, per-service container images. The pipeline compiles all Python factory modules to Cython .so files, trims the config to the target package, and produces thin per-service images that share a common base. Prerequisites Before building, ensure: 1. Docker is installed and running 2. PEM encryption keys exist for the target package at data.config/{package} private.pem and data.config/{package} publ"
  },
  {
    "path": "resource-notes/howto/howto_emoji.md",
    "title": "emoji-cheat-sheet",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "emoji-cheat-sheet ! Up to Date (https://github.com/ikatyang/emoji-cheat-sheet/workflows/Up%20to%20Date/badge.svg) (https://github.com/ikatyang/emoji-cheat-sheet/actions?query=workflow%3A%22Up+to+Date%22) This cheat sheet is automatically generated from GitHub Emoji API (https://api.github.com/emojis) and Unicode Full Emoji List (https://unicode.org/emoji/charts/full-emoji-list.html). Table of Contents - Smileys & Emotion ( smileys--emotion) - People & Body ( people--body) - Animals & Nature ( an"
  },
  {
    "path": "resource-notes/howto/howto_gdpr_popi_compliance.md",
    "title": "How to Handle GDPR and POPI Data Compliance",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) How to Handle GDPR and POPI Data Compliance This guide provides practical instructions for handling personal data in compliance with GDPR (General Data Protection Regulation) and POPIA (Protection of Personal Information Act). It covers both local data storage and email communications. Overview GDPR and POPIA require organizations to: - Protect Personal Data : Encrypt and secure all personal information - Minimize Data Collection : Only collect necessary "
  },
  {
    "path": "resource-notes/howto/howto_infisical.md",
    "title": "How to Set Up Infisical Secret Management",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "How to Set Up Infisical Secret Management This guide walks through setting up Infisical as the secret manager for Axion, migrating existing secrets from config.yaml, and verifying the integration. Step 1: Start Infisical Run the start script from the project root: This starts three containers: - infisical axion - Infisical web app (port 8480) - infisical db axion - PostgreSQL database - infisical redis axion - Redis cache Wait for all containers to become healthy: Step 2: Create Admin Account 1."
  },
  {
    "path": "resource-notes/howto/howto_modules.md",
    "title": "Modules in Axion",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Modules in Axion NB - This is a WIP and the process/details are probably going to change along the way. This is more of an introduction to the idea and a preliminary explanation of the process. Also see: - Spec Sheet Example (../resource.modules/specs/example spec.yaml) - Config Sheet Example (../resource.modules/config/example config.yaml) What is a module? A module is a system or subsystem that performs some sort of task. A module may be a complete project, or a subsection of a project that yo"
  },
  {
    "path": "resource-notes/howto/howto_multiprocessing.md",
    "title": "Multiprocessing Implementation Guide for ObjDecisionSwitch",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Multiprocessing Implementation Guide for ObjDecisionSwitch Overview The decision tree simulation now supports safe multiprocessing with per-process database connections, eliminating the race condition issues that previously forced single-process mode. Architecture Problem (Before) Solution (After) How It Works 1. Pool Initializer Pattern 2. Per-Process Connection 3. Worker Function Enabling Multiprocessing Quick Toggle Edit factory.core/ObjDecisionSwitch.py line 1158: Process Count Configuration"
  },
  {
    "path": "resource-notes/howto/howto_newuser.md",
    "title": "How to Add a New SSH User to a Debian Server",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "How to Add a New SSH User to a Debian Server This guide provides a step-by-step walkthrough for creating a new user account on a Debian server, granting them sudo privileges, and setting up SSH key-based authentication for secure remote access. 1. Create the New User First, log in to your server as a user with sudo privileges (like the root user). Use the adduser command to create the new user. This command is interactive and will prompt you to set a password and fill in some optional user infor"
  },
  {
    "path": "resource-notes/howto/howto_objbackup.md",
    "title": "How to Configure and Manage Database Backups with ObjBackup",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) How to Configure and Manage Database Backups with ObjBackup This guide provides practical instructions for setting up, configuring, and managing automated database backups using ObjBackup - a robust backup framework for MariaDB/MySQL databases. Overview ObjBackup provides comprehensive backup functionality: - Automatic scheduling : Schedule backups via cron or workflows - Multi-database support : Backup multiple databases from different remote connections"
  },
  {
    "path": "resource-notes/howto/howto_pull_requests.md",
    "title": "howto_pull_requests",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) Creating a Personal Branch On bitbucket: Navigate to Your Repository: Go to your Bitbucket account and open the repository where you want to create a branch. Create a Branch: Click on the Branches option in the left-hand menu. Click on the Create branch button in the top right corner. In the popup dialog, fill in the details for your new branch: Branch from: Select the branch you want to branch off from (usually master or main). Branch name: Enter a name "
  },
  {
    "path": "resource-notes/howto/howto_reset_password.md",
    "title": "How to reset passwords",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) How to reset passwords Prerequisite Make sure that you have a data.config file in your system. In this file you should have at least two pem files, public and private. Without this, the encryption system will not work. Variables needed A password reset is done within a workflow, but that workflow needs variables in its context in order to know what to set the new password to. The following variables are needed: \" form loginname\" \" form resetpassword\" From"
  },
  {
    "path": "resource-notes/howto/howto_samba.md",
    "title": "How to Set Up and Mount a Samba Share Between Linux VMs",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "🛠️ How to Set Up and Mount a Samba Share Between Linux VMs This guide walks through configuring a Samba server on one VM (e.g. 10.0.0.65 ) and mounting its share from another (e.g. Hyperion ). It assumes both machines run Linux and are on the same subnet. --- Install Samba on the Server Create a Dedicated Samba User Set a password (e.g. gameover) when prompted. Create the Share Directory Avoid using /home/ due to permission restrictions. Use /srv/samba/develop: Configure /etc/samba/smb.conf Upda"
  },
  {
    "path": "resource-notes/howto/howto_setting_static_ip.md",
    "title": "How to set a static IP address in a Debian server",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) How to set a static IP address in a Debian server The first thing you must do is locate the name of your network device. For that, issue the command: ip -c link show You should at least see two devices, lo (for loopback) and another named device (such as enp0s3). Next, let’s back up the current network configuration file with the command: sudo cp /etc/network/interfaces / Open the configuration file for editing with the command: sudo nano /etc/network/int"
  },
  {
    "path": "resource-notes/howto/howto_simple_form_workflow.md",
    "title": "howto_simple_form_workflow",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md)"
  },
  {
    "path": "resource-notes/howto/howto_table_report.md",
    "title": "Queries with ReportType 'TABLE'",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) Queries with ReportType 'TABLE' The TABLE report type creates a column table based on the data inputted. The following data structures are available: - XML - SQL Processed Text All TABLE report types will be string processed being converted to html. This means that variables and parameters can be put in the data, and will be parsed out in runtime. For example \\$param1\\$ will be replaced with the value represented by param1. Examples XML XML does not requi"
  },
  {
    "path": "resource-notes/howto/howto_unit_testing.md",
    "title": "Unit Testing Guide",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Unit Testing Guide This document outlines the best practices and conventions for writing unit tests in this project. We use pytest as our primary testing framework. Key Principles Isolation: Tests should be independent and not rely on the state of other tests. Clarity: Tests should be easy to read and understand. The name of the test function should clearly describe what it's testing. Repeatability: Tests should produce the same results every time they are run. Getting Started 1. File Naming: Te"
  },
  {
    "path": "resource-notes/howto/howto_value_report.md",
    "title": "Queries with ReportType 'VALUE'",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) Queries with ReportType 'VALUE' The VALUE report type is used to return a single piece of data. This comes in the following forms: - EVAL: Performs a Python Eval and returns the value of whatever statement you put in. - JSON: Returns the first value of the first key of the JSON object inputted. - HTTPS: Returns the first value of the first key of JSON returned after performing a REST API call using the HTTPS URL put in the query. - XML: Returns the value "
  },
  {
    "path": "resource-notes/howto/k3s-docker-registry-setup.md",
    "title": "K3s, Docker & Registry Setup Guide",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "K3s, Docker & Registry Setup Guide Complete guide to setting up K3s, Docker, and a private container registry on the TechnoCore Proxmox infrastructure. See also: - resource.notes/howto/howto docker build.md — building Axion Docker images - resource.notes/howto/deployment architecture.md — architecture diagrams (local + cloud) - resource.notes/howto/cloudflare-cdn-setup.md — DNS and CDN configuration Prerequisites - Proxmox VE 9.x on 10.0.10.18 (node: hypervisor ) - Debian 13 LXC template availab"
  },
  {
    "path": "resource-notes/howto_objdocument.md",
    "title": "How to Process Documents with ObjDocument",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) How to Process Documents with ObjDocument This guide provides practical instructions for uploading, processing, and extracting data from documents using ObjDocument - a comprehensive document management system. Overview ObjDocument provides powerful document processing capabilities: - Document Upload & Storage : Store documents in database or file system - PDF Processing : Extract text, metadata, and images from PDF files - OCR (Optical Character Recognit"
  },
  {
    "path": "resource-notes/howto_objencryption.md",
    "title": "How to Encrypt and Secure Data with ObjEncryption",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) How to Encrypt and Secure Data with ObjEncryption This guide provides practical instructions for encrypting sensitive data using ObjEncryption - a robust encryption framework built on RSA public-key cryptography. Overview ObjEncryption provides comprehensive data encryption capabilities: - PEM Key Management : Generate and manage RSA public/private key pairs - Field-Level Encryption : Encrypt specific database columns - Bulk Table Encryption : Encrypt ent"
  },
  {
    "path": "resource-notes/howto_objml.md",
    "title": "How to Use ObjML for Machine Learning",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) How to Use ObjML for Machine Learning This guide provides practical instructions for using ObjML to build, train, evaluate, and deploy machine learning models in the Axion system. Overview ObjML is a comprehensive machine learning framework that provides: - Data preprocessing and feature engineering - Cost-sensitive classification for imbalanced datasets - Weight of Evidence (WOE) and Information Value (IV) calculations - Credit scorecard development - Mo"
  },
  {
    "path": "resource-notes/howto_objml_model_persistence.md",
    "title": "ObjML Model Persistence",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) ObjML Model Persistence This guide explains how to save, load, and manage machine learning models using ObjML's persistence features. Overview ObjML provides database-backed model persistence with: - Version control for models - Metadata and metrics tracking - Encoder/preprocessor storage - CLI tools for model management Quick Start 1. Create the Database Table First, create the def ml models table: 2. Train and Save a Model 3. Load and Use a Saved Model "
  },
  {
    "path": "resource-notes/howto_objmldatasets.md",
    "title": "How to Manage ML Datasets with ObjMLDatasets",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) How to Manage ML Datasets with ObjMLDatasets This guide provides practical instructions for downloading, loading, and managing machine learning datasets using ObjMLDatasets - the centralized dataset management system for ML workflows. Overview ObjMLDatasets provides a unified interface for working with machine learning datasets from multiple sources: - Built-in datasets : Pre-configured datasets from UCI ML Repository - Kaggle datasets : Automatic downloa"
  },
  {
    "path": "resource-notes/howto_objreport.md",
    "title": "How to Create and Manage Reports with ObjReport",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) How to Create and Manage Reports with ObjReport This guide provides practical instructions for creating, configuring, and managing reports using the ObjReport system - a flexible reporting framework that generates dynamic data visualizations and summaries. Overview ObjReport provides a database-driven reporting system that supports multiple report types: - TABLE : Tabular data displays from SQL, XML, or JSON - VALUE : Single value displays (calculations, "
  },
  {
    "path": "resource-notes/howto_objworkflow.md",
    "title": "How to Build and Execute Workflows with ObjWorkflow",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) How to Build and Execute Workflows with ObjWorkflow This guide provides practical instructions for creating, configuring, and executing workflows using the ObjWorkflow module - the backbone of business process automation in the Axion system. Overview ObjWorkflow is a powerful, data-driven engine that orchestrates complex business processes as Directed Acyclic Graphs (DAGs) . Each workflow consists of nodes (steps) connected by transitions, with data flowi"
  },
  {
    "path": "resource-notes/howto_pull_requests.md",
    "title": "How to Create Pull Requests",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) How to Create Pull Requests Creating a Personal Branch On Bitbucket Navigate to Your Repository: Go to your Bitbucket account and open the repository where you want to create a branch. Create a Branch: Click on the Branches option in the left-hand menu. Click on the Create branch button in the top right corner. In the popup dialog, fill in the details for your new branch: Branch from: Select the branch you want to branch off from (usually master or main)."
  },
  {
    "path": "resource-notes/howto_reset_password.md",
    "title": "How to reset passwords",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) How to reset passwords Prerequisite Make sure that you have a data.config file in your system. In this file you should have at least two pem files, public and private. Without this, the encryption system will not work. Variables needed A password reset is done within a workflow, but that workflow needs variables in its context in order to know what to set the new password to. The following variables are needed: \" form loginname\" \" form resetpassword\" From"
  },
  {
    "path": "resource-notes/howto_setting_static_ip.md",
    "title": "How to set a static IP address in a Debian server",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) How to set a static IP address in a Debian server The first thing you must do is locate the name of your network device. For that, issue the command: ip -c link show You should at least see two devices, lo (for loopback) and another named device (such as enp0s3). Next, let’s back up the current network configuration file with the command: sudo cp /etc/network/interfaces / Open the configuration file for editing with the command: sudo nano /etc/network/int"
  },
  {
    "path": "resource-notes/howto_setup_vim.md",
    "title": "How to Set Up Your Vim Environment",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) How to Set Up Your Vim Environment This guide explains how to configure your Vim editor for Python development using the provided .vimrc configuration. 1. Install vim-plug vim-plug is a minimalist Vim plugin manager. Install it by running the following command in your terminal: 2. Copy the .vimrc Configuration Copy the project's .vimrc file to your home directory: 3. Install Plugins Open Vim and run the following command to install the plugins defined in "
  },
  {
    "path": "resource-notes/howto_simple_form_workflow.md",
    "title": "Simple Form Workflow",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) Simple Form Workflow This guide demonstrates how to create a basic test table and populate it with sample data for form workflows. Creating the Table Inserting Sample Data"
  },
  {
    "path": "resource-notes/howto_slackbot.md",
    "title": "How to Configure a Slack Bot for a New Channel",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) How to Configure a Slack Bot for a New Channel This guide explains how to configure the Axion-Slack integration to send notifications to a new Slack channel using a bot. Prerequisites - You must have administrative access to the Slack workspace where you want to add the bot. - You need access to the server where the Axion project is running to modify configuration files. Steps 1. Create a New Slack App and Bot First, you need to create a Slack App and a b"
  },
  {
    "path": "resource-notes/howto_table_report.md",
    "title": "Queries with ReportType 'TABLE'",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) Queries with ReportType 'TABLE' The TABLE report type creates a column table based on the data inputted. The following data structures are available: - XML - SQL Processed Text All TABLE report types will be string processed being converted to html. This means that variables and parameters can be put in the data, and will be parsed out in runtime. For example \\$param1\\$ will be replaced with the value represented by param1. Examples XML XML does not requi"
  },
  {
    "path": "resource-notes/howto_value_report.md",
    "title": "Queries with ReportType 'VALUE'",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Back to main readme.md (../../readme.md) Queries with ReportType 'VALUE' The VALUE report type is used to return a single piece of data. This comes in the following forms: - EVAL: Performs a Python Eval and returns the value of whatever statement you put in. - JSON: Returns the first value of the first key of the JSON object inputted. - HTTPS: Returns the first value of the first key of JSON returned after performing a REST API call using the HTTPS URL put in the query. - XML: Returns the value "
  },
  {
    "path": "resource-notes/input_table_enhancements.md",
    "title": "Input Table Feature Enhancements",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Input Table Feature Enhancements Overview Three major enhancements have been implemented for the Input Table feature: 1. Constants Validation - Prevents runtime errors 2. Performance Monitoring - Tracks optimization metrics 3. Batch Load Constants - Significant performance improvement --- Enhancement 1: Constants Validation ✅ Purpose Validates that all $constant name$ placeholders used in feature definitions are actually defined in the InputTableConstants mapping, preventing runtime errors. Impl"
  },
  {
    "path": "resource-notes/javascript_testing.md",
    "title": "JavaScript Testing Quick Start",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "JavaScript Testing Quick Start This guide explains how to run JavaScript tests for the Axion framework. Quick Start Run All Tests (Recommended) This will: 1. ✅ Check Node.js installation (installs if missing) 2. ✅ Check npm version (upgrades if needed) 3. ✅ Install test dependencies 4. ✅ Run all 73 tests with coverage 5. ✅ Generate HTML coverage report First Time Setup Only Clean Install and Test Common Usage Requirements - Node.js: = 18.0.0 (auto-installed if missing) - npm: = 9.0.0 (auto-upgra"
  },
  {
    "path": "resource-notes/keycloak_enhancements_phase2.md",
    "title": "Keycloak Enhancements - Phase 2 Implementation Guide",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Keycloak Enhancements - Phase 2 Implementation Guide Date : 2026-02-07 Status : Implementation Guide Completed : Admin CLI, Mock Client, Rate Limiting Remaining : HA Support, Advanced Alerting, Password Reset, Environment Config, Doctor Tool Already Completed ✅ 1. Admin CLI Tool (ObjKeycloakAdmin.py) - ✅ User management (disable, enable, password reset) - ✅ Bulk operations - ✅ Session inspection and management - ✅ Force logout capabilities - ✅ Sync queue management - ✅ Emergency mode toggle - ✅ "
  },
  {
    "path": "resource-notes/keycloak_enhancements_phase3.md",
    "title": "Keycloak Enhancements - Phase 3 Suggestions",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Keycloak Enhancements - Phase 3 Suggestions Date : 2026-02-07 Status : Proposal Priority : Enhancement ideas beyond Phase 1 & 2 Summary of Completed Work Phase 1 ✅ - Resilient Keycloak client with circuit breaker - Token caching (24hr grace period) - Sync queue for offline operations - Dual authentication strategy (local PRIMARY + Keycloak ENHANCEMENT) Phase 2 - Completed ✅ - 4: Admin CLI Tool (ObjKeycloakAdmin) - 13: Mock Keycloak Client (ObjKeycloakMock) - 1: Rate Limiting & Brute Force Protec"
  },
  {
    "path": "resource-notes/keycloak_implementation_complete.md",
    "title": "Keycloak Resilience Implementation - Complete",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Keycloak Resilience Implementation - Complete Date : 2026-02-07 Status : ✅ All components implemented and tested Overview Comprehensive implementation of Keycloak resilience system with dual authentication, circuit breaker pattern, token caching, sync queue, and monitoring. Web users can continue working even if Keycloak is unreachable . Components Implemented 1. Core Authentication ✅ ObjUser.py - Enhanced with Dual Authentication File : factory.web/ObjUser.py New Methods : - Login(username, pas"
  },
  {
    "path": "resource-notes/keycloak_integration_summary.md",
    "title": "Keycloak Integration Summary",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Keycloak Integration Summary Key Principle 🔑 Web users must be able to continue working even if Keycloak is unreachable Architecture Overview Design Patterns Implemented 1. Dual Authentication Strategy - Primary : sys user database (local, always available) - Secondary : Keycloak (SSO enhancement, optional) - Fallback : Automatic when Keycloak unavailable 2. Circuit Breaker Pattern - Stops trying Keycloak after repeated failures - Prevents system degradation from hammering dead service - Automat"
  },
  {
    "path": "resource-notes/legacy_tables.md",
    "title": "Legacy and Backup Tables",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Legacy and Backup Tables Tables in the database that are not managed by any module's YAML schema. These are candidates for cleanup. Last audited: 2026-03-23 Safe to Drop (empty) Table Rows Reason ------- ------ -------- def generic blank 0 Empty, no code references Calculation Snapshots (28 tables) Point-in-time backups of def calculations , created during deployment or before risky changes. All contain 20-74 rows of calculation definitions. Pattern: def calculations YYYYMMDD or def calculations"
  },
  {
    "path": "resource-notes/lsa_assesment.md",
    "title": "lsa_assesment",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "🔬 Test Sessions and Validation Tools To ensure system reliability, security, and compliance, we conduct structured test sessions across all layers of the architecture. Each session targets a specific domain and uses purpose-built tools and methods. --- 1. Web Layer & Reverse Proxy Components Tested: - ServeWebsite.py , ServeWebHook.py - Apache reverse proxy - ModSecurity WAF rules - IP whitelisting and ACLs Tools & Methods: - Curl & Postman: Validate endpoint accessibility, response codes, and h"
  },
  {
    "path": "resource-notes/markdown_driven_collection_ecosystem.md",
    "title": "Markdown-Driven Collection Ecosystem with Sentral Data Mart (ADM)",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Markdown-Driven Collection Ecosystem with Sentral Data Mart (ADM) Version: 1.0.0 Last Updated: 2026-02-09 Author: Axion Platform Documentation Table of Contents 1. Executive Summary ( executive-summary) 2. System Architecture ( system-architecture) 3. Sentral Data Mart (ADM) - State Machine ( sentral-data-mart-adm---state-machine) 4. Markdown Screen Specification ( markdown-screen-specification) 5. Agent Workflow Screens ( agent-workflow-screens) 6. Supervisor & Performance Screens ( supervisor-"
  },
  {
    "path": "resource-notes/metrics_implementation_roadmap.md",
    "title": "Performance Metrics Implementation Roadmap",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Performance Metrics Implementation Roadmap Purpose : Guide for implementing comprehensive performance metrics tracking in any module Reference Implementation : ObjDataImport (factory.core/ObjDataImport.py) Date : 2025-12-28 --- Table of Contents 1. Overview ( overview) 2. Benefits ( benefits) 3. Architecture Pattern ( architecture-pattern) 4. Implementation Steps ( implementation-steps) 5. Schema Design ( schema-design) 6. Code Patterns ( code-patterns) 7. Testing Strategy ( testing-strategy) 8."
  },
  {
    "path": "resource-notes/mt2_lebanon_sms_provider.md",
    "title": "mt2_lebanon_sms_provider",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "﻿ Sender: MT2 - Mobile Technology Tomorrow Date: Thursday, May 11, 2017 1. Introduction This document describes the interface for sending SMS (text, unicode and binary). This interface is based on HTTP. 2. Basic parameters Login Login of the account.Provided by MT2 INTERACTIF. PWD Password of the account. Provided by MT2 INTERACTIF orig MSISDN of the recipient recipient SMS Short Code coding Type of SMS. Defined types are : txt : Text SMS txtutf : Text SMS as unicode (To send arabic, chinese, .."
  },
  {
    "path": "resource-notes/objdataimport_optimization_plan.md",
    "title": "ObjDataImport Performance Optimization Plan",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "ObjDataImport Performance Optimization Plan Executive Summary Current performance: 15,573 rows/second (100K row test) Target performance: 50,000+ rows/second (3x improvement) Based on comprehensive analysis of ObjDataImport.py, we've identified optimizations that could achieve 3-10x performance improvement for large imports. --- Priority 1: High-Impact Optimizations (3-10x Performance Gain) 1. Use MySQL LOAD DATA INFILE (HIGHEST IMPACT: 10-50x faster) Current Approach: Optimized Approach: Benefi"
  },
  {
    "path": "resource-notes/objml_enhancements.md",
    "title": "ObjML Enhancement Suggestions",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "ObjML Enhancement Suggestions Current Capabilities Analysis Existing Features: - ✅ Basic preprocessing (one-hot encoding) - ✅ WOE/IV calculation (binary and multiclass) - ✅ Scorecard building and scaling - ✅ Cost-sensitive classification - ✅ Model training/evaluation (LR, RF, GB, MLP) - ✅ MySQL data integration Gap Areas: - Feature engineering automation - Model persistence and versioning - Model monitoring and drift detection - Advanced metrics and validation - Hyperparameter optimization - Mod"
  },
  {
    "path": "resource-notes/objml_quick_wins.md",
    "title": "ObjML Quick Wins - Immediate Implementation Guide",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "ObjML Quick Wins - Immediate Implementation Guide Top 5 Features to Add Next (Prioritized) 🥇 Priority 1: Model Persistence (CRITICAL) Why First: Can't deploy models to production without this. Implementation Time: 2-3 days Code to Add: Database Migration: --- 🥈 Priority 2: Gini & KS Metrics Why: Industry standard for credit scoring. Implementation Time: 1 day Code to Add: Usage Example: --- 🥉 Priority 3: PSI (Population Stability Index) Why: Essential for monitoring data drift. Implementation Ti"
  },
  {
    "path": "resource-notes/objuser_keycloak_quick_implementation.md",
    "title": "ObjUser + Keycloak - Quick Implementation Guide",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "ObjUser + Keycloak - Quick Implementation Guide Key Principle : Keycloak is an enhancement, not a dependency Architecture Diagram Quick Start Implementation 1. Update sys user.yaml (Already Done ✓) - UserGroup field for groups - RealmUuid for Keycloak integration - Office for branch identification 2. Create sys keycloak token cache Table 3. Create sys keycloak sync queue Table 4. Add Resilience Config to config.yaml 5. Create ObjKeycloakResilient.py 6. Update ObjUser.py - Add Resilient Login Add"
  },
  {
    "path": "resource-notes/objuser_keycloak_resilience_design.md",
    "title": "ObjUser + Keycloak Integration - Resilient Design",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "ObjUser + Keycloak Integration - Resilient Design Key Principle : Web users must be able to continue working even if Keycloak is unreachable. Architecture Philosophy Primary Authentication: sys user (Always Available) - Local database authentication is PRIMARY - Keycloak is ENHANCEMENT for SSO and centralized management - System never depends solely on Keycloak availability Keycloak Role - Single Sign-On (SSO) across multiple applications - Centralized user management and provisioning - LDAP int"
  },
  {
    "path": "resource-notes/package-codex/knowledgebase.md",
    "title": "Codex — Document & Content Management",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Codex — Document & Content Management Product Code: CODEX FullHouse Name: PIMS HomeChoice Name: (not deployed) Overview Codex is the centralised document and product content management system. It handles document storage, versioning, search, product images, metadata, Shopify sync, AI-boosted OCR, and digital signatures (TODO). Core Modules Module Location Purpose -------- ---------- --------- ObjDocument factory.core Document management, storage, retrieval, versioning ObjDocumentFile factory.cor"
  },
  {
    "path": "resource-notes/package-codex/sms_template_strategy.md",
    "title": "Sphinx SMS Template Strategy",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Sphinx SMS Template Strategy Status: Design notes — not yet implemented in database Collections SMS/Email Template Routing DPD-based escalation with multi-channel routing: DPD Risk SMS Template Email Template Channel Promo ----- ------ ------------- ---------------- --------- ------- 180 E SMS COLLECTIONS LEGAL EMAIL NCA S129 Email N 150 E SMS COLLECTIONS LEGAL EMAIL NCA S129 Email N 120 E SMS COLLECTIONS LEGAL EMAIL COLLECTIONS LEGAL WARNING Email N 90 D SMS COLLECTIONS LEGAL EMAIL COLLECTIONS "
  },
  {
    "path": "resource-notes/package-finchoice/servers.md",
    "title": "FinChoice",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "FinChoice Batch Processing Database Server: 10.255.25.10 Collections Web Server: 10.255.25.14 @TODO: - HTTPS certificate - Apache conf - Supervisor conf - Cron scripts Collections API Machine: 10.255.25.13 @TODO: - HTTPS certificate - Apache conf - Supervisor conf - Cron scripts Realtime Processing Database Server: 10.255.25.11 UAT Database Server: 10.255.25.12"
  },
  {
    "path": "resource-notes/package-finchoice/vpn.md",
    "title": "FinChoice VPN Configuration",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "FinChoice VPN Configuration VPN Client The FinChoice VPN works using the FortiNet VPN client which can be downloaded here (https://www.fortinet.com/support/product-downloads vpn) --- VPN Configuration Details Variable Value ----------- ----------- VPN SSL-VPN Connection Name FinChoice Remote Gateway sslvpn.weaverfintech.com Port 11443 Username Supplied by FinChoice Password Supplied by FinChoice"
  },
  {
    "path": "resource-notes/package-fullhouse/JaNee_Prospecting_Daily_Scoring_Process.md",
    "title": "JaNee Prospecting — Daily Scoring Process",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "JaNee Prospecting — Daily Scoring Process This document describes the end-to-end SQL process we run for JaNee prospecting. It’s written so you can copy/paste each block as needed. The run is scoped to “today” via ScoreDate = DATE(NOW()) . --- Overview Inputs - janee.axion.data prospect temp cv1 (cv1 import) - janee.axion.data prospect temp retailscore (retail score import) - Reference/lookup tables: - janee.axion.janee ari (score → ARI bands) - janee.axion.janee data application - janee.axion.ja"
  },
  {
    "path": "resource-notes/package-fullhouse/fullhouse_api.md",
    "title": "Author: Francois van Heyningen",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "------------------------------------------------------------------------------- @Author: Francois van Heyningen @Date: 2020-01-14T09:36:11+02:00 @Email: vheyn@technocore.co.za @Last modified by: Francois van Heyningen @Last modified time: 2020-01-14T09:36:20+02:00 ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Transaction notes: Clear out old transactions delete FROM meta transactions"
  },
  {
    "path": "resource-notes/package-fullhouse/how_to_fullhouse_marketing_sms.md",
    "title": "SMS Campaigns",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "SMS Campaigns These are notes relating to the SMS campaigns that Full House carry out on a monthly basis. - For help/assistance: Michael , Owen - Likely Client: Le Roi (Full House) Database Details These credentials may be out of date. There are currently plans to move this project to a new DB. - IP: db.janee.co.za - DB: fullhouse.axion , trader - Package: FULLHOUSE SMS Marketing Campaign Marketing SMSs are sent out monthly to Full House customers. The marketing SMSs will contain a message speci"
  },
  {
    "path": "resource-notes/package-fullhouse/how_to_push_shopify_products.md",
    "title": "Pushing Products to Shopify (FullHouse)",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Pushing Products to Shopify (FullHouse) These are notes relating to pushing products from PIMS to Shopify online. The pipeline lives in factory.service/package.fullhouse/ObjServiceFHShopify.py — see that module's .md for architectural detail (option levels, metafields, image pipeline, dedup). - For help/assistance: Michael , Owen - Likely Clients: Charnette Hendricks (Full House) Database Details - Server: db.janee.co.za - DB: core.axion , trader - Package: FULLHOUSE (set package: fullhouse in c"
  },
  {
    "path": "resource-notes/package-fullhouse/knowledgebase.md",
    "title": "Full House — Knowledge Base",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Full House — Knowledge Base Trader Database Trader is a Firebird-based retail credit management system. Axion connects to it via a MariaDB mirror ( trader schema on the primary DB) that is populated by an ETL process importing Trader's .FDB file. Key Tables Table Purpose --- --- trader.meta statement rolling One row per account — all client details, balances, address, branch, and account summary fields pre-joined trader.meta statement email Email dispatch list; Account + Email columns; joined to"
  },
  {
    "path": "resource-notes/package-fullhouse/pims_original_spec.md",
    "title": "pims_original_spec",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "﻿PIMS (Product Information Management System) – 2020-09-22 Summary We require a central database to house all our product information, making it easily accessible for all internal and external users. It must include all product information on Trader, product descriptions, fact and benefits and images. In addition to the database, we require a workflow tool to ensure that each piece of data needed is present and is correct. The images below show the fields in Trader: Main Inventory Page Extended "
  },
  {
    "path": "resource-notes/package-fullhouse/regmaker_strategy_failure_support_runbook.md",
    "title": "Regmaker Support Guide",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Regmaker Support Guide Handling Strategy Failure or Missing Trader Data --- Purpose This guide explains how to detect, investigate, and resolve issues where the Regmaker strategy fails or Trader data has not been updated correctly , resulting in alerts or incomplete processing. --- 1. Issue Detection 1.1 Automatic Alerting The Regmaker strategy sends an SMS alert when: - The strategy fails, or - Updated data from Trader is missing Note: Support engineers can add their own cellphone number to the"
  },
  {
    "path": "resource-notes/package-fullhouse/reverse_billing.md",
    "title": "reverse_billing",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Account for reverse billing: https://pub.bi.nu/ vheyn@technocore.co.za 1Kerbango"
  },
  {
    "path": "resource-notes/package-fullhouse/shopify/CACHE_OPTIMIZATION.md",
    "title": "Shopify Inventory Cache Optimization",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Shopify Inventory Cache Optimization Feature: Smart caching to reduce Shopify API calls Created: February 7, 2026 Status: Production Ready --- Overview The inventory cache optimization automatically skips unnecessary Shopify API updates by checking if product data was recently synced. This dramatically reduces API calls, improves sync performance, and helps avoid rate limits. --- How It Works Before (Without Cache) After (With Cache) --- Configuration View Current Settings Output: Change Cache M"
  },
  {
    "path": "resource-notes/package-fullhouse/shopify/CACHE_PRICE_PROMOTION.md",
    "title": "Cache Validation: Price & Promotion Checking",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Cache Validation: Price & Promotion Checking Feature: Smart cache invalidation based on price and promotion changes Priority: CRITICAL - Price and promotion changes must sync immediately Created: February 7, 2026 --- Overview The inventory cache has been enhanced with price and promotion awareness . Even if a product was synced 1 hour ago (well within the 24-hour cache window), if the price changed or a promotion started/ended , the cache is automatically invalidated and Shopify is updated immed"
  },
  {
    "path": "resource-notes/package-fullhouse/shopify/CONFIGURATION_REQUIREMENTS.md",
    "title": "Shopify Integration - Configuration Requirements",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Shopify Integration - Configuration Requirements Quick Reference for Setup Last Updated: February 7, 2026 --- Critical Configuration 1. Package Setting (REQUIRED) File: config.yaml (line 12) Verification: Why required: - Shopify service is in package.fullhouse directory - Database connections are package-scoped - Configuration settings are package-specific - Service will fail to initialize without this --- 2. Database Parameters Shopify Credentials Table: remoteconnections Required fields: - Use"
  },
  {
    "path": "resource-notes/package-fullhouse/shopify/CREATE_PRODUCT_REFACTOR.md",
    "title": "CreateProduct() Method - Refactor Plan",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "CreateProduct() Method - Refactor Plan Current State File: ObjServiceFHShopify.py Lines: 1538-2618 (1,080 lines) Complexity: VERY HIGH Problem The CreateProduct method is extremely complex with: - 1,080 lines of code in a single method - Mix of REST API calls and business logic - Multiple responsibilities (variants, options, images, metafields, promotions) - Nested loops and conditionals - Hard to test and maintain Refactor Strategy Phase 1: Extract Helper Methods Break CreateProduct into smalle"
  },
  {
    "path": "resource-notes/package-fullhouse/shopify/CREATE_PRODUCT_REFACTOR_COMPLETE.md",
    "title": "CreateProduct() Refactoring - Completion Summary",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "CreateProduct() Refactoring - Completion Summary Date: February 7, 2026 Status: ✅ COMPLETE - Ready for UAT Testing Branch: feat/shopify --- Overview Successfully refactored the 1,080-line CreateProduct() method into a modern, maintainable create product() implementation using: - GraphQL Admin API 2026-01 (replacing REST 2021-07) - Snake case naming (following project standards) - Helper method extraction (single responsibility principle) - Comprehensive documentation (docstrings and inline comme"
  },
  {
    "path": "resource-notes/package-fullhouse/shopify/DRYRUN_TEST_RESULTS.md",
    "title": "Dry-Run Mode Test Results",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Dry-Run Mode Test Results Test Date: February 7, 2026 Status: ✅ All Tests Passed Version: 1.0 --- Test Summary The dry-run verification system has been tested and confirmed working correctly. Prerequisites Verified ✅ Package Configuration: config.yaml set to package: fullhouse ✅ Database Connection: Successfully connected to database ✅ Table Creation: data shopify dryrun table created ✅ Parameter Management: dry run mode parameter configured Tests Performed 1. ✅ Parameter Configuration - dry run"
  },
  {
    "path": "resource-notes/package-fullhouse/shopify/IMAGE_CHECK_ENHANCEMENT.md",
    "title": "UpdateImages() Enhancement - Existing Image Check",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "UpdateImages() Enhancement - Existing Image Check Date: February 7, 2026 Feature: Check for existing images before uploading Benefit: Saves bandwidth, API calls, and time --- Overview Enhanced the UpdateImages() method to check if images already exist on a Shopify product before uploading new ones. This prevents duplicate uploads and reduces unnecessary API calls. Problem Solved Before: - Uploaded all images every time, regardless of whether they already existed - Wasted bandwidth uploading dupl"
  },
  {
    "path": "resource-notes/package-fullhouse/shopify/INVENTORY_TABLE.md",
    "title": "Shopify Inventory Table",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Shopify Inventory Table Table: core.axion.data shopify inventory Purpose: Cache and analyze Shopify product data Created: February 7, 2026 --- Overview The data shopify inventory table stores a complete snapshot of all Shopify products retrieved via the GraphQL Admin API. This table is designed for: - Inventory audits - Compare local inventory with Shopify - Reporting - Generate product reports without API calls - Price analysis - Track pricing trends over time - Data science - Historical produc"
  },
  {
    "path": "resource-notes/package-fullhouse/shopify/MIGRATION_COMPLETE.md",
    "title": "Shopify GraphQL Migration - COMPLETE ✅",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Shopify GraphQL Migration - COMPLETE ✅ Date Completed: February 7, 2026 Status: 100% Complete - Production Ready Version: GraphQL Admin API 2026-01 --- Executive Summary The Shopify integration has been fully migrated from REST API to GraphQL Admin API 2026-01. All legacy methods have been updated or replaced, and several powerful new features have been added. Key Achievements: - ✅ 100% GraphQL migration - All REST code migrated or deprecated - ✅ 88% performance improvement - Phase 1 optimizatio"
  },
  {
    "path": "resource-notes/package-fullhouse/shopify/PERFORMANCE_OVERVIEW.md",
    "title": "Shopify Integration Performance Improvements",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Shopify Integration Performance Improvements Executive Summary - Non-Technical Overview Date: February 2026 Status: Complete and Ready for Production Performance Gain: 88% faster (37 minutes → 5 minutes for daily sync) --- What We Improved We made your Shopify integration dramatically faster by implementing five key improvements. Think of it like upgrading from sending individual letters to having a smart assistant who remembers what you already said and only communicates when there's something "
  },
  {
    "path": "resource-notes/package-fullhouse/shopify/PHASE1_OPTIMIZATIONS.md",
    "title": "Phase 1 Optimizations - Quick Wins",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Phase 1 Optimizations - Quick Wins Status: ✅ COMPLETE Date: February 7, 2026 Impact: 40-50% performance improvement Risk: Very Low Implementation Time: 1-2 days --- Overview Phase 1 implements four critical performance optimizations that provide immediate benefits with minimal risk. These \"quick wins\" were selected for their high impact-to-effort ratio and low risk profile. --- Optimizations Implemented 1. ✅ Connection Pooling & Keep-Alive Problem: Creating new HTTP connection for every API requ"
  },
  {
    "path": "resource-notes/package-fullhouse/shopify/REFACTORING_FINAL_SUMMARY.md",
    "title": "CreateProduct() Refactoring - FINAL SUMMARY",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "CreateProduct() Refactoring - FINAL SUMMARY Date: February 7, 2026 Status: ✅ COMPLETE - All Features Added, Old Code Removed Branch: feat/shopify --- 🎉 Refactoring Complete! The 1,080-line CreateProduct() method has been successfully refactored to a modern, maintainable create product() implementation with all remaining features added and old code removed . --- ✅ What Was Accomplished 1. Code Reduction: 86% - Before: 1,080 lines in single method (lines 2329-3408) - After: 150 lines main method +"
  },
  {
    "path": "resource-notes/package-fullhouse/shopify/ROADMAP_NEXT_STEPS.md",
    "title": "Shopify Integration - What's Next?",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Shopify Integration - What's Next? Roadmap for Future Improvements Current Status: Phase 1 Complete ✅ (88% faster, production ready) Date: February 7, 2026 --- Quick Summary We've completed Phase 1 optimizations with 88% performance improvement . Now we can go even further with: - Phase 2: Batch operations & parallel processing → 95% faster (37 min → 2 min) - Phase 3: Real-time sync & webhooks → Instant updates (no waiting) - Complete GraphQL Migration: Modernize remaining legacy code - Advanced"
  },
  {
    "path": "resource-notes/package-fullhouse/shopify/SHOPIFY_DRYRUN.md",
    "title": "Shopify Dry-Run Mode",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Shopify Dry-Run Mode Feature: Verification table for testing price, term, and installment calculations Created: February 7, 2026 Status: Complete and ready for use --- Overview Dry-run mode allows you to test and verify that all pricing, terms, and installment calculations are correct after code refactoring without actually sending data to Shopify . Instead of updating Shopify, all calculated data is saved to a verification table ( data shopify dryrun ) where you can: - Review all calculated pri"
  },
  {
    "path": "resource-notes/package-fullhouse/shopify/SHOPIFY_MIGRATION_PLAN.md",
    "title": "Shopify API Upgrade - Migration Plan",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Shopify API Upgrade - Migration Plan Non-Technical Overview Date: February 2026 Project: Upgrade Shopify Integration from Old API to New API Risk Level: High - Requires Careful Testing Estimated Timeline: 4-6 weeks --- What Are We Doing? We're upgrading how our system talks to Shopify. Think of it like upgrading from an old phone system to a new one - the conversations are the same, but we need to learn the new way to dial and connect. Current System: Uses Shopify's old REST API (from 2021) New "
  },
  {
    "path": "resource-notes/package-fullhouse/shopify/SHOPIFY_STATUS_SYNC.md",
    "title": "Shopify Product Status Sync",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Shopify Product Status Sync Feature: Two-way sync of product status between Shopify and local database Created: February 7, 2026 Status: Complete and ready for use --- Overview When products are manually disabled in Shopify (set to DRAFT or ARCHIVED status), the local database can now automatically reflect these changes by clearing the web flag. This ensures your local database stays synchronized with manual changes made in the Shopify admin panel. --- Why This Matters Without Status Sync With S"
  },
  {
    "path": "resource-notes/package-fullhouse/shopify.md",
    "title": "shopify",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Old website update package Extract sql:"
  },
  {
    "path": "resource-notes/package-fullhouse/todo.md",
    "title": "FullHouse — Todo",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "FullHouse — Todo"
  },
  {
    "path": "resource-notes/package-fullhouse/trader_database.md",
    "title": "trader_database",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": ""
  },
  {
    "path": "resource-notes/package-fullhouse/trader_sync_plan.md",
    "title": "TODO: Trader SFTP Sync — Smart Scheduler with Backoff <>",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "TODO: Trader SFTP Sync — Smart Scheduler with Backoff < Status: ObjFtp.poll() implemented, ObjServiceTrader migration pending Product: Codex (FullHouse/PIMS) Files: ObjServiceTrader.py, ObjFtp.py Current Problems - Blind SFTP polling every run — wasted connections - No tracking of processed files - No deduplication (reprocess risk if delete fails) - No error handling (SFTP failure crashes silently) - No alerts when files stop arriving - Returns \"DONE\" even when nothing was downloaded Plan 1. SFT"
  },
  {
    "path": "resource-notes/package-gekko/google_home_setup.md",
    "title": "Google Home — Google Cloud Setup Guide",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Google Home — Google Cloud Setup Guide Step-by-step guide to connect the Gekko package to Google Home. Project : GekkoRidge Project ID : gekkoridge-488709 1. Create a Google Cloud Project Project already exists: GekkoRidge ( gekkoridge-488709 ) https://console.cloud.google.com/home/dashboard?project=gekkoridge-488709 2. Enable Required APIs In APIs & Services → Library , enable: - Smart Device Management API — device control - HomeGraph API — device list and state sync 3. Create OAuth 2.0 Creden"
  },
  {
    "path": "resource-notes/package-homechoice/bespoke_scorecard_spec.md",
    "title": "bespoke_scorecard_spec",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "﻿hi=d5@7 k@ld=m13 d@ f822 4s8t5 =8m8@32 4B4uAvc478q r8=:w 4DM 8t5 =8m8@32 04x13191284?o1@i824p4z8{4L19q82 04x13191284?o1@i824p4L19q84Kq38=2 04x13191284?o1@i824p4x1314k@28=32 04x13191284?o1@i824p4z8{4j3d=874c=df875=82 04x13191284?o1@i824p4Km8@7m8@3243d4 } 23 @i4j3d=8 04x13191284?o1@i824p4z8{4v833 @i4j3=138i:48:24p44 04x13191284?o1@i824p4z8{4L19q82 04x13191284?o1@i824p4x1314k@28=32 87 34j8=r f84p4?1qq43d4 }68= 1@ 87 34j8=r f84p4?1qq43d4L8fo@d?d=8 87 34j8=r f84p4?1qq43d4L8fo@d?d=84p4Kck4k@653241@"
  },
  {
    "path": "resource-notes/package-homechoice/credico_call.md",
    "title": "Scoring_API --> Leads_system",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Current design - Leads bypass Leads system entirely Proposed patch Credico calls the Scoring system on a slightly abbreviated interface, and we are missing some parameters from a normal call : - They are sending along shortcode 100003 - this is inline with the leads system. What we need to map when we are moving from UAT to LIVE is : - department code - We could use 34 - business integration, or add a new one Updated code 43, from you score based on the calling agent - leads origin code - I woul"
  },
  {
    "path": "resource-notes/package-homechoice/credit-alignment-system-map.md",
    "title": "TechnoCore Systems Overview - Credit Alignment Session",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "TechnoCore Systems Overview - Credit Alignment Session 23 March 2026 --- System Architecture --- Channel Comparison AO (Online) CR (Credico) WA (WhatsApp) --- --- --- --- Webhook HCSCOREAO HCSCORECR HCSCOREWA Input GUID, IDNumber, CellNo Full payload + Shortcode Full payload + Shortcode Endpoint api.hcapi.co.za aouat.technocore.co.za/hook/hcscorecr aouat.technocore.co.za/hook/hcscorewa Department 46 (fixed) From shortcode mapping 46 (fixed) LeadOrigin Resolved from leads data (PostSql) 14 (hardc"
  },
  {
    "path": "resource-notes/package-homechoice/fraud_plan.md",
    "title": "HomeChoice Fraud Detection Plan",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "HomeChoice Fraud Detection Plan Overview Integrate GBG's Fraud Risk Management Platform with Axion's workflow engine to create a unified fraud detection, identity verification, and compliance pipeline for HomeChoice credit origination and collections. Current State System Status What it does -------- -------- ------------- SAFPS Live SA Fraud Prevention Service — ID fraud check Experian Live Credit bureau — bureau score, payment history XDS Live Credit bureau — alternative data GBG Scaffold buil"
  },
  {
    "path": "resource-notes/package-homechoice/hcapi.md",
    "title": "hcapi",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "ALTER TABLE bloom hcscore ADD COLUMN CustomerSource CHAR(255); ALTER TABLE bloom hcscore ADD COLUMN TargetIndicator CHAR(255); ALTER TABLE bloom hcscore payload ADD COLUMN CustomerSource CHAR(255); ALTER TABLE bloom hcscore payload ADD COLUMN TargetIndicator CHAR(255); ALTER TABLE bloom hcscore payload ADD COLUMN guid CHAR(255); SELECT N. guid, -1 as score, '0' as scorecategory, '' as riskgrade, '' as ratingscale, 0 as creditlimit, '12' as MaxTerm, '' AS strikethroughindicator, '' AS cellflag, '"
  },
  {
    "path": "resource-notes/package-homechoice/homechoice-bop.md",
    "title": "HomeChoice - High Level Business Operating Process (BOP)",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "HomeChoice - High Level Business Operating Process (BOP) Last updated: 2026-03-23 Source: Credit Alignment session (23 Mar 2026) Volumes: Estimated monthly averages from production data --- Flow: Source - Input - System - Output Sources (Lead Origins) Source Shortcode Channel Est. Monthly -------- ----------- --------- ------------- SMS Replies (optout/ID) - Gateway 200 GrapeVine 30000-90000 Gateway 400 HC Direct Web 99991-99998 & 100007 Gateway 15,000 InfoBip 1000009 HCSCORE WA 1,500 Facebook 9"
  },
  {
    "path": "resource-notes/package-homechoice/knowledge_base_ao.md",
    "title": "HomeChoice AO System — Knowledge Base",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "HomeChoice AO System — Knowledge Base What is AO? AO = Affordability Online AO is one of several application channels that feed credit scoring requests into the HomeChoice HCScore system. It represents online affordability assessments where the applicant submits only their ID number and cell number — no full name is provided up front. Channel Comparison Channel Webhook Code Source Table Hook File Response Format --- --- --- --- --- AO (Affordability Online) HCSCOREAO bloom hcscoreao payload ObjH"
  },
  {
    "path": "resource-notes/package-homechoice/knowledgebase.md",
    "title": "HomeChoice SalesWatch Knowledgebase",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "HomeChoice SalesWatch Knowledgebase Salesman Data Model All salesman data lives in the trader schema on the same MariaDB server as the Axion platform. No ETL or import — queries run directly against trader . --- Core Table: trader.customers 366k customer records. 3,819 active accounts have available credit at any time. Key Fields Column Type Description --- --- --- DB ACCOUNTCODE char(50) Primary key (e.g. 215-208013 ) DB NAME char Customer name DB MOBILE char Mobile number DB TELEPHONE1 char La"
  },
  {
    "path": "resource-notes/package-homechoice/servers.md",
    "title": "HomeChoice",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "HomeChoice Homechoice Batch Processing Database Server: pwbhctcbpdb01 : 192.168.20.20 @TODO: - Set up Axion schema Homechoice Realtime Processing Database Server: pwbhctcrtdb01 : 192.168.20.21 @TODO: - Set up Axion schema Homechoice UAT Database Server: uwbhctcdb01 : 192.168.20.22 @TODO: - Set up Axion schema Homechoice Gateway: pwbhctcgw01 : 192.168.20.25 @TODO: - Axion install - HTTPS certificate - Apache conf - Cron scripts Homechoice Strategy Leads: pwbhctcsl01 : 192.168.20.28 @TODO: - Axion"
  },
  {
    "path": "resource-notes/package-homechoice/slackbot.md",
    "title": "slackbot",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "AppID: A09RSL40ZFA ClientID: 104060942197.9876684033520 ClientSecret: 0b445ee6741c5a782b194bbb9c6e838a VerificationToken: 0e3a73774105360c21b70b72af79ac54"
  },
  {
    "path": "resource-notes/package-homechoice/todo.md",
    "title": "HomeChoice — Todo",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "HomeChoice — Todo SAFPS Integration Service exists at factory.service/package.core/ObjServiceSAFPS.py . What it does: - OAuth2 client credentials login against def remoteconnections (remote= safps ) - POST to https://external.safps.org.za/Api/Search/ReferenceSearch with ID number - Blooms results into bloom safps table (incident count + incident list) Pending — wire into HomeChoice: - Add def remoteconnections entry for SAFPS (token URL, client ID, client secret) - Register ObjServiceSAFPS as a "
  },
  {
    "path": "resource-notes/package-intelect/data_flow.md",
    "title": "Makro architecture",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Makro architecture Our back office involves a lot of disparate systems, database systems and flows of data, and the macro architecture of the business seems to be in a bit of flux. If we leave it to emerge spontaneously from our independent choices it will make adding new components much more complex. ! Rest data flow (data flow detail.png) --- Most of these concepts have already been locked in but some questions have resurfaced. In this context we need to review how we specify how we interopera"
  },
  {
    "path": "resource-notes/package-intelect/global_architecture.md",
    "title": "global_architecture",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "2:20 PM paymentsSCVcommunication hubbatching for goddexloan acquisition re-try of essential services (e.g. loan agreement, etc)data ETL related processes 2:20 PM example of more complicated payments problem - card payments 2:21 PM close to real time service can notify us (or we can poll it) to get confirmation a card payment was successfully authorised by a customer (typically loan collections) 2:22 PM the actual payment comes several days later and there is potentially no further third party no"
  },
  {
    "path": "resource-notes/package-ombank/architecture.md",
    "title": "architecture",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": ""
  },
  {
    "path": "resource-notes/package-reference/index.md",
    "title": "index",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": ""
  },
  {
    "path": "resource-notes/package-reference/workflows.md",
    "title": "User management",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "User management Workflows define in the current REFERNCE package // : < (QUERY: SELECT S.WorkflowName, S.Level, COUNT( ) AS Steps, MAX(IF(W. Rank = 1,W. Type ,'')) AS Type FROM def workflow AS S LEFT JOIN def workflows AS W ON S.WorkflowName = W.WorkflowName AND S.Package = W.Package WHERE S.PACKAGE = 'REFERENCE' AND S.WorkflowName like 'UM%' GROUP BY S.WorkflowName ) // : < (DATA START) WorkflowName Level Steps Type --------- --------- --------- --------- UM ACTIVATEUSER 4 8 GUI UM ADDORGID 4 8"
  },
  {
    "path": "resource-notes/package-sunswept/CurrentWorkflow_Diagram.md",
    "title": "Workflow diagrams and table structures",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Workflow diagrams and table structures Current Workflow Current Workflow diagram that has been built today - Focusing on Guest preferences mermaid flowchart TD A( Maestro Customer Creation ) -- B User Registration B -- C( Onboarding Email ) C -- E Login Screen E -- AA{Existing Guest?} AA -- No -- F Spa Consent Form AA -- Yes -- R F -- G Activity Preferences G -- H Level of Intensity H -- I Max Sessions per day - Time of day to start activities - Time of day to end activities I -- J Pillow Materi"
  },
  {
    "path": "resource-notes/package-sunswept/Idea_Board.md",
    "title": "Idea Board",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Idea Board Add Idea’s to this board to build a backlog of tasks to add to the project. Page/Task Description Requirements Specifications Status ---------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------ --------------------- ------------- GenAI Use GenAI for items like generation of images (need to ensure"
  },
  {
    "path": "resource-notes/package-sunswept/MVP_Checklist.md",
    "title": "MVP Checklist",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "MVP Checklist Checklist for MVP go live Page/Task Description Requirements Specifications Status --------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------"
  },
  {
    "path": "resource-notes/package-sunswept/PostMVP_Checklist.md",
    "title": "Post MVP Checklist",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Post MVP Checklist Checklist post MVP 30th October - 31st December Card acquiring - 31st Jan Page/Task Description Requirements Specifications Status ----------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------- -------------------------------------------------------------------------------------------------------"
  },
  {
    "path": "resource-notes/package-sunswept/TableStructure_Journey.md",
    "title": "Workflow diagrams and table structures",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Workflow diagrams and table structures Table Structure Current SQL table structure flow used to gather customer input and build calendar Table Structure PDF (Sunswept.pdf)"
  },
  {
    "path": "resource-notes/package-sunswept/TargetWorkflow_Admin_Diagram.md",
    "title": "Workflow diagrams and table structures",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Workflow diagrams and table structures Target Workflow Target Workflow diagram - Focusing on Guest preferences mermaid flowchart TD A( Maestro Customer Creation ) -- B User Registration B -- C( Onboarding Email ) C -- E Login Screen E -- F{Is Staff?} F -- Yes -- G Admin Portal G -- AS Guest Search Screen AS-- Z( Guest - Calendar ) Z -- S (Calendar Constraint Service - Creation Of Calendar Schedule) S-. Send Notification of activites that have been altered/deleted/added to Guest profile .-AR( Pro"
  },
  {
    "path": "resource-notes/package-sunswept/TargetWorkflow_Diagram.md",
    "title": "Workflow diagrams and table structures",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Workflow diagrams and table structures Target Workflow Target Workflow diagram - Focusing on Guest preferences mermaid flowchart TD A( Maestro Customer Creation ) -- B User Registration B -- C( Onboarding Email ) C -- E Login Screen E -- F{Is Staff?} F -- Yes -- G Admin Portal F -- No -- H{Existing Guest?} H -- Yes -- Z( Profile - User Calendar ) H -- No -- I Spa Consent Form I -- J Activity Preferences J -- K{Choose Golf or Tennis?} J -- L{Choose Scuba?} K -- Yes -- M Level of Activity - Beginn"
  },
  {
    "path": "resource-notes/package-sunswept/TargetWorkflow_Edit_Remove_Diagram.md",
    "title": "Workflow diagrams and table structures",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Workflow diagrams and table structures Target Workflow Target Workflow diagram - Focusing on Add, Edit and Remove of an activity mermaid flowchart TD A( Profile - User Calendar ) A -- AA( User Adds, Edits or Delete to Schedule ) AA -- S (Calendar Constraint Service - Creation Of Calendar Schedule) S -- AG{Paid actvivity?} AG -- Yes -- T( Checkout Screen, pay at checkout/pay by card - Activity list and cost breakdown. ) AG -- No(Delete/Free) -- A S-. Guest Notification schedule change to profile "
  },
  {
    "path": "resource-notes/package-sunswept/TargetWorkflow_Journey_Diagram.md",
    "title": "Workflow diagrams and table structures",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Workflow diagrams and table structures Target Workflow Target Workflow diagram - Focusing on Guest preferences mermaid flowchart TD A( Maestro Customer Creation ) -- B User Registration B -- C( Onboarding Email ) C -- E Login Screen E -- F{Is Staff?} F -- Yes -- G Admin Portal F -- No -- H{Existing Guest?} H -- No -- I{Build your own calendar?, Curated Calendar?, Have you had a consultation for a planned programme?} I -- Curated Calendar -- J Activity Preferences J -- K{Choose Golf or Tennis?} J"
  },
  {
    "path": "resource-notes/package-sunswept/TargetWorkflow_Overview_Diagram.md",
    "title": "Workflow diagrams and table structures",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Workflow diagrams and table structures Target Workflow Target Workflow diagram - Focusing on Guest preferences mermaid flowchart TD A( Maestro Customer Creation ) -- B User Registration B -- C( Onboarding Email ) C -- E Login Screen E -- F{Is Staff?} F -- Yes -- G Admin Portal F -- No -- H{Existing Guest?} H -- Yes -- Z( Profile - User Calendar ) H -- No -- I{Build your own calendar?, Curated Calendar?, Have you had a consultation for a planned programme?} I -- Curated Calendar/Build your own ca"
  },
  {
    "path": "resource-notes/package-sunswept/TargetWorkflow_OwnCalendar_Diagram.md",
    "title": "Workflow diagrams and table structures",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Workflow diagrams and table structures Target Workflow Target Workflow diagram - Focusing on Guest preferences mermaid flowchart TD A( Maestro Customer Creation ) -- B User Registration B -- C( Onboarding Email ) C -- E Login Screen E -- F{Is Staff?} F -- Yes -- G Admin Portal F -- No -- H{Existing Guest?} H -- No -- I{Build your own calendar?, Curated Calendar?, Have you had a consultation for a planned programme?} I -- Build your own calendar Calendar -- J Activity Preferences J -- K{Choose Go"
  },
  {
    "path": "resource-notes/package-sunswept/TargetWorkflow_Programme_Diagram.md",
    "title": "Workflow diagrams and table structures",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Workflow diagrams and table structures Target Workflow Target Workflow diagram - Focusing on Guest preferences mermaid flowchart TD A( Maestro Customer Creation ) -- B User Registration B -- C( Onboarding Email ) C -- E Login Screen E -- F{Is Staff?} G Admin Portal F -- No -- H{Existing Guest?} H -- No -- I{Build your own calendar?, Curated Calendar?, Have you had a consultation for a planned programme?} I -- Consultation Programme -- AAF Holding screen AAF-. Notification to staff to alert that "
  },
  {
    "path": "resource-notes/package-sunswept/help.md",
    "title": "help",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": ""
  },
  {
    "path": "resource-notes/package-sunswept/help_files/diet_preference.md",
    "title": "diet_preference",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Select Your Dietary Preferences Please review the following dietary options and select the ones that apply to you. If you have any special dietary requests, be sure to provide additional information. - Vegetarian : A plant-based diet that excludes meat, poultry, and fish but may include dairy and eggs. - Gluten-Free : Suitable for those with gluten intolerance or celiac disease, avoiding foods that contain gluten such as wheat, barley, and rye. - Vegan : A strict plant-based diet excluding all a"
  },
  {
    "path": "resource-notes/package-sunswept/help_files/intensity_preference.md",
    "title": "intensity_preference",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Intensity Preference Each activity has an intensity level associated with it. By selecting the appropriate intensity level this ensures that your experience matches your fitness level, health condition, and personal preferences. Whether you are looking for a relaxing session or a high-energy workout, choosing the right intensity is essential."
  },
  {
    "path": "resource-notes/package-sunswept/help_files/journey_preference.md",
    "title": "journey_preference",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Journey Preferences Begin by reviewing the list of available journeys. Select the preferred option that best suit your interests. - You can select more than one journey. Journeys: markdown - Yoga - Dance - Adventure - Fitness - Sailing - WaterSports - Golf - Tennis - Hiking"
  },
  {
    "path": "resource-notes/package-sunswept/help_files/maxSessions_preference.md",
    "title": "maxSessions_preference",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Number of Sessions per Day You can select the number of activity sessions you want to participate in on any given day. Whether you prefer a single, focused session or multiple activities throughout the day, you can tailor your schedule to suit your energy levels and wellness goals. Start and End time of Activities For Calendar curation, you have the option to specify your preferred start and end times. Whether you’re an early riser or prefer to be active in the afternoon, selecting appropriate s"
  },
  {
    "path": "resource-notes/package-sunswept/help_files/pillow_preference.md",
    "title": "pillow_preference",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Selecting Your Preferred Pillow Material Selecting the right pillow material can greatly improve your sleep quality. We offer a variety of pillow options to cater to different preferences and needs. Whether you prefer soft and plush or firm and supportive, choosing the right pillow material will ensure you rest well during your stay. When setting up your guest preferences, you will have the option to choose one from several pillow materials. The available options are typically: - Down Feather Pi"
  },
  {
    "path": "resource-notes/package-sunswept/help_files/spaConsent_preference.md",
    "title": "spaConsent_preference",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Spa and Data Consent In this section, you will be asked to indicate any injuries or health concerns that may affect your spa treatment. - Please check the boxes that apply to your current health status. - If your concern is not listed, you can use the \"Other\" option to provide additional details. - If your concern is not listed, you can use the \"Other\" option to provide additional details."
  },
  {
    "path": "resource-notes/package-sunswept/help_files/timeOfActivities_preference.md",
    "title": "timeOfActivities_preference",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Time of Day for Activities For Calendar curation, you have the option to specify your preferred start and end times. Choosing the right time for your activities is essential to ensure they fit into your daily routine, energy levels, and preferences. Whether you’re an early riser or prefer to be active in the afternoon or evening, selecting appropriate time slots will make your experience more enjoyable and aligned with your lifestyle."
  },
  {
    "path": "resource-notes/package-sunswept/overview.md",
    "title": "overview",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": ""
  },
  {
    "path": "resource-notes/package-sunswept/push_notifications.md",
    "title": "push_notifications",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Push notications Genomi Push Notification Messages Check In Notification Message Check In Sharer Notification Message Check Out Notification Message Check Out Sharer Notification Message Room Move Message Reservations List Message Housekeeping Status Changes Message (from Maestro) Off-Market Status Message Spa Booking Detail Message Facility Booking Detail Message Spa Booking List Message Facility Booking List Message Client Changes List Message"
  },
  {
    "path": "resource-notes/package-sunswept/readme.md",
    "title": "readme",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": ""
  },
  {
    "path": "resource-notes/package-switchx/howto_upload_geojson.md",
    "title": "SwitchX GeoJSON File Upload",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "SwitchX GeoJSON File Upload - The SwitchX Data Insights platform is centered around an interactive map. - The map reads from some geojson files on the machine to operate correctly. - These files occasionaly require updating. Primary support - Owen System Details - VM: - IP: switchbi.technocore.co.za - PEM: switchxcpt.pem - DB: - IP: switchxrds.ckxholieovvm.af-south-1.rds.amazonaws.com - Name: switchbi.axion Process 1. Use some application to open the filesystem on the virtual machine. I use XPip"
  },
  {
    "path": "resource-notes/package-switchx/prism.md",
    "title": "prism.technocore.co.za & prismuat.technocore.co.za",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "prism.technocore.co.za & prismuat.technocore.co.za These are notes relating to the Prism project carried out for SwitchX. - Built by, and Primary Maintenance: Owen , Tanya - For help/assistance: Owen , Tanya - Likely Client: Cody (SwitchX) Server Details There are two servers currently supporting this project. There is the UAT server (prismuat.technocore.co.za) and the Production server (prism.technocore.coz.a). - IP: prism.technocore.co.za prismuat.technocore.co.za - PEM: switchxcpt.pem Databas"
  },
  {
    "path": "resource-notes/package-switchx/prism_data_flow.md",
    "title": "prism_data_flow",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "mermaid flowchart TD %% ============================ %% CLIENT-READY STYLED DIAGRAM %% ============================ %% === Nodes with Icons === U 🧑‍💻 User F 💻 Axion Frontend A 🔐 Auth0 D (🗄️ Axion Database) S3 (☁️ Document Storage) SCH ⚙️ Axion<br Scheduler / Worker T 📦 TruID API CB 🔁 Axion Endpoint %% === Flows === U -- Login F F -- Authenticate via A F -- Save transaction details D F -- Upload documents S3 F -- Schedule upload to TruID SCH S3 -- Retrieve documents SCH SCH -- Send documents T T "
  },
  {
    "path": "resource-notes/package-switchx/switchbi.md",
    "title": "switchbi.technocore.co.za",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "switchbi.technocore.co.za These are notes relating to the SwitchX Data Insights Platform (DIP) and New Development Database (NDD) machine. This server runs processes controlling both of these projects. - Built by, and Primary Maintenance: Owen - For help/assistance: Owen , Ryan - Likely Client: Cody (SwitchX) Server Details - IP: switchbi.technocore.co.za - PEM: switchxcpt.pem Database Details - IP: switchxrds.ckxholieovvm.af-south-1.rds.amazonaws.com - DB: switchbi.axion - Package: SWITCHX Runn"
  },
  {
    "path": "resource-notes/package-technocore/knowledgebase.md",
    "title": "TechnoCore Automate — Knowledge Base",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "TechnoCore Automate — Knowledge Base Company Legal name : TechnoCore Automate Short name : TechnoCore Founded by : Denis Dell (CEO), Francois van Heyningen (CTO) Location : Norita, Cape Town, South Africa Phone : +27 82 512 8506 Business hours : Mon–Fri 09:00–17:00 CAT (GMT+2) Contact Purpose Email --------- ------- General info@technocore.co.za CTO cto@technocore.co.za Sysadmin sysadmin@technocore.co.za Jobs jobs@technocore.co.za Support support@technocore.co.za Ops ops@technocore.co.za Ops Cri"
  },
  {
    "path": "resource-notes/package-technocore/logo_prompts.md",
    "title": "Product Logo Prompts (Gemini)",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Product Logo Prompts (Gemini) Style: Purple ( 6f42c1) circular medallion, blue ( 0d6efd) accents, dark ( 212529) text, transparent background, Hyperion Cantos theme. Completed ReClaim Professional product logo for \"RECLAIM\" — a collections management platform. Purple ( 6f42c1) circular medallion with circular recovery arrows, gear elements, currency symbol. Accents in blue ( 0d6efd). Text \"RECLAIM\" in dark ( 212529) bold sans-serif, subtitle \"Collections debt recovery\" in purple. Transparent bac"
  },
  {
    "path": "resource-notes/package-technocore/product_ascii_art.md",
    "title": "Product ASCII Art",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Product ASCII Art For use in Rich TUI applications, welcome banners, and CLI output. Import via from rich.text import Text or from rich.panel import Panel . Axion (Core Platform) Hegemon (DAG Workflow Engine) Shrike (AI Engine) DataSphere (Data Layer) Sentinel (Security & Monitoring) Consul (Reports & Dashboards) FatLine (Alerts & Notifications) Anchor (API Gateway) FarCaster (Data Transport) Arbiter (Decisioning & Scoring) ReClaim (Collections) Neuron (Analytics) Rich Python Usage Font Awesome "
  },
  {
    "path": "resource-notes/package.technocore.md",
    "title": "TechnoCore — Technical Overview",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "TechnoCore — Technical Overview Purpose: Content for the new TechnoCore website. Addresses the technical due diligence areas raised by TLC Worldwide (David Burns, Global CTO) in Oct 2025. Last updated: 2026-03-29 --- Company Profile - Name: TechnoCore Automate (Pty) Ltd - CTO: Francois van Heyningen - CEO: Denis Dell - Location: Norita, Cape Town, South Africa - Website: www.technocore.co.za - Core Product: Axion — decision automation, workflow orchestration, and data integration platform Team N"
  },
  {
    "path": "resource-notes/package-tlc/tlc.md",
    "title": "TLC Worldwide — Package Notes",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "TLC Worldwide — Package Notes Last updated: 2026-03-29 --- Client Overview - Client: TLC Worldwide (tlcworldwide.com) - Industry: Loyalty / Rewards / Marketing - HQ: 55 Baker Street, London, W1U 8EW, United Kingdom - Offices: 16 worldwide (Dubai, Milan, Jakarta, Munich, Johannesburg, New York, Lisbon, Paris, London, Sao Paulo, Madrid, Singapore, Manila, Swansea, Sydney) - TC Contact: Ryan Buckinjohn (ryan@technocore.co.za) TLC Key Contacts Name Role Email ------ ------ ------- David Burns Global"
  },
  {
    "path": "resource-notes/page_by_page_collection_system.md",
    "title": "Page-by-Page Collection System with Dialer Queue Integration",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Page-by-Page Collection System with Dialer Queue Integration Version: 1.0.0 Last Updated: 2026-02-09 Author: Axion Platform Documentation Table of Contents 1. Overview ( overview) 2. System Architecture ( system-architecture) 3. Queue System ( queue-system) 4. Page Navigation System ( page-navigation-system) 5. Triggers and Flow Control ( triggers-and-flow-control) 6. Dialer Queue Interaction ( dialer-queue-interaction) 7. Contact State Management ( contact-state-management) 8. Workflow Integrat"
  },
  {
    "path": "resource-notes/pmml_resources.md",
    "title": "PMML Testing Resources",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "PMML Testing Resources Overview This document lists online resources for downloading PMML test files to validate our scorecard import/export functionality. Official PMML Resources 1. DMG PMML Examples Repository URL: https://github.com/dmg-org/pmml-examples Description: Official examples from the Data Mining Group (DMG) who maintain the PMML standard Content: - Scorecard models - Decision trees - Regression models - Neural networks - All examples compliant with PMML 4.4 Download Example: 2. Open"
  },
  {
    "path": "resource-notes/policies/backup_strategy.md",
    "title": "Backup and Recovery Policy for $package-client$",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Backup and Recovery Policy for $package-client$ 1. Purpose This document outlines the backup and recovery strategy for $package-client$. The purpose of this policy is to ensure the confidentiality, integrity, and availability of $package-client$'s data through a multi-tiered backup strategy. This strategy is designed for rapid recovery and resilience against data loss, corruption, ransomware, and operational failures. 2. Scope This policy applies to all production systems, data, and services man"
  },
  {
    "path": "resource-notes/policies/change_management_policy.md",
    "title": "change_management_policy",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "🔄 Change Management Policy Purpose To ensure that all changes to infrastructure, code, configurations, and policies are planned, reviewed, approved, and documented in a controlled manner—minimizing risk and maintaining system integrity. --- 1. Scope This policy applies to: - Infrastructure changes (e.g., EC2, RDS, networking) - Application code and service logic - Configuration files and environment variables - Security controls and IAM policies - Documentation and compliance artifacts --- 2. Ch"
  },
  {
    "path": "resource-notes/policies/coding_standards.md",
    "title": "Python Coding Standard",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Python Coding Standard This document outlines the coding standards for Python projects to ensure code consistency, readability, and maintainability across the team. Table of Contents 1. General Guidelines ( general-guidelines) 2. Naming Conventions ( naming-conventions) 3. Code Structure ( code-structure) 5. Imports ( imports) 6. Exception Handling ( exception-handling) 7. Version Control ( version-control) 8. Code Review ( code-review) 9. Testing ( testing) --- General Guidelines - PEP 8 Compli"
  },
  {
    "path": "resource-notes/policies/data_provenance_linage.md",
    "title": "Data Provenance and Lineage Policy for $package-client$",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Data Provenance and Lineage Policy for $package-client$ 1. Purpose This policy document outlines the principles and procedures for data provenance and lineage for all data processed on behalf of $package-client$. The purpose is to ensure transparency, auditability, and regulatory compliance, particularly with GDPR and POPIA. This policy establishes a framework for maintaining detailed records of data origin (provenance) and its transformation and flow through our systems (lineage). 2. Definition"
  },
  {
    "path": "resource-notes/policies/ddos_protection_strategy.md",
    "title": "DDoS Protection Strategy for $package-client$",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "DDoS Protection Strategy for $package-client$ 1. Purpose This document outlines the Distributed Denial-of-Service (DDoS) protection strategy for services provided to $package-client$. The purpose of this policy is to ensure the availability, performance, and resilience of $package-client$'s services by implementing a multi-layered approach to mitigate DDoS attacks. 2. Scope This policy applies to all network infrastructure, application services, and cloud environments that host or support $packa"
  },
  {
    "path": "resource-notes/policies/goverance_policy.md",
    "title": "Policy and Governance for $package-client$",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Policy and Governance for $package-client$ Introduction This document provides an overview of the core policies that govern the security, compliance, and operational practices for services provided to $package-client$. Each policy is designed to support enterprise-grade controls, provide transparency to $package-client$, and ensure regulatory alignment. --- 1. Acceptable Use Policy (AUP) Purpose To define how users may interact with the systems and services provided to $package-client$. This pol"
  },
  {
    "path": "resource-notes/policies/intrusion_detection_policy.md",
    "title": "Intrusion Detection and Response Policy",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Intrusion Detection and Response Policy 1. Purpose This policy establishes the framework for detecting and responding to malicious or unauthorized activity within the Axion project's systems and infrastructure. The primary goal is to ensure the confidentiality, integrity, and availability of the application, its data, and the underlying services by enabling timely detection of and reaction to security incidents. 2. Scope This policy applies to all systems, services, and infrastructure associated"
  },
  {
    "path": "resource-notes/policies/popia_gdpr.md",
    "title": "Data Protection and Privacy Policy for Personal Information Storage",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Data Protection and Privacy Policy for Personal Information Storage 1. Purpose This policy outlines how personal information is stored, accessed, and protected in compliance with the General Data Protection Regulation (GDPR) and Protection of Personal Information Act (POPIA) . It applies to all campaigns and data handling activities conducted on behalf of $client$. 2. Scope This policy applies to: - All personal data collected, processed, and stored during campaign execution. - All systems and A"
  },
  {
    "path": "resource-notes/policies/popia_gdpr_strategy.md",
    "title": "POPIA and GDPR Compliance Policy for $package-client$",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "POPIA and GDPR Compliance Policy for $package-client$ 1. Purpose This policy outlines our commitment to protecting the personal information of $package-client$'s customers in compliance with the General Data Protection Regulation (GDPR) and the Protection of Personal Information Act (POPIA) . This document details how personal information is stored, accessed, and protected for all campaigns and data handling activities conducted on behalf of $package-client$. 2. Scope This policy applies to: - A"
  },
  {
    "path": "resource-notes/policies/ransonware_strategy.md",
    "title": "Ransomware Protection Strategy for $package-client$",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Ransomware Protection Strategy for $package-client$ 1. Purpose This document outlines the strategy to protect the data and systems of $package-client$ from ransomware attacks. The purpose of this policy is to mitigate the risk of ransomware, ensure rapid recovery, and maintain business continuity for $package-client$ in the event of an attack. 2. Scope This policy applies to all cloud-hosted and on-premise environments that process or store data for $package-client$. 3. Live Backup & Immutabilit"
  },
  {
    "path": "resource-notes/policies/risk_management_policy.md",
    "title": "Risk Management Policy for $package-client$",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Risk Management Policy for $package-client$ 1. Purpose This document outlines the risk management policy for the services provided to $package-client$. The purpose of this policy is to proactively identify, assess, and mitigate risks that could impact the confidentiality, integrity, availability, or compliance posture of $package-client$'s services and data. 2. Scope This policy applies to all business units, technical systems, and third-party integrations involved in the delivery of services to"
  },
  {
    "path": "resource-notes/policies/security_assessment.md",
    "title": "Security Assessment for $package-client$",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Security Assessment for $package-client$ 1. Introduction This document provides a comprehensive security assessment of the Axion system as configured for $package-client$. It details the key control domains and the specific technologies and architectural patterns used to protect the confidentiality, integrity, and availability of $package-client$'s data and services. --- 2. Control Domain: Web Layer & Reverse Proxy Objective To protect $package-client$'s public-facing web applications and APIs f"
  },
  {
    "path": "resource-notes/policies/security_management_policy.md",
    "title": "Security Management Policy for $package-client$",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Security Management Policy for $package-client$ 1. Introduction This document outlines the core security management policies that govern the protection of data and services for $package-client$. It provides a comprehensive framework for security, from initial design to ongoing operations. Each policy is supported by specific architectural and procedural controls to ensure its effective implementation. --- 2. Access Control Policy Purpose To govern access to all systems, data, and environments re"
  },
  {
    "path": "resource-notes/product_naming.md",
    "title": "TechnoCore — Product Naming Convention",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "TechnoCore — Product Naming Convention Last updated: 2026-03-29 Theme: Hyperion Cantos (Dan Simmons) + real-world meaning Casing: CamelCase for multi-word names TechnoCore Platform Products Product Code Name Origin Real Meaning Function --------- ------ ------ -------- ------------- ---------- Platform AXION Axion Physics Hypothetical particle Core automation platform Workflow Engine HEGEMON Hegemon Hyperion Cantos Supreme leader / ruler DAG workflow orchestration, ObjWorkflow, process automatio"
  },
  {
    "path": "resource-notes/project_direction.md",
    "title": "Project Implementation Notes",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Project Implementation Notes This document outlines the key standards, conventions, and configurations for the Axion project. 1. Development Environment & Services Main Configuration: The primary project configuration is located in config.yaml in the project's root directory. Databases & Services: The project utilizes MariaDB, MongoDB, and RabbitMQ, which are managed via Docker. Startup scripts are located in resource.bin/ ( start mariadb.sh , start mongodb.sh , start rabbitmq.sh ). Credentials "
  },
  {
    "path": "resource-notes/releasenotes/20230728_paul.md",
    "title": "WebFormElement.py",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Changes made 2023-07-28 WebFormElement.py in factory.web/ ObjFieldCodeedit.py in factory.field/extend.editors/ axion.form.js in resource.web/javascript/"
  },
  {
    "path": "resource-notes/remotes_calls.md",
    "title": "remotes_calls",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "REST API This is the most common type of API, and many people often confuse the term API with the REST API. REST APIs allow you to perform CRUD (create, read, update, and delete) operations between a client and a server. It connects your backend with your frontend so they can communicate with each other. GraphQL It is a query language that allows you to read and mutate the data in APIs. With GraphQL, you can easily solve the problems of under-fetching and over-fetching. You get precisely the dat"
  },
  {
    "path": "resource-notes/roadmap.md",
    "title": "roadmap",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "pendulum Xarray Pydantic python-dotenv"
  },
  {
    "path": "resource-notes/scorecard_notes.md",
    "title": "scorecard_notes",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": ""
  },
  {
    "path": "resource-notes/serveai.md",
    "title": "ServeAI — AI REST API Service",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "ServeAI — AI REST API Service ServeAI is a REST API server that exposes the Axion AI capabilities to other services. Instead of each service importing the AI stack directly, they send HTTP requests to ServeAI which routes prompts through the appropriate provider. How It Works Startup Flow 1. The Typer CLI parses the --port option (default 9700 ). 2. An ObjData instance runs the preflight check (database connectivity, config loading). 3. ensure ollama() runs resource.bin/start ollama.sh to verify"
  },
  {
    "path": "resource-notes/sql_to_yaml_progress.md",
    "title": "WebHooks.py SQL to YAML Migration Progress",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "WebHooks.py SQL to YAML Migration Progress Session Summary Successfully migrated 16 critical SQL queries from hardcoded strings to YAML configuration files, improving security, maintainability, and consistency. ✅ Completed Migrations Phase 1: High Priority Queries (13 queries) 1. Validation Queries (2 queries) ✅ Methods: get validation list() , get output validation list() - get input validations - Input validation rules - get output validations - Output validation rules 2. Read() Method Queries"
  },
  {
    "path": "resource-notes/sys_user_cleanup_2026-02-07.md",
    "title": "sys_user Schema Cleanup - 2026-02-07",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "sys user Schema Cleanup - 2026-02-07 Summary Cleaned up redundant fields in sys user.yaml schema based on data analysis and removed duplicate columns. Changes Made 1. Removed Redundant Fields UserGroups → UserGroup (REMOVED Usergroups, KEPT UserGroup) Before : After : Rationale : - Having both Usergroups and UserGroup was redundant - UserGroup is the more intuitive name (singular noun for a collection makes sense in database context) - Increased field size from varchar(50) to varchar(255) to acc"
  },
  {
    "path": "resource-notes/sys_user_schema_updates.md",
    "title": "sys_user and sys_usersession Schema Updates",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "sys user and sys usersession Schema Updates Date : 2026-02-07 Updated By : Claude Code Summary Updated the YAML schema definitions for sys user and created new sys usersession table schema with comprehensive documentation, metadata, and usage examples. Files Updated 1. sys user.yaml Locations : - local.processing/schema/package.sync/tables/sys user.yaml - local.processing/schema/package.janee/tables/sys user.yaml Changes : - ✅ Added comprehensive description and metadata - ✅ Improved column defi"
  },
  {
    "path": "resource-notes/table_creation.md",
    "title": "Database Table Standards: Engine and Collation",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Database Table Standards: Engine and Collation This document outlines the standards for creating new database tables within the Axion project. Adhering to these standards is crucial for ensuring data integrity, performance, and compatibility across the application. 1. Storage Engine: InnoDB All new tables must use the InnoDB storage engine. Why InnoDB ? InnoDB is the default and most robust storage engine for modern MySQL and MariaDB applications. It provides several critical features that are e"
  },
  {
    "path": "resource-notes/team.md",
    "title": "TechnoCore Automate — Team",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "TechnoCore Automate — Team Current Team Name Email Role Credentials Focus Areas ------ ------- ------ ------------- ------------- Denis Dell denis@technocore.co.za CEO CAIB(SA), FIBSA Business strategy, client relationships, 30 years banking/credit risk/IT Francois van Heyningen vheyn@technocore.co.za CTO / Lead Architect MSc CompSci + MSc Maths (Stellenbosch) Platform architecture, infrastructure, monitoring, security, AI, 30 years dev Michael van Laeren michael@technocore.co.za Systems Archite"
  },
  {
    "path": "resource-notes/testing.md",
    "title": "Testing Guide for Axion",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Testing Guide for Axion This guide covers testing practices, optimizations, and best practices for the Axion project. Table of Contents 1. Running Tests ( running-tests) 2. Test Organization ( test-organization) 3. Test Performance Optimizations ( test-performance-optimizations) 4. Test Markers ( test-markers) 5. Feature Store Tests ( feature-store-tests) 6. ML/AI Test Optimizations ( mlai-test-optimizations) 7. Troubleshooting ( troubleshooting) Running Tests Basic Test Execution Fast Developme"
  },
  {
    "path": "resource-notes/todo.md",
    "title": "Todo",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Todo $user$ reference when calling workflow via button (/flow/ needs cookie reference?) - rpc refresh on triggered workflow end close modal form on submit - Stopped modal close on 'ESC' and clicking on the background refactoring to keep system structure, client structure and client data tables distinct: 29/01/2024 - Change these from data to sysdata . Once this is done, ObjDataConfig.py needs to be updated ito the CORETABLES data go data documentfile data messagequeue data person data notify dat"
  },
  {
    "path": "resource-notes/unit_testing.md",
    "title": "unit_testing",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "https://junit.org/junit5/ Selenium is an open-source software testing tool for browser automation. It creates test scripts written in Java, Python, etc to write automation tests for web applications. Selenium comes with Selenium WebDriver, Selenium Grid, etc to create efficient automation tests on various browsers.01 Jul 2022 Apache JMeter is an open-source tool for Load and performance testing. If a website needs to be tested for performance, then JMeter sends several requests, collects all the"
  },
  {
    "path": "resource-notes/versioning_plan.md",
    "title": "Versioning System — Universal Implementation Plan",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Versioning System — Universal Implementation Plan Date: 2026-03-26 Status: Planning Author: Francois van Heyningen --- Goal Add version history tracking to ALL decision components using the same pattern as def decision tree history and def decision matrix history . Must be backwards compatible — existing data without versions gets auto-backfilled on first load. Components to Version Component Main Table Nodes Table History Table (new) Status ----------- ----------- ------------- ----------------"
  },
  {
    "path": "resource-notes/versuro_labeling_notes.md",
    "title": "versuro_labeling_notes",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "﻿Nov 15, 2023 Versuro labeling Attendees: <bayand@versuro.com Francois van Heyningen Notes Action items"
  },
  {
    "path": "resource-notes/versuro_mvp_implementation_status.md",
    "title": "Versuro MVP — Implementation Status vs Spec",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Versuro MVP — Implementation Status vs Spec Source: Versuro MVP and (demo) description, November 2023 (Denis Dell) Review date: 2026-03-29 This document compares the Versuro MVP specification against what has been implemented in the Axion platform. --- Data Sources Spec Axion Implementation Status ------ --------------------- -------- Bureaux (Vericred) — credit bureau data ingestion, customer/account/tradeline variables ObjServiceBureau, ObjServiceBureauRouter, ObjServiceHCMyData — TransUnion, "
  },
  {
    "path": "resource-notes/versuro_mvp_spec.md",
    "title": "versuro_mvp_spec",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "﻿C:\\Users\\Skouperd\\AppData\\Local\\Microsoft\\Windows\\INetCache\\Content.Word\\TechnoCore - DDD Logo Template 001.png Versuro MVP and (demo) description November 2023 Denis D. Dell TechnoCore Automate (Pty) Ltd t/a TechnoCore Registration Number: 2016/464893/07 Directors: D. Dell, F. Heyningen, P. Shortridge Address: 13 Norita Crescent, Rosendal, Durbanville, Cape Town, South Africa, 7550 Phone: 082-512 8506 E-Mail: info@TechnoCore.co.za Contents Introduction 5 Structure 6 Data Sources 6 Bureaux (Ver"
  },
  {
    "path": "resource-notes/webhook_enhancements_suggestions.md",
    "title": "Webhook System Enhancement Suggestions",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Webhook System Enhancement Suggestions Date : 2026-02-08 Status : Suggestions for Future Implementation Context : Post-Infisical integration enhancements Overview Now that webhook credential management via Infisical is complete with comprehensive testing, here are suggestions for further improvements organized by priority and impact. --- Category A: Operational Excellence 🔧 A1. Webhook Credential Migration Tool ⭐⭐⭐ Priority : HIGH Effort : MEDIUM Impact : HIGH Problem : Manual migration of webho"
  },
  {
    "path": "resource-notes/webhook_infisical_integration.md",
    "title": "Webhook Infisical Integration Guide",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Webhook Infisical Integration Guide Date : 2026-02-07 Status : Implemented Components : - factory.core/ObjHook.py (Outbound webhooks) - factory.web/WebHooks.py (Inbound webhooks) Overview Webhook credentials (username, password, API keys) can now be stored in Infisical for centralized secret management while maintaining backward compatibility with database storage. Supports both : - ✅ Outbound webhooks (ObjHook in factory.core) - credentials for calling external APIs - ✅ Inbound webhooks (WebHoo"
  },
  {
    "path": "resource-notes/webhook_output_validation.md",
    "title": "Webhook Output Validation",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Webhook Output Validation Overview The webhook output validation system extends the existing input validation framework to validate responses being returned to webhook clients. This ensures data quality and integrity at the API boundary before responses are sent. Architecture Validation Layers Output validation consists of three layers executed in sequence: 1. Required Parameter Validation - Ensures all required RETURN parameters are present and non-empty 2. Type Validation - Verifies output val"
  },
  {
    "path": "resource-notes/webhook_output_validation_implementation.md",
    "title": "Webhook Output Validation Implementation Summary",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Webhook Output Validation Implementation Summary Overview Extended the webhook system to validate outputs being returned to clients, complementing the existing input validation framework. Implementation Date 2026-02-19 Branch feat/webhook validate Files Modified 1. factory.web/WebHooks.py New Methods Added: - get output validation list(package, archetype) - Retrieves output validation rules from database - patch output param(query) - Substitutes output parameters in SQL queries - validate output"
  },
  {
    "path": "resource-notes/webhook_output_validation_quickstart.md",
    "title": "Webhook Output Validation - Quick Start Guide",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Webhook Output Validation - Quick Start Guide 5-Minute Setup Step 1: Enable Output Validation Step 2: Mark Required Output Fields Step 3: Add Custom Validations (Optional) Common Validation Examples Verify Database Record Exists Check Numeric Range Validate Status Values Verify Referential Integrity Check Calculated Fields Business Rule Validation Testing Your Validations Test Valid Output Test Invalid Output Troubleshooting Validation Not Running Check: Fix: Set to 'Y' Validation Always Passes "
  },
  {
    "path": "resource-notes/webhook_phase1_implementation.md",
    "title": "Webhook Enhancements - Phase 1 Implementation",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Webhook Enhancements - Phase 1 Implementation Date : 2026-02-08 Status : ✅ Completed Version : 1.0.0 Overview Phase 1 of webhook enhancements focuses on quick wins with high ROI: performance improvements, operational tools, and better observability. Implemented Features 1. Webhook Credential Caching (C1) ✅ Effort : LOW Impact : HIGH ROI : ⭐⭐⭐ Redis-based caching for webhook credentials with 5-minute TTL. Benefits : - 🚀 95% reduction in Infisical API calls - ⚡ Latency improvement : 50-100ms → <1m"
  },
  {
    "path": "resource-notes/webhook_phase2_implementation.md",
    "title": "Webhook Enhancements - Phase 2 Implementation",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Webhook Enhancements - Phase 2 Implementation Date : 2026-02-08 Status : ✅ Completed Version : 1.0.0 Overview Phase 2 of webhook enhancements focuses on reliability, developer productivity, and operational tools: credential migration automation, retry logic for transient failures, and local testing environment. Implemented Features 1. Credential Migration Tool (A1) ✅ Effort : LOW Impact : MEDIUM ROI : ⭐⭐⭐ Automated tool to migrate webhook credentials from database to Infisical with safety featur"
  },
  {
    "path": "resource-notes/webhook_phase2_summary.md",
    "title": "Webhook Phase 2 Implementation - Summary",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Webhook Phase 2 Implementation - Summary Date : 2026-02-08 Status : ✅ Complete Test Results : 15/15 tests passing What Was Implemented Phase 2 focused on reliability , automation , and developer productivity improvements for the webhook system. 1. Migration Tool (A1) ✅ File : resource.bin/migrate webhooks to infisical.py (800+ lines) What it does : - Automates migration of webhook credentials from database to Infisical - Creates JSON backups before migration (safety first!) - Supports dry-run mo"
  },
  {
    "path": "resource-notes/webhook_test_expansion_summary.md",
    "title": "WebHook Test Expansion - Complete Summary",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "WebHook Test Expansion - Complete Summary Overview Successfully expanded WebHook test suite from 50 tests to 200+ tests , providing comprehensive coverage for all new features and improvements. What Was Created Test Files (3 New + 1 Updated) File Tests Focus Lines ------ ------- ------- ------- test WebHooks.py 50 Credentials & Infisical (existing) 627 test WebHooks validation.py 60+ Validation & improvements 1,058 test WebHooks performance.py 10+ N+1 fix & benchmarks 637 test WebHooks security."
  },
  {
    "path": "resource-notes/webhook_validation_analysis.md",
    "title": "Inbound Webhook Validation Analysis",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Inbound Webhook Validation Analysis Date : 2026-02-08 File : factory.web/WebHooks.py Version : Current (feat/virtmanager branch) Overview The Axion webhook system implements a comprehensive multi-layered validation approach for inbound webhooks. Validation occurs during the commit() method and includes payload validation, required parameter checks, authentication, and custom SQL-based validations. Validation Flow Entry Point: commit() Method (Line 1210) The validation flow occurs in the followin"
  },
  {
    "path": "resource-notes/webhooks_constants_typehints.md",
    "title": "WebHooks.py Constants Extraction and Type Hints",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "WebHooks.py Constants Extraction and Type Hints Summary Successfully extracted magic numbers and strings to ObjConstants.py and added comprehensive type hints to WebHooks.py . Changes Made 1. Created WebHookConstants Class in ObjConstants.py Added a new WebHookConstants class containing 50+ constants for webhook operations: Queue and Pool Configuration: - POOL SIZE = 100 - QUEUE SIZE = 10000 - MAGIC TOKEN = \"ba1f1d83-7a88-4ca6-b0d7-84876e5b5dca\" HTTP Status Codes: - HTTP OK = 200 - HTTP BAD REQU"
  },
  {
    "path": "resource-notes/webhooks_nplus1_fix.md",
    "title": "WebHooks N+1 Query Fix - Performance Improvement",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "WebHooks N+1 Query Fix - Performance Improvement Summary Fixed critical N+1 query performance issue in WebHooksSet.ReadSet() method that was executing 10,001 queries instead of 1 , causing 100x slower batch processing. Performance Impact Before Fix Queries executed: 10,001 Time for 10,000 records: 100 seconds (10ms per query) Database load: Very high (10,000+ connections) After Fix Queries executed: 1 Time for 10,000 records: 1 second Database load: Minimal (single connection) Performance Compar"
  },
  {
    "path": "resource-notes/webhooks_performance_improvements.md",
    "title": "WebHooks Performance Improvements",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "WebHooks Performance Improvements Performance optimizations implemented to reduce database queries and improve webhook execution speed. Summary Query Reduction : Eliminated 50-200+ redundant queries per webhook execution through intelligent caching. Implementation Date : 2026-02-19 Branch : feat/webhook validate Files Modified : 2 (WebHooks.py, ObjData.py) Test Coverage : 83/90 tests passing (92%) Optimizations Implemented 1. Required Output Parameters Caching Location : WebHooks.Read() line 398"
  },
  {
    "path": "resource-notes/webhooks_sql_refactoring.md",
    "title": "WebHooks.py SQL Refactoring Guide",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "WebHooks.py SQL Refactoring Guide Overview WebHooks.py contains 50+ hardcoded SQL queries that should be moved to factory.core/ObjHook.yaml following the project pattern. Why This Matters 1. Maintainability - SQL changes require code edits and redeployment 2. Security - Easier to audit SQL injection vulnerabilities when centralized 3. Consistency - Other modules (ObjData, ObjWorkflow) use YAML for SQL 4. Testing - Can modify queries without touching Python code 5. Documentation - YAML files serv"
  },
  {
    "path": "resource-notes/webhooks_tests.md",
    "title": "WebHooks Test Suite",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "WebHooks Test Suite Comprehensive test coverage for WebHooks module improvements. Test Files 1. test WebHooks.py (Existing) Focus: Credential management and Infisical integration Tests: 50+ tests Coverage: - Webhook initialization - Infisical credential loading - Database fallback - Token validation - API key authentication - Basic auth - Edge cases and error handling Run: 2. test WebHooks validation.py (New) Focus: Output validation system and improvements Tests: 60+ tests across 10 test classe"
  },
  {
    "path": "resource-notes/windows_deployment_checklist.md",
    "title": "Windows Deployment Checklist",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Windows Deployment Checklist Quick reference for deploying trader services on Windows server. Pre-Deployment Verification 1. Firebird Database Access 2. Install fbexport 3. Test fbexport Connection 4. Python Environment 5. Configuration 6. Create Output Directories Deployment Steps 1. Transfer Code to Windows - Copy entire axion directory to Windows server - Preserve directory structure - Ensure .git directory is included if using version control 2. Test Individual Services Test FTP Download Exp"
  },
  {
    "path": "resource-notes/windows_setup.md",
    "title": "Windows Setup Guide for Trader Services",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Windows Setup Guide for Trader Services Prerequisites 1. Firebird Installation The Windows server should already have Firebird 1.5 installed with TRADER.FDB at: 2. fbexport Tool Download and install fbexport for Windows: - Download from: https://sourceforge.net/projects/fbexport/files/ - Extract fbexport.exe to a directory in PATH or to C:\\Program Files\\fbexport\\ - Ensure Firebird client library ( fbclient.dll ) is accessible 3. Python Environment 4. Configuration Update config.yaml trader secti"
  },
  {
    "path": "resource-notes/workflow_simulation_guide.md",
    "title": "Workflow Simulation Guide",
    "factory": "resource.notes",
    "type": "markdown",
    "tags": [],
    "body": "Workflow Simulation Guide This guide demonstrates how to use the workflow simulation and management features introduced in the wortel branch. Workflow Simulation Report The ObjReportWorkflowSim report provides an interactive workflow testing interface without triggering actual production runs. Basic Usage Add a workflow simulation report to your page: Simulation Modes The report supports three simulation modes: 1. Scheduler Mode - Simulates a scheduled workflow run 2. Form Mode - Simulates a web"
  },
  {
    "path": "factory-core/ObjAiRag-schema.md",
    "title": "ObjAiRag Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_rag_index"
    ],
    "queries": [],
    "body": "data_rag_index"
  },
  {
    "path": "factory-core/ObjAlert-schema.md",
    "title": "ObjAlert Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_alert",
      "track_alert",
      "def_alert_metric",
      "def_alert_maintenance",
      "def_alert_dependency"
    ],
    "queries": [
      "get_summary",
      "insert_track_alert",
      "update_def_alert_last_trigger",
      "get_active_alerts",
      "get_last_trigger",
      "get_alerts_to_check",
      "get_alert_definition",
      "insert_workflow_definition",
      "update_def_alert_last_check",
      "delete_old_track_alert",
      "get_remote_alerts",
      "get_remote_alert_definitions",
      "update_def_alert_guid",
      "insert_def_alert",
      "check_maintenance_window",
      "check_alert_suppression",
      "count_recent_triggers",
      "get_time_since_last_trigger",
      "check_recent_storm_warning",
      "update_track_alert_acknowledge",
      "update_track_alert_resolve",
      "get_alert_info_by_guid",
      "get_unacknowledged_alerts_for_escalation",
      "update_track_alert_escalation_level",
      "get_recovered_alerts",
      "check_recent_predictive_alert",
      "get_recent_incidents",
      "get_alert_definition_with_runbook",
      "get_package_metrics_24h",
      "count_old_metrics",
      "delete_old_metrics",
      "get_baseline_statistics",
      "get_recent_statistics",
      "get_active_alert_instances",
      "count_unacknowledged_alerts",
      "count_escalated_alerts",
      "get_active_maintenance_windows",
      "get_top_firing_alerts",
      "calculate_mttr",
      "calculate_mttd",
      "calculate_sla_compliance",
      "get_alert_trends",
      "get_alert_trigger_history",
      "get_alert_sequences",
      "insert_alert_metric",
      "update_alert_runbook_url"
    ],
    "body": "def_alert, track_alert, def_alert_metric, def_alert_maintenance, def_alert_dependency, get_summary, insert_track_alert, update_def_alert_last_trigger, get_active_alerts, get_last_trigger, get_alerts_to_check, get_alert_definition, insert_workflow_definition, update_def_alert_last_check, delete_old_track_alert, get_remote_alerts, get_remote_alert_definitions, update_def_alert_guid, insert_def_alert, check_maintenance_window, check_alert_suppression, count_recent_triggers, get_time_since_last_trigger, check_recent_storm_warning, update_track_alert_acknowledge, update_track_alert_resolve, get_alert_info_by_guid, get_unacknowledged_alerts_for_escalation, update_track_alert_escalation_level, get_recovered_alerts, check_recent_predictive_alert, get_recent_incidents, get_alert_definition_with_runbook, get_package_metrics_24h, count_old_metrics, delete_old_metrics, get_baseline_statistics, get_recent_statistics, get_active_alert_instances, count_unacknowledged_alerts, count_escalated_alerts, get_active_maintenance_windows, get_top_firing_alerts, calculate_mttr, calculate_mttd, calculate_sla_compliance, get_alert_trends, get_alert_trigger_history, get_alert_sequences, insert_alert_metric, update_alert_runbook_url"
  },
  {
    "path": "factory-core/ObjAlertIncident-schema.md",
    "title": "ObjAlertIncident Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_alert_incident",
      "def_alert_incident_alerts",
      "def_alert_incident_timeline",
      "def_alert_incident_notes",
      "def_sla",
      "def_alert_incident_communications"
    ],
    "queries": [
      "create_incident",
      "update_incident_status",
      "close_incident",
      "link_alert_to_incident",
      "get_incident_alerts",
      "add_incident_timeline",
      "get_incident_timeline",
      "add_incident_notes",
      "get_incident_notes",
      "get_incident",
      "list_incidents",
      "get_incident_metrics",
      "get_incident_trends",
      "merge_incident_alerts",
      "merge_incident_timeline",
      "merge_incident_notes",
      "delete_merged_incident",
      "get_sla_for_package",
      "upsert_sla",
      "get_incident_full_report",
      "log_communication",
      "update_communication_status",
      "get_incident_communications",
      "get_communication_by_external_id",
      "count_incident_communications",
      "get_communication_by_short_ref"
    ],
    "body": "def_alert_incident, def_alert_incident_alerts, def_alert_incident_timeline, def_alert_incident_notes, def_sla, def_alert_incident_communications, create_incident, update_incident_status, close_incident, link_alert_to_incident, get_incident_alerts, add_incident_timeline, get_incident_timeline, add_incident_notes, get_incident_notes, get_incident, list_incidents, get_incident_metrics, get_incident_trends, merge_incident_alerts, merge_incident_timeline, merge_incident_notes, delete_merged_incident, get_sla_for_package, upsert_sla, get_incident_full_report, log_communication, update_communication_status, get_incident_communications, get_communication_by_external_id, count_incident_communications, get_communication_by_short_ref"
  },
  {
    "path": "factory-core/ObjApi-schema.md",
    "title": "ObjApi Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [
      "select_tables_by_base",
      "drop_table_if_exists"
    ],
    "body": "select_tables_by_base, drop_table_if_exists"
  },
  {
    "path": "factory-core/ObjBOP-schema.md",
    "title": "ObjBOP Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_bop",
      "def_bop_revision",
      "def_bop_datatables",
      "def_bop_raci"
    ],
    "queries": [
      "load_bop",
      "list_bops",
      "load_revisions",
      "load_datatables",
      "load_raci",
      "get_workflow_nodes",
      "get_workflow_header",
      "get_webhook_details",
      "get_report_details",
      "get_table_primary_keys",
      "get_table_columns",
      "get_expanded_table_data",
      "get_service_details",
      "discover_bloom_tables",
      "discover_collections_tables"
    ],
    "body": "def_bop, def_bop_revision, def_bop_datatables, def_bop_raci, load_bop, list_bops, load_revisions, load_datatables, load_raci, get_workflow_nodes, get_workflow_header, get_webhook_details, get_report_details, get_table_primary_keys, get_table_columns, get_expanded_table_data, get_service_details, discover_bloom_tables, discover_collections_tables"
  },
  {
    "path": "factory-core/ObjBackup-schema.md",
    "title": "ObjBackup Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "stage_backup",
      "data_backup_log",
      "def_backup"
    ],
    "queries": [
      "read_backup_definition",
      "get_backup_lag",
      "update_backup_check_status",
      "check_if_archived",
      "show_tables",
      "get_table_size",
      "update_stage_backup_status",
      "get_database_size",
      "drop_database",
      "check_stage_backup_exists",
      "insert_into_stage_backup",
      "get_backup_jobs",
      "get_hostname",
      "show_databases",
      "insert_new_backup_definition",
      "get_pending_backups",
      "get_database_size_mb",
      "check_backup_done_today",
      "insert_backup_log",
      "get_last_backup",
      "get_backup_history",
      "check_def_backup_exists",
      "upsert_def_backup",
      "get_all_def_backups",
      "get_notify_emails",
      "create_default_notify"
    ],
    "body": "stage_backup, data_backup_log, def_backup, read_backup_definition, get_backup_lag, update_backup_check_status, check_if_archived, show_tables, get_table_size, update_stage_backup_status, get_database_size, drop_database, check_stage_backup_exists, insert_into_stage_backup, get_backup_jobs, get_hostname, show_databases, insert_new_backup_definition, get_pending_backups, get_database_size_mb, check_backup_done_today, insert_backup_log, get_last_backup, get_backup_history, check_def_backup_exists, upsert_def_backup, get_all_def_backups, get_notify_emails, create_default_notify"
  },
  {
    "path": "factory-core/ObjCalculation-schema.md",
    "title": "ObjCalculation Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_calculations",
      "def_calculation",
      "track_calculations",
      "def_calculation_history"
    ],
    "queries": [
      "get_calculation",
      "compile_calculations",
      "load_calculation_set",
      "get_calculation_group",
      "insert_calculation_group",
      "update_threewords",
      "visualise_calculations",
      "select_compute_options",
      "transfer_insert",
      "transfer_select",
      "transfer_update",
      "count_calc_fail_notify",
      "insert_calc_fail_notify",
      "track_calculation"
    ],
    "body": "def_calculations, def_calculation, track_calculations, def_calculation_history, get_calculation, compile_calculations, load_calculation_set, get_calculation_group, insert_calculation_group, update_threewords, visualise_calculations, select_compute_options, transfer_insert, transfer_select, transfer_update, count_calc_fail_notify, insert_calc_fail_notify, track_calculation"
  },
  {
    "path": "factory-core/ObjChannel-schema.md",
    "title": "ObjChannel Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_Channel",
      "def_email",
      "stage_channel"
    ],
    "queries": [
      "read_channel",
      "create_channel",
      "get_company_user_surname_email_by_uuid",
      "get_password_by_user",
      "get_channel_details",
      "get_firstname_by_uuid",
      "get_docname_ziponemail_by_docname",
      "get_context_context2_from_data_documentfile",
      "insert_ignore_def_report",
      "update_stage_channel",
      "select_user_from_def_channelmail",
      "get_mail_connection_by_channel_package",
      "select_user_from_def_channelmail_by_channel_package",
      "get_mail_connection_by_channel_package_from_def_channel"
    ],
    "body": "def_Channel, def_email, stage_channel, read_channel, create_channel, get_company_user_surname_email_by_uuid, get_password_by_user, get_channel_details, get_firstname_by_uuid, get_docname_ziponemail_by_docname, get_context_context2_from_data_documentfile, insert_ignore_def_report, update_stage_channel, select_user_from_def_channelmail, get_mail_connection_by_channel_package, select_user_from_def_channelmail_by_channel_package, get_mail_connection_by_channel_package_from_def_channel"
  },
  {
    "path": "factory-core/ObjChannelmail-schema.md",
    "title": "ObjChannelmail Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_channelmail"
    ],
    "queries": [
      "read_by_email_channel",
      "read_by_uuid",
      "insert_channelmail",
      "update_track_clickthrough",
      "update_stage_channel_send",
      "select_mailset_emails",
      "insert_users_to_channel",
      "select_attachment_report",
      "select_proofreader",
      "select_stage_channel_pending",
      "select_stage_channel_pending_by_channel",
      "update_sender_stage_done",
      "update_sender_stage_done_no_smtp",
      "read_stage_channel_by_guid",
      "update_stage_channel_bulk_done",
      "reset_queued_status",
      "select_distinct_channels",
      "update_bloom_track_clickthrough",
      "create_bloom_table",
      "insert_stage_channel",
      "select_mailset_emails_with_age"
    ],
    "body": "def_channelmail, read_by_email_channel, read_by_uuid, insert_channelmail, update_track_clickthrough, update_stage_channel_send, select_mailset_emails, insert_users_to_channel, select_attachment_report, select_proofreader, select_stage_channel_pending, select_stage_channel_pending_by_channel, update_sender_stage_done, update_sender_stage_done_no_smtp, read_stage_channel_by_guid, update_stage_channel_bulk_done, reset_queued_status, select_distinct_channels, update_bloom_track_clickthrough, create_bloom_table, insert_stage_channel, select_mailset_emails_with_age"
  },
  {
    "path": "factory-core/ObjConstants-schema.md",
    "title": "ObjConstants Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [],
    "body": ""
  },
  {
    "path": "factory-core/ObjConversation-schema.md",
    "title": "ObjConversation Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_conversation",
      "def_conversation_detail",
      "def_conversation_page",
      "def_constant",
      "list_conversation_types",
      "meta_saleswatch_user",
      "data_web_conversation"
    ],
    "queries": [
      "get_constant_by_code",
      "get_conversation_summary",
      "get_conversation_channels",
      "get_conversation_page_summary",
      "check_conversation_exists",
      "check_console_channel_exists",
      "create_console_channel",
      "get_conversation_def",
      "get_conversation_page_def",
      "get_page_no_by_name",
      "create_conversation_data_table",
      "insert_conversation_data",
      "update_conversation_data",
      "get_user_by_group",
      "get_user_details",
      "insert_staged_notification",
      "get_notify_codes",
      "create_conversation_contact_table",
      "get_contact_conversation_state",
      "insert_contact_conversation_state",
      "update_contact_interaction",
      "reset_contact_conversation_state",
      "get_conversation_flow",
      "get_all_text_for_lang_scan"
    ],
    "body": "def_conversation, def_conversation_detail, def_conversation_page, def_constant, list_conversation_types, meta_saleswatch_user, data_web_conversation, get_constant_by_code, get_conversation_summary, get_conversation_channels, get_conversation_page_summary, check_conversation_exists, check_console_channel_exists, create_console_channel, get_conversation_def, get_conversation_page_def, get_page_no_by_name, create_conversation_data_table, insert_conversation_data, update_conversation_data, get_user_by_group, get_user_details, insert_staged_notification, get_notify_codes, create_conversation_contact_table, get_contact_conversation_state, insert_contact_conversation_state, update_contact_interaction, reset_contact_conversation_state, get_conversation_flow, get_all_text_for_lang_scan"
  },
  {
    "path": "factory-core/ObjData-schema.md",
    "title": "ObjData Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_package",
      "def_colour_palette",
      "def_company",
      "def_constants",
      "def_remoteconnections",
      "def_setting",
      "def_tables",
      "def_tableviews",
      "def_factoryversion",
      "def_template",
      "def_parameter",
      "def_substrate",
      "def_queues",
      "def_queues_queries"
    ],
    "queries": [
      "add_column_sql_template",
      "get_form_count_by_name_and_package",
      "get_form_field_count_by_name_package_field",
      "get_constant_value_by_name_and_package",
      "get_ssl_cert_and_key_by_package",
      "update_supervisor_processes_by_service_and_package",
      "get_supervisor_processes_by_service_and_package",
      "insert_supervisor_default_processes",
      "get_remote_username_password",
      "rename_legacy_remoteconnections_table",
      "get_remote_url_username_password",
      "update_remote_password",
      "get_table_column_types",
      "get_current_database_name",
      "get_processlist",
      "insert_mem_connectioninfo_open",
      "update_mem_connectioninfo_runtime",
      "get_mem_connection_ids",
      "delete_mem_connection_by_id",
      "hydrate_mem_connection_program_from_internet",
      "get_package_emoji",
      "get_package_signature",
      "get_package_logo",
      "get_package_palette_name"
    ],
    "body": "def_package, def_colour_palette, def_company, def_constants, def_remoteconnections, def_setting, def_tables, def_tableviews, def_factoryversion, def_template, def_parameter, def_substrate, def_queues, def_queues_queries, add_column_sql_template, get_form_count_by_name_and_package, get_form_field_count_by_name_package_field, get_constant_value_by_name_and_package, get_ssl_cert_and_key_by_package, update_supervisor_processes_by_service_and_package, get_supervisor_processes_by_service_and_package, insert_supervisor_default_processes, get_remote_username_password, rename_legacy_remoteconnections_table, get_remote_url_username_password, update_remote_password, get_table_column_types, get_current_database_name, get_processlist, insert_mem_connectioninfo_open, update_mem_connectioninfo_runtime, get_mem_connection_ids, delete_mem_connection_by_id, hydrate_mem_connection_program_from_internet, get_package_emoji, get_package_signature, get_package_logo, get_package_palette_name"
  },
  {
    "path": "factory-core/ObjDataExport-schema.md",
    "title": "ObjDataExport Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_Dataexport",
      "def_Report",
      "stage_dataexport"
    ],
    "queries": [
      "get_report_definition",
      "get_dataexport_definition",
      "get_staged_dataexport",
      "update_stage_dataexport",
      "get_staged_dataexport_for_processing"
    ],
    "body": "def_Dataexport, def_Report, stage_dataexport, get_report_definition, get_dataexport_definition, get_staged_dataexport, update_stage_dataexport, get_staged_dataexport_for_processing"
  },
  {
    "path": "factory-core/ObjDataImport-schema.md",
    "title": "ObjDataImport Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_dataimport",
      "stage_dataimport",
      "def_dataimport_metric"
    ],
    "queries": [
      "get_trigger_mask",
      "load_import_config",
      "get_watch_config",
      "list_imports",
      "check_workflow_exists",
      "update_stage_status",
      "update_expected_count",
      "update_last_count",
      "show_import_tables",
      "count_imported_rows",
      "create_table_from_build",
      "insert_from_build",
      "drop_table",
      "add_key",
      "create_build_table",
      "bulk_insert"
    ],
    "body": "def_dataimport, stage_dataimport, def_dataimport_metric, get_trigger_mask, load_import_config, get_watch_config, list_imports, check_workflow_exists, update_stage_status, update_expected_count, update_last_count, show_import_tables, count_imported_rows, create_table_from_build, insert_from_build, drop_table, add_key, create_build_table, bulk_insert"
  },
  {
    "path": "factory-core/ObjDataModelEdit-schema.md",
    "title": "ObjDataModelEdit Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_datamodel",
      "def_datamodel_tables"
    ],
    "queries": [],
    "body": "def_datamodel, def_datamodel_tables"
  },
  {
    "path": "factory-core/ObjDataTransfer-schema.md",
    "title": "ObjDataTransfer Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_transfer",
      "def_Transferbulk",
      "def_RemoteConnections",
      "stage_transfer",
      "data_track_bulktransfer",
      "data_transfer_progress",
      "data_transfer_validation"
    ],
    "queries": [
      "track_transfer_start",
      "track_transfer_end",
      "track_transfer_info",
      "get_current_schema",
      "get_bulk_transfers_by_schema",
      "get_bulk_transfers_by_schema_legacy",
      "get_transfer_by_code",
      "get_transfer_by_code_legacy",
      "update_transfer_stats",
      "update_transfer_stats_by_code",
      "select_guid_list_mysql",
      "select_record_by_guid_mysql",
      "select_guid_list_mssql",
      "select_record_by_guid_mssql",
      "insert_record_mysql",
      "insert_record_mssql",
      "count_stale_records_mysql",
      "delete_stale_records_mysql",
      "count_stale_records_mssql",
      "delete_stale_records_mssql",
      "get_incremental_config",
      "update_incremental_value",
      "select_incremental_records_mysql",
      "get_max_incremental_value_mysql",
      "insert_progress",
      "update_progress",
      "get_progress",
      "insert_validation",
      "count_source_records",
      "count_target_records",
      "checksum_source_records",
      "checksum_target_records"
    ],
    "body": "def_transfer, def_Transferbulk, def_RemoteConnections, stage_transfer, data_track_bulktransfer, data_transfer_progress, data_transfer_validation, track_transfer_start, track_transfer_end, track_transfer_info, get_current_schema, get_bulk_transfers_by_schema, get_bulk_transfers_by_schema_legacy, get_transfer_by_code, get_transfer_by_code_legacy, update_transfer_stats, update_transfer_stats_by_code, select_guid_list_mysql, select_record_by_guid_mysql, select_guid_list_mssql, select_record_by_guid_mssql, insert_record_mysql, insert_record_mssql, count_stale_records_mysql, delete_stale_records_mysql, count_stale_records_mssql, delete_stale_records_mssql, get_incremental_config, update_incremental_value, select_incremental_records_mysql, get_max_incremental_value_mysql, insert_progress, update_progress, get_progress, insert_validation, count_source_records, count_target_records, checksum_source_records, checksum_target_records"
  },
  {
    "path": "factory-core/ObjDecisionMatrix-schema.md",
    "title": "ObjDecisionMatrix Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_decision_matrix",
      "def_decision_matrix_axes",
      "def_decision_matrix_cells",
      "def_decision_matrix_history"
    ],
    "queries": [
      "create_sim_data_table",
      "create_sim_output_table",
      "delete_decision_matrix",
      "delete_matrix_axes",
      "delete_matrix_cells",
      "get_failed_validations",
      "get_latest_version",
      "get_outcome_distribution",
      "get_validation_summary",
      "get_version_history",
      "insert_decision_matrix",
      "insert_matrix_axis",
      "insert_matrix_cell",
      "insert_sim_result",
      "insert_version_history",
      "list_versions",
      "read_decision_matrix",
      "read_decision_matrix_version",
      "read_matrix_axes",
      "read_matrix_axes_version",
      "read_matrix_cells",
      "read_matrix_cells_version",
      "read_simulation_input",
      "read_simulation_input_limited",
      "read_simulation_results",
      "update_matrix_cell"
    ],
    "body": "def_decision_matrix, def_decision_matrix_axes, def_decision_matrix_cells, def_decision_matrix_history, create_sim_data_table, create_sim_output_table, delete_decision_matrix, delete_matrix_axes, delete_matrix_cells, get_failed_validations, get_latest_version, get_outcome_distribution, get_validation_summary, get_version_history, insert_decision_matrix, insert_matrix_axis, insert_matrix_cell, insert_sim_result, insert_version_history, list_versions, read_decision_matrix, read_decision_matrix_version, read_matrix_axes, read_matrix_axes_version, read_matrix_cells, read_matrix_cells_version, read_simulation_input, read_simulation_input_limited, read_simulation_results, update_matrix_cell"
  },
  {
    "path": "factory-core/ObjDecisionRuleset-schema.md",
    "title": "ObjDecisionRuleset Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_decision_ruleset",
      "def_decision_ruleset_rules",
      "def_decision_ruleset_history"
    ],
    "queries": [
      "read_ruleset",
      "read_ruleset_version",
      "read_rules",
      "read_rules_version",
      "get_latest_version",
      "list_rulesets",
      "insert_ruleset",
      "read_simulation_input",
      "read_simulation_input_limited"
    ],
    "body": "def_decision_ruleset, def_decision_ruleset_rules, def_decision_ruleset_history, read_ruleset, read_ruleset_version, read_rules, read_rules_version, get_latest_version, list_rulesets, insert_ruleset, read_simulation_input, read_simulation_input_limited"
  },
  {
    "path": "factory-core/ObjDecisionSegmentation-schema.md",
    "title": "ObjDecisionSegmentation Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_decision_segment",
      "def_decision_segment_columns",
      "def_decision_segment_history"
    ],
    "queries": [
      "get_segment",
      "get_segment_version",
      "get_columns",
      "list_segments",
      "get_max_version",
      "insert_segment",
      "insert_column",
      "insert_history",
      "get_history",
      "select_for_evaluation",
      "replace_into_meta",
      "create_meta_table",
      "migrate_from_legacy"
    ],
    "body": "def_decision_segment, def_decision_segment_columns, def_decision_segment_history, get_segment, get_segment_version, get_columns, list_segments, get_max_version, insert_segment, insert_column, insert_history, get_history, select_for_evaluation, replace_into_meta, create_meta_table, migrate_from_legacy"
  },
  {
    "path": "factory-core/ObjDecisionSwitch-schema.md",
    "title": "ObjDecisionSwitch Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_decision_bulk_cache",
      "data_decision_sim_analysis"
    ],
    "queries": [
      "read_decision_tree",
      "read_decision_tree_version",
      "read_decision_tree_nodes",
      "read_decision_tree_nodes_version",
      "get_latest_version",
      "list_versions",
      "insert_version_history",
      "get_version_history",
      "get_decision_fields",
      "create_sim_data_table",
      "create_sim_output_table",
      "insert_sim_result_with_verification",
      "insert_sim_result_no_verification",
      "read_simulation_input",
      "read_simulation_input_limited",
      "read_simulation_input_filtered",
      "read_simulation_input_filtered_limited",
      "read_simulation_results",
      "update_decision_tree_sql",
      "update_decision_tree_diagram",
      "get_outcome_distribution",
      "delete_decision_tree_nodes",
      "delete_decision_tree",
      "insert_decision_tree",
      "get_validation_summary",
      "get_failed_validations",
      "get_validation_by_outcome",
      "get_simulation_stats",
      "delete_simulation_results",
      "delete_all_simulation_results",
      "read_simulation_input_random_limited",
      "read_simulation_input_filtered_random_limited",
      "get_sim_results_by_id",
      "reconcile_select_bulk_outcomes",
      "reconcile_insert_block"
    ],
    "body": "def_decision_bulk_cache, data_decision_sim_analysis, read_decision_tree, read_decision_tree_version, read_decision_tree_nodes, read_decision_tree_nodes_version, get_latest_version, list_versions, insert_version_history, get_version_history, get_decision_fields, create_sim_data_table, create_sim_output_table, insert_sim_result_with_verification, insert_sim_result_no_verification, read_simulation_input, read_simulation_input_limited, read_simulation_input_filtered, read_simulation_input_filtered_limited, read_simulation_results, update_decision_tree_sql, update_decision_tree_diagram, get_outcome_distribution, delete_decision_tree_nodes, delete_decision_tree, insert_decision_tree, get_validation_summary, get_failed_validations, get_validation_by_outcome, get_simulation_stats, delete_simulation_results, delete_all_simulation_results, read_simulation_input_random_limited, read_simulation_input_filtered_random_limited, get_sim_results_by_id, reconcile_select_bulk_outcomes, reconcile_insert_block"
  },
  {
    "path": "factory-core/ObjDocument-schema.md",
    "title": "ObjDocument Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_document",
      "def_document_parameters"
    ],
    "queries": [
      "read_def_document",
      "read_reference",
      "read_documentfile_by_package",
      "read_on_guid",
      "update_icon",
      "update_preview",
      "create_def_document",
      "save_enhancement",
      "queue_for_enhancement"
    ],
    "body": "def_document, def_document_parameters, read_def_document, read_reference, read_documentfile_by_package, read_on_guid, update_icon, update_preview, create_def_document, save_enhancement, queue_for_enhancement"
  },
  {
    "path": "factory-core/ObjDocumentFile-schema.md",
    "title": "ObjDocumentFile Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_documentfile"
    ],
    "queries": [
      "read_def_document",
      "read_documentfile_by_context",
      "insert_documentfile_stub",
      "find_docname_by_guid",
      "create_documentfile",
      "get_document_parameters",
      "get_context_table",
      "insert_meta_guid",
      "get_simple_upload",
      "get_webhook_datatable",
      "get_webhook_prefix",
      "insert_media_guid",
      "update_media_detail",
      "bloom_update_context"
    ],
    "body": "data_documentfile, read_def_document, read_documentfile_by_context, insert_documentfile_stub, find_docname_by_guid, create_documentfile, get_document_parameters, get_context_table, insert_meta_guid, get_simple_upload, get_webhook_datatable, get_webhook_prefix, insert_media_guid, update_media_detail, bloom_update_context"
  },
  {
    "path": "factory-core/ObjEnvironment-schema.md",
    "title": "ObjEnvironment Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_vm_hosts"
    ],
    "queries": [],
    "body": "def_vm_hosts"
  },
  {
    "path": "factory-core/ObjEvent-schema.md",
    "title": "ObjEvent Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_events",
      "stage_events",
      "track_events"
    ],
    "queries": [],
    "body": "def_events, stage_events, track_events"
  },
  {
    "path": "factory-core/ObjFeatureStore-schema.md",
    "title": "ObjFeatureStore Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_feature",
      "def_features",
      "def_feature_expectation",
      "def_feature_dependency",
      "def_feature_version",
      "def_feature_statistics",
      "def_feature_lineage",
      "def_feature_usage",
      "def_feature_quality",
      "track_feature_explain"
    ],
    "queries": [
      "insert_feature_explain",
      "get_query_info",
      "load_feature_definitions",
      "get_expectations",
      "update_last_computed",
      "update_compute_summary",
      "get_compute_summary",
      "update_feature_computed_sql",
      "get_feature_distinct_values",
      "create_feature_table",
      "insert_into_feature_table",
      "get_feature_dependencies",
      "batch_update_features",
      "batch_update_features_incremental",
      "batch_update_features_incremental_direct",
      "direct_map",
      "sql_case",
      "aggregate",
      "window",
      "json_extract",
      "symbolic",
      "get_row_count",
      "get_null_count",
      "get_distinct_count",
      "get_numeric_stats",
      "insert_feature_statistics",
      "select_all_from_feature_store",
      "incremental_direct_map",
      "incremental_sql_case",
      "incremental_symbolic",
      "incremental_direct_map_direct",
      "incremental_sql_case_direct",
      "incremental_symbolic_direct",
      "create_globals_table",
      "clear_globals_table",
      "insert_global_feature",
      "load_globals",
      "get_feature_row",
      "get_table_columns",
      "get_feature_lineage",
      "get_column_impact",
      "export_lineage_data_all",
      "export_lineage_data_feature",
      "get_features_for_lineage_diagrams",
      "update_feature_lineage_diagram",
      "count_feature_distinct_values",
      "insert_feature_lineage",
      "select_constants_table_keys",
      "runtime_direct_map",
      "runtime_sql_case",
      "runtime_aggregate",
      "runtime_window",
      "runtime_json_extract",
      "runtime_symbolic",
      "get_feature_usage_today",
      "update_feature_usage_today",
      "insert_feature_usage_today",
      "get_usage_analytics",
      "get_all_features_for_usage",
      "get_features_for_quality",
      "get_features_for_quality_single",
      "get_feature_table_row_count",
      "get_latest_feature_statistics",
      "insert_feature_quality_assessment"
    ],
    "body": "def_feature, def_features, def_feature_expectation, def_feature_dependency, def_feature_version, def_feature_statistics, def_feature_lineage, def_feature_usage, def_feature_quality, track_feature_explain, insert_feature_explain, get_query_info, load_feature_definitions, get_expectations, update_last_computed, update_compute_summary, get_compute_summary, update_feature_computed_sql, get_feature_distinct_values, create_feature_table, insert_into_feature_table, get_feature_dependencies, batch_update_features, batch_update_features_incremental, batch_update_features_incremental_direct, direct_map, sql_case, aggregate, window, json_extract, symbolic, get_row_count, get_null_count, get_distinct_count, get_numeric_stats, insert_feature_statistics, select_all_from_feature_store, incremental_direct_map, incremental_sql_case, incremental_symbolic, incremental_direct_map_direct, incremental_sql_case_direct, incremental_symbolic_direct, create_globals_table, clear_globals_table, insert_global_feature, load_globals, get_feature_row, get_table_columns, get_feature_lineage, get_column_impact, export_lineage_data_all, export_lineage_data_feature, get_features_for_lineage_diagrams, update_feature_lineage_diagram, count_feature_distinct_values, insert_feature_lineage, select_constants_table_keys, runtime_direct_map, runtime_sql_case, runtime_aggregate, runtime_window, runtime_json_extract, runtime_symbolic, get_feature_usage_today, update_feature_usage_today, insert_feature_usage_today, get_usage_analytics, get_all_features_for_usage, get_features_for_quality, get_features_for_quality_single, get_feature_table_row_count, get_latest_feature_statistics, insert_feature_quality_assessment"
  },
  {
    "path": "factory-core/ObjFtp-schema.md",
    "title": "ObjFtp Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_ftp",
      "track_ftp"
    ],
    "queries": [
      "get_connection",
      "update_connection_password",
      "update_connection_last_login",
      "check_if_downloaded",
      "insert_download_tracker",
      "update_download_tracker",
      "insert_scan_tracker",
      "get_scan_directories",
      "check_if_uploaded",
      "insert_upload_tracker",
      "update_upload_tracker",
      "get_ftp_action",
      "get_ftp_options",
      "get_remote_dir",
      "seed_poll_notify",
      "check_poll_backoff",
      "process_remote_files_existing_check",
      "process_remote_files_duplicate_hash_check",
      "insert_tracking",
      "update_backoff_success",
      "update_backoff_failure",
      "get_last_success_time",
      "check_today_files",
      "check_last_alert_sent",
      "mark_alert_sent",
      "poll_mark_done"
    ],
    "body": "def_ftp, track_ftp, get_connection, update_connection_password, update_connection_last_login, check_if_downloaded, insert_download_tracker, update_download_tracker, insert_scan_tracker, get_scan_directories, check_if_uploaded, insert_upload_tracker, update_upload_tracker, get_ftp_action, get_ftp_options, get_remote_dir, seed_poll_notify, check_poll_backoff, process_remote_files_existing_check, process_remote_files_duplicate_hash_check, insert_tracking, update_backoff_success, update_backoff_failure, get_last_success_time, check_today_files, check_last_alert_sent, mark_alert_sent, poll_mark_done"
  },
  {
    "path": "factory-core/ObjGeoLocation-schema.md",
    "title": "ObjGeoLocation Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "cache_geo_location",
      "data_postcode"
    ],
    "queries": [],
    "body": "cache_geo_location, data_postcode"
  },
  {
    "path": "factory-core/ObjGeoZone-schema.md",
    "title": "ObjGeoZone Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_geo_zone",
      "def_geo_zone_points"
    ],
    "queries": [
      "save_zone",
      "delete_zone_points",
      "insert_zone_point",
      "load_zone",
      "load_zone_points"
    ],
    "body": "def_geo_zone, def_geo_zone_points, save_zone, delete_zone_points, insert_zone_point, load_zone, load_zone_points"
  },
  {
    "path": "factory-core/ObjGo-schema.md",
    "title": "ObjGo Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_go"
    ],
    "queries": [],
    "body": "def_go"
  },
  {
    "path": "factory-core/ObjHook-schema.md",
    "title": "ObjHook Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_webhook",
      "def_webhook_parameters",
      "def_webhook_validations",
      "def_webhook_output_validations",
      "def_webhook_batch",
      "def_webhook_constants",
      "def_webhook_reflections",
      "stage_webhook",
      "stage_webhook_semaphore",
      "def_webhook_workflow_map"
    ],
    "queries": [
      "pre_stage_update",
      "get_stageguid",
      "get_hooklookupsql",
      "update_stage_results",
      "update_resultidvalidation",
      "update_stage_fail_nodatasent",
      "update_stage_fail",
      "update_stage_done",
      "update_stage_done_simple",
      "update_stage_queued",
      "get_sourceguid",
      "get_bloom_return_data",
      "replace_stage_service",
      "read_webhook_definition",
      "read_export_openapi",
      "preload_webhook_parameters",
      "get_parameter_list",
      "get_required_list",
      "get_validations",
      "get_input_validations",
      "get_output_validations",
      "webhooks_read_definition",
      "webhooks_read_input_parameters",
      "webhooks_read_output_parameters",
      "webhooks_count_reflections",
      "webhooks_get_reflections",
      "webhooks_get_reflection_type",
      "webhooks_get_required_output_params",
      "webhooks_check_user_password",
      "webhooks_update_user_session",
      "webhooks_update_bloom_base",
      "webhooks_update_bloom_results",
      "webhooks_get_example_value",
      "webhooks_get_post_type",
      "webhooks_get_normal_parameter",
      "webhooks_get_batch_definition",
      "webhooks_count_batch_volume",
      "webhooks_get_test_payload_data",
      "testhook_lookup_sql",
      "testhook_post_execution_sql",
      "get_buildpayload_codes",
      "get_webhook_by_code",
      "get_payload_data",
      "get_payload_data_fallback",
      "replace_payload_failed",
      "get_webhook_parameters",
      "create_data_table_if_not_exists",
      "update_webhook_parameter_normal_name",
      "select_webhook_parameters_for_encode_struct",
      "count_webhook_parameter_exists",
      "insert_new_webhook_parameter",
      "select_test_case_json_sample",
      "select_hook_lookup_sql_sample",
      "select_parameters_for_prep_data_post_patch_rest",
      "select_hook_lookupsql_from_def_webhook_filtered",
      "select_required_parameters_post_patch",
      "select_hook_redirect_sql_from_def_webhook",
      "select_document_parameter_type",
      "select_webhooks_by_service_code",
      "select_webhook_parameters",
      "select_workflow_definition",
      "select_webhook_workflow_mappings",
      "select_service_webhooks_for_api_diagram"
    ],
    "body": "def_webhook, def_webhook_parameters, def_webhook_validations, def_webhook_output_validations, def_webhook_batch, def_webhook_constants, def_webhook_reflections, stage_webhook, stage_webhook_semaphore, def_webhook_workflow_map, pre_stage_update, get_stageguid, get_hooklookupsql, update_stage_results, update_resultidvalidation, update_stage_fail_nodatasent, update_stage_fail, update_stage_done, update_stage_done_simple, update_stage_queued, get_sourceguid, get_bloom_return_data, replace_stage_service, read_webhook_definition, read_export_openapi, preload_webhook_parameters, get_parameter_list, get_required_list, get_validations, get_input_validations, get_output_validations, webhooks_read_definition, webhooks_read_input_parameters, webhooks_read_output_parameters, webhooks_count_reflections, webhooks_get_reflections, webhooks_get_reflection_type, webhooks_get_required_output_params, webhooks_check_user_password, webhooks_update_user_session, webhooks_update_bloom_base, webhooks_update_bloom_results, webhooks_get_example_value, webhooks_get_post_type, webhooks_get_normal_parameter, webhooks_get_batch_definition, webhooks_count_batch_volume, webhooks_get_test_payload_data, testhook_lookup_sql, testhook_post_execution_sql, get_buildpayload_codes, get_webhook_by_code, get_payload_data, get_payload_data_fallback, replace_payload_failed, get_webhook_parameters, create_data_table_if_not_exists, update_webhook_parameter_normal_name, select_webhook_parameters_for_encode_struct, count_webhook_parameter_exists, insert_new_webhook_parameter, select_test_case_json_sample, select_hook_lookup_sql_sample, select_parameters_for_prep_data_post_patch_rest, select_hook_lookupsql_from_def_webhook_filtered, select_required_parameters_post_patch, select_hook_redirect_sql_from_def_webhook, select_document_parameter_type, select_webhooks_by_service_code, select_webhook_parameters, select_workflow_definition, select_webhook_workflow_mappings, select_service_webhooks_for_api_diagram"
  },
  {
    "path": "factory-core/ObjHost-schema.md",
    "title": "ObjHost Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_host",
      "def_mac_address",
      "def_host_schema",
      "def_schema_credentials",
      "def_host_credentials",
      "def_network_link"
    ],
    "queries": [
      "upsert_host",
      "list_hosts",
      "list_active_hosts",
      "get_host",
      "deactivate_host",
      "update_last_seen",
      "get_security_hosts",
      "get_monitor_hosts",
      "get_backup_hosts",
      "sync_from_monitor",
      "count_hosts",
      "get_host_notify",
      "get_report_recipients",
      "get_hosts_with_location",
      "update_state",
      "update_disk_usage",
      "get_summary",
      "get_hosts_by_tag",
      "sync_local_host",
      "update_wireguard_status",
      "upsert_schema_credential",
      "get_schema_credentials",
      "list_schema_credentials_by_host",
      "upsert_schema",
      "list_schemas_by_host",
      "list_schemas_by_package",
      "get_schema_summary",
      "upsert_credential",
      "get_credentials",
      "get_credential_by_protocol",
      "list_credentials",
      "upsert_mac",
      "get_mac",
      "get_mac_by_ip",
      "list_macs",
      "list_unknown_macs",
      "list_macs_by_vendor",
      "sync_proxmox_host"
    ],
    "body": "def_host, def_mac_address, def_host_schema, def_schema_credentials, def_host_credentials, def_network_link, upsert_host, list_hosts, list_active_hosts, get_host, deactivate_host, update_last_seen, get_security_hosts, get_monitor_hosts, get_backup_hosts, sync_from_monitor, count_hosts, get_host_notify, get_report_recipients, get_hosts_with_location, update_state, update_disk_usage, get_summary, get_hosts_by_tag, sync_local_host, update_wireguard_status, upsert_schema_credential, get_schema_credentials, list_schema_credentials_by_host, upsert_schema, list_schemas_by_host, list_schemas_by_package, get_schema_summary, upsert_credential, get_credentials, get_credential_by_protocol, list_credentials, upsert_mac, get_mac, get_mac_by_ip, list_macs, list_unknown_macs, list_macs_by_vendor, sync_proxmox_host"
  },
  {
    "path": "factory-core/ObjImage-schema.md",
    "title": "ObjImage Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_image",
      "def_image_overlay"
    ],
    "queries": [
      "get_image_by_code",
      "get_overlays_by_code"
    ],
    "body": "def_image, def_image_overlay, get_image_by_code, get_overlays_by_code"
  },
  {
    "path": "factory-core/ObjImap-schema.md",
    "title": "ObjImap Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_imap",
      "stage_imap",
      "def_imap_senders"
    ],
    "queries": [],
    "body": "def_imap, stage_imap, def_imap_senders"
  },
  {
    "path": "factory-core/ObjInet-schema.md",
    "title": "ObjInet Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "internet_resolve"
    ],
    "queries": [
      "proxmox_insert_host",
      "proxmox_update_host",
      "netbird_insert_host",
      "netbird_update_host",
      "read_resolve",
      "create_resolve",
      "update_resolve",
      "select_pending_resolves",
      "select_pending_weblog",
      "update_weblog_lookup",
      "delete_empty_weblog",
      "delete_old_weblog",
      "select_blocked",
      "select_allow_blocked",
      "delete_weblog_by_ip",
      "select_distinct_useragent"
    ],
    "body": "internet_resolve, proxmox_insert_host, proxmox_update_host, netbird_insert_host, netbird_update_host, read_resolve, create_resolve, update_resolve, select_pending_resolves, select_pending_weblog, update_weblog_lookup, delete_empty_weblog, delete_old_weblog, select_blocked, select_allow_blocked, delete_weblog_by_ip, select_distinct_useragent"
  },
  {
    "path": "factory-core/ObjInternet-schema.md",
    "title": "ObjInternet Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "internet_lan",
      "internet_lan_ip",
      "internet_lan_history",
      "internet_service",
      "internet_service_history",
      "internet_session",
      "internet_package_change",
      "internet_sensor",
      "internet_throughput",
      "internet_security_finding"
    ],
    "queries": [
      "upsert_lan_host",
      "upsert_lan_ip",
      "read_lan_ip",
      "list_lan_ips",
      "get_lan_host_by_mac",
      "get_lan_host_by_ip",
      "insert_lan_history",
      "read_lan_history",
      "insert_security_finding",
      "replace_security_findings",
      "read_security_findings",
      "upsert_service",
      "get_service_status",
      "insert_service_history",
      "upsert_session",
      "clear_stale_sessions",
      "insert_package_change",
      "get_last_package_change",
      "upsert_sensor",
      "upsert_throughput",
      "update_security_status",
      "update_def_host_lastseen",
      "select_inbound_webhooks",
      "get_host_notify_emails",
      "read_lan_host",
      "list_lan_hosts",
      "deactivate_stale",
      "insert_host_port",
      "update_port_status_open",
      "update_port_status_closed",
      "clear_open_ports_log",
      "check_host_status"
    ],
    "body": "internet_lan, internet_lan_ip, internet_lan_history, internet_service, internet_service_history, internet_session, internet_package_change, internet_sensor, internet_throughput, internet_security_finding, upsert_lan_host, upsert_lan_ip, read_lan_ip, list_lan_ips, get_lan_host_by_mac, get_lan_host_by_ip, insert_lan_history, read_lan_history, insert_security_finding, replace_security_findings, read_security_findings, upsert_service, get_service_status, insert_service_history, upsert_session, clear_stale_sessions, insert_package_change, get_last_package_change, upsert_sensor, upsert_throughput, update_security_status, update_def_host_lastseen, select_inbound_webhooks, get_host_notify_emails, read_lan_host, list_lan_hosts, deactivate_stale, insert_host_port, update_port_status_open, update_port_status_closed, clear_open_ports_log, check_host_status"
  },
  {
    "path": "factory-core/ObjKeycloakResilient-schema.md",
    "title": "ObjKeycloakResilient Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "sys_keycloak_token_cache",
      "sys_keycloak_sync_queue"
    ],
    "queries": [
      "insert_sync_queue",
      "upsert_token_cache",
      "select_cached_token",
      "increment_cache_use_count",
      "select_refresh_token",
      "select_expiring_tokens",
      "select_pending_sync_items",
      "update_sync_status",
      "select_users_for_sync",
      "count_pending_syncs",
      "count_cached_tokens",
      "delete_expired_tokens",
      "delete_completed_syncs"
    ],
    "body": "sys_keycloak_token_cache, sys_keycloak_sync_queue, insert_sync_queue, upsert_token_cache, select_cached_token, increment_cache_use_count, select_refresh_token, select_expiring_tokens, select_pending_sync_items, update_sync_status, select_users_for_sync, count_pending_syncs, count_cached_tokens, delete_expired_tokens, delete_completed_syncs"
  },
  {
    "path": "factory-core/ObjLearning-schema.md",
    "title": "ObjLearning Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_learning"
    ],
    "queries": [],
    "body": "def_learning"
  },
  {
    "path": "factory-core/ObjML-schema.md",
    "title": "ObjML Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_ml_models"
    ],
    "queries": [],
    "body": "def_ml_models"
  },
  {
    "path": "factory-core/ObjMLDatasets-schema.md",
    "title": "ObjMLDatasets Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_dataset",
      "def_featuresets",
      "def_featurestore",
      "def_model_evaluation"
    ],
    "queries": [],
    "body": "def_dataset, def_featuresets, def_featurestore, def_model_evaluation"
  },
  {
    "path": "factory-core/ObjMLScorecard-schema.md",
    "title": "ObjMLScorecard Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_scorecard"
    ],
    "queries": [],
    "body": "def_scorecard"
  },
  {
    "path": "factory-core/ObjMonitor-schema.md",
    "title": "ObjMonitor Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "internet_host",
      "internet_host_proxmox",
      "internet_host_proxmox_log",
      "internet_hostalert",
      "internet_hostalertlog",
      "internet_hostapp",
      "internet_hostappusagelog",
      "internet_hostdevice",
      "internet_hostdrive",
      "internet_hostdrivelog",
      "internet_hostdriveusagelog",
      "internet_hostfile",
      "internet_hostfilelog",
      "internet_hostisplog",
      "internet_hostlog",
      "internet_hostnames",
      "internet_hostport",
      "internet_hostportlog",
      "internet_hostreachable",
      "internet_hostreachablelog",
      "internet_relationship",
      "internet_login_event",
      "internet_command_log",
      "internet_cron_event",
      "data_monitor_poll",
      "internet_pending_update",
      "internet_disk_latency",
      "internet_security_finding",
      "alter_add_security_status"
    ],
    "queries": [
      "read_host",
      "create_host",
      "create_hostname",
      "update_host_client",
      "update_vmhost_aws",
      "update_host_details",
      "get_db_uptime",
      "get_db_version",
      "update_isp_details",
      "get_file_size",
      "insert_host_file",
      "update_host_file",
      "insert_host_file_log",
      "insert_login_event",
      "read_login_events",
      "read_login_events_by_user",
      "count_login_events",
      "read_active_sessions",
      "cleanup_login_events",
      "insert_command_log",
      "read_command_log",
      "read_command_log_by_user",
      "count_command_log",
      "cleanup_command_log",
      "insert_cron_event",
      "read_cron_events",
      "cleanup_cron_events",
      "replace_pending_updates",
      "insert_pending_update",
      "read_pending_updates",
      "count_pending_updates",
      "insert_disk_latency",
      "read_disk_latency",
      "cleanup_disk_latency",
      "insert_security_finding",
      "replace_security_findings",
      "read_security_findings",
      "get_backup_health",
      "get_backup_errors",
      "get_security_audit_summary",
      "get_cert_expiry",
      "get_active_alert_counts",
      "get_recent_alerts",
      "get_open_incident_counts",
      "create_monitor_db",
      "insert_hostlog",
      "insert_isplog",
      "show_columns",
      "show_primary_index",
      "alter_primary_key_append",
      "upsert_monitor_poll",
      "list_monitor_hosts",
      "get_monitor_host",
      "get_host_role_info"
    ],
    "body": "internet_host, internet_host_proxmox, internet_host_proxmox_log, internet_hostalert, internet_hostalertlog, internet_hostapp, internet_hostappusagelog, internet_hostdevice, internet_hostdrive, internet_hostdrivelog, internet_hostdriveusagelog, internet_hostfile, internet_hostfilelog, internet_hostisplog, internet_hostlog, internet_hostnames, internet_hostport, internet_hostportlog, internet_hostreachable, internet_hostreachablelog, internet_relationship, internet_login_event, internet_command_log, internet_cron_event, data_monitor_poll, internet_pending_update, internet_disk_latency, internet_security_finding, alter_add_security_status, read_host, create_host, create_hostname, update_host_client, update_vmhost_aws, update_host_details, get_db_uptime, get_db_version, update_isp_details, get_file_size, insert_host_file, update_host_file, insert_host_file_log, insert_login_event, read_login_events, read_login_events_by_user, count_login_events, read_active_sessions, cleanup_login_events, insert_command_log, read_command_log, read_command_log_by_user, count_command_log, cleanup_command_log, insert_cron_event, read_cron_events, cleanup_cron_events, replace_pending_updates, insert_pending_update, read_pending_updates, count_pending_updates, insert_disk_latency, read_disk_latency, cleanup_disk_latency, insert_security_finding, replace_security_findings, read_security_findings, get_backup_health, get_backup_errors, get_security_audit_summary, get_cert_expiry, get_active_alert_counts, get_recent_alerts, get_open_incident_counts, create_monitor_db, insert_hostlog, insert_isplog, show_columns, show_primary_index, alter_primary_key_append, upsert_monitor_poll, list_monitor_hosts, get_monitor_host, get_host_role_info"
  },
  {
    "path": "factory-core/ObjNewsFeed-schema.md",
    "title": "ObjNewsFeed Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_newsfeed",
      "def_rss"
    ],
    "queries": [],
    "body": "def_newsfeed, def_rss"
  },
  {
    "path": "factory-core/ObjNotify-schema.md",
    "title": "ObjNotify Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_notify",
      "stage_notify"
    ],
    "queries": [
      "read_notify",
      "count_sysadmin",
      "create_sysadmin",
      "create_default_notify",
      "mark_read",
      "get_pending_messages",
      "get_user_msisdn",
      "update_event_sent",
      "get_all_users_in_package",
      "get_users_in_group",
      "get_user",
      "insert_notification",
      "select_notify_code",
      "get_person_msisdn",
      "get_person_whatsapp"
    ],
    "body": "def_notify, stage_notify, read_notify, count_sysadmin, create_sysadmin, create_default_notify, mark_read, get_pending_messages, get_user_msisdn, update_event_sent, get_all_users_in_package, get_users_in_group, get_user, insert_notification, select_notify_code, get_person_msisdn, get_person_whatsapp"
  },
  {
    "path": "factory-core/ObjNotifyPush-schema.md",
    "title": "ObjNotifyPush Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_notify_push_subscription"
    ],
    "queries": [
      "subscribe",
      "unsubscribe",
      "get_subscriptions",
      "get_group_subscriptions"
    ],
    "body": "def_notify_push_subscription, subscribe, unsubscribe, get_subscriptions, get_group_subscriptions"
  },
  {
    "path": "factory-core/ObjPackage-schema.md",
    "title": "ObjPackage Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_package_roles"
    ],
    "queries": [
      "get_roles",
      "get_roles_for_activity",
      "get_role_emails",
      "upsert_role",
      "remove_role"
    ],
    "body": "def_package_roles, get_roles, get_roles_for_activity, get_role_emails, upsert_role, remove_role"
  },
  {
    "path": "factory-core/ObjPalette-schema.md",
    "title": "ObjPalette Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_colour_palette"
    ],
    "queries": [
      "read_palette",
      "save_palette",
      "get_reference_palette",
      "get_all_palettes",
      "update_palette",
      "update_palette_name",
      "get_default_palette",
      "clear_package_default",
      "set_as_default",
      "get_palette_by_name",
      "get_palette_active",
      "update_colour_names"
    ],
    "body": "def_colour_palette, read_palette, save_palette, get_reference_palette, get_all_palettes, update_palette, update_palette_name, get_default_palette, clear_package_default, set_as_default, get_palette_by_name, get_palette_active, update_colour_names"
  },
  {
    "path": "factory-core/ObjPerson-schema.md",
    "title": "ObjPerson Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "sys_user",
      "sys_user_session",
      "data_person"
    ],
    "queries": [
      "read_person",
      "upsert_person",
      "list_active_persons",
      "list_all_persons",
      "find_by_identifier",
      "search_persons",
      "update_last_contact",
      "delete_person"
    ],
    "body": "sys_user, sys_user_session, data_person, read_person, upsert_person, list_active_persons, list_all_persons, find_by_identifier, search_persons, update_last_contact, delete_person"
  },
  {
    "path": "factory-core/ObjProcessText-schema.md",
    "title": "ObjProcessText Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_constants",
      "def_text"
    ],
    "queries": [
      "get_def_text_by_name"
    ],
    "body": "def_constants, def_text, get_def_text_by_name"
  },
  {
    "path": "factory-core/ObjReport-schema.md",
    "title": "ObjReport Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_report",
      "def_report_review",
      "Def_reporttype"
    ],
    "queries": [
      "reporttype_read",
      "reporttype_instance_options",
      "reporttype_create",
      "report_create",
      "get_form_template",
      "get_report_is_dynamic",
      "get_report_redirect",
      "get_report"
    ],
    "body": "def_report, def_report_review, Def_reporttype, reporttype_read, reporttype_instance_options, reporttype_create, report_create, get_form_template, get_report_is_dynamic, get_report_redirect, get_report"
  },
  {
    "path": "factory-core/ObjScheduler-schema.md",
    "title": "ObjScheduler Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_scheduler",
      "stage_scheduler"
    ],
    "queries": [
      "get_schedule_by_guid",
      "get_schedule_by_taskname",
      "get_active_schedules_detailed",
      "get_active_tasks_for_selection",
      "reschedule_mark_done",
      "reschedule_update_counter",
      "mark_schedule_complete"
    ],
    "body": "def_scheduler, stage_scheduler, get_schedule_by_guid, get_schedule_by_taskname, get_active_schedules_detailed, get_active_tasks_for_selection, reschedule_mark_done, reschedule_update_counter, mark_schedule_complete"
  },
  {
    "path": "factory-core/ObjScorecard-schema.md",
    "title": "ObjScorecard Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_scorecard",
      "def_scorecard_context",
      "def_scorecard_history"
    ],
    "queries": [],
    "body": "def_scorecard, def_scorecard_context, def_scorecard_history"
  },
  {
    "path": "factory-core/ObjSecurityAudit-schema.md",
    "title": "ObjSecurityAudit Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_security_audit",
      "data_subdomain_cache",
      "data_security_audit_summary",
      "def_security_audit_hosts"
    ],
    "queries": [
      "get_enabled_hosts",
      "get_host",
      "upsert_host",
      "insert_finding",
      "insert_summary",
      "upsert_subdomain_cache",
      "read_subdomain_cache",
      "count_subdomain_cache"
    ],
    "body": "data_security_audit, data_subdomain_cache, data_security_audit_summary, def_security_audit_hosts, get_enabled_hosts, get_host, upsert_host, insert_finding, insert_summary, upsert_subdomain_cache, read_subdomain_cache, count_subdomain_cache"
  },
  {
    "path": "factory-core/ObjService-schema.md",
    "title": "ObjService Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_service",
      "def_service_parameters",
      "stage_service",
      "def_servicetype",
      "stage_service_monitor"
    ],
    "queries": [
      "register_servicetype",
      "register_service",
      "read_service",
      "load_remote_connection",
      "load_pre_sql",
      "load_post_sql",
      "stage_launch",
      "stage_reset",
      "stage_insert",
      "get_service_by_code"
    ],
    "body": "def_service, def_service_parameters, stage_service, def_servicetype, stage_service_monitor, register_servicetype, register_service, read_service, load_remote_connection, load_pre_sql, load_post_sql, stage_launch, stage_reset, stage_insert, get_service_by_code"
  },
  {
    "path": "factory-core/ObjSimulation-schema.md",
    "title": "ObjSimulation Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_simulation_table"
    ],
    "queries": [
      "insert_simulation_table",
      "get_simulation_table_usage",
      "get_simulation_tables_by_module",
      "get_all_simulation_tables",
      "delete_simulation_tracking",
      "get_simulation_summary"
    ],
    "body": "def_simulation_table, insert_simulation_table, get_simulation_table_usage, get_simulation_tables_by_module, get_all_simulation_tables, delete_simulation_tracking, get_simulation_summary"
  },
  {
    "path": "factory-core/ObjSms-schema.md",
    "title": "ObjSms Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_sms",
      "stage_sms",
      "stage_sms_delivery",
      "stage_sms_replies",
      "stage_sms_tracking"
    ],
    "queries": [
      "day_filter",
      "update_stage",
      "select_send_schedule",
      "update_stage_scheduled_time",
      "select_daily_count",
      "select_limited_count",
      "insert_stage_sms",
      "update_stage_sms_status",
      "select_def_sms",
      "insert_stage_sms_direct",
      "update_stage_sms_cellnumber",
      "update_stage_sms_params",
      "select_stage_sms_by_guid",
      "select_default_sms_connection"
    ],
    "body": "def_sms, stage_sms, stage_sms_delivery, stage_sms_replies, stage_sms_tracking, day_filter, update_stage, select_send_schedule, update_stage_scheduled_time, select_daily_count, select_limited_count, insert_stage_sms, update_stage_sms_status, select_def_sms, insert_stage_sms_direct, update_stage_sms_cellnumber, update_stage_sms_params, select_stage_sms_by_guid, select_default_sms_connection"
  },
  {
    "path": "factory-core/ObjSupervisor-schema.md",
    "title": "ObjSupervisor Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_supervisor"
    ],
    "queries": [
      "check_service_exists",
      "insert_service",
      "update_service_status",
      "get_supervisor_config",
      "load_pending_tasks",
      "expire_old_tasks",
      "get_task_count",
      "get_completed_tasks",
      "get_service_active",
      "reset_service_status"
    ],
    "body": "def_supervisor, check_service_exists, insert_service, update_service_status, get_supervisor_config, load_pending_tasks, expire_old_tasks, get_task_count, get_completed_tasks, get_service_active, reset_service_status"
  },
  {
    "path": "factory-core/ObjTemplate-schema.md",
    "title": "ObjTemplate Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_email_template"
    ],
    "queries": [
      "load_email_template",
      "list_email_templates"
    ],
    "body": "def_email_template, load_email_template, list_email_templates"
  },
  {
    "path": "factory-core/ObjTicket-schema.md",
    "title": "ObjTicket Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_ticket",
      "data_ticket_history",
      "track_ticket",
      "data_ticket_document",
      "data_ticket_timeentry"
    ],
    "queries": [
      "read_ticket",
      "read_ticket_by_number",
      "create_ticket",
      "alter_table_add_column",
      "update_ticket",
      "update_server_id",
      "update_status",
      "assign_ticket",
      "update_analysis",
      "update_incident_date",
      "update_incident_cause",
      "update_work_score",
      "update_watchers",
      "resolve_ticket",
      "close_ticket",
      "escalate_ticket",
      "update_sla_response_met",
      "track_action",
      "create_document",
      "get_documents",
      "get_document",
      "delete_document",
      "get_history",
      "get_open_tickets",
      "get_overdue_tickets",
      "get_ticket_count_by_status",
      "get_user_email",
      "get_tickets_by_assignee",
      "get_unassigned_tickets",
      "get_sla_breach_count",
      "get_tickets_by_filter",
      "get_escalation_due_tickets",
      "link_pr",
      "get_assignee_workload",
      "get_linked_prs",
      "create_from_pr",
      "create_time_entry",
      "get_time_entries",
      "get_total_time",
      "update_estimated_date"
    ],
    "body": "data_ticket, data_ticket_history, track_ticket, data_ticket_document, data_ticket_timeentry, read_ticket, read_ticket_by_number, create_ticket, alter_table_add_column, update_ticket, update_server_id, update_status, assign_ticket, update_analysis, update_incident_date, update_incident_cause, update_work_score, update_watchers, resolve_ticket, close_ticket, escalate_ticket, update_sla_response_met, track_action, create_document, get_documents, get_document, delete_document, get_history, get_open_tickets, get_overdue_tickets, get_ticket_count_by_status, get_user_email, get_tickets_by_assignee, get_unassigned_tickets, get_sla_breach_count, get_tickets_by_filter, get_escalation_due_tickets, link_pr, get_assignee_workload, get_linked_prs, create_from_pr, create_time_entry, get_time_entries, get_total_time, update_estimated_date"
  },
  {
    "path": "factory-core/ObjTicketComment-schema.md",
    "title": "ObjTicketComment Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_ticket_comment"
    ],
    "queries": [
      "read_comment",
      "create_comment",
      "get_comments",
      "get_comments_public",
      "delete_comment"
    ],
    "body": "data_ticket_comment, read_comment, create_comment, get_comments, get_comments_public, delete_comment"
  },
  {
    "path": "factory-core/ObjTicketLink-schema.md",
    "title": "ObjTicketLink Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_ticket_link"
    ],
    "queries": [
      "create_link",
      "get_links",
      "get_blocked_by",
      "remove_link"
    ],
    "body": "data_ticket_link, create_link, get_links, get_blocked_by, remove_link"
  },
  {
    "path": "factory-core/ObjTicketSla-schema.md",
    "title": "ObjTicketSla Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_ticket_sla"
    ],
    "queries": [
      "read_sla",
      "read_sla_by_package",
      "create_sla",
      "update_sla",
      "get_response_minutes",
      "get_resolution_minutes",
      "get_escalation_minutes",
      "get_escalation_contact"
    ],
    "body": "def_ticket_sla, read_sla, read_sla_by_package, create_sla, update_sla, get_response_minutes, get_resolution_minutes, get_escalation_minutes, get_escalation_contact"
  },
  {
    "path": "factory-core/ObjTicketTask-schema.md",
    "title": "ObjTicketTask Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_ticket_task"
    ],
    "queries": [
      "read_task",
      "create_task",
      "update_task",
      "update_task_status",
      "complete_task",
      "cancel_task",
      "start_task",
      "get_tasks",
      "get_pending_count",
      "get_completed_count",
      "get_next_rank"
    ],
    "body": "data_ticket_task, read_task, create_task, update_task, update_task_status, complete_task, cancel_task, start_task, get_tasks, get_pending_count, get_completed_count, get_next_rank"
  },
  {
    "path": "factory-core/ObjTicketTemplate-schema.md",
    "title": "ObjTicketTemplate Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_ticket_template",
      "def_ticket_template_task"
    ],
    "queries": [
      "read_template",
      "read_template_by_guid",
      "create_template",
      "get_templates",
      "add_template_task",
      "get_template_tasks"
    ],
    "body": "def_ticket_template, def_ticket_template_task, read_template, read_template_by_guid, create_template, get_templates, add_template_task, get_template_tasks"
  },
  {
    "path": "factory-core/ObjWebMail-schema.md",
    "title": "ObjWebMail Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [
      "get_smtp_server_port",
      "get_user_pass_pop_server",
      "get_mail_connection_by_channel",
      "update_email_stage_reply"
    ],
    "body": "get_smtp_server_port, get_user_pass_pop_server, get_mail_connection_by_channel, update_email_stage_reply"
  },
  {
    "path": "factory-core/ObjWorkflow-schema.md",
    "title": "ObjWorkflow Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_workflow",
      "def_workflows",
      "def_workflow_actors",
      "def_workflow_transitions",
      "stage_workflow",
      "def_workflow_avro",
      "def_workflow_history"
    ],
    "queries": [
      "get_workflows",
      "get_workflow_basename",
      "get_workflow_basename_fallback",
      "get_connected_workflows_selectors",
      "is_workflow_gui",
      "is_workflow_async",
      "prepare_run_update_workflowguid",
      "prepare_run_get_workflow_and_rank",
      "prepare_run_get_processguidsql",
      "prepare_run_update_workflownodeguid",
      "prepare_run_get_nodes",
      "node_flow_get_report_template",
      "node_flow_get_form_template",
      "node_flow_get_default_template",
      "node_service_get_service_name",
      "get_result_maps",
      "closure_update_workflow_case",
      "closure_get_workflow_details",
      "closure_update_workflow_guid_version",
      "closure_get_threewords",
      "closure_update_threewords",
      "closure_update_workflownodeguid",
      "closure_update_workflowguid",
      "closure_update_version",
      "closure_update_description",
      "closure_get_kickoff_node",
      "closure_update_gate_selector",
      "closure_get_nodes_for_walk",
      "closure_update_node_guid",
      "closure_insert_transition",
      "export_to_yaml_get_nodes",
      "export_to_piper_get_nodes",
      "export_to_piper_update_flow",
      "select_get_workflows",
      "run_set_get_guids",
      "stage_update_insert",
      "stage_insert",
      "stage_update_status",
      "stage_complete",
      "stage_get_by_guid",
      "stage_poll_pending",
      "stage_poll_fanin_wait",
      "stage_count_pending_subguids",
      "stage_get_fanin_row",
      "test_login_flow_insert_user",
      "test_login_flow_delete_user",
      "get_workflow_nodes",
      "stage_update_update",
      "update_workflow_node",
      "new_workflow_node",
      "delete_workflow_node",
      "add_workflow_branch",
      "get_sms_def",
      "update_sms_def",
      "insert_sms_def",
      "get_channel_def",
      "update_channel_def",
      "insert_channel_def",
      "get_alert_def",
      "update_alert_def",
      "insert_alert_def",
      "get_notify_def",
      "update_notify_def",
      "insert_notify_def",
      "get_service_def",
      "update_service_def",
      "insert_service_def",
      "get_calculation_def",
      "update_calculation",
      "add_calculation",
      "delete_calculation",
      "get_calculationgroup",
      "delete_calculationgroup"
    ],
    "body": "def_workflow, def_workflows, def_workflow_actors, def_workflow_transitions, stage_workflow, def_workflow_avro, def_workflow_history, get_workflows, get_workflow_basename, get_workflow_basename_fallback, get_connected_workflows_selectors, is_workflow_gui, is_workflow_async, prepare_run_update_workflowguid, prepare_run_get_workflow_and_rank, prepare_run_get_processguidsql, prepare_run_update_workflownodeguid, prepare_run_get_nodes, node_flow_get_report_template, node_flow_get_form_template, node_flow_get_default_template, node_service_get_service_name, get_result_maps, closure_update_workflow_case, closure_get_workflow_details, closure_update_workflow_guid_version, closure_get_threewords, closure_update_threewords, closure_update_workflownodeguid, closure_update_workflowguid, closure_update_version, closure_update_description, closure_get_kickoff_node, closure_update_gate_selector, closure_get_nodes_for_walk, closure_update_node_guid, closure_insert_transition, export_to_yaml_get_nodes, export_to_piper_get_nodes, export_to_piper_update_flow, select_get_workflows, run_set_get_guids, stage_update_insert, stage_insert, stage_update_status, stage_complete, stage_get_by_guid, stage_poll_pending, stage_poll_fanin_wait, stage_count_pending_subguids, stage_get_fanin_row, test_login_flow_insert_user, test_login_flow_delete_user, get_workflow_nodes, stage_update_update, update_workflow_node, new_workflow_node, delete_workflow_node, add_workflow_branch, get_sms_def, update_sms_def, insert_sms_def, get_channel_def, update_channel_def, insert_channel_def, get_alert_def, update_alert_def, insert_alert_def, get_notify_def, update_notify_def, insert_notify_def, get_service_def, update_service_def, insert_service_def, get_calculation_def, update_calculation, add_calculation, delete_calculation, get_calculationgroup, delete_calculationgroup"
  },
  {
    "path": "factory-core/ServeAI-schema.md",
    "title": "ServeAI Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "track_mcp"
    ],
    "queries": [],
    "body": "track_mcp"
  },
  {
    "path": "factory-core/ObjRaci-schema.md",
    "title": "ObjRaci Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_raci_signoff"
    ],
    "queries": [
      "get_signoffs",
      "get_pending_signoffs",
      "request_signoff",
      "record_signoff",
      "check_fully_signed"
    ],
    "body": "def_raci_signoff, get_signoffs, get_pending_signoffs, request_signoff, record_signoff, check_fully_signed"
  },
  {
    "path": "factory-core/ObjRecurringMixin-schema.md",
    "title": "ObjRecurringMixin Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_recurring"
    ],
    "queries": [
      "recurring_create",
      "recurring_get_due",
      "recurring_claim",
      "recurring_advance",
      "recurring_release",
      "recurring_list",
      "recurring_cancel"
    ],
    "body": "def_recurring, recurring_create, recurring_get_due, recurring_claim, recurring_advance, recurring_release, recurring_list, recurring_cancel"
  },
  {
    "path": "factory-core/ObjApiEdit-schema.md",
    "title": "ObjApiEdit Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [
      "select_webhooks_by_service_code",
      "select_webhook_parameters"
    ],
    "body": "select_webhooks_by_service_code, select_webhook_parameters"
  },
  {
    "path": "factory-core/ObjMailEdit-schema.md",
    "title": "ObjMailEdit Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [
      "load_email_template",
      "list_email_templates",
      "upsert_email_template"
    ],
    "body": "load_email_template, list_email_templates, upsert_email_template"
  },
  {
    "path": "factory-core/ObjTicketAutoAssign-schema.md",
    "title": "ObjTicketAutoAssign Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_ticket_assign_rules"
    ],
    "queries": [
      "read_rules_exact",
      "read_rules_project_priority",
      "read_rules_project_only",
      "read_rules_priority_only",
      "read_rules_package_default",
      "list_rules",
      "insert_rule",
      "delete_rule"
    ],
    "body": "def_ticket_assign_rules, read_rules_exact, read_rules_project_priority, read_rules_project_only, read_rules_priority_only, read_rules_package_default, list_rules, insert_rule, delete_rule"
  },
  {
    "path": "factory-core/ObjTicketCommentMixin-schema.md",
    "title": "ObjTicketCommentMixin Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_ticket_comment"
    ],
    "queries": [
      "read_comment",
      "create_comment",
      "get_comments",
      "get_comments_public",
      "delete_comment"
    ],
    "body": "data_ticket_comment, read_comment, create_comment, get_comments, get_comments_public, delete_comment"
  },
  {
    "path": "factory-core/ObjTicketLinkMixin-schema.md",
    "title": "ObjTicketLinkMixin Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_ticket_link"
    ],
    "queries": [
      "create_link",
      "get_links",
      "get_blocked_by",
      "remove_link"
    ],
    "body": "data_ticket_link, create_link, get_links, get_blocked_by, remove_link"
  },
  {
    "path": "factory-core/ObjTicketSlaMixin-schema.md",
    "title": "ObjTicketSlaMixin Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_ticket_sla"
    ],
    "queries": [
      "read_sla",
      "read_sla_by_package",
      "create_sla",
      "update_sla",
      "get_response_minutes",
      "get_resolution_minutes",
      "get_escalation_minutes",
      "get_escalation_contact",
      "get_raci_contacts"
    ],
    "body": "def_ticket_sla, read_sla, read_sla_by_package, create_sla, update_sla, get_response_minutes, get_resolution_minutes, get_escalation_minutes, get_escalation_contact, get_raci_contacts"
  },
  {
    "path": "factory-core/ObjTicketTaskMixin-schema.md",
    "title": "ObjTicketTaskMixin Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_ticket_task"
    ],
    "queries": [
      "read_task",
      "create_task",
      "update_task",
      "update_task_status",
      "complete_task",
      "cancel_task",
      "start_task",
      "get_tasks",
      "get_pending_count",
      "get_completed_count",
      "get_next_rank"
    ],
    "body": "data_ticket_task, read_task, create_task, update_task, update_task_status, complete_task, cancel_task, start_task, get_tasks, get_pending_count, get_completed_count, get_next_rank"
  },
  {
    "path": "factory-core/ObjTicketTemplateMixin-schema.md",
    "title": "ObjTicketTemplateMixin Schema",
    "factory": "factory.core",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_ticket_template",
      "def_ticket_template_task"
    ],
    "queries": [
      "read_template",
      "read_template_by_guid",
      "create_template",
      "get_templates",
      "add_template_task",
      "get_template_tasks"
    ],
    "body": "def_ticket_template, def_ticket_template_task, read_template, read_template_by_guid, create_template, get_templates, add_template_task, get_template_tasks"
  },
  {
    "path": "factory-service/ObjServiceStl-schema.md",
    "title": "ObjServiceStl Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_model_stl",
      "def_model_stl_slices"
    ],
    "queries": [
      "insert_model_stl",
      "update_model_stl_status",
      "insert_model_stl_slice",
      "delete_model_stl_slices",
      "list_model_stl",
      "get_model_stl",
      "get_model_stl_slices"
    ],
    "body": "def_model_stl, def_model_stl_slices, insert_model_stl, update_model_stl_status, insert_model_stl_slice, delete_model_stl_slices, list_model_stl, get_model_stl, get_model_stl_slices"
  },
  {
    "path": "factory-service/ObjServiceAsana-schema.md",
    "title": "ObjServiceAsana Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_asana_sync"
    ],
    "queries": [
      "upsert_sync",
      "get_asana_gid",
      "get_local_key",
      "get_all_synced",
      "get_synced_by_table"
    ],
    "body": "def_asana_sync, upsert_sync, get_asana_gid, get_local_key, get_all_synced, get_synced_by_table"
  },
  {
    "path": "factory-service/ObjServiceBitbucket-schema.md",
    "title": "ObjServiceBitbucket Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_integration_sync"
    ],
    "queries": [
      "upsert_sync",
      "get_external_id",
      "get_local_key",
      "get_all_synced",
      "get_synced_by_table"
    ],
    "body": "def_integration_sync, upsert_sync, get_external_id, get_local_key, get_all_synced, get_synced_by_table"
  },
  {
    "path": "factory-service/ObjServiceCurrency-schema.md",
    "title": "ObjServiceCurrency Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_currency",
      "data_currency_history"
    ],
    "queries": [
      "upsert_currency",
      "insert_history",
      "get_latest",
      "get_rate",
      "get_all_rates",
      "get_history",
      "get_daily_rates"
    ],
    "body": "data_currency, data_currency_history, upsert_currency, insert_history, get_latest, get_rate, get_all_rates, get_history, get_daily_rates"
  },
  {
    "path": "factory-service/ObjServiceDecisionSwitch-schema.md",
    "title": "ObjServiceDecisionSwitch Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [
      "read_decision_tree",
      "read_decision_tree_nodes",
      "get_decision_fields",
      "create_sim_data_table",
      "create_sim_output_table",
      "insert_sim_result_with_verification",
      "insert_sim_result_no_verification",
      "read_simulation_input",
      "read_simulation_input_limited",
      "read_simulation_input_filtered",
      "read_simulation_input_filtered_limited",
      "read_simulation_results",
      "update_decision_tree_sql",
      "update_decision_tree_diagram",
      "get_outcome_distribution",
      "delete_decision_tree_nodes",
      "delete_decision_tree",
      "insert_decision_tree",
      "get_validation_summary",
      "get_failed_validations",
      "get_validation_by_outcome",
      "get_simulation_stats",
      "delete_simulation_results",
      "delete_all_simulation_results"
    ],
    "body": "read_decision_tree, read_decision_tree_nodes, get_decision_fields, create_sim_data_table, create_sim_output_table, insert_sim_result_with_verification, insert_sim_result_no_verification, read_simulation_input, read_simulation_input_limited, read_simulation_input_filtered, read_simulation_input_filtered_limited, read_simulation_results, update_decision_tree_sql, update_decision_tree_diagram, get_outcome_distribution, delete_decision_tree_nodes, delete_decision_tree, insert_decision_tree, get_validation_summary, get_failed_validations, get_validation_by_outcome, get_simulation_stats, delete_simulation_results, delete_all_simulation_results"
  },
  {
    "path": "factory-service/ObjServiceFilefeed-schema.md",
    "title": "ObjServiceFilefeed Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "bloom_filefeed"
    ],
    "queries": [
      "check_exists",
      "upsert_document",
      "update_tokens",
      "get_document",
      "get_by_client",
      "get_all"
    ],
    "body": "bloom_filefeed, check_exists, upsert_document, update_tokens, get_document, get_by_client, get_all"
  },
  {
    "path": "factory-service/ObjServiceGoogle-schema.md",
    "title": "ObjServiceGoogle Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_integration_sync"
    ],
    "queries": [
      "upsert_sync",
      "get_external_id",
      "get_local_key",
      "get_all_synced",
      "get_synced_by_table"
    ],
    "body": "def_integration_sync, upsert_sync, get_external_id, get_local_key, get_all_synced, get_synced_by_table"
  },
  {
    "path": "factory-service/ObjServiceRss-schema.md",
    "title": "ObjServiceRss Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_rss",
      "data_rssitem"
    ],
    "queries": [
      "upsert_channel",
      "insert_item",
      "check_item_exists",
      "get_channels",
      "get_items",
      "get_latest_items",
      "get_item_by_guid"
    ],
    "body": "def_rss, data_rssitem, upsert_channel, insert_item, check_item_exists, get_channels, get_items, get_latest_items, get_item_by_guid"
  },
  {
    "path": "factory-service/ObjServiceScorecard-schema.md",
    "title": "ObjServiceScorecard Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_scorecard",
      "def_scorecard_context_indexes"
    ],
    "queries": [],
    "body": "def_scorecard, def_scorecard_context_indexes"
  },
  {
    "path": "factory-service/ObjServiceTodoist-schema.md",
    "title": "ObjServiceTodoist Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_todoist_sync"
    ],
    "queries": [
      "upsert_sync",
      "get_todoist_id",
      "get_local_key",
      "get_all_synced",
      "get_synced_by_table"
    ],
    "body": "def_todoist_sync, upsert_sync, get_todoist_id, get_local_key, get_all_synced, get_synced_by_table"
  },
  {
    "path": "factory-service/ObjServiceTruValidate-schema.md",
    "title": "ObjServiceTruValidate Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_truvalidate",
      "data_error_truvalidate"
    ],
    "queries": [
      "get_credentials",
      "get_applicant",
      "insert_error",
      "get_cached",
      "upsert_cache",
      "get_all_cached",
      "get_cache_stats"
    ],
    "body": "data_truvalidate, data_error_truvalidate, get_credentials, get_applicant, insert_error, get_cached, upsert_cache, get_all_cached, get_cache_stats"
  },
  {
    "path": "factory-service/ObjServiceVirtual-schema.md",
    "title": "ObjServiceVirtual Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_simulation"
    ],
    "queries": [],
    "body": "data_simulation"
  },
  {
    "path": "factory-service/ObjServiceWaitmessage-schema.md",
    "title": "ObjServiceWaitmessage Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_service_waitmessage"
    ],
    "queries": [],
    "body": "def_service_waitmessage"
  },
  {
    "path": "factory-service/ObjServiceWeather-schema.md",
    "title": "ObjServiceWeather Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_weather_current",
      "data_weather_history",
      "def_weather"
    ],
    "queries": [
      "upsert_weather",
      "insert_weather_history",
      "get_latest_by_station",
      "get_history_by_station",
      "get_all_stations"
    ],
    "body": "data_weather_current, data_weather_history, def_weather, upsert_weather, insert_weather_history, get_latest_by_station, get_history_by_station, get_all_stations"
  },
  {
    "path": "factory-service/ObjServiceWikipedia-schema.md",
    "title": "ObjServiceWikipedia Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_wikipedia"
    ],
    "queries": [
      "get_cached",
      "upsert_cache",
      "get_all_cached",
      "search_cached"
    ],
    "body": "data_wikipedia, get_cached, upsert_cache, get_all_cached, search_cached"
  },
  {
    "path": "factory-service/ObjServiceZeroBounce-schema.md",
    "title": "ObjServiceZeroBounce Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_zerobounce"
    ],
    "queries": [
      "get_cached",
      "upsert_cache",
      "get_all_cached",
      "get_stats"
    ],
    "body": "data_zerobounce, get_cached, upsert_cache, get_all_cached, get_stats"
  },
  {
    "path": "factory-service/ObjServiceTacticalRPG-schema.md",
    "title": "ObjServiceTacticalRPG Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "game_saves",
      "game_replays",
      "game_progression"
    ],
    "queries": [
      "create_campaign",
      "load_campaign",
      "save_replay",
      "get_unit_progression",
      "update_progression"
    ],
    "body": "game_saves, game_replays, game_progression, create_campaign, load_campaign, save_replay, get_unit_progression, update_progression"
  },
  {
    "path": "factory-service/ObjServiceFHShopify-schema.md",
    "title": "ObjServiceFHShopify Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [
      "get_stale_variants",
      "get_active_promotions",
      "get_product_status",
      "get_product_alternates",
      "get_product_dimensions",
      "get_warranty_data",
      "get_multi_promo_products",
      "preflight_check_reports",
      "preflight_check_text_factories",
      "promo_email_active_promotions",
      "promo_email_promotion_details",
      "get_cache_max_age",
      "get_dry_run_mode",
      "get_colour_types",
      "get_product_colours",
      "get_alternate_colour_suffixes",
      "get_cached_image_hash",
      "save_image_hash",
      "get_promotion_data_single",
      "get_promotion_data_bulk",
      "get_warranty_fields",
      "get_extended_warranty_cost",
      "read_service_connection",
      "get_promotion_dates",
      "get_long_description",
      "get_product_feature",
      "get_product_colour_list",
      "get_colour_display_name",
      "get_all_colour_mappings",
      "upsert_variant_cache",
      "delete_variant_cache",
      "create_dryrun_table",
      "replace_variant_full",
      "delete_inventory_cache",
      "upsert_inventory_cache",
      "get_group_with_descriptions",
      "get_group_products",
      "get_extended_warranty_code",
      "get_extended_warranty_price",
      "insert_variant_reject",
      "update_variant_reject",
      "insert_variant_stub",
      "insert_variant_all_stub",
      "delete_meta_by_variant",
      "delete_variant_by_id",
      "get_promotions_window",
      "get_promotion_products_by_ids",
      "count_stale_variants",
      "count_total_variants",
      "get_web_enabled_products",
      "get_shopify_variants_by_sku",
      "get_variant_product_id",
      "get_product_set_promo",
      "get_previous_promotion",
      "get_previous_promotion_skus",
      "get_product_set_old",
      "get_product_set_active",
      "get_alternate_descriptions",
      "upsert_inventory",
      "get_inventory_cache",
      "update_inventory_sync_time",
      "get_product_id_by_sku",
      "get_sku_by_product_id",
      "update_web_status_flag",
      "get_all_inventory_product_ids",
      "upsert_product_graphql",
      "upsert_variant_graphql",
      "delete_product_cleanup",
      "get_product_id_for_delete",
      "get_duplicate_products",
      "delete_variants_all_by_product",
      "insert_variant_for_meta",
      "update_variant_stockitem",
      "replace_metafield",
      "get_metafield_id",
      "upsert_price_record",
      "get_alternate_guid",
      "get_primary_alternate",
      "replace_image_record",
      "check_existing_product",
      "replace_variant_after_create",
      "replace_location",
      "get_variants_with_stockitem",
      "check_location_exists",
      "replace_location_activation",
      "upsert_cache_max_age",
      "get_dryrun_summary",
      "delete_dryrun_before",
      "truncate_dryrun",
      "insert_dryrun_variant",
      "normalize_promotion_dates",
      "get_dryrun_run_data",
      "bulk_product_details",
      "bulk_promotions",
      "bulk_dimensions",
      "bulk_stock_status",
      "bulk_category_map",
      "collection_name_map"
    ],
    "body": "get_stale_variants, get_active_promotions, get_product_status, get_product_alternates, get_product_dimensions, get_warranty_data, get_multi_promo_products, preflight_check_reports, preflight_check_text_factories, promo_email_active_promotions, promo_email_promotion_details, get_cache_max_age, get_dry_run_mode, get_colour_types, get_product_colours, get_alternate_colour_suffixes, get_cached_image_hash, save_image_hash, get_promotion_data_single, get_promotion_data_bulk, get_warranty_fields, get_extended_warranty_cost, read_service_connection, get_promotion_dates, get_long_description, get_product_feature, get_product_colour_list, get_colour_display_name, get_all_colour_mappings, upsert_variant_cache, delete_variant_cache, create_dryrun_table, replace_variant_full, delete_inventory_cache, upsert_inventory_cache, get_group_with_descriptions, get_group_products, get_extended_warranty_code, get_extended_warranty_price, insert_variant_reject, update_variant_reject, insert_variant_stub, insert_variant_all_stub, delete_meta_by_variant, delete_variant_by_id, get_promotions_window, get_promotion_products_by_ids, count_stale_variants, count_total_variants, get_web_enabled_products, get_shopify_variants_by_sku, get_variant_product_id, get_product_set_promo, get_previous_promotion, get_previous_promotion_skus, get_product_set_old, get_product_set_active, get_alternate_descriptions, upsert_inventory, get_inventory_cache, update_inventory_sync_time, get_product_id_by_sku, get_sku_by_product_id, update_web_status_flag, get_all_inventory_product_ids, upsert_product_graphql, upsert_variant_graphql, delete_product_cleanup, get_product_id_for_delete, get_duplicate_products, delete_variants_all_by_product, insert_variant_for_meta, update_variant_stockitem, replace_metafield, get_metafield_id, upsert_price_record, get_alternate_guid, get_primary_alternate, replace_image_record, check_existing_product, replace_variant_after_create, replace_location, get_variants_with_stockitem, check_location_exists, replace_location_activation, upsert_cache_max_age, get_dryrun_summary, delete_dryrun_before, truncate_dryrun, insert_dryrun_variant, normalize_promotion_dates, get_dryrun_run_data, bulk_product_details, bulk_promotions, bulk_dimensions, bulk_stock_status, bulk_category_map, collection_name_map"
  },
  {
    "path": "factory-service/ObjServiceGoogleHome-schema.md",
    "title": "ObjServiceGoogleHome Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_google_home_devices",
      "def_google_home_events"
    ],
    "queries": [
      "upsert_device",
      "update_device_state",
      "list_devices",
      "log_event",
      "unprocessed_events",
      "mark_event_processed"
    ],
    "body": "def_google_home_devices, def_google_home_events, upsert_device, update_device_state, list_devices, log_event, unprocessed_events, mark_event_processed"
  },
  {
    "path": "factory-service/ObjServiceCalendar-schema.md",
    "title": "ObjServiceCalendar Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_calendar_event"
    ],
    "queries": [
      "upsert_event",
      "get_upcoming"
    ],
    "body": "data_calendar_event, upsert_event, get_upcoming"
  },
  {
    "path": "factory-service/ObjServiceEwelink-schema.md",
    "title": "ObjServiceEwelink Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [],
    "body": ""
  },
  {
    "path": "factory-service/ObjServiceGeyserScheduler-schema.md",
    "title": "ObjServiceGeyserScheduler Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_geyser_schedule"
    ],
    "queries": [
      "get_solar_latest",
      "insert_geyser_log"
    ],
    "body": "data_geyser_schedule, get_solar_latest, insert_geyser_log"
  },
  {
    "path": "factory-service/ObjServiceGmail-schema.md",
    "title": "ObjServiceGmail Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_gmail_cleanup"
    ],
    "queries": [
      "insert_cleanup_run",
      "get_cleanup_summary"
    ],
    "body": "data_gmail_cleanup, insert_cleanup_run, get_cleanup_summary"
  },
  {
    "path": "factory-service/ObjServiceLibreGlucose-schema.md",
    "title": "ObjServiceLibreGlucose Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_glucose"
    ],
    "queries": [
      "insert_glucose",
      "get_glucose_latest",
      "check_glucose_exists",
      "get_glucose_by_date",
      "get_glucose_daily_summary",
      "get_glucose_hourly_average",
      "get_time_in_range"
    ],
    "body": "data_glucose, insert_glucose, get_glucose_latest, check_glucose_exists, get_glucose_by_date, get_glucose_daily_summary, get_glucose_hourly_average, get_time_in_range"
  },
  {
    "path": "factory-service/ObjServiceLife360-schema.md",
    "title": "ObjServiceLife360 Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_life360_location"
    ],
    "queries": [
      "insert_location",
      "upsert_household_location",
      "get_latest_location"
    ],
    "body": "data_life360_location, insert_location, upsert_household_location, get_latest_location"
  },
  {
    "path": "factory-service/ObjServiceLoadshedding-schema.md",
    "title": "ObjServiceLoadshedding Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_loadshedding_precharge",
      "data_loadshedding"
    ],
    "queries": [
      "insert_loadshedding",
      "get_loadshedding_latest",
      "get_loadshedding_by_date",
      "get_loadshedding_daily_summary",
      "get_precharge_last_action",
      "insert_precharge",
      "get_grid_solar_correlation"
    ],
    "body": "data_loadshedding_precharge, data_loadshedding, insert_loadshedding, get_loadshedding_latest, get_loadshedding_by_date, get_loadshedding_daily_summary, get_precharge_last_action, insert_precharge, get_grid_solar_correlation"
  },
  {
    "path": "factory-service/ObjServiceNas-schema.md",
    "title": "ObjServiceNas Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_nas_volume",
      "data_nas_disk",
      "data_nas_system",
      "data_nas_network",
      "data_nas_ssdcache",
      "data_nas_connections",
      "data_nas_backup"
    ],
    "queries": [
      "insert_volume",
      "insert_disk",
      "insert_system",
      "insert_network",
      "insert_ssdcache",
      "insert_connections",
      "insert_backup",
      "get_latest_volume",
      "get_latest_disk",
      "get_latest_system"
    ],
    "body": "data_nas_volume, data_nas_disk, data_nas_system, data_nas_network, data_nas_ssdcache, data_nas_connections, data_nas_backup, insert_volume, insert_disk, insert_system, insert_network, insert_ssdcache, insert_connections, insert_backup, get_latest_volume, get_latest_disk, get_latest_system"
  },
  {
    "path": "factory-service/ObjServiceNetwork-schema.md",
    "title": "ObjServiceNetwork Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_network_router",
      "data_network_interface",
      "data_network_presence",
      "data_household",
      "data_network_health",
      "data_network_device",
      "data_network_member"
    ],
    "queries": [
      "insert_router",
      "insert_interface",
      "insert_presence",
      "insert_health",
      "upsert_household_home",
      "upsert_household_away",
      "get_household",
      "get_latest_health",
      "get_presence_active",
      "get_wan_latency_history",
      "get_devices",
      "upsert_device",
      "delete_device",
      "get_members",
      "upsert_member",
      "delete_member"
    ],
    "body": "data_network_router, data_network_interface, data_network_presence, data_household, data_network_health, data_network_device, data_network_member, insert_router, insert_interface, insert_presence, insert_health, upsert_household_home, upsert_household_away, get_household, get_latest_health, get_presence_active, get_wan_latency_history, get_devices, upsert_device, delete_device, get_members, upsert_member, delete_member"
  },
  {
    "path": "factory-service/ObjServiceNotification-schema.md",
    "title": "ObjServiceNotification Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_notification",
      "data_notification_marker"
    ],
    "queries": [
      "get_marker",
      "upsert_marker",
      "insert_notification"
    ],
    "body": "data_notification, data_notification_marker, get_marker, upsert_marker, insert_notification"
  },
  {
    "path": "factory-service/ObjServiceOpenWeather-schema.md",
    "title": "ObjServiceOpenWeather Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_weather"
    ],
    "queries": [
      "insert_weather",
      "get_weather_latest",
      "get_weather_by_date",
      "get_weather_daily_summary",
      "get_solar_correlation"
    ],
    "body": "data_weather, insert_weather, get_weather_latest, get_weather_by_date, get_weather_daily_summary, get_solar_correlation"
  },
  {
    "path": "factory-service/ObjServiceOwnTracks-schema.md",
    "title": "ObjServiceOwnTracks Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_owntracks_location"
    ],
    "queries": [
      "insert_location",
      "upsert_household_location",
      "get_all_latest",
      "get_person_latest"
    ],
    "body": "data_owntracks_location, insert_location, upsert_household_location, get_all_latest, get_person_latest"
  },
  {
    "path": "factory-service/ObjServicePoolScheduler-schema.md",
    "title": "ObjServicePoolScheduler Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_pool_schedule"
    ],
    "queries": [
      "get_solar_latest",
      "get_last_pump_on",
      "insert_pool_log"
    ],
    "body": "data_pool_schedule, get_solar_latest, get_last_pump_on, insert_pool_log"
  },
  {
    "path": "factory-service/ObjServiceProxmox-schema.md",
    "title": "ObjServiceProxmox Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_proxmox_node",
      "data_proxmox_vm"
    ],
    "queries": [
      "insert_node",
      "insert_vm"
    ],
    "body": "data_proxmox_node, data_proxmox_vm, insert_node, insert_vm"
  },
  {
    "path": "factory-service/ObjServiceSolarman-schema.md",
    "title": "ObjServiceSolarman Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_solarman_plants",
      "def_solarman_devices",
      "def_solarman_readings",
      "data_solar"
    ],
    "queries": [
      "upsert_plant",
      "upsert_device",
      "insert_reading",
      "insert_solar",
      "get_solar_latest",
      "get_solar_by_date",
      "get_solar_daily_summary",
      "get_solar_hourly_average",
      "get_plants",
      "get_devices_by_station",
      "get_latest_reading"
    ],
    "body": "def_solarman_plants, def_solarman_devices, def_solarman_readings, data_solar, upsert_plant, upsert_device, insert_reading, insert_solar, get_solar_latest, get_solar_by_date, get_solar_daily_summary, get_solar_hourly_average, get_plants, get_devices_by_station, get_latest_reading"
  },
  {
    "path": "factory-service/ObjServiceSwitch-schema.md",
    "title": "ObjServiceSwitch Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_switch_info",
      "data_switch_port",
      "data_switch_poe"
    ],
    "queries": [
      "insert_info",
      "insert_port",
      "insert_poe",
      "get_latest_ports",
      "get_latest_poe",
      "get_poe_history"
    ],
    "body": "data_switch_info, data_switch_port, data_switch_poe, insert_info, insert_port, insert_poe, get_latest_ports, get_latest_poe, get_poe_history"
  },
  {
    "path": "factory-service/ObjServiceTile-schema.md",
    "title": "ObjServiceTile Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_tile_location"
    ],
    "queries": [
      "insert_location",
      "get_latest",
      "get_all_latest"
    ],
    "body": "data_tile_location, insert_location, get_latest, get_all_latest"
  },
  {
    "path": "factory-service/ObjServiceTraccar-schema.md",
    "title": "ObjServiceTraccar Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_traccar_position"
    ],
    "queries": [
      "insert_position",
      "get_latest_all",
      "get_device_history"
    ],
    "body": "data_traccar_position, insert_position, get_latest_all, get_device_history"
  },
  {
    "path": "factory-service/ObjServiceTuya-schema.md",
    "title": "ObjServiceTuya Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [],
    "body": ""
  },
  {
    "path": "factory-service/ObjServiceWireless-schema.md",
    "title": "ObjServiceWireless Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_wireless_wifi",
      "data_wireless_bt"
    ],
    "queries": [
      "insert_wifi",
      "insert_bt",
      "get_latest_wifi",
      "get_latest_bt",
      "get_wifi_history",
      "get_bt_seen"
    ],
    "body": "data_wireless_wifi, data_wireless_bt, insert_wifi, insert_bt, get_latest_wifi, get_latest_bt, get_wifi_history, get_bt_seen"
  },
  {
    "path": "factory-service/ObjServiceBureau-schema.md",
    "title": "ObjServiceBureau Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_bureau"
    ],
    "queries": [],
    "body": "def_bureau"
  },
  {
    "path": "factory-service/ObjServiceGBG-schema.md",
    "title": "ObjServiceGBG Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "bloom_gbg"
    ],
    "queries": [
      "oauth_credentials",
      "check_cache",
      "save_cache"
    ],
    "body": "bloom_gbg, oauth_credentials, check_cache, save_cache"
  },
  {
    "path": "factory-service/ObjServiceJaNee-schema.md",
    "title": "ObjServiceJaNee Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [
      "find_client_context",
      "create_cache_table",
      "read_cache_row",
      "upsert_cache_row"
    ],
    "body": "find_client_context, create_cache_table, read_cache_row, upsert_cache_row"
  },
  {
    "path": "factory-service/ObjServicePromocardimage-schema.md",
    "title": "ObjServicePromocardimage Schema",
    "factory": "factory.service",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [
      "fetch_selected_promo",
      "fetch_promo_by_keys",
      "fetch_active_promo_for_product",
      "fetch_promo_window_raw",
      "show_sys_user_columns",
      "select_sys_user_columns_information_schema",
      "lookup_sys_user_by_msisdn",
      "lookup_sys_user_by_code",
      "db_constant_from_def_constants",
      "db_constant_from_def_constant_code",
      "db_constant_from_def_constant_name",
      "product_image_from_cache"
    ],
    "body": "fetch_selected_promo, fetch_promo_by_keys, fetch_active_promo_for_product, fetch_promo_window_raw, show_sys_user_columns, select_sys_user_columns_information_schema, lookup_sys_user_by_msisdn, lookup_sys_user_by_code, db_constant_from_def_constants, db_constant_from_def_constant_code, db_constant_from_def_constant_name, product_image_from_cache"
  },
  {
    "path": "factory-deploy/ObjAudit-schema.md",
    "title": "ObjAudit Schema",
    "factory": "factory.deploy",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "log_audit"
    ],
    "queries": [
      "get_audit"
    ],
    "body": "log_audit, get_audit"
  },
  {
    "path": "factory-deploy/ObjBuild-schema.md",
    "title": "ObjBuild Schema",
    "factory": "factory.deploy",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "log_build_run",
      "log_build_step",
      "log_build_compile",
      "log_build_scan",
      "log_build_review",
      "log_build_image",
      "log_build_compile_set"
    ],
    "queries": [
      "insert_run",
      "update_host_info",
      "finish_run",
      "insert_step",
      "finish_step",
      "insert_compile",
      "insert_scan",
      "get_scan",
      "insert_compile_set",
      "get_run",
      "get_steps",
      "get_compile_summary",
      "get_compile_failures",
      "get_recent_runs"
    ],
    "body": "log_build_run, log_build_step, log_build_compile, log_build_scan, log_build_review, log_build_image, log_build_compile_set, insert_run, update_host_info, finish_run, insert_step, finish_step, insert_compile, insert_scan, get_scan, insert_compile_set, get_run, get_steps, get_compile_summary, get_compile_failures, get_recent_runs"
  },
  {
    "path": "factory-deploy/ObjWiki-schema.md",
    "title": "ObjWiki Schema",
    "factory": "factory.deploy",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [],
    "body": ""
  },
  {
    "path": "factory-deploy/ObjCompile-schema.md",
    "title": "ObjCompile Schema",
    "factory": "factory.deploy",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "data_compile",
      "def_module"
    ],
    "queries": [
      "migrate_data_compile_add_can_mypy",
      "migrate_data_compile_add_can_ty",
      "migrate_data_compile_add_can_bandit",
      "migrate_data_compile_add_mypy_error",
      "migrate_data_compile_add_ty_error",
      "migrate_data_compile_add_bandit_error",
      "migrate_data_compile_add_ollama_review",
      "upsert_compile",
      "delete_module",
      "insert_module",
      "update_module"
    ],
    "body": "data_compile, def_module, migrate_data_compile_add_can_mypy, migrate_data_compile_add_can_ty, migrate_data_compile_add_can_bandit, migrate_data_compile_add_mypy_error, migrate_data_compile_add_ty_error, migrate_data_compile_add_bandit_error, migrate_data_compile_add_ollama_review, upsert_compile, delete_module, insert_module, update_module"
  },
  {
    "path": "factory-deploy/ObjPackage-schema.md",
    "title": "ObjPackage Schema",
    "factory": "factory.deploy",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_package_snapshot",
      "def_package_tables",
      "def_package_snapshot_tables"
    ],
    "queries": [],
    "body": "def_package_snapshot, def_package_tables, def_package_snapshot_tables"
  },
  {
    "path": "factory-deploy/ObjDocker-schema.md",
    "title": "ObjDocker Schema",
    "factory": "factory.deploy",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [],
    "body": ""
  },
  {
    "path": "factory-report/ObjReportRss-schema.md",
    "title": "ObjReportRss Schema",
    "factory": "factory.report",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [
      "get_feed_items",
      "get_feed_items_by_profile"
    ],
    "body": "get_feed_items, get_feed_items_by_profile"
  },
  {
    "path": "factory-report/ObjReportKanban-schema.md",
    "title": "ObjReportKanban Schema",
    "factory": "factory.report",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [
      "get_kanban_tickets",
      "get_distinct_assignees",
      "get_distinct_types"
    ],
    "body": "get_kanban_tickets, get_distinct_assignees, get_distinct_types"
  },
  {
    "path": "factory-report/ObjReportSla-schema.md",
    "title": "ObjReportSla Schema",
    "factory": "factory.report",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [
      "sla_summary",
      "overdue_tickets",
      "approaching_deadline",
      "daily_trend",
      "priority_breakdown",
      "assignee_breakdown"
    ],
    "body": "sla_summary, overdue_tickets, approaching_deadline, daily_trend, priority_breakdown, assignee_breakdown"
  },
  {
    "path": "factory-report/ObjReportSysGuiMenu-schema.md",
    "title": "ObjReportSysGuiMenu Schema",
    "factory": "factory.report",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_menu",
      "def_menugroup"
    ],
    "queries": [
      "get_menu_group_name",
      "get_menu_items",
      "insert_menu_groups"
    ],
    "body": "def_menu, def_menugroup, get_menu_group_name, get_menu_items, insert_menu_groups"
  },
  {
    "path": "factory-web/ObjFlowGenerator-schema.md",
    "title": "ObjFlowGenerator Schema",
    "factory": "factory.web",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [
      "default_report_query",
      "default_calc_query",
      "get_table_metadata",
      "replace_into_row",
      "list_existing_build_versions",
      "create_def_module_table",
      "alter_def_module_add_moduleguid",
      "alter_def_module_add_module",
      "alter_def_module_add_package",
      "alter_def_module_add_buildversion",
      "alter_def_module_add_installdate",
      "alter_def_module_add_builddate",
      "alter_def_module_add_buildyaml",
      "alter_def_module_add_changelogmd",
      "alter_def_module_add_active",
      "deactivate_active_module_builds",
      "upsert_module_build",
      "delete_by_where",
      "get_primary_key_columns",
      "read_row_by_key",
      "count_rows_by_key"
    ],
    "body": "default_report_query, default_calc_query, get_table_metadata, replace_into_row, list_existing_build_versions, create_def_module_table, alter_def_module_add_moduleguid, alter_def_module_add_module, alter_def_module_add_package, alter_def_module_add_buildversion, alter_def_module_add_installdate, alter_def_module_add_builddate, alter_def_module_add_buildyaml, alter_def_module_add_changelogmd, alter_def_module_add_active, deactivate_active_module_builds, upsert_module_build, delete_by_where, get_primary_key_columns, read_row_by_key, count_rows_by_key"
  },
  {
    "path": "factory-web/ObjRouteRegistry-schema.md",
    "title": "ObjRouteRegistry Schema",
    "factory": "factory.web",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_screen",
      "def_route"
    ],
    "queries": [
      "resolve_route"
    ],
    "body": "def_screen, def_route, resolve_route"
  },
  {
    "path": "factory-web/ObjWeblog-schema.md",
    "title": "ObjWeblog Schema",
    "factory": "factory.web",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "sys_weblog",
      "sys_weblog_daily"
    ],
    "queries": [],
    "body": "sys_weblog, sys_weblog_daily"
  },
  {
    "path": "factory-web/WebForm-schema.md",
    "title": "WebForm Schema",
    "factory": "factory.web",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_form",
      "def_formfields",
      "def_form_validations",
      "def_formflow",
      "def_formflow_forms"
    ],
    "queries": [
      "select_bloom_form_by_guid",
      "select_bloom_form_by_formguid",
      "select_all_from_table_limit1",
      "select_all_from_table_where_prefix",
      "select_all_form_fields",
      "select_form_field_default_cached",
      "select_form_field_default",
      "select_form_definition",
      "count_form_validations",
      "select_form_redirect_sql",
      "select_form_definition_redirected",
      "select_form_meta",
      "select_field_type_for_element",
      "select_form_fields_for_layout",
      "select_field_type_for_binary",
      "select_form_base_table",
      "select_trim_field_type",
      "create_base_table_if_not_exists",
      "alter_table_modify_longtext",
      "create_bloom_table_if_not_exists",
      "create_kv_table_if_not_exists",
      "alter_kv_table_add_loadedtime_index",
      "insert_ignore_kv_rows_prefix",
      "insert_bloom_table_prefix",
      "select_exists_by_where",
      "insert_into_table_prefix",
      "values_prefix",
      "update_table_set_prefix",
      "where_prefix",
      "select_verify_by_where",
      "select_form_buttons",
      "update_form_layout",
      "show_columns_from_table",
      "replace_into_def_formfields_from_table",
      "select_primary_columns_for_table",
      "replace_into_def_form_dynamic"
    ],
    "body": "def_form, def_formfields, def_form_validations, def_formflow, def_formflow_forms, select_bloom_form_by_guid, select_bloom_form_by_formguid, select_all_from_table_limit1, select_all_from_table_where_prefix, select_all_form_fields, select_form_field_default_cached, select_form_field_default, select_form_definition, count_form_validations, select_form_redirect_sql, select_form_definition_redirected, select_form_meta, select_field_type_for_element, select_form_fields_for_layout, select_field_type_for_binary, select_form_base_table, select_trim_field_type, create_base_table_if_not_exists, alter_table_modify_longtext, create_bloom_table_if_not_exists, create_kv_table_if_not_exists, alter_kv_table_add_loadedtime_index, insert_ignore_kv_rows_prefix, insert_bloom_table_prefix, select_exists_by_where, insert_into_table_prefix, values_prefix, update_table_set_prefix, where_prefix, select_verify_by_where, select_form_buttons, update_form_layout, show_columns_from_table, replace_into_def_formfields_from_table, select_primary_columns_for_table, replace_into_def_form_dynamic"
  },
  {
    "path": "factory-web/WebFormElement-schema.md",
    "title": "WebFormElement Schema",
    "factory": "factory.web",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [
      "select_field_peers"
    ],
    "body": "select_field_peers"
  },
  {
    "path": "factory-conversation/ObjConversationTwilio-schema.md",
    "title": "ObjConversationTwilio Schema",
    "factory": "factory.conversation",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [
      "select_sender_language",
      "update_sender_language"
    ],
    "body": "select_sender_language, update_sender_language"
  },
  {
    "path": "factory-conversation/ObjConversationWeb-schema.md",
    "title": "ObjConversationWeb Schema",
    "factory": "factory.conversation",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [
      "insert_web_conversation_message",
      "select_web_conversation_since"
    ],
    "body": "insert_web_conversation_message, select_web_conversation_since"
  },
  {
    "path": "factory-conversation/ObjConversationWhatsapp-schema.md",
    "title": "ObjConversationWhatsapp Schema",
    "factory": "factory.conversation",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [],
    "queries": [
      "select_conversation_code_by_remoteconnection"
    ],
    "body": "select_conversation_code_by_remoteconnection"
  },
  {
    "path": "factory-ai/ObjAi-schema.md",
    "title": "ObjAi Schema",
    "factory": "factory.ai",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_ai_bot_memory"
    ],
    "queries": [],
    "body": "def_ai_bot_memory"
  },
  {
    "path": "factory-ai/ObjAiVision-schema.md",
    "title": "ObjAiVision Schema",
    "factory": "factory.ai",
    "type": "yaml",
    "tags": [
      "schema"
    ],
    "tables": [
      "def_vision_analysis"
    ],
    "queries": [],
    "body": "def_vision_analysis"
  },
  {
    "path": "factory-core/ConfigIni-api.md",
    "title": "ConfigIni API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ConfigError",
      "ConfigIni"
    ],
    "methods": [
      "debug",
      "remote_connections",
      "primary_ip",
      "seeddisk_cache",
      "seed_awsdisk_cache",
      "send_infisical_alert",
      "send_aws_secrets_alert",
      "is_aws",
      "is_kvm",
      "has_private_key",
      "has_public_key",
      "encrypt",
      "decrypt",
      "clear_cache",
      "Get",
      "get_secret",
      "cycle",
      "get_db_config",
      "get_provider_config",
      "get_active_db_name",
      "get_mac_address",
      "annotate_config"
    ],
    "body": "ConfigError, ConfigIni"
  },
  {
    "path": "factory-core/Decorators-api.md",
    "title": "Decorators API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-core/ObjAI-api.md",
    "title": "ObjAI API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAI"
    ],
    "methods": [
      "set_model",
      "has_ollama",
      "has_gpu",
      "has_ai",
      "vram_gb",
      "cpu_cores",
      "get_model",
      "get_model_vision",
      "get_model_embedding",
      "check_service_on_gpu",
      "local_process_text",
      "get_documents_query",
      "compute_embeddings",
      "find_prompt_match",
      "llm_factory",
      "mcp_factory",
      "list_providers",
      "prompt",
      "capture",
      "review_sql",
      "review_efficiency",
      "workflow_prompt"
    ],
    "body": "ObjAI"
  },
  {
    "path": "factory-core/ObjAiRag-api.md",
    "title": "ObjAiRag API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAiRag"
    ],
    "methods": [
      "create_collection",
      "delete_collection",
      "list_collections",
      "get_collection_stats",
      "index_file",
      "index_directory",
      "index_codebase",
      "reindex_changed",
      "search",
      "query",
      "ask"
    ],
    "body": "ObjAiRag"
  },
  {
    "path": "factory-core/ObjAlert-api.md",
    "title": "ObjAlert API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "AlertMetrics",
      "ObjAlert"
    ],
    "methods": [
      "record_check",
      "get_stats",
      "format_stats",
      "print_stats",
      "patch_param",
      "process_text",
      "alert_track",
      "check",
      "import_remote",
      "check_remote",
      "Service",
      "write_metrics_to_db",
      "cleanup_old_metrics",
      "detect_anomalies",
      "is_maintenance_window",
      "should_suppress_alert",
      "should_throttle_alert",
      "trigger_alert_storm_warning",
      "acknowledge_alert",
      "resolve_alert",
      "check_escalations",
      "escalate_alert",
      "check_recoveries",
      "send_recovery_notification",
      "check_predictive_alerts",
      "enrich_alert_context",
      "get_runbook_path",
      "load_runbook_content",
      "generate_runbook_stub",
      "get_alert_state",
      "get_alert_dashboard_json",
      "analyze_alert_correlations",
      "detect_alert_sequences",
      "suggest_dependencies",
      "group_correlated_alerts",
      "get_correlation_matrix"
    ],
    "body": "AlertMetrics, ObjAlert"
  },
  {
    "path": "factory-core/ObjAlertIncident-api.md",
    "title": "ObjAlertIncident API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAlertIncident"
    ],
    "methods": [
      "create_incident",
      "update_incident_status",
      "add_incident_notes",
      "close_incident",
      "link_alert_to_incident",
      "get_incident_alerts",
      "add_incident_timeline",
      "get_incident_timeline",
      "get_incident",
      "get_incident_notes",
      "list_incidents",
      "get_incident_metrics",
      "get_incident_trends",
      "merge_incidents",
      "generate_incident_report",
      "get_sla_for_package",
      "email_incident_report",
      "generate_short_ref",
      "log_communication",
      "get_incident_communications",
      "get_communication_by_ref",
      "notify_incident"
    ],
    "body": "ObjAlertIncident"
  },
  {
    "path": "factory-core/ObjApi-api.md",
    "title": "ObjApi API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjApi",
      "ObjApiSpec",
      "OperationBenchmark"
    ],
    "methods": [
      "debug",
      "info",
      "benchmark_start_workflow",
      "benchmark_end_workflow",
      "benchmark_operation",
      "display_heartbeat_message",
      "get_memory_usage",
      "get_bloom_table_base",
      "clean_name",
      "clean_dict_keys",
      "patch_param",
      "BloomSlice",
      "ProperCaseFilter",
      "FoldBaseName",
      "bloom_table_data_structure",
      "drop_table_data_structure",
      "list_and_kill_threads",
      "ExtractRules",
      "validate_rules_patch",
      "validate_rules",
      "openapi_type",
      "export_parameters",
      "export_openapi"
    ],
    "body": "ObjApi, ObjApiSpec, OperationBenchmark"
  },
  {
    "path": "factory-core/ObjBOP-api.md",
    "title": "ObjBOP API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjBOP"
    ],
    "methods": [
      "load",
      "save",
      "add_revision",
      "collect_workflow_data",
      "collect_webhook_data",
      "collect_report_data",
      "generate_workflow_diagram",
      "generate_ai_purpose",
      "generate_ai_workflow_description",
      "expand_workflow_description",
      "generate_raci",
      "generate_ai_review",
      "generate",
      "send",
      "to_markdown",
      "save_markdown",
      "list_bops",
      "discover_data_tables",
      "collect_service_data"
    ],
    "body": "ObjBOP"
  },
  {
    "path": "factory-core/ObjBackup-api.md",
    "title": "ObjBackup API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjBackup",
      "BackupSet"
    ],
    "methods": [
      "patch_param",
      "read_backup",
      "pre_call",
      "factory_backup",
      "discover_data_sources",
      "auto_register_sources",
      "save_to_yaml",
      "load_from_yaml",
      "cleanup_old_backups",
      "send_backup_report",
      "pack",
      "archive",
      "create",
      "stage",
      "pre_stage",
      "read",
      "run_workflow_direct"
    ],
    "body": "ObjBackup, BackupSet"
  },
  {
    "path": "factory-core/ObjBarcode-api.md",
    "title": "ObjBarcode API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Barcode",
      "TestBarcode"
    ],
    "methods": [
      "Parse",
      "Render",
      "int_c",
      "check_digit_ean13",
      "valid_ean13",
      "expand_ean13",
      "check_digit_upc",
      "valid_upc",
      "valid",
      "get_isbn",
      "test_barcode"
    ],
    "body": "Barcode, TestBarcode"
  },
  {
    "path": "factory-core/ObjCalculation-api.md",
    "title": "ObjCalculation API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjCalculation"
    ],
    "methods": [
      "patch_param_calc",
      "map_calculation",
      "execute_operation",
      "run_calculation",
      "compile_calculation",
      "load_calculation_set",
      "run_calculation_set",
      "run_benchmark",
      "compare_benchmark",
      "Visualise",
      "send_email"
    ],
    "body": "ObjCalculation"
  },
  {
    "path": "factory-core/ObjCalendar-api.md",
    "title": "ObjCalendar API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjEvent",
      "ObjCalendar"
    ],
    "methods": [
      "random",
      "save",
      "update_event_time",
      "get_event_list",
      "compute_constraint",
      "get_event_json",
      "clean_events",
      "read_ical_file"
    ],
    "body": "ObjEvent, ObjCalendar"
  },
  {
    "path": "factory-core/ObjChannel-api.md",
    "title": "ObjChannel API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjChannel"
    ],
    "methods": [
      "process_text",
      "read",
      "create",
      "update",
      "get_email_banner",
      "size_image",
      "render_email_banner",
      "render_report",
      "next_weekday",
      "patch_param",
      "patch_channel_param",
      "render_attachment_document",
      "render_attachment_report_pdfs",
      "render_attachment_mail_pdf",
      "render_pdf",
      "render_attachment_reports",
      "render_template",
      "envelope",
      "render_email",
      "render_attachments",
      "mail"
    ],
    "body": "ObjChannel"
  },
  {
    "path": "factory-core/ObjChannelmail-api.md",
    "title": "ObjChannelmail API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ChannelMail",
      "ChannelMailSet",
      "ChannelDirectSet",
      "channel_sender",
      "ChannelStage",
      "ChannelStageSet"
    ],
    "methods": [
      "read",
      "read_on_guid",
      "validate",
      "create",
      "update",
      "set_guid",
      "mark_visit",
      "mark_mail",
      "read",
      "set_guid",
      "users_to_channel",
      "mail",
      "read",
      "run",
      "patch_param",
      "update",
      "read",
      "render",
      "create",
      "read",
      "Build",
      "ActionResponses",
      "launch_service",
      "micro_service",
      "run_direct"
    ],
    "body": "ChannelMail, ChannelMailSet, ChannelDirectSet, channel_sender, ChannelStage, ChannelStageSet"
  },
  {
    "path": "factory-core/ObjConnection-api.md",
    "title": "ObjConnection API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjConnection",
      "ObjConnectionInfo",
      "ObjConnectionPool"
    ],
    "methods": [
      "Release",
      "ShowTables",
      "ShowColumns",
      "Connect",
      "Ping",
      "version",
      "RemoteInit",
      "Connect",
      "Release",
      "remote_connectBase",
      "DBType",
      "Transform",
      "NotEmpty",
      "CheckRemote",
      "Check"
    ],
    "body": "ObjConnection, ObjConnectionInfo, ObjConnectionPool"
  },
  {
    "path": "factory-core/ObjConnectionPool-api.md",
    "title": "ObjConnectionPool API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ConnectionPool",
      "PooledConnection"
    ],
    "methods": [
      "acquire",
      "release",
      "close_all",
      "get_stats",
      "close"
    ],
    "body": "ConnectionPool, PooledConnection"
  },
  {
    "path": "factory-core/ObjConsole-api.md",
    "title": "ObjConsole API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjConsole"
    ],
    "methods": [
      "print",
      "dispatcher"
    ],
    "body": "ObjConsole"
  },
  {
    "path": "factory-core/ObjConstants-api.md",
    "title": "ObjConstants API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ConfigIniConstants",
      "EncryptionConstants",
      "PythonVersionConstants",
      "AppConstants",
      "WorkflowConstants",
      "DataTransferConstants",
      "SimulationConstants",
      "WorkflowContextKeys",
      "QueueContextKeys",
      "IconConstants",
      "WorkflowNodeIcons",
      "WebHookConstants",
      "DecisionSwitchConstants",
      "DecisionSegmentConstants",
      "DecisionMatrixConstants",
      "CalculationConstants",
      "SchedulerConstants",
      "ScorecardConstants",
      "TicketConstants",
      "DocumentEnhancementConstants",
      "MqttConstants",
      "GeoLocationConstants",
      "TuiConstants",
      "MonitorConstants",
      "InternetConstants",
      "AiConstants",
      "AclConstants",
      "ConversationConstants",
      "ThreadPoolConstants",
      "RetryConstants",
      "BatchConstants",
      "EmailConstants",
      "SupervisorConstants",
      "ServiceConstants",
      "FtpConstants",
      "BackupConstants",
      "DataImportConstants",
      "CalendarConstants",
      "MongoConstants",
      "CacheConstants",
      "CdnConstants",
      "PortConstants",
      "NotifyConstants",
      "SmsConstants",
      "SecurityAuditConstants",
      "EnvironmentConstants"
    ],
    "methods": [],
    "body": "ConfigIniConstants, EncryptionConstants, PythonVersionConstants, AppConstants, WorkflowConstants, DataTransferConstants, SimulationConstants, WorkflowContextKeys, QueueContextKeys, IconConstants, WorkflowNodeIcons, WebHookConstants, DecisionSwitchConstants, DecisionSegmentConstants, DecisionMatrixConstants, CalculationConstants, SchedulerConstants, ScorecardConstants, TicketConstants, DocumentEnhancementConstants, MqttConstants, GeoLocationConstants, TuiConstants, MonitorConstants, InternetConstants, AiConstants, AclConstants, ConversationConstants, ThreadPoolConstants, RetryConstants, BatchConstants, EmailConstants, SupervisorConstants, ServiceConstants, FtpConstants, BackupConstants, DataImportConstants, CalendarConstants, MongoConstants, CacheConstants, CdnConstants, PortConstants, NotifyConstants, SmsConstants, SecurityAuditConstants, EnvironmentConstants"
  },
  {
    "path": "factory-core/ObjConversation-api.md",
    "title": "ObjConversation API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjConversation",
      "ObjConversationService"
    ],
    "methods": [
      "safe_getattr",
      "get_constants",
      "calculate_next_offset",
      "get_available_langs",
      "local_process_text",
      "get_page_detail",
      "write",
      "get_page_option",
      "store_option",
      "reset_options",
      "get_pagetext",
      "data_line",
      "read_intent",
      "read_contact",
      "resolve_page",
      "execute_reroute_workflow",
      "execute_context_workflow",
      "call_ai_prompt",
      "render_report_as_lines",
      "reroute_page",
      "route_page",
      "display_context",
      "display_options",
      "display_keys",
      "receive_message",
      "conversation_factory",
      "read_conversation",
      "journey_test",
      "read",
      "recon",
      "render_flow",
      "display_summary",
      "list_engines",
      "trace_conversation",
      "check_lang_coverage"
    ],
    "body": "ObjConversation, ObjConversationService"
  },
  {
    "path": "factory-core/ObjData-api.md",
    "title": "ObjData API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataMongo",
      "ObjDataDDL",
      "ObjData",
      "TestConnections"
    ],
    "methods": [
      "format_uptime_seconds",
      "version",
      "load_queries",
      "get_queries",
      "get_js",
      "get_html",
      "get_css",
      "get_cache_ttl",
      "get_svg",
      "get_query_template",
      "get_prompts",
      "get_template",
      "get_templates",
      "get_data",
      "get_notes",
      "create_tables_from_yaml",
      "get_query_from_yaml",
      "create_forms_from_yaml",
      "create_reference_table",
      "get_constants",
      "get_constant",
      "patch_constants",
      "note_check",
      "replace_placeholders",
      "get_ssl",
      "is_simulation",
      "get_domongo",
      "get_collation",
      "get_storage_engine",
      "get_ini_value",
      "get_ini_int",
      "get_ini_float",
      "get_ini_bool",
      "get_model",
      "get_model_vision",
      "get_model_embedding",
      "get_acl",
      "get_package",
      "get_deployment",
      "get_parent_branch",
      "get_version_name",
      "get_role",
      "get_package_and_archetype",
      "get_realm",
      "is_virtual_service",
      "db_type",
      "DBType",
      "is_ms_sql",
      "is_postgres",
      "is_sqlite",
      "get_db_cursor",
      "sql_set_dict",
      "sql_set_list",
      "sql_transfer_query",
      "execute_sql_file",
      "execute_set",
      "escape_html",
      "escape_sql",
      "sql_format",
      "text_format",
      "set_table",
      "get_table_primary",
      "get_sql_epoch",
      "get_epoch_string",
      "get_sql_epoch_string",
      "decode_description",
      "read_description",
      "read_cursor",
      "read_sql_direct",
      "dict_read_object",
      "sql_read_object",
      "patch",
      "transform",
      "get_delete_sql",
      "get_update_sql",
      "get_insert_sql",
      "get_insert_ignore_sql",
      "get_replace_sql",
      "commit",
      "render_field_base",
      "render_field",
      "update",
      "create",
      "EscapeHtml",
      "SetTable",
      "GetTablePrimary",
      "Patch",
      "Transform",
      "GetInsertSql",
      "GetInsertIgnoreSql",
      "GetReplaceSql",
      "Commit",
      "BuildSchema",
      "GetForm",
      "RenderFieldName",
      "RenderFieldBase",
      "RegisterParameter",
      "RenderField",
      "BuildObject",
      "Update",
      "Create",
      "import_normalise",
      "get_table_types",
      "get_db_record",
      "db_reconnect",
      "check_cron",
      "backup",
      "get_image",
      "get_webfile",
      "read_webfile",
      "tag_markdown",
      "preflight",
      "check_preflight",
      "test_Encryption",
      "test_Remote"
    ],
    "body": "ObjDataMongo, ObjDataDDL, ObjData, TestConnections"
  },
  {
    "path": "factory-core/ObjDataDictionary-api.md",
    "title": "ObjDataDictionary API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataDictionary"
    ],
    "methods": [
      "import_from_pmml"
    ],
    "body": "ObjDataDictionary"
  },
  {
    "path": "factory-core/ObjDataExport-api.md",
    "title": "ObjDataExport API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataExport",
      "ExportSet"
    ],
    "methods": [
      "render_report",
      "load_factory_object",
      "process_report_clean",
      "process_report",
      "process",
      "update_tracking",
      "get_query_results",
      "render_query",
      "update_stage",
      "read",
      "launch_service",
      "micro_service"
    ],
    "body": "ObjDataExport, ExportSet"
  },
  {
    "path": "factory-core/ObjDataImport-api.md",
    "title": "ObjDataImport API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFileSystemEvent",
      "ImportMetrics",
      "ObjDataImport"
    ],
    "methods": [
      "get_trigger_mask",
      "check_trigger",
      "process_event",
      "on_created",
      "on_modified",
      "on_moved",
      "debug",
      "record_import",
      "get_stats",
      "print_stats",
      "patch_param",
      "pre_sql",
      "post_sql",
      "cleanup_old_import_tables",
      "process",
      "run_workflow",
      "update_stage",
      "factory_object",
      "get_file_guid",
      "must_import",
      "update_tracking",
      "sanitize_column_names",
      "commit_block",
      "commit_block_fast",
      "write_segments",
      "commit_data",
      "import_file",
      "write_metrics_to_db",
      "send_status_message",
      "cleanup_old_metrics",
      "detect_anomalies",
      "import_directory",
      "new_column",
      "add_key",
      "create_table",
      "process_text",
      "direct_import",
      "download_test_data",
      "get_trigger_mask",
      "check_trigger",
      "scan_and_import",
      "watch",
      "get_watch_config",
      "reload_watch_config",
      "run_once"
    ],
    "body": "ObjFileSystemEvent, ImportMetrics, ObjDataImport"
  },
  {
    "path": "factory-core/ObjDataModel-api.md",
    "title": "ObjDataModel API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataModel"
    ],
    "methods": [
      "read",
      "save",
      "delete",
      "list",
      "count",
      "exists",
      "get",
      "set",
      "from_dict",
      "to_dict",
      "last_errors",
      "invalidate_cache",
      "validate"
    ],
    "body": "ObjDataModel"
  },
  {
    "path": "factory-core/ObjDataModelEdit-api.md",
    "title": "ObjDataModelEdit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataModelEdit"
    ],
    "methods": [
      "validate_yaml",
      "load_model",
      "save_model",
      "load_data",
      "save_data",
      "sync_schema",
      "diff_model",
      "load_model_for_formflow",
      "load_model_for_workflow",
      "load_model_for_service",
      "unregister_table",
      "delete_model",
      "load_all",
      "save_all",
      "get_models_for_table",
      "list_models",
      "get_description",
      "set_description"
    ],
    "body": "ObjDataModelEdit"
  },
  {
    "path": "factory-core/ObjDataSeed-api.md",
    "title": "ObjDataSeed API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataSeed"
    ],
    "methods": [
      "get_faker",
      "fake_name",
      "fake_first_name",
      "fake_last_name",
      "fake_email",
      "fake_phone",
      "fake_address",
      "fake_street_address",
      "fake_city",
      "fake_country",
      "fake_company",
      "fake_ipv4",
      "fake_hostname",
      "fake_user_agent",
      "fake_sentence",
      "fake_word",
      "fake_text",
      "fake_iso8601",
      "fake_int",
      "fake_float",
      "fake_boolean",
      "fake_choice",
      "fake_uuid",
      "generate_test_data",
      "seed_credit_profiles",
      "seed_credit_score_history"
    ],
    "body": "ObjDataSeed"
  },
  {
    "path": "factory-core/ObjDataStore-api.md",
    "title": "ObjDataStore API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataStore"
    ],
    "methods": [
      "schema_get_fields",
      "schema_get_primary",
      "schema_block_to_package",
      "schema_add_package",
      "schema_refactor_def",
      "schema_validate_def",
      "get_history_by_month",
      "trim_history_by_month",
      "delete_buffer",
      "move_to_history_by_month",
      "normalise_history",
      "trim_history",
      "move_to_history",
      "remove_redacted",
      "move_documents",
      "get_table_size_mb",
      "get_existing_history_tables",
      "get_history_by_month_fast",
      "history_check",
      "truncate_check",
      "get_history_estimate"
    ],
    "body": "ObjDataStore"
  },
  {
    "path": "factory-core/ObjDataThreadSafe-api.md",
    "title": "ObjDataThreadSafe API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataThreadSafe",
      "ObjDataPooled"
    ],
    "methods": [
      "close_thread_connection",
      "get_pool_stats",
      "close_all_connections",
      "db_reconnect",
      "release_connection"
    ],
    "body": "ObjDataThreadSafe, ObjDataPooled"
  },
  {
    "path": "factory-core/ObjDataTransfer-api.md",
    "title": "ObjDataTransfer API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataTransfer"
    ],
    "methods": [
      "load_yaml_query",
      "update_progress",
      "validate_transfer",
      "transfer_incremental",
      "transfer_with_retry",
      "transfer_dry_run",
      "initialize_notification_codes",
      "get_connection_type",
      "track_transfer_start",
      "track_transfer_end",
      "remote_connect_source",
      "remote_connect_target",
      "is_type_compatible",
      "yaml_read_file",
      "yaml_write_file",
      "yaml_infer_schema",
      "yaml_get_fields_from_file",
      "transfer_query",
      "validate_cron_schedule",
      "should_run_transfer",
      "validate_structure",
      "transfer_structure",
      "transfer_bulk_set",
      "transfer",
      "run_workflow_direct"
    ],
    "body": "ObjDataTransfer"
  },
  {
    "path": "factory-core/ObjDecisionMatrix-api.md",
    "title": "ObjDecisionMatrix API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDecisionMatrix"
    ],
    "methods": [
      "clean_value",
      "is_valid_float",
      "evaluate",
      "read",
      "compute_matrix",
      "simulate",
      "get_matched_value",
      "load_csv",
      "save_csv",
      "send_email"
    ],
    "body": "ObjDecisionMatrix"
  },
  {
    "path": "factory-core/ObjDecisionRuleset-api.md",
    "title": "ObjDecisionRuleset API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDecisionRuleset"
    ],
    "methods": [
      "read",
      "is_valid_float",
      "evaluate",
      "get_matched_value",
      "compute_ruleset",
      "load_csv",
      "simulate",
      "send_email",
      "save_csv"
    ],
    "body": "ObjDecisionRuleset"
  },
  {
    "path": "factory-core/ObjDecisionSegmentation-api.md",
    "title": "ObjDecisionSegmentation API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDecisionSegmentation"
    ],
    "methods": [
      "read",
      "evaluate",
      "lookup",
      "simulate",
      "send_email"
    ],
    "body": "ObjDecisionSegmentation"
  },
  {
    "path": "factory-core/ObjDecisionSwitch-api.md",
    "title": "ObjDecisionSwitch API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDecisionSwitch"
    ],
    "methods": [
      "clean_value",
      "get_prompts",
      "is_valid_float",
      "evaluate",
      "read",
      "create_simulation_data_table",
      "run_bulk",
      "simulate",
      "get_matched_value",
      "compute_decision"
    ],
    "body": "ObjDecisionSwitch"
  },
  {
    "path": "factory-core/ObjDesktopApp-api.md",
    "title": "ObjDesktopApp API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDesktopApp"
    ],
    "methods": [
      "toast",
      "run"
    ],
    "body": "ObjDesktopApp"
  },
  {
    "path": "factory-core/ObjDocument-api.md",
    "title": "ObjDocument API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Document"
    ],
    "methods": [
      "build_detail",
      "maybe_enhance",
      "read_reference",
      "read",
      "update_context",
      "run_workflow",
      "build_name",
      "ReadOnGuid",
      "RenderPdf",
      "ReadLocal",
      "has_icon",
      "has_preview",
      "has_clip",
      "remove_icon",
      "remove_file",
      "refresh_icon",
      "build_icon",
      "get_file_name",
      "get_base_file_name",
      "get_disposition",
      "has_file",
      "Create",
      "Update",
      "balance",
      "get_icon_url",
      "get_image_url"
    ],
    "body": "Document"
  },
  {
    "path": "factory-core/ObjDocument3D-api.md",
    "title": "ObjDocument3D API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDocument3D"
    ],
    "methods": [
      "load_mesh",
      "generate_preview"
    ],
    "body": "ObjDocument3D"
  },
  {
    "path": "factory-core/ObjDocumentArchive-api.md",
    "title": "ObjDocumentArchive API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDocumentArchive"
    ],
    "methods": [
      "list_contents"
    ],
    "body": "ObjDocumentArchive"
  },
  {
    "path": "factory-core/ObjDocumentAudio-api.md",
    "title": "ObjDocumentAudio API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDocumentAudio"
    ],
    "methods": [
      "load_audio",
      "generate_preview"
    ],
    "body": "ObjDocumentAudio"
  },
  {
    "path": "factory-core/ObjDocumentCode-api.md",
    "title": "ObjDocumentCode API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDocumentCode"
    ],
    "methods": [
      "load_code",
      "generate_preview"
    ],
    "body": "ObjDocumentCode"
  },
  {
    "path": "factory-core/ObjDocumentDelegate-api.md",
    "title": "ObjDocumentDelegate API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDocumentDelegate"
    ],
    "methods": [
      "generate_icon"
    ],
    "body": "ObjDocumentDelegate"
  },
  {
    "path": "factory-core/ObjDocumentEpub-api.md",
    "title": "ObjDocumentEpub API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDocumentEpub"
    ],
    "methods": [
      "extract_cover"
    ],
    "body": "ObjDocumentEpub"
  },
  {
    "path": "factory-core/ObjDocumentFile-api.md",
    "title": "ObjDocumentFile API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "DocumentFile"
    ],
    "methods": [
      "read",
      "locate_file",
      "has_file",
      "read_on_guid",
      "Create",
      "get_file_name",
      "get_base_file_name",
      "bloom_parameters",
      "build_name",
      "set_document_folder",
      "compress_file",
      "patch_param",
      "gcd",
      "grammar_corrector",
      "spelling_corrector",
      "flow_corrector",
      "ocr_pdf",
      "ocr_jpg",
      "crop_image",
      "straighten_image",
      "build_detail",
      "Update"
    ],
    "body": "DocumentFile"
  },
  {
    "path": "factory-core/ObjDocumentSet-api.md",
    "title": "ObjDocumentSet API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "DocumentSet"
    ],
    "methods": [
      "read",
      "Build",
      "scan_storage",
      "retry_on_failure",
      "make_request",
      "download_image",
      "download_to_storage",
      "build_from_template",
      "extract_to_storage",
      "extract_to_zip",
      "extract_to_storage_select",
      "extract_to_zip_select",
      "build_detail",
      "select_compute",
      "process_enhancement_queue"
    ],
    "body": "DocumentSet"
  },
  {
    "path": "factory-core/ObjDocumentSpreadsheet-api.md",
    "title": "ObjDocumentSpreadsheet API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDocumentSpreadsheet"
    ],
    "methods": [
      "load_data",
      "generate_preview"
    ],
    "body": "ObjDocumentSpreadsheet"
  },
  {
    "path": "factory-core/ObjDocumentStore-api.md",
    "title": "ObjDocumentStore API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "TtlMode",
      "MirrorStats",
      "ObjDocumentStore"
    ],
    "methods": [
      "total_synced",
      "set_test_folders",
      "clear_test_folders",
      "parse_document_path",
      "track_mirrored",
      "track_archived",
      "track_deleted",
      "track_file_event",
      "get_file_date",
      "get_day_elapsed",
      "is_file_expired",
      "zip_file",
      "zip_folder",
      "move_file",
      "move",
      "move_documents",
      "sync_file",
      "mirror_folder",
      "mirror_documents",
      "enforce_min_ttl",
      "purge_folder",
      "purge_archived_documents",
      "purge_permanent",
      "rebuild_folder_icons",
      "lifecycle_run"
    ],
    "body": "TtlMode, MirrorStats, ObjDocumentStore"
  },
  {
    "path": "factory-core/ObjDocumentTools-api.md",
    "title": "ObjDocumentTools API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "DocumentTools"
    ],
    "methods": [
      "generate_document_image",
      "convert_mp3_to_wav",
      "resize_to_square"
    ],
    "body": "DocumentTools"
  },
  {
    "path": "factory-core/ObjDocumentUserFile-api.md",
    "title": "ObjDocumentUserFile API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "DocumentUserFile"
    ],
    "methods": [
      "read",
      "read_on_guid",
      "Create",
      "Update"
    ],
    "body": "DocumentUserFile"
  },
  {
    "path": "factory-core/ObjDocumentVideo-api.md",
    "title": "ObjDocumentVideo API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDocumentVideo"
    ],
    "methods": [
      "extract_thumbnail"
    ],
    "body": "ObjDocumentVideo"
  },
  {
    "path": "factory-core/ObjDocuments-api.md",
    "title": "ObjDocuments API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Documents"
    ],
    "methods": [
      "Update",
      "mark_tracker",
      "mark_all",
      "read",
      "ReadFromDocname",
      "Balance",
      "FindMask",
      "apply_mask",
      "apply_import",
      "Import",
      "Build"
    ],
    "body": "Documents"
  },
  {
    "path": "factory-core/ObjEncryption-api.md",
    "title": "ObjEncryption API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjEncryption"
    ],
    "methods": [
      "encode_table",
      "encode_tables",
      "provision",
      "load_public_key",
      "load_private_key",
      "clear_key_cache",
      "encrypt_text",
      "decrypt_text",
      "has_private_key",
      "has_public_key",
      "generate_key",
      "get_public_key_text",
      "save_public_key",
      "save_key",
      "encrypt",
      "decrypt"
    ],
    "body": "ObjEncryption"
  },
  {
    "path": "factory-core/ObjEnum-api.md",
    "title": "ObjEnum API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "FeatureTypeEnum",
      "FeatureDataTypeEnum",
      "FileType",
      "DocType",
      "TicketStatus",
      "TicketPriority",
      "TicketType",
      "TicketAction",
      "TicketNotifyCode",
      "SimulationNotifyCode",
      "NotifyCode",
      "RequestedByType",
      "WebhookReturnType",
      "GithubIssueState",
      "GithubIssueSort",
      "GithubIssueCommentSort",
      "GithubIssueDirection",
      "GithubIssueStateReason",
      "LinkType",
      "TaskStatus",
      "SlaMet",
      "TuiFieldType",
      "FormType",
      "YesNo",
      "QueueStatus",
      "DeploymentEnvironment",
      "WorkflowNodeResultStatus",
      "AclOperation",
      "DatastoreOperation",
      "FlowTargetType",
      "WorkflowLaneType",
      "WorkflowExecutionMode",
      "WorkflowKickoffType",
      "WorkflowNodeType",
      "CalculationOperationType",
      "TransferMode",
      "DatabaseType",
      "BackupType",
      "AlertNotifyMode",
      "IncidentStatus",
      "GeoZoneType",
      "GeoSource",
      "ExcodedEncoding",
      "SchedulerJobStatus",
      "TuiLogLevel",
      "MqttMessageStatus",
      "SchedulerEventType",
      "SupervisorServiceState",
      "MediaType",
      "AiPromptMode",
      "ContentType",
      "WebhookDirection",
      "WebhookStatus",
      "PayloadType",
      "WebHookType",
      "HttpMethod",
      "PostType",
      "ValueType",
      "ParamType",
      "MimeType",
      "ImportAnomalyType",
      "ImportAnomalySeverity",
      "FtpPollStatus",
      "FtpPollNotifyCode"
    ],
    "methods": [
      "requires_separate_computation",
      "is_numeric",
      "ocr_types",
      "icon_convertible_types",
      "straighten_types",
      "audio_types",
      "spreadsheet_types",
      "model_3d_types",
      "web_code_types",
      "video_types",
      "code_types",
      "archive_types",
      "static_icon_types",
      "extension_map",
      "is_yes",
      "is_no_or_empty",
      "is_simulation",
      "is_development",
      "is_production",
      "sql_list",
      "bpmn_mapping",
      "get_bpmn_type",
      "get_bpmn_category",
      "is_calculation_node",
      "is_gate_node",
      "is_supplement",
      "is_replace",
      "is_sql_database",
      "is_nosql_database",
      "is_file_based",
      "is_source_only",
      "is_pandas_file",
      "is_timeseries",
      "is_keyvalue"
    ],
    "body": "FeatureTypeEnum, FeatureDataTypeEnum, FileType, DocType, TicketStatus, TicketPriority, TicketType, TicketAction, TicketNotifyCode, SimulationNotifyCode, NotifyCode, RequestedByType, WebhookReturnType, GithubIssueState, GithubIssueSort, GithubIssueCommentSort, GithubIssueDirection, GithubIssueStateReason, LinkType, TaskStatus, SlaMet, TuiFieldType, FormType, YesNo, QueueStatus, DeploymentEnvironment, WorkflowNodeResultStatus, AclOperation, DatastoreOperation, FlowTargetType, WorkflowLaneType, WorkflowExecutionMode, WorkflowKickoffType, WorkflowNodeType, CalculationOperationType, TransferMode, DatabaseType, BackupType, AlertNotifyMode, IncidentStatus, GeoZoneType, GeoSource, ExcodedEncoding, SchedulerJobStatus, TuiLogLevel, MqttMessageStatus, SchedulerEventType, SupervisorServiceState, MediaType, AiPromptMode, ContentType, WebhookDirection, WebhookStatus, PayloadType, WebHookType, HttpMethod, PostType, ValueType, ParamType, MimeType, ImportAnomalyType, ImportAnomalySeverity, FtpPollStatus, FtpPollNotifyCode"
  },
  {
    "path": "factory-core/ObjEnvironment-api.md",
    "title": "ObjEnvironment API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjEnvironment"
    ],
    "methods": [
      "is_mutating_action",
      "debug",
      "execute_api",
      "execute_local"
    ],
    "body": "ObjEnvironment"
  },
  {
    "path": "factory-core/ObjEvent-api.md",
    "title": "ObjEvent API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjEvent"
    ],
    "methods": [
      "decrypt_event_contents",
      "encrypt_event_contents",
      "generate_event_json"
    ],
    "body": "ObjEvent"
  },
  {
    "path": "factory-core/ObjFeatureRender-api.md",
    "title": "ObjFeatureRender API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFeatureRender"
    ],
    "methods": [
      "configure",
      "render",
      "render_bulk"
    ],
    "body": "ObjFeatureRender"
  },
  {
    "path": "factory-core/ObjFeatureStore-api.md",
    "title": "ObjFeatureStore API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFeatureStore"
    ],
    "methods": [
      "get_query_info",
      "get_feature",
      "get_feature_from_dict",
      "get_compute_summary",
      "get_table_types_cached",
      "load_feature_definitions",
      "create_feature_table",
      "create_globals_table",
      "add_columns_bulk",
      "compute_feature_statistics",
      "compute_features",
      "compute_features_incremental",
      "compute_feature",
      "compute_features_batch",
      "compute_features_batch_optimized",
      "compute_global_features",
      "load_constants_from_table",
      "apply_substitution",
      "validate_feature_lineage",
      "compute_direct_map",
      "compute_sql_case",
      "compute_sql_value",
      "compute_between",
      "compute_aggregate",
      "compute_window",
      "compute_json_extract",
      "compute_symbolic"
    ],
    "body": "ObjFeatureStore"
  },
  {
    "path": "factory-core/ObjFirewall-api.md",
    "title": "ObjFirewall API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFirewall"
    ],
    "methods": [
      "check_ip",
      "add_rule",
      "remove_rule",
      "list_rules",
      "clear_cache",
      "auto_ban",
      "check_abuseipdb",
      "check_ip_enhanced",
      "sync_to_ufw",
      "ufw_status",
      "ufw_remove_rule"
    ],
    "body": "ObjFirewall"
  },
  {
    "path": "factory-core/ObjFtp-api.md",
    "title": "ObjFtp API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFtp",
      "SFtp"
    ],
    "methods": [
      "Connect",
      "set_remote_zip",
      "connect_remote",
      "Close",
      "Exist",
      "DateFromEpoch",
      "FileListAttr",
      "FileList",
      "DirList",
      "DownloadDir",
      "UploadDir",
      "UpdateScan",
      "update_scan_set",
      "upload_action",
      "DownloadSet",
      "Action",
      "select_action",
      "ensure_connection",
      "check_poll_backoff",
      "process_remote_files",
      "poll",
      "poll_mark_done",
      "run_query"
    ],
    "body": "ObjFtp, SFtp"
  },
  {
    "path": "factory-core/ObjGeoLocation-api.md",
    "title": "ObjGeoLocation API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjGeoLocation"
    ],
    "methods": [
      "geocode",
      "reverse_geocode",
      "geocode_ip",
      "geocode_batch",
      "reverse_geocode_batch",
      "geocode_ip_batch",
      "geocode_sql",
      "geocode_excoded_payload",
      "geocode_sql_excoded",
      "scan_all_address_types",
      "geomap_excoded"
    ],
    "body": "ObjGeoLocation"
  },
  {
    "path": "factory-core/ObjGeoZone-api.md",
    "title": "ObjGeoZone API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjGeoZone"
    ],
    "methods": [
      "define_circle",
      "define_polygon",
      "define_bbox",
      "contains",
      "distance_to_center",
      "save",
      "load"
    ],
    "body": "ObjGeoZone"
  },
  {
    "path": "factory-core/ObjGithub-api.md",
    "title": "ObjGithub API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjGithub"
    ],
    "methods": [
      "set_repository",
      "set_token",
      "list_issues",
      "get_issue",
      "create_issue",
      "update_issue",
      "close_issue",
      "reopen_issue",
      "list_comments",
      "add_comment",
      "update_comment",
      "list_issue_events",
      "get_updates",
      "find_ticket_guid_by_issue_number"
    ],
    "body": "ObjGithub"
  },
  {
    "path": "factory-core/ObjGo-api.md",
    "title": "ObjGo API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjGo"
    ],
    "methods": [
      "patch_param",
      "find_short_code",
      "qr_map",
      "map",
      "find_map",
      "UnMap",
      "AddMaps",
      "Track",
      "micro_service"
    ],
    "body": "ObjGo"
  },
  {
    "path": "factory-core/ObjGuiTask-api.md",
    "title": "ObjGuiTask API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjGuiTask"
    ],
    "methods": [
      "Read",
      "MarkRead",
      "Update",
      "book_task"
    ],
    "body": "ObjGuiTask"
  },
  {
    "path": "factory-core/ObjHook-api.md",
    "title": "ObjHook API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "WebhookConfig",
      "Queries",
      "ErrorMessage",
      "ObjHook",
      "HookSet"
    ],
    "methods": [
      "sql_escape",
      "validate_timeout",
      "get_cached_collation",
      "get_cached_package_and_archetype",
      "record_metric",
      "get_metrics",
      "invalidate_webhook_credential_cache",
      "log_webhook_request",
      "log_webhook_response",
      "safe_debug",
      "patch_param",
      "pre_stage",
      "read",
      "reset_parameters",
      "process_param",
      "param_trans",
      "encode_struct",
      "encode_as_struct",
      "bloom_return",
      "parse_data",
      "sql_parse_heading",
      "factory_hook",
      "check_id_number",
      "prep_data",
      "ValidatePayload",
      "categorise_payload_out",
      "restage_timeout",
      "provision_parameters",
      "call",
      "Create",
      "read",
      "export_openapi",
      "pre_call",
      "run_direct",
      "launch_service",
      "micro_service",
      "Payload"
    ],
    "body": "WebhookConfig, Queries, ErrorMessage, ObjHook, HookSet"
  },
  {
    "path": "factory-core/ObjHost-api.md",
    "title": "ObjHost API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjHost"
    ],
    "methods": [
      "register",
      "deactivate",
      "list_hosts",
      "discover_hosts",
      "sync_from_monitor",
      "sync_to_security_audit",
      "save_to_yaml",
      "load_from_yaml",
      "ensure_container_running",
      "ensure_services",
      "get_host_counts",
      "load_rules",
      "evaluate_rules"
    ],
    "body": "ObjHost"
  },
  {
    "path": "factory-core/ObjImage-api.md",
    "title": "ObjImage API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImage"
    ],
    "methods": [
      "read",
      "pdf_to_image",
      "download",
      "find_barcodes",
      "find_face",
      "find_eyes",
      "generate_barcode",
      "generate_text",
      "generate_qr",
      "generate",
      "get_barcode",
      "qr_code",
      "qr_decode",
      "scan",
      "rotate_image",
      "straighten_image",
      "crop_image",
      "image_to_ascii",
      "scan_set",
      "annotate",
      "guess_content",
      "image_detail"
    ],
    "body": "ObjImage"
  },
  {
    "path": "factory-core/ObjImap-api.md",
    "title": "ObjImap API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "MailParser",
      "ObjImap",
      "ObjImapSet"
    ],
    "methods": [
      "handle_starttag",
      "handle_endtag",
      "handle_data",
      "read",
      "insert_stage",
      "set_inits",
      "set_details",
      "list_subjects",
      "list_matching_subjects",
      "createStage",
      "createForms",
      "createFormFields",
      "createReports",
      "scan_folders",
      "scan_folder",
      "get_text_blocks",
      "get_message_blocks",
      "match_tag",
      "clean_text",
      "parse_text_form",
      "imap_factory",
      "ParseGuids",
      "parse_mail",
      "move_mail",
      "UpdateStage",
      "Scan",
      "ActionService",
      "micro_service"
    ],
    "body": "MailParser, ObjImap, ObjImapSet"
  },
  {
    "path": "factory-core/ObjInet-api.md",
    "title": "ObjInet API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Inet",
      "UserAgent"
    ],
    "methods": [
      "get_host_name",
      "get_ip_external",
      "get_ip_address",
      "get_host_ip_address",
      "get_proxmox_auth_token",
      "get_containers",
      "get_container_status",
      "proxmox_get_peers",
      "netbird_get_peers",
      "set_cloudflare",
      "Read",
      "Create",
      "Lookup",
      "Block",
      "geo_lookup",
      "Scansys_Weblog",
      "Update",
      "scan_blocks",
      "investigate_ip",
      "reverse_ip_lookup",
      "investigate_domain",
      "Lookup",
      "Scansys_Weblog"
    ],
    "body": "Inet, UserAgent"
  },
  {
    "path": "factory-core/ObjInternet-api.md",
    "title": "ObjInternet API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Netprobe",
      "ObjInternet"
    ],
    "methods": [
      "set_host",
      "get_ip_address",
      "get_host_ip_address",
      "resolve_ip",
      "get_local_ip",
      "get_local_interfaces",
      "get_dhcp_leases",
      "resolve_hostname",
      "resolve_mac",
      "arp_discover",
      "fingerprint_banner",
      "open_connection",
      "read_banner",
      "probe_port",
      "get_machine_ports",
      "extract_ping_data",
      "ping_machine",
      "ping_fast",
      "probe",
      "probe_concurrent",
      "probe_all",
      "check_status",
      "scan",
      "scan_devices",
      "discover"
    ],
    "body": "Netprobe, ObjInternet"
  },
  {
    "path": "factory-core/ObjJson-api.md",
    "title": "ObjJson API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjJson"
    ],
    "methods": [
      "safe_json",
      "load_json_string",
      "dump_json_to_string"
    ],
    "body": "ObjJson"
  },
  {
    "path": "factory-core/ObjKeycloak-api.md",
    "title": "ObjKeycloak API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjKeycloak"
    ],
    "methods": [
      "get_auth_token",
      "connect_realm",
      "provision_user",
      "link_user",
      "get_users",
      "assign_user_role",
      "assign_user_roles",
      "provision_users",
      "provision_role",
      "provision_roles"
    ],
    "body": "ObjKeycloak"
  },
  {
    "path": "factory-core/ObjKeycloakResilient-api.md",
    "title": "ObjKeycloakResilient API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "CircuitState",
      "ObjKeycloakResilient"
    ],
    "methods": [
      "is_available",
      "authenticate",
      "get_cached_token",
      "refresh_cached_token",
      "auto_refresh_expiring_tokens",
      "queue_sync",
      "process_sync_queue",
      "provision_users_batch",
      "sync_users_from_database",
      "get_status",
      "cleanup_expired_tokens",
      "cleanup_completed_syncs"
    ],
    "body": "CircuitState, ObjKeycloakResilient"
  },
  {
    "path": "factory-core/ObjKeycloakSyncService-api.md",
    "title": "ObjKeycloakSyncService API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjKeycloakSyncService"
    ],
    "methods": [
      "start",
      "status"
    ],
    "body": "ObjKeycloakSyncService"
  },
  {
    "path": "factory-core/ObjLearning-api.md",
    "title": "ObjLearning API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjLearning"
    ],
    "methods": [
      "create_table_if_not_exists",
      "insert_learning_resource",
      "load_resources_from_yaml",
      "list_learning_resources",
      "delete_learning_resource",
      "clear_module_resources",
      "scan_markdown_files",
      "import_markdown_resources"
    ],
    "body": "ObjLearning"
  },
  {
    "path": "factory-core/ObjML-api.md",
    "title": "ObjML API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjML"
    ],
    "methods": [
      "preprocess_data",
      "train_model",
      "predict_with_model",
      "evaluate_model",
      "get_data_from_mysql",
      "calculate_woe_iv",
      "calculate_woe_iv_multiclass",
      "apply_woe_transformation",
      "scorecard_scaling",
      "scorecard_scaling_multiclass",
      "train_cost_sensitive_classifier",
      "create_table_if_not_exists",
      "save_model_to_db",
      "load_model_from_db",
      "list_models"
    ],
    "body": "ObjML"
  },
  {
    "path": "factory-core/ObjMLDatasets-api.md",
    "title": "ObjMLDatasets API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjMLDatasets"
    ],
    "methods": [
      "get_dataset_config",
      "download_data",
      "load_data_from_url",
      "load_data_from_kaggle",
      "load_data_from_file",
      "extract_features",
      "display_unique_values",
      "list_featurestore",
      "list_model_evaluations",
      "build_scorecard",
      "train_cost_sensitive_model",
      "generate_model_plots"
    ],
    "body": "ObjMLDatasets"
  },
  {
    "path": "factory-core/ObjMLScorecard-api.md",
    "title": "ObjMLScorecard API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjMLScorecard"
    ],
    "methods": [],
    "body": "ObjMLScorecard"
  },
  {
    "path": "factory-core/ObjMcpClient-api.md",
    "title": "ObjMcpClient API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjMcpClient"
    ],
    "methods": [
      "call_tool",
      "list_tools",
      "playwright_screenshot",
      "playwright_get_text",
      "playwright_pdf"
    ],
    "body": "ObjMcpClient"
  },
  {
    "path": "factory-core/ObjMcpServer-api.md",
    "title": "ObjMcpServer API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjMcpServer"
    ],
    "methods": [
      "build_app"
    ],
    "body": "ObjMcpServer"
  },
  {
    "path": "factory-core/ObjMedia-api.md",
    "title": "ObjMedia API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "DocumentMedia",
      "DocumentMediaSet"
    ],
    "methods": [
      "Modify",
      "Read",
      "Create",
      "Update",
      "find_cover",
      "Parse",
      "Read",
      "Build"
    ],
    "body": "DocumentMedia, DocumentMediaSet"
  },
  {
    "path": "factory-core/ObjMessageQueue-api.md",
    "title": "ObjMessageQueue API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjMessageQueue"
    ],
    "methods": [
      "Connect",
      "connect_rabbit",
      "create_queue",
      "push",
      "qsize",
      "count",
      "pop",
      "pop_list",
      "load",
      "status"
    ],
    "body": "ObjMessageQueue"
  },
  {
    "path": "factory-core/ObjMonitor-api.md",
    "title": "ObjMonitor API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Monitor",
      "ObjMonitorTUI"
    ],
    "methods": [
      "system_run",
      "check_environment",
      "run_monitor_preflight",
      "sync_to_def_host",
      "sync_wireguard_status",
      "sync_proxmox_hosts",
      "poll_snmp_hosts",
      "poll_proxmox",
      "poll_routeros",
      "poll_synology",
      "poll_rabbitmq",
      "poll_local",
      "poll_all",
      "collect_fast",
      "get_status_json",
      "get_supervisor_services_summary",
      "check_and_create_tables",
      "get_ip_address",
      "get_ip_gateway",
      "read",
      "create",
      "update",
      "collect_db",
      "collect_dns",
      "run_collection",
      "get_cpu_counts",
      "select_compute",
      "collector_sink",
      "collect_all_processes",
      "scan_log",
      "SingleInstance",
      "micro_service",
      "run"
    ],
    "body": "Monitor, ObjMonitorTUI"
  },
  {
    "path": "factory-core/ObjMqtt-api.md",
    "title": "ObjMqtt API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjMqtt"
    ],
    "methods": [
      "connect",
      "publish",
      "disconnect",
      "get_topics",
      "transmit_message",
      "monitor_topics"
    ],
    "body": "ObjMqtt"
  },
  {
    "path": "factory-core/ObjNewsFeed-api.md",
    "title": "ObjNewsFeed API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjNewsFeed"
    ],
    "methods": [
      "create_tables_from_yaml",
      "load_queries",
      "debug",
      "error",
      "escape_sql",
      "sql_execute",
      "sql_get_value",
      "sql_get_dictionary",
      "sql_get_dictionary_list",
      "insert_new_feed_item",
      "item_exists",
      "upsert_feed_item",
      "insert_feed_items_batch",
      "create_feed_item",
      "get_feed_item",
      "get_feed_items",
      "delete_feed_item",
      "update_feed_item"
    ],
    "body": "ObjNewsFeed"
  },
  {
    "path": "factory-core/ObjNocoDB-api.md",
    "title": "ObjNocoDB API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjNocoDB"
    ],
    "methods": [
      "get_connection_credentials",
      "get_table_records",
      "insert_record",
      "update_record",
      "delete_record"
    ],
    "body": "ObjNocoDB"
  },
  {
    "path": "factory-core/ObjNodeRegistry-api.md",
    "title": "ObjNodeRegistry API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjNodeRegistry"
    ],
    "methods": [
      "register",
      "get_executor",
      "is_registered",
      "get_registered_types",
      "clear_registry"
    ],
    "body": "ObjNodeRegistry"
  },
  {
    "path": "factory-core/ObjNotify-api.md",
    "title": "ObjNotify API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjNotify"
    ],
    "methods": [
      "Modify",
      "Read",
      "mark_read",
      "Update",
      "deliver",
      "Run",
      "Select",
      "read_slack",
      "test_discord",
      "test_slack",
      "test_mqtt",
      "test_sms",
      "format_status_message"
    ],
    "body": "ObjNotify"
  },
  {
    "path": "factory-core/ObjNotifyPush-api.md",
    "title": "ObjNotifyPush API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjNotifyPush"
    ],
    "methods": [
      "subscribe",
      "unsubscribe",
      "get_subscriptions",
      "send_push",
      "send_push_to_group"
    ],
    "body": "ObjNotifyPush"
  },
  {
    "path": "factory-core/ObjOpenObserve-api.md",
    "title": "ObjOpenObserve API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjOpenObserve"
    ],
    "methods": [
      "check_connection",
      "send_log",
      "send_logs",
      "send_metric",
      "send_metrics"
    ],
    "body": "ObjOpenObserve"
  },
  {
    "path": "factory-core/ObjOperator-api.md",
    "title": "ObjOperator API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-core/ObjPackage-api.md",
    "title": "ObjPackage API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjPackage"
    ],
    "methods": [
      "load",
      "name",
      "description",
      "contacts",
      "logo",
      "palette_name",
      "archetype",
      "get_raci_for_package",
      "get_roles",
      "get_role_emails",
      "add_role",
      "remove_role",
      "roles_to_raci",
      "get_active_connection_name",
      "get_active_db_config",
      "fix_connect_db"
    ],
    "body": "ObjPackage"
  },
  {
    "path": "factory-core/ObjPalette-api.md",
    "title": "ObjPalette API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjPalette"
    ],
    "methods": [
      "read",
      "get_color",
      "get_palette",
      "get_print_palette",
      "get_mermaid_theme",
      "hex_to_rgb",
      "wcag_ratio",
      "pick_readable",
      "hex_to_name",
      "get_piper_theme",
      "populate_colour_names",
      "populate_all_colour_names",
      "save",
      "get_default",
      "set_default",
      "extract_from_image",
      "are_complementary",
      "load_json_to_db",
      "normalize_palettes",
      "swatches",
      "combine_swatches",
      "display_cli_palette",
      "seed_from_yaml",
      "export_to_yaml",
      "validate",
      "fix"
    ],
    "body": "ObjPalette"
  },
  {
    "path": "factory-core/ObjPassword-api.md",
    "title": "ObjPassword API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "PasswordGenerator"
    ],
    "methods": [
      "generate_password",
      "generate_passwords"
    ],
    "body": "PasswordGenerator"
  },
  {
    "path": "factory-core/ObjPerson-api.md",
    "title": "ObjPerson API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Idnumber",
      "ObjPerson"
    ],
    "methods": [
      "set_id",
      "is_valid",
      "gender",
      "is_citizen",
      "find",
      "SetId",
      "IsValid",
      "Gender",
      "Find",
      "packages_list",
      "companies_list",
      "read",
      "read_by_identifier",
      "save",
      "touch_contact",
      "delete",
      "list_persons",
      "find_by_identifier",
      "get_contact",
      "search",
      "resolve_by_email",
      "resolve_by_service",
      "resolve_email",
      "resolve_person_guid",
      "link_service"
    ],
    "body": "Idnumber, ObjPerson"
  },
  {
    "path": "factory-core/ObjPlatform-api.md",
    "title": "ObjPlatform API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjPlatform"
    ],
    "methods": [
      "is_aws",
      "is_kvm",
      "is_docker",
      "is_kubernetes",
      "detect_kubernetes",
      "detect_docker",
      "is_pytest",
      "detect_wsl",
      "detect_systemd_virt",
      "detect_dmi",
      "detect_aws_metadata",
      "detect_lxc_cgroup",
      "detect_vmware_mac",
      "detect_kernel_modules",
      "get_virtualization_environment",
      "get_mac_address",
      "get_ip_address",
      "get_hostname",
      "get_parent_name",
      "is_in_multiplexer",
      "get_multiplexer_info",
      "has_x_display"
    ],
    "body": "ObjPlatform"
  },
  {
    "path": "factory-core/ObjPreflight-api.md",
    "title": "ObjPreflight API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjPreflight"
    ],
    "methods": [
      "note_check",
      "note_optional_check",
      "check_collation",
      "preflight",
      "check_preflight"
    ],
    "body": "ObjPreflight"
  },
  {
    "path": "factory-core/ObjProcessText-api.md",
    "title": "ObjProcessText API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "init_factory",
      "init_factory_item",
      "check_param",
      "process_text",
      "text_factory"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-core/ObjRandom-api.md",
    "title": "ObjRandom API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjRandom"
    ],
    "methods": [
      "randint",
      "randfloat",
      "choice",
      "weighted_choice",
      "shuffle",
      "sample",
      "generate_code",
      "generate_unique_code",
      "generate_batch",
      "set_seed",
      "get_rdg_config",
      "get_rdg_table_name",
      "create_rdg_table",
      "lookup_rdg",
      "get_rdg"
    ],
    "body": "ObjRandom"
  },
  {
    "path": "factory-core/ObjRateLimit-api.md",
    "title": "ObjRateLimit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "RateLimit"
    ],
    "methods": [
      "is_login_allowed",
      "record_login_attempt",
      "get_failed_attempts",
      "get_ip_failed_attempts",
      "is_account_locked",
      "unlock_account",
      "unblock_ip",
      "cleanup_old_attempts",
      "get_recent_attempts",
      "get_statistics"
    ],
    "body": "RateLimit"
  },
  {
    "path": "factory-core/ObjReport-api.md",
    "title": "ObjReport API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ReportType",
      "Report",
      "ReportLayout"
    ],
    "methods": [
      "read",
      "Create",
      "Update",
      "RenderOptions",
      "version",
      "compute_rows",
      "Compute",
      "render_load_modal",
      "set_width",
      "set_height",
      "GetTemplate",
      "report_style",
      "IsDynamic",
      "SetUser",
      "get_cache_guid",
      "read",
      "GetNextReport",
      "Create",
      "Update",
      "patch_param",
      "report_read",
      "render_sequence",
      "render_factory",
      "render_null",
      "render_value",
      "render_type",
      "render_basic",
      "get_publish_path",
      "render_buttons",
      "render_widget_start",
      "render_notes",
      "render_inline_layout",
      "render_notes_footer",
      "render_inline_style",
      "render_inline_js",
      "render_widget_end",
      "render_use_export",
      "ExecuteRpc",
      "render_ribbon",
      "Render",
      "Compile",
      "render_wrapper",
      "render_modal_start",
      "render_modal_end"
    ],
    "body": "ReportType, Report, ReportLayout"
  },
  {
    "path": "factory-core/ObjReportFile-api.md",
    "title": "ObjReportFile API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjReportFile",
      "TestReport"
    ],
    "methods": [
      "render_csv_file",
      "render_excel",
      "render_excel_x",
      "render_excel_x_template",
      "render_pdf",
      "setUp",
      "test_excel_table"
    ],
    "body": "ObjReportFile, TestReport"
  },
  {
    "path": "factory-core/ObjSSH-api.md",
    "title": "ObjSSH API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Ssh"
    ],
    "methods": [
      "Connect",
      "cmd_execute",
      "sudo_execute",
      "sudo_execute_file",
      "sudo_execute_pip"
    ],
    "body": "Ssh"
  },
  {
    "path": "factory-core/ObjSSO-api.md",
    "title": "ObjSSO API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSSO"
    ],
    "methods": [
      "SSOSleep",
      "SSOWake"
    ],
    "body": "ObjSSO"
  },
  {
    "path": "factory-core/ObjScheduler-api.md",
    "title": "ObjScheduler API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Scheduler"
    ],
    "methods": [
      "load_yaml_query",
      "provision_notify",
      "notify",
      "patch_param",
      "reschedule",
      "add_schedule",
      "run_service",
      "compute",
      "select_compute",
      "poll_once",
      "check_recurring",
      "send_email"
    ],
    "body": "Scheduler"
  },
  {
    "path": "factory-core/ObjScorecard-api.md",
    "title": "ObjScorecard API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjScorecard"
    ],
    "methods": [
      "compute_score_run",
      "compute_score",
      "MoveValuesToHistory",
      "compute_score_set",
      "validate_scorecard",
      "get_scorecard_versions",
      "activate_version",
      "create_scorecard_version",
      "compare_scorecard_versions"
    ],
    "body": "ObjScorecard"
  },
  {
    "path": "factory-core/ObjSecurityAudit-api.md",
    "title": "ObjSecurityAudit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "SecurityAudit"
    ],
    "methods": [
      "ai_analyse",
      "ai_analyse_all",
      "add_pass",
      "add_finding",
      "get_report",
      "get_report_markdown",
      "audit_ports",
      "audit_ssl",
      "audit_http_headers",
      "audit_ssh",
      "audit_dns",
      "audit_mysql_exposure",
      "audit_web_app",
      "audit_tls_deep",
      "audit_databases",
      "audit_email",
      "audit_infrastructure",
      "audit_subdomains",
      "audit_error_disclosure",
      "audit_host_header",
      "audit_hsts_preload",
      "audit_rate_limiting",
      "audit_api_versions",
      "audit_clickjacking",
      "audit_dnssec",
      "audit_websocket",
      "audit_screenshot",
      "audit_whois",
      "audit_os_fingerprint",
      "audit_tech_detect",
      "audit_dns_trace",
      "audit_inet_intel",
      "audit_host",
      "audit_hosts",
      "get_report_html",
      "send_report"
    ],
    "body": "SecurityAudit"
  },
  {
    "path": "factory-core/ObjSecurityGlossary-api.md",
    "title": "ObjSecurityGlossary API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-core/ObjService-api.md",
    "title": "ObjService API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceType",
      "ObjService",
      "ServiceSet"
    ],
    "methods": [
      "Register",
      "SetGuid",
      "patch_param",
      "service_base_factory",
      "BuildPayload",
      "load_pre_sql",
      "pre_sql",
      "load_post_sql",
      "PostSql",
      "Read",
      "Connect",
      "GetRedisXtoken",
      "SetRedisXtoken",
      "GeneratePdf",
      "Send",
      "stage_launch",
      "stage_reset",
      "stage_update",
      "process_check",
      "Process",
      "Create",
      "Read",
      "special_purpose_process",
      "launch_service",
      "micro_service",
      "run_workflow_direct",
      "run_direct"
    ],
    "body": "ObjServiceType, ObjService, ServiceSet"
  },
  {
    "path": "factory-core/ObjServiceHeartbeat-api.md",
    "title": "ObjServiceHeartbeat API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-core/ObjSignal-api.md",
    "title": "ObjSignal API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSignal"
    ],
    "methods": [
      "set_remote",
      "transmit",
      "recieve"
    ],
    "body": "ObjSignal"
  },
  {
    "path": "factory-core/ObjSignalMqtt-api.md",
    "title": "ObjSignalMqtt API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSignal"
    ],
    "methods": [
      "set_remote",
      "transmit",
      "recieve"
    ],
    "body": "ObjSignal"
  },
  {
    "path": "factory-core/ObjSimulation-api.md",
    "title": "ObjSimulation API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSimulation"
    ],
    "methods": [
      "enable_table_tracking",
      "flush_tracked_tables",
      "disable_table_tracking",
      "track_sql",
      "get_simulation_guid_sql",
      "get_tracked_tables",
      "get_simulation_table_usage",
      "create_simulation_tables",
      "sql_format",
      "sql_status",
      "sql_read_object",
      "sql_execute",
      "sql_execute_many",
      "sql_get_normalized_headings",
      "sql_get_normalized_data",
      "sql_compare_tables",
      "sql_get_value",
      "sql_get_value_buffer",
      "sql_get_int",
      "sql_get_int_buffer",
      "sql_get_values",
      "sql_get_values_buffer",
      "sql_get_values_dict",
      "sql_get_tuple",
      "sql_get_tuple_set",
      "sql_get_tuple_buffer",
      "sql_get_value_int",
      "sql_get_dict",
      "sql_get_dictionary_list",
      "sql_get_dataframe",
      "sql_get_dictionary",
      "sql_get_frame",
      "sql_get_dict_buffer",
      "sql_get_series",
      "sql_get_list_buffer",
      "sql_get_set",
      "sql_get_array",
      "sql_get_pandas_data_frame",
      "sql_get_array_and_headings",
      "sql_get_headings",
      "sql_get_headings_full",
      "sql_get_headings_full_buffer",
      "sql_get_list"
    ],
    "body": "ObjSimulation"
  },
  {
    "path": "factory-core/ObjSip-api.md",
    "title": "ObjSip API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSip"
    ],
    "methods": [
      "get_credentials"
    ],
    "body": "ObjSip"
  },
  {
    "path": "factory-core/ObjSms-api.md",
    "title": "ObjSms API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSms",
      "SmsWrapper",
      "SmsSet",
      "TestSmsMethods"
    ],
    "methods": [
      "update_stage",
      "should_send_now",
      "is_daily_limited",
      "is_limited",
      "process_cell_number",
      "update_stage_factory",
      "service_factory",
      "set_cellnumber",
      "send_sms",
      "read_context",
      "run",
      "Check",
      "CheckReplies",
      "CheckDelivery",
      "Build",
      "launch_service",
      "run_workflow_direct",
      "run_direct",
      "micro_service",
      "setUp",
      "run_test"
    ],
    "body": "ObjSms, SmsWrapper, SmsSet, TestSmsMethods"
  },
  {
    "path": "factory-core/ObjSound-api.md",
    "title": "ObjSound API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSound"
    ],
    "methods": [
      "get_sound_path",
      "get_all_sounds",
      "update_sound_index"
    ],
    "body": "ObjSound"
  },
  {
    "path": "factory-core/ObjStatusImage-api.md",
    "title": "ObjStatusImage API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjStatusImage"
    ],
    "methods": [
      "generate_image"
    ],
    "body": "ObjStatusImage"
  },
  {
    "path": "factory-core/ObjSupervisor-api.md",
    "title": "ObjSupervisor API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Supervisor"
    ],
    "methods": [
      "acquire_lock",
      "release_lock",
      "reconnect_check",
      "get_system_load",
      "Status",
      "action_service",
      "special_purpose_process",
      "dispatcher_direct",
      "dispatcher_process",
      "worker_process",
      "move_to_history",
      "reset_stage",
      "ClearOutToHistory",
      "run_service",
      "base_service",
      "factory_list",
      "build_mermaid",
      "scan_factory"
    ],
    "body": "Supervisor"
  },
  {
    "path": "factory-core/ObjTUI-api.md",
    "title": "ObjTUI API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "TuiTheme",
      "TUI_Manager",
      "TuiStream",
      "AtomicWriter"
    ],
    "methods": [
      "panel_style",
      "cell",
      "from_palette",
      "load",
      "start",
      "stop",
      "write",
      "flush",
      "set_status",
      "write",
      "flush",
      "isatty",
      "fileno",
      "begin",
      "end",
      "write",
      "flush",
      "isatty",
      "fileno"
    ],
    "body": "TuiTheme, TUI_Manager, TuiStream, AtomicWriter"
  },
  {
    "path": "factory-core/ObjTemplate-api.md",
    "title": "ObjTemplate API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTemplate"
    ],
    "methods": [
      "read_page_template",
      "load_email_template",
      "render_email",
      "send_email",
      "save_email_template",
      "list_email_templates",
      "build_email_html_jinja",
      "get_logo_path",
      "render_mermaid",
      "build_email_html",
      "section",
      "kv_row",
      "status_cell",
      "summary_box",
      "Read"
    ],
    "body": "ObjTemplate"
  },
  {
    "path": "factory-core/ObjTest-api.md",
    "title": "ObjTest API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTest"
    ],
    "methods": [
      "calculate_checksum",
      "generate_sa_id",
      "validate_sa_id",
      "generate_test_ids_csv",
      "is_valid_test_id"
    ],
    "body": "ObjTest"
  },
  {
    "path": "factory-core/ObjTicket-api.md",
    "title": "ObjTicket API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicket"
    ],
    "methods": [
      "get_provider",
      "ensure_sla_raci",
      "read",
      "read_by_number",
      "create",
      "Create",
      "update",
      "set_server_id",
      "assign",
      "change_status",
      "add_analysis",
      "set_incident_date",
      "set_incident_cause",
      "set_work_score",
      "resolve",
      "close",
      "escalate",
      "add_task",
      "get_tasks",
      "add_comment",
      "get_comments",
      "add_link",
      "get_links",
      "add_document",
      "get_documents",
      "get_document",
      "delete_document",
      "create_from_template",
      "get_history",
      "get_open_tickets",
      "get_overdue_tickets",
      "get_status_summary",
      "get_tickets_by_assignee",
      "get_unassigned_tickets",
      "get_sla_breach_count",
      "get_tickets_by_filter",
      "check_escalation_due",
      "add_watcher",
      "remove_watcher",
      "get_watchers",
      "track",
      "link_pull_request",
      "get_linked_prs",
      "create_from_pr",
      "create_from_email",
      "merge_ticket",
      "escalate_overdue",
      "process_slack_approval",
      "send_weekly_digest",
      "log_time",
      "get_time_entries",
      "get_total_time",
      "set_eta",
      "get_eta_display",
      "notify_event",
      "send_ticket_report"
    ],
    "body": "ObjTicket"
  },
  {
    "path": "factory-core/ObjTicketComment-api.md",
    "title": "ObjTicketComment API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicketComment"
    ],
    "methods": [
      "read",
      "create",
      "get_comments",
      "delete_comment"
    ],
    "body": "ObjTicketComment"
  },
  {
    "path": "factory-core/ObjTicketLink-api.md",
    "title": "ObjTicketLink API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicketLink"
    ],
    "methods": [
      "create",
      "get_links",
      "get_blocked_by",
      "remove_link"
    ],
    "body": "ObjTicketLink"
  },
  {
    "path": "factory-core/ObjTicketSla-api.md",
    "title": "ObjTicketSla API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicketSla"
    ],
    "methods": [
      "read",
      "create",
      "update",
      "get_response_deadline",
      "get_resolution_deadline",
      "get_escalation_deadline",
      "check_response_compliance",
      "check_resolution_compliance",
      "get_escalation_contact",
      "get_sla_by_package"
    ],
    "body": "ObjTicketSla"
  },
  {
    "path": "factory-core/ObjTicketTask-api.md",
    "title": "ObjTicketTask API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicketTask"
    ],
    "methods": [
      "read",
      "create",
      "update",
      "complete",
      "cancel",
      "start",
      "get_tasks",
      "get_pending_count",
      "get_completed_count"
    ],
    "body": "ObjTicketTask"
  },
  {
    "path": "factory-core/ObjTicketTemplate-api.md",
    "title": "ObjTicketTemplate API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicketTemplate"
    ],
    "methods": [
      "read",
      "read_by_guid",
      "create",
      "add_task",
      "get_templates",
      "get_template_tasks",
      "create_from_template"
    ],
    "body": "ObjTicketTemplate"
  },
  {
    "path": "factory-core/ObjTuiForm-api.md",
    "title": "ObjTuiForm API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTuiForm"
    ],
    "methods": [
      "seed_forms",
      "read_form",
      "load_fields",
      "load_record",
      "parse_field_type",
      "map_field_type",
      "render_field",
      "render_form",
      "show_summary",
      "save",
      "run"
    ],
    "body": "ObjTuiForm"
  },
  {
    "path": "factory-core/ObjVersionMixin-api.md",
    "title": "ObjVersionMixin API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjVersionMixin"
    ],
    "methods": [
      "get_three_words",
      "get_version_config",
      "ensure_versioned",
      "record_version",
      "get_version_history",
      "get_latest_version",
      "version_history_html",
      "build_version_history_html"
    ],
    "body": "ObjVersionMixin"
  },
  {
    "path": "factory-core/ObjWebMail-api.md",
    "title": "ObjWebMail API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "SMTPConnectionPool",
      "WebMail"
    ],
    "methods": [
      "get_connection",
      "return_connection",
      "close_all",
      "uuid",
      "set_remote_connection",
      "set_channel",
      "validate_email",
      "shutdown",
      "send",
      "attach_file",
      "send_text",
      "envelope",
      "send_image",
      "send_file",
      "send_report",
      "send_html",
      "recieve_image",
      "process_mail",
      "scan_mail"
    ],
    "body": "SMTPConnectionPool, WebMail"
  },
  {
    "path": "factory-core/ObjWebhookAlert-api.md",
    "title": "ObjWebhookAlert API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "AlertSeverity",
      "AlertChannel",
      "WebhookAlert",
      "WebhookMetrics",
      "ObjWebhookAlert"
    ],
    "methods": [
      "to_dict",
      "failure_rate",
      "avg_duration",
      "record_webhook_call",
      "get_metrics",
      "reset_metrics"
    ],
    "body": "AlertSeverity, AlertChannel, WebhookAlert, WebhookMetrics, ObjWebhookAlert"
  },
  {
    "path": "factory-core/ObjWorkflow-api.md",
    "title": "ObjWorkflow API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "WorkflowExecutionError",
      "WorkflowNotFoundError",
      "WorkflowPreparationError",
      "WorkflowConfigurationError",
      "WorkflowTransitionLimitError",
      "WorkflowNodeExecutionError",
      "WorkflowTimeoutError",
      "WorkflowAsyncQueueError",
      "WorkflowConfig",
      "WorkflowKickoffType",
      "SimWorkflowApi",
      "Workflow"
    ],
    "methods": [
      "from_env",
      "development_mode",
      "production_mode",
      "sql_list",
      "execute",
      "running",
      "running",
      "last_state",
      "last_state",
      "run_context",
      "run_context",
      "sim_context",
      "sim_context",
      "set_user",
      "set_kafka",
      "local_patch_param",
      "get_workflow_basename",
      "get_connected_workflows",
      "is_workflow_gui",
      "is_workflow_async",
      "Run",
      "prepare_run",
      "run_workflow",
      "get_context",
      "walk_nodes",
      "render_context_resultset",
      "Select",
      "run_set",
      "serve_set",
      "stage_update",
      "save_to_stage",
      "dispatch_stage_items",
      "reactivate_stage_item",
      "launch_service",
      "run_direct",
      "generate_mermaid",
      "send_email",
      "review"
    ],
    "body": "WorkflowExecutionError, WorkflowNotFoundError, WorkflowPreparationError, WorkflowConfigurationError, WorkflowTransitionLimitError, WorkflowNodeExecutionError, WorkflowTimeoutError, WorkflowAsyncQueueError, WorkflowConfig, WorkflowKickoffType, SimWorkflowApi, Workflow"
  },
  {
    "path": "factory-core/Objects-api.md",
    "title": "Objects API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Connection",
      "Object"
    ],
    "methods": [
      "debug",
      "get_local_db_name",
      "transfer_detail",
      "get_sql_set",
      "connect_db",
      "close_db",
      "get_db_connections",
      "encrypt",
      "decrypt",
      "get_deployment",
      "get_host",
      "get_role",
      "DBType",
      "safe_int",
      "get_uuid",
      "is_my_sql",
      "is_ms_sql",
      "is_postgres",
      "is_sqlite",
      "is_mongo",
      "is_openobserve",
      "is_docker",
      "is_kubernetes",
      "patch_all",
      "patch_paramBuffer",
      "get_acl",
      "patch_paramRun",
      "patch_param",
      "process_text",
      "inject_hidden",
      "inject",
      "inject_dictionary",
      "EncodeClassJson",
      "EncodeJson",
      "decode_class_json",
      "DecodeJson",
      "sql_escape",
      "command_line",
      "create_tables_from_yaml"
    ],
    "body": "Connection, Object"
  },
  {
    "path": "factory-core/ObjBackupDumpInfluxdb-api.md",
    "title": "ObjBackupDumpInfluxdb API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjBackupDumpInfluxdb"
    ],
    "methods": [
      "system_databases",
      "dump",
      "list_databases"
    ],
    "body": "ObjBackupDumpInfluxdb"
  },
  {
    "path": "factory-core/ObjBackupDumpMariadb-api.md",
    "title": "ObjBackupDumpMariadb API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjBackupDumpMariadb"
    ],
    "methods": [
      "system_databases",
      "dump",
      "list_databases",
      "get_database_size"
    ],
    "body": "ObjBackupDumpMariadb"
  },
  {
    "path": "factory-core/ObjBackupDumpMongo-api.md",
    "title": "ObjBackupDumpMongo API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjBackupDumpMongo"
    ],
    "methods": [
      "system_databases",
      "dump",
      "list_databases",
      "get_database_size"
    ],
    "body": "ObjBackupDumpMongo"
  },
  {
    "path": "factory-core/ObjBackupDumpMssql-api.md",
    "title": "ObjBackupDumpMssql API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjBackupDumpMssql"
    ],
    "methods": [
      "system_databases",
      "dump",
      "list_databases",
      "get_database_size"
    ],
    "body": "ObjBackupDumpMssql"
  },
  {
    "path": "factory-core/ObjBackupDumpPostgres-api.md",
    "title": "ObjBackupDumpPostgres API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjBackupDumpPostgres"
    ],
    "methods": [
      "system_databases",
      "dump",
      "list_databases",
      "get_database_size"
    ],
    "body": "ObjBackupDumpPostgres"
  },
  {
    "path": "factory-core/ObjBackupDumpSqlite-api.md",
    "title": "ObjBackupDumpSqlite API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjBackupDumpSqlite"
    ],
    "methods": [
      "system_databases",
      "dump",
      "list_databases",
      "get_database_size"
    ],
    "body": "ObjBackupDumpSqlite"
  },
  {
    "path": "factory-core/ObjBackupHandler-api.md",
    "title": "ObjBackupHandler API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjBackupHandler"
    ],
    "methods": [
      "dump",
      "list_databases",
      "get_database_size",
      "system_databases",
      "compress",
      "cleanup",
      "run_cli_with_progress",
      "run_cli_to_dir"
    ],
    "body": "ObjBackupHandler"
  },
  {
    "path": "factory-core/ObjBackupRegistry-api.md",
    "title": "ObjBackupRegistry API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjBackupRegistry"
    ],
    "methods": [
      "register",
      "get_handler",
      "is_registered",
      "get_registered_types",
      "clear_registry"
    ],
    "body": "ObjBackupRegistry"
  },
  {
    "path": "factory-core/ObjDataBranding-api.md",
    "title": "ObjDataBranding API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataBrandingMixin"
    ],
    "methods": [
      "get_palette",
      "get_pallete",
      "get_font",
      "get_piper_theme",
      "get_mermaid_theme",
      "get_print_palette",
      "get_emoji_method",
      "get_logo",
      "get_agent_logo",
      "get_agent_logo_path",
      "get_contact_list",
      "get_signature"
    ],
    "body": "ObjDataBrandingMixin"
  },
  {
    "path": "factory-core/ObjDataCache-api.md",
    "title": "ObjDataCache API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataCacheMixin"
    ],
    "methods": [
      "has_redis",
      "has_keystore",
      "set_cache",
      "get_cache",
      "set_num_workers",
      "get_num_workers"
    ],
    "body": "ObjDataCacheMixin"
  },
  {
    "path": "factory-core/ObjDataDDL-api.md",
    "title": "ObjDataDDL API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataDDL"
    ],
    "methods": [
      "get_collation",
      "get_package",
      "get_package_and_archetype",
      "escape_sql",
      "has_table",
      "rename_column",
      "sql_get_primary_key",
      "get_columns",
      "has_column",
      "get_column_type",
      "add_column",
      "add_columns",
      "delete_column"
    ],
    "body": "ObjDataDDL"
  },
  {
    "path": "factory-core/ObjDataEvent-api.md",
    "title": "ObjDataEvent API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataEventMixin"
    ],
    "methods": [
      "log_mqtt_event",
      "connect_flux",
      "log_flux_event",
      "log_event"
    ],
    "body": "ObjDataEventMixin"
  },
  {
    "path": "factory-core/ObjDataKey-api.md",
    "title": "ObjDataKey API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataKey"
    ],
    "methods": [
      "connect_keystore",
      "set_cache",
      "get_cache",
      "has_keystore",
      "has_redis",
      "connect_redis"
    ],
    "body": "ObjDataKey"
  },
  {
    "path": "factory-core/ObjDataMongo-api.md",
    "title": "ObjDataMongo API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataMongo"
    ],
    "methods": [
      "get_package",
      "get_domongo",
      "mongo_connect",
      "mongo_get_query",
      "mongo_index",
      "mongo_insert",
      "mongo_update",
      "mongo_replace",
      "mongo_pipeline",
      "mongo_get_dict",
      "mongo_get_all_dicts",
      "mongo_get_collection",
      "mongo_get_fields_from_collection",
      "mongo_delete"
    ],
    "body": "ObjDataMongo"
  },
  {
    "path": "factory-core/ObjDataQueryExec-api.md",
    "title": "ObjDataQueryExec API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataQueryExecMixin"
    ],
    "methods": [
      "query_identity",
      "query_json_to_dict",
      "query_json_to_value",
      "query_get_value",
      "query_get_values",
      "query_get_dict",
      "query_get_dictionary",
      "query_get_dictionary_list",
      "expr_get_value",
      "query_get_list"
    ],
    "body": "ObjDataQueryExecMixin"
  },
  {
    "path": "factory-core/ObjDataRemote-api.md",
    "title": "ObjDataRemote API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataRemoteMixin"
    ],
    "methods": [
      "create_server",
      "get_remote_username_password",
      "get_remote_url_username_password",
      "remote_connect",
      "check_connections"
    ],
    "body": "ObjDataRemoteMixin"
  },
  {
    "path": "factory-core/ObjDataSql-api.md",
    "title": "ObjDataSql API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataSql"
    ],
    "methods": [
      "get_cache_stats",
      "clear_cache",
      "sql_format",
      "sql_status",
      "refresh_db_schema",
      "get_db_cursor",
      "sql_read_object",
      "sql_extract_info",
      "sql_execute",
      "explain_sql",
      "sql_execute_many",
      "sql_get_normalized_headings",
      "sql_get_normalized_data",
      "compare_lists_ignore_types",
      "sql_compare_tables",
      "sql_get_value",
      "sql_get_value_buffer",
      "sql_get_database",
      "sql_get_int",
      "sql_get_int_buffer",
      "sql_get_values",
      "sql_get_values_buffer",
      "sql_get_values_dict",
      "sql_get_tuple",
      "sql_get_tuple_set",
      "sql_get_rows",
      "sql_get_row",
      "sql_get_tuple_buffer",
      "sql_get_value_int",
      "sql_get_dict",
      "sql_get_dictionary_list",
      "sql_get_dataframe",
      "sql_get_dictionary",
      "sql_get_frame",
      "sql_get_dict_buffer",
      "sql_get_series",
      "get_sql_list",
      "sql_get_list_buffer",
      "sql_get_set",
      "sql_get_array",
      "sql_get_pandas_data_frame",
      "sql_get_array_and_headings",
      "sql_get_headings",
      "sql_get_headings_full",
      "sql_get_headings_full_buffer",
      "sql_get_list"
    ],
    "body": "ObjDataSql"
  },
  {
    "path": "factory-core/ObjDebug-api.md",
    "title": "ObjDebug API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDebug"
    ],
    "methods": [
      "progress_sleep",
      "progress_bar",
      "debug_table",
      "debug_dict",
      "debug_base",
      "debug_trace",
      "info",
      "note",
      "note_progress",
      "debug",
      "warning",
      "exception",
      "error",
      "show_trace"
    ],
    "body": "ObjDebug"
  },
  {
    "path": "factory-core/ObjPatch-api.md",
    "title": "ObjPatch API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjPatch"
    ],
    "methods": [
      "patch_all",
      "patch_paramBuffer",
      "patch_paramRun",
      "patch_param",
      "process_text"
    ],
    "body": "ObjPatch"
  },
  {
    "path": "factory-core/ObjRaci-api.md",
    "title": "ObjRaci API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjRaci"
    ],
    "methods": [
      "get_raci",
      "build_raci_html",
      "request_signoffs",
      "record_signoff",
      "get_signoffs",
      "get_pending_signoffs",
      "is_fully_signed",
      "build_signoff_html"
    ],
    "body": "ObjRaci"
  },
  {
    "path": "factory-core/ObjRecurringMixin-api.md",
    "title": "ObjRecurringMixin API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjRecurringMixin"
    ],
    "methods": [
      "recurring_create",
      "recurring_check_due",
      "recurring_list",
      "recurring_cancel"
    ],
    "body": "ObjRecurringMixin"
  },
  {
    "path": "factory-core/ObjResource-api.md",
    "title": "ObjResource API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjResource"
    ],
    "methods": [
      "get_parent_name",
      "add_resource_css",
      "add_resource_script"
    ],
    "body": "ObjResource"
  },
  {
    "path": "factory-core/ObjSerialization-api.md",
    "title": "ObjSerialization API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSerialization"
    ],
    "methods": [
      "inject_blank",
      "extract",
      "inject_hidden",
      "inject",
      "inject_dictionary",
      "encode_class_json",
      "encode_json",
      "decode_class_json",
      "decode_json"
    ],
    "body": "ObjSerialization"
  },
  {
    "path": "factory-core/ObjSystem-api.md",
    "title": "ObjSystem API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSystem"
    ],
    "methods": [
      "system_run",
      "single_instance",
      "unlock_instance",
      "get_local_folder",
      "connect_mem_db"
    ],
    "body": "ObjSystem"
  },
  {
    "path": "factory-core/ObjAlertEdit-api.md",
    "title": "ObjAlertEdit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAlertEdit"
    ],
    "methods": [
      "load",
      "list_alerts",
      "export_to_file",
      "import_from_data",
      "import_from_file"
    ],
    "body": "ObjAlertEdit"
  },
  {
    "path": "factory-core/ObjApiEdit-api.md",
    "title": "ObjApiEdit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjApiEdit"
    ],
    "methods": [
      "export_webhooks_to_insomnia",
      "generate_technical_documentation",
      "populate_workflow_mappings"
    ],
    "body": "ObjApiEdit"
  },
  {
    "path": "factory-core/ObjCalculationEdit-api.md",
    "title": "ObjCalculationEdit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjCalculationEdit"
    ],
    "methods": [
      "load",
      "export_to_file",
      "import_from_data",
      "import_from_file"
    ],
    "body": "ObjCalculationEdit"
  },
  {
    "path": "factory-core/ObjChannelEdit-api.md",
    "title": "ObjChannelEdit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjChannelEdit"
    ],
    "methods": [
      "load",
      "list_channels",
      "export_to_file",
      "import_from_data",
      "import_from_file"
    ],
    "body": "ObjChannelEdit"
  },
  {
    "path": "factory-core/ObjConversationEdit-api.md",
    "title": "ObjConversationEdit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ConversationEdit"
    ],
    "methods": [
      "get_conversation_json",
      "save_conversation_to_file",
      "load_conversation_from_yaml",
      "remove_none_values",
      "remove_empty_strings",
      "remove_conversation_code",
      "remove_package",
      "safe_sql_insert",
      "generate_markdown",
      "generate_mermaid",
      "save_markdown_to_db",
      "validate_conversation",
      "load_reference",
      "save_reference",
      "get_next_version",
      "set_version"
    ],
    "body": "ConversationEdit"
  },
  {
    "path": "factory-core/ObjDataDictionaryEdit-api.md",
    "title": "ObjDataDictionaryEdit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataDictionaryEdit"
    ],
    "methods": [
      "load",
      "list_dictionaries",
      "export_to_file",
      "import_from_data",
      "import_from_file"
    ],
    "body": "ObjDataDictionaryEdit"
  },
  {
    "path": "factory-core/ObjDecisionSegmentationEdit-api.md",
    "title": "ObjDecisionSegmentationEdit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDecisionSegmentationEdit"
    ],
    "methods": [
      "load",
      "export_to_file",
      "import_from_file",
      "migrate_from_legacy"
    ],
    "body": "ObjDecisionSegmentationEdit"
  },
  {
    "path": "factory-core/ObjDecisionSwitchEdit-api.md",
    "title": "ObjDecisionSwitchEdit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDecisionSwitchEdit"
    ],
    "methods": [
      "load",
      "export_to_file",
      "create_simulation_data_table",
      "simulate",
      "verify_outcomes",
      "get_sim_key"
    ],
    "body": "ObjDecisionSwitchEdit"
  },
  {
    "path": "factory-core/ObjEditBase-api.md",
    "title": "ObjEditBase API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "LiteralString",
      "LiteralDumper",
      "ObjEditBase"
    ],
    "methods": [],
    "body": "LiteralString, LiteralDumper, ObjEditBase"
  },
  {
    "path": "factory-core/ObjFeatureStoreEdit-api.md",
    "title": "ObjFeatureStoreEdit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFeatureStoreEdit"
    ],
    "methods": [
      "add_feature_entry",
      "add_feature_definition",
      "add_expectation_definition",
      "add_feature_dependency",
      "display_feature_set",
      "create_feature_version",
      "activate_version",
      "get_active_version",
      "track_feature_lineage",
      "get_affected_features",
      "generate_feature_documentation",
      "save_to_yaml",
      "load_from_yaml",
      "get_expectations",
      "validate_feature_set",
      "compute_feature_statistics",
      "record_feature_usage",
      "get_usage_analytics_json",
      "assess_feature_quality_json",
      "get_query_info_for",
      "get_feature_lineage",
      "get_column_impact",
      "export_lineage_data"
    ],
    "body": "ObjFeatureStoreEdit"
  },
  {
    "path": "factory-core/ObjFirewallEdit-api.md",
    "title": "ObjFirewallEdit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFirewallEdit"
    ],
    "methods": [
      "save_to_yaml",
      "load_from_yaml"
    ],
    "body": "ObjFirewallEdit"
  },
  {
    "path": "factory-core/ObjHookEdit-api.md",
    "title": "ObjHookEdit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjHookEdit"
    ],
    "methods": [
      "load",
      "save",
      "delete_webhook",
      "export_to_file",
      "export_all_formats",
      "import_from_file",
      "list_files",
      "export_to_postman",
      "export_to_markdown",
      "supplement_inbound_parameters",
      "supplement_parameters_from_sql"
    ],
    "body": "ObjHookEdit"
  },
  {
    "path": "factory-core/ObjMailEdit-api.md",
    "title": "ObjMailEdit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjMailEdit"
    ],
    "methods": [
      "load",
      "list_templates",
      "export_to_file",
      "import_from_data",
      "import_from_file"
    ],
    "body": "ObjMailEdit"
  },
  {
    "path": "factory-core/ObjNotifyEdit-api.md",
    "title": "ObjNotifyEdit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjNotifyEdit"
    ],
    "methods": [
      "load",
      "list_notifications",
      "export_to_file",
      "import_from_data",
      "import_from_file"
    ],
    "body": "ObjNotifyEdit"
  },
  {
    "path": "factory-core/ObjPersonEdit-api.md",
    "title": "ObjPersonEdit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjPersonEdit"
    ],
    "methods": [
      "export_to_file",
      "import_from_data",
      "import_from_file"
    ],
    "body": "ObjPersonEdit"
  },
  {
    "path": "factory-core/ObjScorecardEdit-api.md",
    "title": "ObjScorecardEdit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjScorecardEdit"
    ],
    "methods": [
      "load",
      "list_scorecards",
      "export_to_file",
      "import_from_data",
      "import_from_file"
    ],
    "body": "ObjScorecardEdit"
  },
  {
    "path": "factory-core/ObjWorkflowEdit-api.md",
    "title": "ObjWorkflowEdit API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "WorkflowEdit"
    ],
    "methods": [
      "get_node_details",
      "get_node_type",
      "get_node_branch_possible",
      "get_source_nodes",
      "get_target_nodes",
      "get_workflow_object",
      "get_form_object",
      "generate_form_test",
      "generate_form_workflow",
      "get_node_connections",
      "create_node",
      "add_branch_possible",
      "add_node",
      "add_branch",
      "edit_sms",
      "edit_calculation",
      "delete_calculation",
      "add_calculation",
      "get_calculationgroup",
      "update_calculationgroup",
      "edit_channel",
      "edit_notify",
      "edit_service",
      "edit_alert",
      "edit_node",
      "new_node",
      "edit_gate",
      "del_node",
      "get_associated_webhooks",
      "get_workflow_json",
      "get_calculation_json",
      "load_workflow_from_yaml",
      "remove_none_values",
      "remove_package",
      "save_workflow_to_file",
      "safe_sql_insert",
      "closure"
    ],
    "body": "WorkflowEdit"
  },
  {
    "path": "factory-core/ObjRunnerBase-api.md",
    "title": "ObjRunnerBase API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjRunnerBase"
    ],
    "methods": [
      "debug",
      "status",
      "start",
      "stop",
      "restart",
      "logs",
      "describe",
      "extra_actions",
      "extra_help"
    ],
    "body": "ObjRunnerBase"
  },
  {
    "path": "factory-core/ObjRunnerDocker-api.md",
    "title": "ObjRunnerDocker API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjRunnerDocker"
    ],
    "methods": [
      "status",
      "start",
      "stop",
      "restart",
      "logs",
      "describe",
      "extra_actions",
      "extra_help"
    ],
    "body": "ObjRunnerDocker"
  },
  {
    "path": "factory-core/ObjRunnerK3s-api.md",
    "title": "ObjRunnerK3s API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjRunnerK3s"
    ],
    "methods": [
      "status",
      "start",
      "stop",
      "restart",
      "logs",
      "describe",
      "extra_actions",
      "extra_help"
    ],
    "body": "ObjRunnerK3s"
  },
  {
    "path": "factory-core/ObjRunnerLxc-api.md",
    "title": "ObjRunnerLxc API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjRunnerLxc"
    ],
    "methods": [
      "status",
      "start",
      "stop",
      "restart",
      "logs",
      "describe",
      "extra_actions",
      "extra_help"
    ],
    "body": "ObjRunnerLxc"
  },
  {
    "path": "factory-core/ObjRunnerSupervisor-api.md",
    "title": "ObjRunnerSupervisor API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjRunnerSupervisor"
    ],
    "methods": [
      "status",
      "start",
      "stop",
      "restart",
      "logs",
      "describe",
      "extra_actions",
      "extra_help"
    ],
    "body": "ObjRunnerSupervisor"
  },
  {
    "path": "factory-core/ObjMonitorCollector-api.md",
    "title": "ObjMonitorCollector API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjMonitorCollectorMixin",
      "ObjMonitorTUI"
    ],
    "methods": [
      "get_docker_containers",
      "get_network_io",
      "get_process_memory",
      "collect_pending_updates",
      "read_pending_updates",
      "count_pending_updates",
      "collect_disk_latency",
      "read_disk_latency",
      "collect_axion_processes",
      "collect_git",
      "get_wsl_host_ip",
      "get_host_ip",
      "collect_system",
      "collect_isp",
      "collect_ports",
      "collect_drive",
      "collect_os",
      "collect_files",
      "collect_from_proxmox",
      "collect_https",
      "collect_wireguard_peers",
      "collect_crontab_diff",
      "collect_axion_health",
      "collect_cpu_hogs",
      "collect_memory_trend",
      "collect_disk_space_trend",
      "collect_ollama",
      "collect_endpoint"
    ],
    "body": "ObjMonitorCollectorMixin, ObjMonitorTUI"
  },
  {
    "path": "factory-core/ObjMonitorCommand-api.md",
    "title": "ObjMonitorCommand API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjMonitorCommandMixin"
    ],
    "methods": [
      "record_command",
      "collect_command_activity",
      "collect_command_log",
      "collect_command_log_by_user",
      "get_command_statistics",
      "cleanup_command_log",
      "collect_cron_events",
      "read_cron_events"
    ],
    "body": "ObjMonitorCommandMixin"
  },
  {
    "path": "factory-core/ObjMonitorLogin-api.md",
    "title": "ObjMonitorLogin API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjMonitorLoginMixin"
    ],
    "methods": [
      "collect_logins",
      "collect_ssh_logins",
      "record_login_event",
      "collect_login_events",
      "collect_login_events_by_user",
      "get_login_statistics",
      "get_active_sessions",
      "cleanup_login_events"
    ],
    "body": "ObjMonitorLoginMixin"
  },
  {
    "path": "factory-core/ObjMonitorPersist-api.md",
    "title": "ObjMonitorPersist API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjMonitorPersistMixin"
    ],
    "methods": [
      "collect_connections",
      "collect_supervisor_services",
      "collect_ssh_sessions",
      "collect_apt_changelog",
      "collect_sensors",
      "collect_network_throughput",
      "collect_docker_containers"
    ],
    "body": "ObjMonitorPersistMixin"
  },
  {
    "path": "factory-core/ObjMonitorPing-api.md",
    "title": "ObjMonitorPing API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjMonitorPingMixin"
    ],
    "methods": [
      "ping_database",
      "ping_databases",
      "ping_rabbitmq",
      "ping_mongodb",
      "ping_chromadb",
      "ping_cloudflare",
      "ping_redis",
      "ping_influxdb",
      "ping_mqtt",
      "ping_docker_registry",
      "ping_imap",
      "ping_keycloak",
      "get_uptimerobot_uptime",
      "ping_smtp",
      "ping_asterisk",
      "ping_aws_s3"
    ],
    "body": "ObjMonitorPingMixin"
  },
  {
    "path": "factory-core/ObjMonitorReport-api.md",
    "title": "ObjMonitorReport API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjMonitorReportMixin"
    ],
    "methods": [
      "send_monitor_report",
      "raise_alert",
      "check_monitor_thresholds",
      "get_active_alert_counts",
      "get_recent_alerts",
      "get_open_incident_counts"
    ],
    "body": "ObjMonitorReportMixin"
  },
  {
    "path": "factory-core/ObjMonitorSecurity-api.md",
    "title": "ObjMonitorSecurity API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjMonitorSecurityMixin"
    ],
    "methods": [
      "collect_security_scan",
      "read_security_findings",
      "collect_backup_health",
      "get_backup_errors",
      "collect_network_connections",
      "collect_open_fds",
      "collect_swap_pressure",
      "collect_log_anomalies",
      "get_security_audit_summary",
      "check_cert_expiry_alerts",
      "collect_ufw_status",
      "collect_dns_health"
    ],
    "body": "ObjMonitorSecurityMixin"
  },
  {
    "path": "factory-core/ObjCalculationLint-api.md",
    "title": "ObjCalculationLint API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-core/ObjHookProbeMixin-api.md",
    "title": "ObjHookProbeMixin API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjHookProbeMixin"
    ],
    "methods": [
      "record_metric",
      "get_metrics",
      "safe_debug",
      "log_webhook_request",
      "log_webhook_response"
    ],
    "body": "ObjHookProbeMixin"
  },
  {
    "path": "factory-core/ObjWebhookAlert-api.md",
    "title": "ObjWebhookAlert API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWebhookAlert"
    ],
    "methods": [
      "alert_on_failures",
      "alert_summary",
      "run_workflow_direct"
    ],
    "body": "ObjWebhookAlert"
  },
  {
    "path": "factory-core/ObjWebhookProbe-api.md",
    "title": "ObjWebhookProbe API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "ping_all",
      "probe",
      "summary",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-core/ObjSecurityLocal-api.md",
    "title": "ObjSecurityLocal API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSecurityLocal"
    ],
    "methods": [
      "scan_all",
      "scan_fail2ban",
      "scan_ssh_keys",
      "scan_world_writable",
      "scan_sshd_config",
      "scan_unattended_upgrades",
      "scan_network_connections",
      "scan_open_fds",
      "scan_swap_pressure",
      "scan_log_anomalies"
    ],
    "body": "ObjSecurityLocal"
  },
  {
    "path": "factory-core/ObjTicketAsana-api.md",
    "title": "ObjTicketAsana API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicketAsana"
    ],
    "methods": [
      "create",
      "update",
      "change_status",
      "assign",
      "add_comment",
      "get_ticket",
      "list_tickets",
      "close",
      "resolve",
      "escalate"
    ],
    "body": "ObjTicketAsana"
  },
  {
    "path": "factory-core/ObjTicketAutoAssign-api.md",
    "title": "ObjTicketAutoAssign API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicketAutoAssign"
    ],
    "methods": [
      "auto_assign",
      "auto_assign_list_rules",
      "auto_assign_add_rule",
      "auto_assign_remove_rule"
    ],
    "body": "ObjTicketAutoAssign"
  },
  {
    "path": "factory-core/ObjTicketCommentMixin-api.md",
    "title": "ObjTicketCommentMixin API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicketCommentMixin"
    ],
    "methods": [
      "comment_read",
      "comment_create",
      "comment_get_comments",
      "comment_delete"
    ],
    "body": "ObjTicketCommentMixin"
  },
  {
    "path": "factory-core/ObjTicketGoogleTasks-api.md",
    "title": "ObjTicketGoogleTasks API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicketGoogleTasks"
    ],
    "methods": [
      "create",
      "update",
      "change_status",
      "assign",
      "add_comment",
      "get_ticket",
      "list_tickets",
      "close",
      "resolve",
      "escalate"
    ],
    "body": "ObjTicketGoogleTasks"
  },
  {
    "path": "factory-core/ObjTicketInternal-api.md",
    "title": "ObjTicketInternal API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicketInternal"
    ],
    "methods": [
      "create",
      "update",
      "change_status",
      "assign",
      "add_comment",
      "get_ticket",
      "list_tickets",
      "close",
      "resolve",
      "escalate"
    ],
    "body": "ObjTicketInternal"
  },
  {
    "path": "factory-core/ObjTicketLinkMixin-api.md",
    "title": "ObjTicketLinkMixin API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicketLinkMixin"
    ],
    "methods": [
      "link_create",
      "link_get_links",
      "link_get_blocked_by",
      "link_remove"
    ],
    "body": "ObjTicketLinkMixin"
  },
  {
    "path": "factory-core/ObjTicketProvider-api.md",
    "title": "ObjTicketProvider API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicketProvider"
    ],
    "methods": [
      "create",
      "update",
      "change_status",
      "assign",
      "add_comment",
      "get_ticket",
      "list_tickets",
      "close",
      "resolve",
      "escalate"
    ],
    "body": "ObjTicketProvider"
  },
  {
    "path": "factory-core/ObjTicketRecurringMixin-api.md",
    "title": "ObjTicketRecurringMixin API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicketRecurringMixin"
    ],
    "methods": [
      "create_recurring",
      "check_due_recurring",
      "list_recurring",
      "cancel_recurring"
    ],
    "body": "ObjTicketRecurringMixin"
  },
  {
    "path": "factory-core/ObjTicketSlaMixin-api.md",
    "title": "ObjTicketSlaMixin API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicketSlaMixin"
    ],
    "methods": [
      "sla_read",
      "sla_create",
      "sla_update",
      "get_response_deadline",
      "get_resolution_deadline",
      "get_escalation_deadline",
      "check_response_compliance",
      "check_resolution_compliance",
      "get_escalation_contact",
      "get_sla_by_package",
      "get_raci_contacts"
    ],
    "body": "ObjTicketSlaMixin"
  },
  {
    "path": "factory-core/ObjTicketSync-api.md",
    "title": "ObjTicketSync API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicketSync"
    ],
    "methods": [
      "sync_to_asana",
      "sync_from_asana",
      "create",
      "update",
      "change_status",
      "assign",
      "add_comment",
      "get_ticket",
      "list_tickets",
      "close",
      "resolve",
      "escalate"
    ],
    "body": "ObjTicketSync"
  },
  {
    "path": "factory-core/ObjTicketTaskMixin-api.md",
    "title": "ObjTicketTaskMixin API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicketTaskMixin"
    ],
    "methods": [
      "task_read",
      "task_create",
      "task_update",
      "task_complete",
      "task_cancel",
      "task_start",
      "task_get_tasks",
      "get_pending_task_count",
      "get_completed_task_count"
    ],
    "body": "ObjTicketTaskMixin"
  },
  {
    "path": "factory-core/ObjTicketTemplateMixin-api.md",
    "title": "ObjTicketTemplateMixin API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicketTemplateMixin"
    ],
    "methods": [
      "template_read",
      "template_read_by_guid",
      "template_create",
      "template_add_task",
      "template_get_templates",
      "template_get_tasks",
      "template_create_from_template"
    ],
    "body": "ObjTicketTemplateMixin"
  },
  {
    "path": "factory-core/ObjTicketTodoist-api.md",
    "title": "ObjTicketTodoist API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjTicketTodoist"
    ],
    "methods": [
      "create",
      "update",
      "change_status",
      "assign",
      "add_comment",
      "get_ticket",
      "list_tickets",
      "close",
      "resolve",
      "escalate"
    ],
    "body": "ObjTicketTodoist"
  },
  {
    "path": "factory-core/ObjAiTUI-api.md",
    "title": "ObjAiTUI API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "AiTUI"
    ],
    "methods": [],
    "body": "AiTUI"
  },
  {
    "path": "factory-core/ObjConversationTUI-api.md",
    "title": "ObjConversationTUI API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ConversationTUI"
    ],
    "methods": [],
    "body": "ConversationTUI"
  },
  {
    "path": "factory-core/ObjGoTUI-api.md",
    "title": "ObjGoTUI API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "GoTUI"
    ],
    "methods": [],
    "body": "GoTUI"
  },
  {
    "path": "factory-core/ObjImportTUI-api.md",
    "title": "ObjImportTUI API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ImportTUI"
    ],
    "methods": [],
    "body": "ImportTUI"
  },
  {
    "path": "factory-core/ObjMqttTUI-api.md",
    "title": "ObjMqttTUI API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "MqttTUI"
    ],
    "methods": [
      "set_broker",
      "set_package",
      "set_connection_status",
      "set_queue_size",
      "record_message",
      "record_drop",
      "record_flush"
    ],
    "body": "MqttTUI"
  },
  {
    "path": "factory-core/ObjReportTUI-api.md",
    "title": "ObjReportTUI API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ReportTUI"
    ],
    "methods": [],
    "body": "ReportTUI"
  },
  {
    "path": "factory-core/ObjSchedulerMonitorTUI-api.md",
    "title": "ObjSchedulerMonitorTUI API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "SchedulerMonitorTUI"
    ],
    "methods": [],
    "body": "SchedulerMonitorTUI"
  },
  {
    "path": "factory-core/ObjSchedulerTUI-api.md",
    "title": "ObjSchedulerTUI API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "SchedulerTUI"
    ],
    "methods": [
      "set_package",
      "record_event"
    ],
    "body": "SchedulerTUI"
  },
  {
    "path": "factory-core/ObjTicketTUI-api.md",
    "title": "ObjTicketTUI API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "TicketTUI"
    ],
    "methods": [],
    "body": "TicketTUI"
  },
  {
    "path": "factory-core/ObjTuiBase-api.md",
    "title": "ObjTuiBase API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "TuiBase"
    ],
    "methods": [
      "start",
      "stop",
      "log",
      "set_status"
    ],
    "body": "TuiBase"
  },
  {
    "path": "factory-core/ObjWebhookTUI-api.md",
    "title": "ObjWebhookTUI API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "WebhookTUI"
    ],
    "methods": [],
    "body": "WebhookTUI"
  },
  {
    "path": "factory-core/ObjWorkflowSimulTUI-api.md",
    "title": "ObjWorkflowSimulTUI API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "SimulTUI"
    ],
    "methods": [
      "start",
      "stop"
    ],
    "body": "SimulTUI"
  },
  {
    "path": "factory-core/ObjWorkflowTUI-api.md",
    "title": "ObjWorkflowTUI API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "WorkflowTUI"
    ],
    "methods": [],
    "body": "WorkflowTUI"
  },
  {
    "path": "factory-core/ObjDecisionSwitchVisual-api.md",
    "title": "ObjDecisionSwitchVisual API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDecisionSwitchVisual"
    ],
    "methods": [
      "get_three_words",
      "diagram",
      "diagram_terminal",
      "diagram_sankey",
      "pmml_operator",
      "from_pmml_operator",
      "save_pmml",
      "load_pmml",
      "save_csv",
      "load_csv",
      "save_excel",
      "map_operator_to_sql",
      "generate_sql_statement",
      "generate_and_store_sql",
      "compare_simulation_with_sql",
      "generate_sankey_mermaid",
      "generate_sankey_plotly",
      "send_email",
      "compute_outcome_distribution",
      "build_combined_outcome_html",
      "build_outcome_paths_html"
    ],
    "body": "ObjDecisionSwitchVisual"
  },
  {
    "path": "factory-core/ObjFeatureStoreVisual-api.md",
    "title": "ObjFeatureStoreVisual API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFeatureStoreVisual"
    ],
    "methods": [
      "generate_lineage_mermaid",
      "update_feature_lineage_diagrams",
      "display_compute_summary",
      "send_email"
    ],
    "body": "ObjFeatureStoreVisual"
  },
  {
    "path": "factory-core/ObjVisual-api.md",
    "title": "ObjVisual API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjVisual"
    ],
    "methods": [
      "lighten",
      "render_mermaid",
      "render_piper",
      "render_plotly_sankey",
      "render_plotly_bar"
    ],
    "body": "ObjVisual"
  },
  {
    "path": "factory-core/ObjWorkflowVisual-api.md",
    "title": "ObjWorkflowVisual API",
    "factory": "factory.core",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "WorkflowVisual"
    ],
    "methods": [
      "get_piper_theme",
      "mermaid_to_png",
      "parse_transitions",
      "get_three_words",
      "get_mermaid_file_name",
      "get_image_file_name",
      "get_piper_image_file_name",
      "get_piper_file_name",
      "visualise",
      "visualise_piper",
      "visualise_all",
      "render_context_resultset",
      "export_to_piper"
    ],
    "body": "WorkflowVisual"
  },
  {
    "path": "factory-service/ObjServiceCommunication-api.md",
    "title": "ObjServiceCommunication API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "patch_paramCalc",
      "MapCommunication",
      "RunCommunication",
      "Compute",
      "Connect",
      "run_workflow_direct",
      "Send",
      "SelectCompute"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceStl-api.md",
    "title": "ObjServiceStl API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceStl"
    ],
    "methods": [
      "process_stl",
      "Compute"
    ],
    "body": "ObjServiceStl"
  },
  {
    "path": "factory-service/ObjServiceAllPS-api.md",
    "title": "ObjServiceAllPS API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStrategy",
      "SetStageId",
      "patch_param",
      "OpenConnection",
      "CloseConnection",
      "AddEmployer",
      "AddClient",
      "RequestAccountVerification",
      "ValidateAccountCDV",
      "ReadConnection",
      "ReadClient",
      "Read",
      "FinishAndUpdate",
      "Update",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceStratcolAvsr-api.md",
    "title": "ObjServiceStratcolAvsr API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "TextClean",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceStratcolCdv-api.md",
    "title": "ObjServiceStratcolCdv API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceIconaf-api.md",
    "title": "ObjServiceIconaf API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "patch_param",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceLiberty-api.md",
    "title": "ObjServiceLiberty API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStrategy",
      "SetStageId",
      "BuildXml",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "Send",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceOcc-api.md",
    "title": "ObjServiceOcc API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStrategy",
      "SetStageId",
      "BuildXml",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "Send",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceApiAbil-api.md",
    "title": "ObjServiceApiAbil API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "Connect",
      "Send",
      "SendToSelf"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceEuphoria-api.md",
    "title": "ObjServiceEuphoria API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStrategy",
      "SetStageId",
      "patch_param",
      "TestConnection",
      "TrickleFeed",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceMercury-api.md",
    "title": "ObjServiceMercury API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "MercurySOAP",
      "ObjServiceApi"
    ],
    "methods": [
      "buildSOAP",
      "sendRequest",
      "Connect",
      "Send"
    ],
    "body": "MercurySOAP, ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceMsavira-api.md",
    "title": "ObjServiceMsavira API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "ParseXmlFile",
      "StageProcess",
      "PreProcess",
      "Walk",
      "ProcessCheck",
      "Connect",
      "Process",
      "Send",
      "Reset"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceTia-api.md",
    "title": "ObjServiceTia API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "TiaSOAP",
      "ObjServiceApi"
    ],
    "methods": [
      "buildSOAP",
      "sendRequest",
      "Connect",
      "Send"
    ],
    "body": "TiaSOAP, ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceTia47092-api.md",
    "title": "ObjServiceTia47092 API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "TiaSOAP",
      "ObjServiceApi"
    ],
    "methods": [
      "buildSOAP",
      "sendRequest",
      "Connect",
      "Send"
    ],
    "body": "TiaSOAP, ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceXds-api.md",
    "title": "ObjServiceXds API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "GetLocalTableBase",
      "SetStrategy",
      "SetStageGuid",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "MonthDelta",
      "IsTicketValid",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceXdsHome-api.md",
    "title": "ObjServiceXdsHome API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "GetLocalTableBase",
      "SetStrategy",
      "SetStageGuid",
      "patch_param",
      "ReadConnection",
      "Read",
      "UnpackData",
      "Update",
      "MonthDelta",
      "IsTicketValid",
      "Connect",
      "ComputeVariables",
      "sql_get_tuple_set",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceXdsV2-api.md",
    "title": "ObjServiceXdsV2 API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "GetLocalTableBase",
      "SetStageGuid",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "MonthDelta",
      "IsTicketValid",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServicePaythru-api.md",
    "title": "ObjServicePaythru API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStrategy",
      "SetStageId",
      "ReadConnection",
      "Read",
      "Update",
      "patch_paramLocal",
      "Connect",
      "GetActualToken",
      "GetXToken",
      "PostForm",
      "Send",
      "SendNormal",
      "NowTokenise",
      "OnlyTokenise",
      "Send3DSecure",
      "Get3DStatus",
      "Finish3DCardAuth",
      "PrepPayloadPostForm",
      "PrepPayloadSessionCardAuth_wtoken",
      "PrepSessionCreateCardToken",
      "PrepPayloadSessionCardRefund",
      "PrepPayloadPreauthCancel",
      "PrepPayloadSessionCardAuth",
      "PrepPayloadCardAuth"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceAsana-api.md",
    "title": "ObjServiceAsana API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_workspace",
      "get_users",
      "list_projects",
      "get_project",
      "create_project",
      "list_tasks",
      "get_task",
      "create_task",
      "update_task",
      "complete_task",
      "add_comment",
      "add_subtask",
      "list_sections",
      "create_section",
      "move_task_to_section",
      "link_record",
      "get_asana_gid",
      "get_local_key",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceBitbucket-api.md",
    "title": "ObjServiceBitbucket API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_repo",
      "list_branches",
      "get_branch",
      "list_pull_requests",
      "get_pull_request",
      "create_pull_request",
      "add_pr_comment",
      "approve_pr",
      "merge_pr",
      "list_pipelines",
      "get_pipeline",
      "trigger_pipeline",
      "list_commits",
      "get_commit",
      "list_issues",
      "create_issue",
      "link_record",
      "get_external_id",
      "get_local_key",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceBulksqldispatcher-api.md",
    "title": "ObjServiceBulksqldispatcher API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi",
      "TestScoreCases"
    ],
    "methods": [
      "MoveValuesToHistory",
      "save_json",
      "establish_schemas",
      "unpack_data",
      "insert_data",
      "create_table",
      "Connect",
      "Send",
      "test_NonPayingSeg",
      "test_PayingSeg",
      "test_ThinFile"
    ],
    "body": "ObjServiceApi, TestScoreCases"
  },
  {
    "path": "factory-service/ObjServiceCalculation-api.md",
    "title": "ObjServiceCalculation API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "Compute",
      "Connect",
      "run_workflow_direct",
      "Send",
      "SelectCompute"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceChannel360-api.md",
    "title": "ObjServiceChannel360 API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Channel360Error",
      "ObjServiceApi"
    ],
    "methods": [
      "build_components",
      "send_template",
      "send_from_context",
      "get_queue",
      "Connect",
      "run_workflow_direct"
    ],
    "body": "Channel360Error, ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceClassification-api.md",
    "title": "ObjServiceClassification API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "read",
      "row_value",
      "is_leaf",
      "node_name",
      "node_token",
      "compute_diagram",
      "diagram",
      "compute_classification",
      "normalise_tree",
      "compute_classification_tree",
      "save_test_data",
      "restore_test_data"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceClassificationPmmlRead-api.md",
    "title": "ObjServiceClassificationPmmlRead API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "parse_pmml_data_dictionary",
      "parse_pmml_nodes",
      "insert_nodes_to_db",
      "import_pmml_to_db"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceClassificationPmmlWrite-api.md",
    "title": "ObjServiceClassificationPmmlWrite API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-service/ObjServiceConfluence-api.md",
    "title": "ObjServiceConfluence API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_page_id",
      "update_page",
      "create_page",
      "parse_markdown",
      "generate_doc",
      "update_factory_object",
      "scan_pages",
      "get_page_title",
      "scan_factories",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceCurrency-api.md",
    "title": "ObjServiceCurrency API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_rates",
      "convert",
      "record_rates",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceDecision-api.md",
    "title": "ObjServiceDecision API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "DecisionSetup",
      "ObjServiceApi",
      "TestScoreCases"
    ],
    "methods": [
      "create_everything",
      "selfexecute",
      "s_setup_decision_pack",
      "s_setup_decision_pack_version",
      "s_setup_workflow",
      "s_setup_calculation",
      "s_setup_calculations",
      "create_extra_tables",
      "create_forms",
      "create_extra_workflows",
      "create_workflows",
      "create_calculations",
      "create_reports",
      "create_extra_reports",
      "MoveValuesToHistory",
      "data_type_transform",
      "var_calc",
      "calculate_truefalse",
      "run_decision",
      "apply_hitrules",
      "Connect",
      "Send",
      "test_NonPayingSeg",
      "test_PayingSeg",
      "test_ThinFile"
    ],
    "body": "DecisionSetup, ObjServiceApi, TestScoreCases"
  },
  {
    "path": "factory-service/ObjServiceDecisionSwitch-api.md",
    "title": "ObjServiceDecisionSwitch API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceDocEdit-api.md",
    "title": "ObjServiceDocEdit API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "Connect",
      "Send",
      "run_workflow_direct",
      "replace_text_in_docx",
      "generate_pdf_from_docx"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceEmailTicket-api.md",
    "title": "ObjServiceEmailTicket API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_unprocessed_emails",
      "classify_email",
      "process_email",
      "process"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceFilefeed-api.md",
    "title": "ObjServiceFilefeed API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "scan_folder",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceGoogle-api.md",
    "title": "ObjServiceGoogle API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "send_email",
      "list_messages",
      "get_message",
      "create_draft",
      "create_spreadsheet",
      "read_range",
      "write_range",
      "append_rows",
      "export_to_sheet",
      "list_files",
      "upload_file",
      "create_folder",
      "share_file",
      "get_or_create_package_folder",
      "create_event",
      "list_events",
      "create_reminder",
      "link_record",
      "get_external_id",
      "get_local_key",
      "list_tasklists",
      "get_tasklist",
      "create_tasklist",
      "list_tasks",
      "get_task",
      "create_task",
      "update_task",
      "complete_task",
      "delete_task",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceGuidName-api.md",
    "title": "ObjServiceGuidName API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "compute_name",
      "hash",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceInfobip-api.md",
    "title": "ObjServiceInfobip API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "format_send_template",
      "format_send_message",
      "format_send_button",
      "format_send_list",
      "format_create_template",
      "receive_message_data",
      "receive_interactive_data",
      "log_message_data",
      "inbound_get_payload_format",
      "create_template_payload_format",
      "inbound_get_payload_type",
      "get_button_json",
      "get_list_json"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceIntegration-api.md",
    "title": "ObjServiceIntegration API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceIntegration"
    ],
    "methods": [
      "sync_to_ticket",
      "map_to_ticket_event"
    ],
    "body": "ObjServiceIntegration"
  },
  {
    "path": "factory-service/ObjServiceMeta-api.md",
    "title": "ObjServiceMeta API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "patch_param",
      "ComputeReports",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceMongoBackup-api.md",
    "title": "ObjServiceMongoBackup API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStageId",
      "patch_param",
      "Read",
      "sql_type",
      "sql_format",
      "Connect",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceMonitor-api.md",
    "title": "ObjServiceMonitor API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "collect",
      "patch_param",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceNewDevelopmentDB-api.md",
    "title": "ObjServiceNewDevelopmentDB API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "remove_characters",
      "clean_data",
      "patch_param",
      "Read",
      "get_bank_codes",
      "get_bank_code",
      "Connect",
      "get_fuzzy_match_threshold",
      "get_prop_development_no",
      "match_package_letter",
      "fetch_parameters",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceOSM-api.md",
    "title": "ObjServiceOSM API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "address_to_geo",
      "geo_to_address",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceOnvif-api.md",
    "title": "ObjServiceOnvif API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "Compute",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServicePalette-api.md",
    "title": "ObjServicePalette API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "parse_swatch",
      "parse_all_swatches",
      "compile_scss",
      "load_palette_map",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServicePublishJourney-api.md",
    "title": "ObjServicePublishJourney API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "patch_param",
      "ComputeReports",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServicePython-api.md",
    "title": "ObjServicePython API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "patch_param",
      "execute_script",
      "process",
      "run_workflow_direct",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceQuiz-api.md",
    "title": "ObjServiceQuiz API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStageId",
      "patch_param",
      "Read",
      "Update",
      "Connect",
      "Send",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceReference-api.md",
    "title": "ObjServiceReference API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "Connect",
      "Send",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceRss-api.md",
    "title": "ObjServiceRss API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "parse_feed",
      "update_all",
      "read_items",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceSAFPS-api.md",
    "title": "ObjServiceSAFPS API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "check_fraud",
      "detailed_search",
      "process",
      "run_workflow_direct",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceScorecard-api.md",
    "title": "ObjServiceScorecard API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi",
      "TestScoreCases"
    ],
    "methods": [
      "Connect",
      "Send",
      "run_test",
      "test_NonPayingSeg",
      "test_PayingSeg",
      "test_ThinFile"
    ],
    "body": "ObjServiceApi, TestScoreCases"
  },
  {
    "path": "factory-service/ObjServiceScorecardLoad-api.md",
    "title": "ObjServiceScorecardLoad API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceScorecardLoad"
    ],
    "methods": [
      "export_scorecard_yaml",
      "import_scorecard_yaml",
      "export_scorecard_pmml",
      "import_scorecard_pmml"
    ],
    "body": "ObjServiceScorecardLoad"
  },
  {
    "path": "factory-service/ObjServiceScreenshot-api.md",
    "title": "ObjServiceScreenshot API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi",
      "TestScreenshotMethods"
    ],
    "methods": [
      "Compute",
      "run_workflow_direct",
      "validate_screenshot"
    ],
    "body": "ObjServiceApi, TestScreenshotMethods"
  },
  {
    "path": "factory-service/ObjServiceSegmentation-api.md",
    "title": "ObjServiceSegmentation API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "provision",
      "provision_form",
      "insert_segment_form",
      "insert_segment_formfields",
      "get_package_default_template",
      "get_segment",
      "read",
      "segment_annotate",
      "query_annotate",
      "table_annotate",
      "compute_segment",
      "lookup_segment",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceSlack-api.md",
    "title": "ObjServiceSlack API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "send_message",
      "send_dm",
      "update_message",
      "add_reaction",
      "send_thread_reply",
      "list_channels",
      "get_channel_info",
      "find_channel",
      "list_users",
      "find_user_by_email",
      "get_user_info",
      "send_approval_request",
      "upload_file",
      "notify_ticket",
      "notify_signoff",
      "notify_workflow",
      "notify_deployment",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceTableSummary-api.md",
    "title": "ObjServiceTableSummary API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "Read",
      "Update",
      "Connect",
      "infer_type",
      "summarize_selected_columns",
      "Send",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceTest-api.md",
    "title": "ObjServiceTest API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "Read",
      "Update",
      "Connect",
      "Send",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceTodoist-api.md",
    "title": "ObjServiceTodoist API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "list_projects",
      "get_project",
      "create_project",
      "list_tasks",
      "get_task",
      "create_task",
      "update_task",
      "close_task",
      "reopen_task",
      "delete_task",
      "list_comments",
      "add_comment",
      "list_labels",
      "create_label",
      "list_sections",
      "create_section",
      "list_collaborators",
      "link_record",
      "get_todoist_id",
      "get_local_key",
      "axion_to_todoist_priority",
      "todoist_to_axion_priority",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceTruValidate-api.md",
    "title": "ObjServiceTruValidate API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "parse_dob_from_id",
      "get_access_token",
      "start_application",
      "search_fcra",
      "organisation_search",
      "run_verification",
      "process",
      "run_workflow_direct",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceVirtual-api.md",
    "title": "ObjServiceVirtual API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceWaitmessage-api.md",
    "title": "ObjServiceWaitmessage API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_wait_message",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceWeather-api.md",
    "title": "ObjServiceWeather API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_report",
      "render",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceWhatsapp-api.md",
    "title": "ObjServiceWhatsapp API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_remote_connections",
      "get_campaign_opt_in",
      "get_user_campaigns",
      "format_and_send",
      "post_api",
      "send_message",
      "send_template",
      "send_button",
      "send_list",
      "create_template",
      "format_send_template",
      "format_send_message",
      "format_send_button",
      "format_send_list",
      "format_create_template",
      "log_received_message",
      "receive_message",
      "receive_interactive",
      "log_sent_message",
      "log_message",
      "opt_out_sender",
      "format_payload",
      "local_patch_param",
      "receive_message_data",
      "receive_interactive_data",
      "log_message_data",
      "inbound_get_payload_format",
      "create_template_payload_format",
      "inbound_get_payload_type",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceWikipedia-api.md",
    "title": "ObjServiceWikipedia API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_summary",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceYoutube-api.md",
    "title": "ObjServiceYoutube API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "setup_document_definition",
      "Connect",
      "Send",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceZeroBounce-api.md",
    "title": "ObjServiceZeroBounce API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "validate_email",
      "validate_and_bloom",
      "process",
      "run_workflow_direct",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceDatabulk-api.md",
    "title": "ObjServiceDatabulk API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "patch_paramCalc",
      "find_structure",
      "Connect",
      "insert_records",
      "create_table",
      "RunDirect"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceDecision_old-api.md",
    "title": "ObjServiceDecision_old API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "DecisionSetup"
    ],
    "methods": [
      "create_everything",
      "selfexecute",
      "s_setup_decision_pack",
      "s_setup_decision_pack_version",
      "s_setup_workflow",
      "s_setup_calculation",
      "s_setup_calculations",
      "create_extra_tables",
      "create_forms",
      "create_extra_workflows",
      "create_workflows",
      "create_calculations",
      "create_reports",
      "create_extra_reports"
    ],
    "body": "DecisionSetup"
  },
  {
    "path": "factory-service/ObjServiceSurvey-api.md",
    "title": "ObjServiceSurvey API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "SurveySetup",
      "ObjServiceApi"
    ],
    "methods": [
      "create_everything",
      "selfexecute",
      "s_setup_survey",
      "s_setup_survey_version",
      "s_setup_survey_page",
      "s_setup_survey_question",
      "s_setup_survey_qchoice",
      "s_setup_survey_schedule",
      "create_extra_tables",
      "create_forms",
      "create_extra_workflows",
      "create_workflows",
      "create_calculations",
      "create_reports",
      "create_extra_reports",
      "selfexecute",
      "create_page",
      "add_workflows",
      "add_def_form",
      "add_def_formfield",
      "add_def_report",
      "add_main_table",
      "add_etl_workflow",
      "copy_version",
      "copy_pages",
      "copy_questions",
      "copy_question_choices",
      "copy_survey_version",
      "generate_schedules",
      "generate_pages",
      "run_workflow_direct"
    ],
    "body": "SurveySetup, ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceTacticalRPG-api.md",
    "title": "ObjServiceTacticalRPG API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceTacticalRPG",
      "Unit",
      "Squad",
      "GameState",
      "Grid",
      "TurnManager"
    ],
    "methods": [
      "route_new_game",
      "route_load_game",
      "route_start_mission",
      "route_submit_action",
      "route_get_game_state",
      "route_get_unit_details",
      "load_game_data",
      "create_roster",
      "create_unit",
      "initialize_mission",
      "spawn_enemy",
      "load_map",
      "validate_action",
      "resolve_action",
      "pathfind",
      "distance",
      "heuristic",
      "calculate_hit_chance",
      "calculate_damage",
      "advance_turn",
      "run_ai_turn",
      "ai_choose_action",
      "handle_mission_complete",
      "save_to_database",
      "load_from_database",
      "to_dict",
      "add_unit",
      "to_dict",
      "place_unit",
      "remove_unit",
      "is_complete",
      "to_dict",
      "get_walkable_neighbors",
      "get_spawn_point",
      "get_enemy_spawn_point",
      "get_cover_value",
      "to_dict",
      "advance_phase",
      "refill_ap"
    ],
    "body": "ObjServiceTacticalRPG, Unit, Squad, GameState, Grid, TurnManager"
  },
  {
    "path": "factory-service/ObjServiceBureau-api.md",
    "title": "ObjServiceBureau API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "run_workflow_direct",
      "TransunionC04Virtual",
      "TransunionPDFVirtual",
      "TransunionC13Virtual",
      "TransunionC41Virtual",
      "CompuscanNormVirtual",
      "PatchPayload",
      "TransUnionResult",
      "transunion_c04",
      "TransunionC13",
      "TransunionC41",
      "TransunionPDF",
      "CallBureau",
      "Connect",
      "Send",
      "Compute",
      "SelectCompute"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceCurrency-api.md",
    "title": "ObjServiceCurrency API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Unit",
      "CurrencyHandler",
      "Currency",
      "Currencies",
      "ObjServiceApi"
    ],
    "methods": [
      "Version",
      "Rebase",
      "Print",
      "Version",
      "OnCubeStart",
      "OnCubeEnd",
      "characters",
      "startElement",
      "endElement",
      "Version",
      "Read",
      "Create",
      "Update",
      "ReadPage",
      "Rebase",
      "Save",
      "ParsePage",
      "Connect",
      "Send"
    ],
    "body": "Unit, CurrencyHandler, Currency, Currencies, ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceDatalake-api.md",
    "title": "ObjServiceDatalake API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "Compute",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceDebicheck-api.md",
    "title": "ObjServiceDebicheck API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "patch_param",
      "ZeroPatch",
      "CurrencyPatch",
      "ExecutePlaceholder",
      "ExecutePrestage",
      "ExecuteMandate",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceDebicheckReport-api.md",
    "title": "ObjServiceDebicheckReport API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "patch_param",
      "ZeroPatch",
      "CurrencyPatch",
      "ExecutePlaceholder",
      "BloomInstalment",
      "BloomMandate",
      "BloomSettlement",
      "BuildAuth",
      "ExecuteReportInstalment",
      "ExecuteReportMandate",
      "ExecuteReportSettlement",
      "UpdateMap",
      "Connect",
      "PostSql",
      "run_workflow_direct",
      "Send",
      "SelectCompute",
      "Compute"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceDigitalOnboarding-api.md",
    "title": "ObjServiceDigitalOnboarding API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStageId",
      "get_access_token",
      "start_new_application",
      "search_fcra",
      "organisation_search",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "string_only_list",
      "prepare_bloom_results",
      "Send",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceDoForms-api.md",
    "title": "ObjServiceDoForms API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "CallDoForms",
      "GetForms",
      "GetProjects",
      "GetSubmissionDetail",
      "GetCleanName",
      "CreateForm",
      "AddFormField",
      "GetSubmissionDetail",
      "GetSubmissions",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceExperian-api.md",
    "title": "ObjServiceExperian API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "Score",
      "Compute",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceFHShopify-api.md",
    "title": "ObjServiceFHShopify API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "check_preflight",
      "get_colour_display_name",
      "create_dryrun_table",
      "compare_dryrun_results",
      "get_dryrun_summary",
      "clear_dryrun_data",
      "rate_limit",
      "set_stage_id",
      "patch_param",
      "rate_limit_graphql",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "Send",
      "create_body",
      "bloom_reject",
      "BloomProduct",
      "BloomMeta",
      "RetrieveSet",
      "retrieve_all_products",
      "get_promotions",
      "build_status_email",
      "send_status_email",
      "recon_promotions",
      "get_product_by_sku",
      "get_product_set",
      "get_group_skus",
      "clean_previous_promo_tags",
      "push_products_batch",
      "list_products",
      "save_products_to_inventory",
      "is_product_cache_valid",
      "update_inventory_sync_time",
      "sync_product_status_from_shopify",
      "sync_all_product_statuses",
      "DeleteProduct",
      "DeleteSku",
      "FoldSet",
      "update_images",
      "create_product"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceFHShopify_alt-api.md",
    "title": "ObjServiceFHShopify_alt API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ShopifyClient",
      "ObjServiceApi"
    ],
    "methods": [
      "info",
      "debug",
      "create_product",
      "bulk_create_variants",
      "create_product_with_variants",
      "RateLimit",
      "SetStrategy",
      "SetStageId",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "Send",
      "CreateBody",
      "BloomReject",
      "BloomProduct",
      "BloomProductPims",
      "BloomUpdate",
      "BloomMeta",
      "RetrieveSet",
      "DeleteProduct",
      "DeleteSku",
      "FoldSet",
      "FoldAll",
      "RetrieveMetaSet",
      "Currency",
      "GetMetaString",
      "Unique",
      "BloomProductPrice",
      "UpdateImages",
      "CreateProduct",
      "get_product_json",
      "ComputeSql",
      "SyncImage",
      "SyncImages",
      "AuditSet",
      "StageSet",
      "ComputeLocations",
      "ComputeSet",
      "Connect",
      "run_workflow_direct"
    ],
    "body": "ShopifyClient, ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceFHShopify_classic-api.md",
    "title": "ObjServiceFHShopify_classic API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "RateLimit",
      "SetStrategy",
      "SetStageId",
      "PatchParam",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "Send",
      "CreateBody",
      "BloomReject",
      "BloomProduct",
      "BloomProductPims",
      "BloomUpdate",
      "BloomMeta",
      "RetrieveSet",
      "DeleteProduct",
      "DeleteSku",
      "FoldSet",
      "FoldAll",
      "RetrieveMetaSet",
      "Currency",
      "GetMetaString",
      "Unique",
      "BloomProductPrice",
      "UpdateImages",
      "CreateProduct",
      "ComputeSql",
      "SyncImage",
      "SyncImages",
      "AuditSet",
      "StageSet",
      "ComputeLocations",
      "ComputeSet",
      "Connect",
      "RunDirect"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceFHStatement-api.md",
    "title": "ObjServiceFHStatement API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStrategy",
      "SetStageId",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "Send",
      "CleanSql",
      "AddPaymentShortcuts",
      "AddPaymentLinks",
      "ComputeSql"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceFHticket-api.md",
    "title": "ObjServiceFHticket API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStrategy",
      "SetStageId",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "Send",
      "CleanSql",
      "ClearCache",
      "ComputeSql",
      "Compute"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceFHwebsite-api.md",
    "title": "ObjServiceFHwebsite API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStageId",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "Send",
      "GrabImage",
      "ComputeSql",
      "SyncImage",
      "SyncImages",
      "ComputeSet",
      "Connect",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceFilefeed-api.md",
    "title": "ObjServiceFilefeed API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStageId",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "Send",
      "ScanFolders"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceFreshchat-api.md",
    "title": "ObjServiceFreshchat API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStageId",
      "patch_param",
      "ReadConnection",
      "Read",
      "create_images",
      "create_contact",
      "update_contact",
      "get_id",
      "Update",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceFullHouse-api.md",
    "title": "ObjServiceFullHouse API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStageId",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "Send",
      "ScanSql",
      "ScanSqlUpdate",
      "ScanSqlDelete",
      "ScanMessage",
      "ScanFolders",
      "ScanSource"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceFullhouseAgent-api.md",
    "title": "ObjServiceFullhouseAgent API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "run_workflow_direct",
      "connect",
      "extract_data_tables",
      "import_sql",
      "extract_data_query",
      "extract_data_code",
      "export_data",
      "local_actions",
      "scan_branch",
      "scan_hq",
      "poll_ftp",
      "mark_ftp_done"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceGuardrisk-api.md",
    "title": "ObjServiceGuardrisk API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "patch_param",
      "ExportData",
      "Compute",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceHCScore-api.md",
    "title": "ObjServiceHCScore API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceImportParser-api.md",
    "title": "ObjServiceImportParser API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "patch_param",
      "scan_input",
      "process",
      "run_workflow_direct",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceImportSql-api.md",
    "title": "ObjServiceImportSql API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStageId",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "Send",
      "CleanSql",
      "update_table",
      "update_tables",
      "scan_file",
      "is_open",
      "scan_sql",
      "UpdateAjs",
      "UpdateAjsPayments",
      "trader_sync_check"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServicePTP-api.md",
    "title": "ObjServicePTP API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "PTPSettings",
      "PTPRecord",
      "PTPAudit",
      "ObjServiceApi"
    ],
    "methods": [
      "from_db_row",
      "ptp_required_amount",
      "from_row",
      "is_ptp_kept",
      "from_row",
      "calc_ptps",
      "run_workflow_direct"
    ],
    "body": "PTPSettings, PTPRecord, PTPAudit, ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceRealpay-api.md",
    "title": "ObjServiceRealpay API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "patch_param",
      "oauthLogin",
      "mandateChangesReport",
      "instalment_changes_report",
      "createcustomer",
      "createmandate",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceSabc-api.md",
    "title": "ObjServiceSabc API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "patch_param",
      "Compute",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceSmsRecon-api.md",
    "title": "ObjServiceSmsRecon API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "ComputePromotion",
      "Delivery",
      "Compute",
      "Connect",
      "run_workflow_direct",
      "Send",
      "SelectCompute"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceTVlicense-api.md",
    "title": "ObjServiceTVlicense API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "Compute",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceTrader-api.md",
    "title": "ObjServiceTrader API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "Compute",
      "UpdateTrader",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceTransferSql-api.md",
    "title": "ObjServiceTransferSql API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStrategy",
      "SetStageId",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "Send",
      "ScanFile",
      "ScanSql"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceVericred-api.md",
    "title": "ObjServiceVericred API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "Compute",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceZeroBounce-api.md",
    "title": "ObjServiceZeroBounce API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStageId",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "Send",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/test_dryrun-api.md",
    "title": "test_dryrun API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-service/test_dryrun_simple-api.md",
    "title": "test_dryrun_simple API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-service/ObjServiceGoogleHome-api.md",
    "title": "ObjServiceGoogleHome API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "ping",
      "list_devices",
      "get_device_state",
      "set_device_on_off",
      "set_brightness",
      "log_event",
      "process"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceAutomation-api.md",
    "title": "ObjServiceAutomation API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "sync_devices",
      "record_reading",
      "log_event",
      "route",
      "sync_all",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceCalendar-api.md",
    "title": "ObjServiceCalendar API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "fetch_events",
      "record_events",
      "merge_markdown",
      "sync",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceEwelink-api.md",
    "title": "ObjServiceEwelink API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_devices",
      "sync_devices",
      "get_device_status",
      "set_switch",
      "toggle",
      "get_power_reading",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceFacebook-api.md",
    "title": "ObjServiceFacebook API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "download_feed",
      "backfill_html",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceGeyserScheduler-api.md",
    "title": "ObjServiceGeyserScheduler API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_solar_state",
      "get_geyser_state",
      "set_geyser",
      "run",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceGmail-api.md",
    "title": "ObjServiceGmail API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "list_messages",
      "trash_message",
      "apply_rule",
      "run_cleanup",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceLibreGlucose-api.md",
    "title": "ObjServiceLibreGlucose API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "authenticate",
      "get_connections",
      "get_graph",
      "get_current_glucose",
      "get_graph_readings",
      "record_glucose",
      "record_graph",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceLife360-api.md",
    "title": "ObjServiceLife360 API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_circles",
      "get_members",
      "sync",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceLoadshedding-api.md",
    "title": "ObjServiceLoadshedding API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_status",
      "get_area_info",
      "get_area_info_test",
      "search_areas",
      "get_areas_nearby",
      "get_topics_nearby",
      "get_allowance",
      "is_loadshedding_active",
      "get_next_event",
      "record_status",
      "run_precharge",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceNas-api.md",
    "title": "ObjServiceNas API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_volumes",
      "get_disks",
      "get_system",
      "get_network",
      "get_ssdcache",
      "get_connections",
      "get_backup_tasks",
      "record_volumes",
      "record_disks",
      "record_system",
      "record_network",
      "record_ssdcache",
      "record_connections",
      "record_backup",
      "sync",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceNetwork-api.md",
    "title": "ObjServiceNetwork API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_router_resource",
      "get_interfaces",
      "get_dhcp_leases",
      "get_arp_devices",
      "record_router",
      "record_interfaces",
      "record_presence",
      "record_health",
      "record_household",
      "sync",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceNotification-api.md",
    "title": "ObjServiceNotification API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "classify",
      "process_log",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceOpenWeather-api.md",
    "title": "ObjServiceOpenWeather API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_current",
      "get_forecast",
      "get_air_quality",
      "record_weather",
      "get_solar_forecast",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceOwnTracks-api.md",
    "title": "ObjServiceOwnTracks API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "record",
      "get_latest",
      "serve",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServicePoolScheduler-api.md",
    "title": "ObjServicePoolScheduler API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_solar_state",
      "get_pump_state",
      "get_last_on_time",
      "set_pump",
      "run",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceProxmox-api.md",
    "title": "ObjServiceProxmox API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_node_status",
      "get_vms",
      "get_containers",
      "record_node",
      "record_vms",
      "sync",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceSolarman-api.md",
    "title": "ObjServiceSolarman API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "authenticate",
      "get_plant_list",
      "get_plant_info",
      "get_plant_realtime",
      "get_plant_historical",
      "get_plant_alerts",
      "get_device_list",
      "get_device_realtime",
      "get_device_historical",
      "get_device_alerts",
      "get_device_alert_detail",
      "send_device_command",
      "sync_plants",
      "sync_devices",
      "record_solar",
      "sync_realtime",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceSwitch-api.md",
    "title": "ObjServiceSwitch API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_info",
      "get_ports",
      "get_poe",
      "sync",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceTile-api.md",
    "title": "ObjServiceTile API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "sync",
      "list_tiles",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceTraccar-api.md",
    "title": "ObjServiceTraccar API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "sync",
      "list_devices",
      "get_server_info",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceTuya-api.md",
    "title": "ObjServiceTuya API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "list_devices",
      "sync_devices",
      "get_device_status",
      "record_status",
      "set_device_property",
      "process"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceWireless-api.md",
    "title": "ObjServiceWireless API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "scan_wifi",
      "scan_bt",
      "sync",
      "process",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/CalcHcscoreTestPinpoints-api.md",
    "title": "CalcHcscoreTestPinpoints API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "CalcHcscoreTestPinpoints"
    ],
    "methods": [
      "process"
    ],
    "body": "CalcHcscoreTestPinpoints"
  },
  {
    "path": "factory-service/ObjBureauCLI-api.md",
    "title": "ObjBureauCLI API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-service/ObjServiceBureau-api.md",
    "title": "ObjServiceBureau API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceBureau"
    ],
    "methods": [
      "register_bureau",
      "get_bureau_class",
      "get_registered_bureaus",
      "get_bureau_code",
      "get_remote_connection_pattern",
      "get_buffer_time",
      "resolve_buffer",
      "check_buffer",
      "notify_failure",
      "get_retry_config",
      "resolve_with_retry",
      "resolve",
      "compute",
      "connect",
      "run_workflow_direct",
      "send"
    ],
    "body": "ObjServiceBureau"
  },
  {
    "path": "factory-service/ObjServiceBureauRouter-api.md",
    "title": "ObjServiceBureauRouter API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceBureauRouter"
    ],
    "methods": [
      "get_bureau_code",
      "get_active_strategies",
      "get_default_bureau",
      "select_bureau_by_rdg",
      "instantiate_bureau",
      "call_bureau",
      "call_dual_bureau",
      "call_with_failover",
      "get_id_number_from_guid",
      "resolve"
    ],
    "body": "ObjServiceBureauRouter"
  },
  {
    "path": "factory-service/ObjServiceCreditRScore3-api.md",
    "title": "ObjServiceCreditRScore3 API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "smart_score_3",
      "connect",
      "send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceDoForms-api.md",
    "title": "ObjServiceDoForms API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "CallDoForms",
      "GetForms",
      "GetProjects",
      "GetSubmissionDetail",
      "GetCleanName",
      "CreateForm",
      "AddFormField",
      "GetSubmissionDetail",
      "GetSubmissions",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceGBG-api.md",
    "title": "ObjServiceGBG API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "verify_identity",
      "verify_document",
      "check_fraud_risk",
      "screen_aml",
      "process",
      "run_workflow_direct",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceHCExperian-api.md",
    "title": "ObjServiceHCExperian API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "resolve_buffer",
      "Resolve",
      "Compute",
      "Connect",
      "run_workflow_direct",
      "Send",
      "Recon"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceHCExperian_ESW-api.md",
    "title": "ObjServiceHCExperian_ESW API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "ResolveBuffer",
      "Resolve",
      "Compute",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceHCExperian_LES-api.md",
    "title": "ObjServiceHCExperian_LES API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "ResolveBuffer",
      "Resolve",
      "Compute",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceHCExperian_NAM-api.md",
    "title": "ObjServiceHCExperian_NAM API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "ResolveBuffer",
      "ResolveBuffer",
      "Resolve",
      "Compute",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceHCMyData-api.md",
    "title": "ObjServiceHCMyData API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_bureau_code",
      "get_remote_connection_pattern",
      "resolve"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceHCSelfie-api.md",
    "title": "ObjServiceHCSelfie API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceInovo-api.md",
    "title": "ObjServiceInovo API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "send_bulk",
      "send_bulk_clear",
      "run_scheduled_cycle",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "Send",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceGocardless-api.md",
    "title": "ObjServiceGocardless API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStrategy",
      "SetStageId",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "GetXToken",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceMcf-api.md",
    "title": "ObjServiceMcf API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStrategy",
      "SetStageId",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceOzow-api.md",
    "title": "ObjServiceOzow API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStrategy",
      "SetStageId",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "BuildHash",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceParseJava-api.md",
    "title": "ObjServiceParseJava API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "patch_param",
      "ComputeReports",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServicePaulmambu-api.md",
    "title": "ObjServicePaulmambu API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStrategy",
      "SetStageId",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "Send",
      "ActualSend",
      "UnpackResult",
      "UnpackResultLoans",
      "UnpackResultTasks",
      "UnpackResultUsers",
      "UnpackResultCustomer",
      "UnpackResultComments",
      "UnpackResultRepayments",
      "UnpackResultTransactions",
      "LoadResult",
      "DictUnpack",
      "SplitRow",
      "SplitForInsert",
      "CreateColumns",
      "UnpackResults"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceRingcentral-api.md",
    "title": "ObjServiceRingcentral API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "GetExtensions",
      "patch_param",
      "RingCallOut",
      "RingExtentionList",
      "RingExtentionDetail",
      "RingExtentionDetailSet",
      "Compute",
      "ConnectPlatform",
      "Connect",
      "run_workflow_direct",
      "Send",
      "Compute",
      "SelectCompute"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceStripe-api.md",
    "title": "ObjServiceStripe API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStrategy",
      "SetStageId",
      "patch_paramLocal",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "GetXToken",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceTransactions-api.md",
    "title": "ObjServiceTransactions API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Trans",
      "ObjServiceApi"
    ],
    "methods": [
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "Connect",
      "Send",
      "parse"
    ],
    "body": "Trans, ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceJaNee-api.md",
    "title": "ObjServiceJaNee API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "traderreq_get",
      "janee_application_post",
      "janee_application_status",
      "getpromo",
      "fullhouse_product_api",
      "get_product_recommendation",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServicePromocardimage-api.md",
    "title": "ObjServicePromocardimage API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceCalendarConstraint-api.md",
    "title": "ObjServiceCalendarConstraint API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "Connect",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceClientEventPlan-api.md",
    "title": "ObjServiceClientEventPlan API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "activity_isavailable",
      "book_activity",
      "customer_isavailable",
      "check_is_valid",
      "apply_constraint",
      "time_to_int",
      "date_to_obj",
      "int_to_time",
      "time_to_datetime",
      "generate_calendar",
      "run_workflow_direct",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceHami-api.md",
    "title": "ObjServiceHami API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "check_availability",
      "book_activity",
      "Connect",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceMaestroOutboundCall-api.md",
    "title": "ObjServiceMaestroOutboundCall API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "get_all_call_parameters",
      "reservation_list_message",
      "extract_date",
      "run_workflow_direct",
      "convert_dict_to_list",
      "get_hashpassword",
      "convert_dict_to_single_layer",
      "get_url",
      "do_bloom_table",
      "get_agreed_upon_key",
      "populate_data",
      "send_request",
      "print_dict",
      "clear_dict"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceMaestroSync-api.md",
    "title": "ObjServiceMaestroSync API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "sync_maestro_spa",
      "sync_maestro_activity",
      "Send",
      "Connect",
      "run_workflow_direct"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceEtl-api.md",
    "title": "ObjServiceEtl API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "XmlEtl",
      "RunXmlEtlBatch"
    ],
    "methods": [
      "setup",
      "create_target_tables",
      "get_xml_etl_mappings",
      "get_xml_etl_pcd_mappings",
      "get_config",
      "check_if_target_table_exists",
      "get_sql_templates",
      "error_log",
      "get_batch",
      "get_test_batch",
      "init_batch",
      "init_test_batch",
      "print_entity",
      "count_parents",
      "lineage_id",
      "get_type",
      "xml_apply_map",
      "multiple_replace",
      "characterize_nodes",
      "map_node",
      "generate_sql",
      "run_etl",
      "runBatch",
      "runTestBatch",
      "writeOutputToFile",
      "writeOutputToDB",
      "runTiming"
    ],
    "body": "XmlEtl, RunXmlEtlBatch"
  },
  {
    "path": "factory-service/ObjServiceGoogleOcr-api.md",
    "title": "ObjServiceGoogleOcr API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "SetStageId",
      "process_document",
      "patch_param",
      "ReadConnection",
      "Read",
      "Update",
      "connect_bank",
      "Connect",
      "Send",
      "run_workflow_direct",
      "pdf_is_valid"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceLoom-api.md",
    "title": "ObjServiceLoom API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "run_workflow_direct",
      "oauthLogin",
      "OtpCreate",
      "Connect",
      "Send",
      "Compute"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-service/ObjServiceTruID-api.md",
    "title": "ObjServiceTruID API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "TransactionStatus",
      "ProductCallNames",
      "ObjServiceApi"
    ],
    "methods": [
      "Send",
      "Connect",
      "run_workflow_direct",
      "send_bank_statement",
      "send_payslip",
      "send_all_docs",
      "get_all_results",
      "get_bank_statement_results",
      "get_payslip_results",
      "get_debit_order_transactions",
      "get_income_verification",
      "insert_collection_data",
      "fraud_checks",
      "download_products_call",
      "set_product_ids"
    ],
    "body": "TransactionStatus, ProductCallNames, ObjServiceApi"
  },
  {
    "path": "factory-service/data-api.md",
    "title": "data API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "DBInterface"
    ],
    "methods": [
      "dispose",
      "read",
      "execute"
    ],
    "body": "DBInterface"
  },
  {
    "path": "factory-service/google_test-api.md",
    "title": "google_test API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-service/sqlConstants-api.md",
    "title": "sqlConstants API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "sqlConstants"
    ],
    "methods": [],
    "body": "sqlConstants"
  },
  {
    "path": "factory-service/ObjServiceEuphoria-api.md",
    "title": "ObjServiceEuphoria API",
    "factory": "factory.service",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjServiceApi"
    ],
    "methods": [
      "patch_param",
      "send_lead",
      "Connect",
      "run_workflow_direct",
      "Send"
    ],
    "body": "ObjServiceApi"
  },
  {
    "path": "factory-deploy/ObjAudit-api.md",
    "title": "ObjAudit API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAudit"
    ],
    "methods": [
      "audit_deps",
      "audit_config",
      "audit_secrets",
      "audit_image",
      "audit_all"
    ],
    "body": "ObjAudit"
  },
  {
    "path": "factory-deploy/ObjBuild-api.md",
    "title": "ObjBuild API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjBuild"
    ],
    "methods": [
      "pipeline"
    ],
    "body": "ObjBuild"
  },
  {
    "path": "factory-deploy/ObjCloudflare-api.md",
    "title": "ObjCloudflare API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "CloudflareManager"
    ],
    "methods": [
      "get_zone_id",
      "get_dns_records",
      "create_or_update_dns",
      "purge_all",
      "purge_urls"
    ],
    "body": "CloudflareManager"
  },
  {
    "path": "factory-deploy/ObjEnvironment-api.md",
    "title": "ObjEnvironment API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjEnvironment"
    ],
    "methods": [
      "setup_dns",
      "dns_status",
      "migrate_secrets",
      "verify_secrets",
      "push_pem_keys",
      "environment_status"
    ],
    "body": "ObjEnvironment"
  },
  {
    "path": "factory-deploy/ObjSubstrate-api.md",
    "title": "ObjSubstrate API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ResourceLimits",
      "ResourceUsage",
      "NetworkConfig",
      "InstanceTemplate",
      "InstanceEvent",
      "Event",
      "EventHandler",
      "SubstrateMetrics",
      "CachedSubstrate",
      "ObjSubstrate"
    ],
    "methods": [
      "to_dict",
      "from_yaml",
      "save",
      "subscribe",
      "emit",
      "track_operation",
      "get_metrics",
      "ensure_connected",
      "connect",
      "list_instances",
      "get_instance",
      "create_instance",
      "start_instance",
      "stop_instance",
      "delete_instance",
      "execute_command",
      "health_check",
      "get_metrics",
      "is_connected",
      "restart_instance",
      "get_logs",
      "get_substrate_metrics",
      "set_resource_limits",
      "get_resource_limits",
      "create_snapshot",
      "restore_snapshot",
      "list_snapshots",
      "delete_snapshot",
      "clone_instance",
      "attach_network",
      "detach_network",
      "list_networks",
      "create_from_template"
    ],
    "body": "ResourceLimits, ResourceUsage, NetworkConfig, InstanceTemplate, InstanceEvent, Event, EventHandler, SubstrateMetrics, CachedSubstrate, ObjSubstrate"
  },
  {
    "path": "factory-deploy/ObjTest-api.md",
    "title": "ObjTest API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "TestResult",
      "ObjTest"
    ],
    "methods": [
      "to_dict",
      "discover",
      "run_file",
      "run_all"
    ],
    "body": "TestResult, ObjTest"
  },
  {
    "path": "factory-deploy/ObjWiki-api.md",
    "title": "ObjWiki API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWiki"
    ],
    "methods": [
      "scan_docs",
      "scan_yaml_docs",
      "scan_python_docs",
      "build_search_index",
      "generate_home",
      "generate_factory_index",
      "build",
      "clean",
      "status",
      "sync_wikijs",
      "update",
      "install_hook",
      "uninstall_hook"
    ],
    "body": "ObjWiki"
  },
  {
    "path": "factory-deploy/ObjBuildDocker-api.md",
    "title": "ObjBuildDocker API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjBuildDockerMixin"
    ],
    "methods": [
      "build_image",
      "build_push",
      "build_all_targets"
    ],
    "body": "ObjBuildDockerMixin"
  },
  {
    "path": "factory-deploy/ObjBuildHelm-api.md",
    "title": "ObjBuildHelm API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjBuildHelmMixin"
    ],
    "methods": [
      "helm_install",
      "helm_uninstall",
      "helm_status",
      "helm_render_values"
    ],
    "body": "ObjBuildHelmMixin"
  },
  {
    "path": "factory-deploy/ObjCompile-api.md",
    "title": "ObjCompile API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjCompile",
      "TestComputeMethods"
    ],
    "methods": [
      "get_architecture",
      "get_branch",
      "compile_module",
      "clean_binaries",
      "compile_factory",
      "run_build_tests",
      "build_source",
      "classify_compile_error",
      "build_dependency_graph",
      "blast_radius",
      "compile_build",
      "setUp",
      "run_test"
    ],
    "body": "ObjCompile, TestComputeMethods"
  },
  {
    "path": "factory-deploy/ObjConfig-api.md",
    "title": "ObjConfig API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Config",
      "ConfigSet"
    ],
    "methods": [
      "docker",
      "parse_yaml",
      "build_config",
      "create_container_from_template",
      "create_redis_container",
      "create_portainer_container",
      "health_check_all_components",
      "get_metrics",
      "build_cloudflare",
      "setup_prometheus",
      "build",
      "pre_flight",
      "read",
      "get_value",
      "create",
      "write",
      "transform",
      "update",
      "trim_config",
      "validate_config",
      "get_value",
      "get_value_int"
    ],
    "body": "Config, ConfigSet"
  },
  {
    "path": "factory-deploy/ObjDNSManager-api.md",
    "title": "ObjDNSManager API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "DNSRecord",
      "DNSHost",
      "ObjDNSManager"
    ],
    "methods": [
      "create_dns_record",
      "create_multiple_dns_records",
      "setup_host_dns",
      "setup_cluster_dns",
      "setup_from_config",
      "get_statistics"
    ],
    "body": "DNSRecord, DNSHost, ObjDNSManager"
  },
  {
    "path": "factory-deploy/ObjDataConfig-api.md",
    "title": "ObjDataConfig API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDataConfig",
      "ObjDataDeploy"
    ],
    "methods": [
      "export_core_tables_to_yaml",
      "export_package_tables_to_yaml",
      "clear_tables_to_yaml",
      "export_tables_to_yaml",
      "data_to_yaml",
      "write_yaml",
      "export_coredata_to_config",
      "export_packagedata_to_config",
      "export_data_to_config",
      "read_yaml",
      "create_table",
      "add_create_columns",
      "add_append_columns",
      "compare_tables_structure",
      "replace_into_table_data",
      "create_database",
      "compare"
    ],
    "body": "ObjDataConfig, ObjDataDeploy"
  },
  {
    "path": "factory-deploy/ObjSecretMigrate-api.md",
    "title": "ObjSecretMigrate API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-deploy/ObjSnapshot-api.md",
    "title": "ObjSnapshot API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSnapshot"
    ],
    "methods": [
      "register_table",
      "unregister_table",
      "list_registered_tables",
      "auto_register_tables",
      "create_snapshot",
      "restore_snapshot",
      "list_snapshots",
      "delete_snapshot",
      "save_table_yaml",
      "load_table_yaml",
      "save_all_yaml",
      "load_all_yaml"
    ],
    "body": "ObjSnapshot"
  },
  {
    "path": "factory-deploy/ObjBuildRunnerBase-api.md",
    "title": "ObjBuildRunnerBase API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjBuildRunnerBase"
    ],
    "methods": [
      "debug",
      "topology",
      "generate_caddy",
      "generate_deploy_config",
      "scaffold",
      "deploy",
      "infra_topology"
    ],
    "body": "ObjBuildRunnerBase"
  },
  {
    "path": "factory-deploy/ObjBuildRunnerDocker-api.md",
    "title": "ObjBuildRunnerDocker API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjBuildRunnerDocker"
    ],
    "methods": [
      "topology",
      "generate_caddy",
      "generate_deploy_config",
      "scaffold",
      "deploy"
    ],
    "body": "ObjBuildRunnerDocker"
  },
  {
    "path": "factory-deploy/ObjBuildRunnerK3s-api.md",
    "title": "ObjBuildRunnerK3s API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjBuildRunnerK3s"
    ],
    "methods": [
      "topology",
      "generate_caddy",
      "generate_deploy_config",
      "generate_registries_yaml",
      "scaffold",
      "deploy"
    ],
    "body": "ObjBuildRunnerK3s"
  },
  {
    "path": "factory-deploy/ObjBuildRunnerLxc-api.md",
    "title": "ObjBuildRunnerLxc API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjBuildRunnerLxc"
    ],
    "methods": [
      "topology",
      "generate_caddy",
      "generate_deploy_config",
      "scaffold",
      "deploy"
    ],
    "body": "ObjBuildRunnerLxc"
  },
  {
    "path": "factory-deploy/ObjBuildRunnerSupervisor-api.md",
    "title": "ObjBuildRunnerSupervisor API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjBuildRunnerSupervisor"
    ],
    "methods": [
      "topology",
      "generate_caddy",
      "generate_deploy_config",
      "scaffold",
      "deploy"
    ],
    "body": "ObjBuildRunnerSupervisor"
  },
  {
    "path": "factory-deploy/ObjDocker-api.md",
    "title": "ObjDocker API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjDocker"
    ],
    "methods": [
      "connect",
      "list_instances",
      "get_instance",
      "create_instance",
      "start_instance",
      "stop_instance",
      "delete_instance",
      "execute_command",
      "health_check",
      "get_metrics",
      "get_active_branch_name",
      "get_server_ip",
      "connect_registry",
      "harbor_list_repos",
      "harbor_list_artifacts",
      "harbor_scan_results",
      "harbor_trigger_scan",
      "harbor_delete_artifact",
      "harbor_gc",
      "build",
      "push"
    ],
    "body": "ObjDocker"
  },
  {
    "path": "factory-deploy/ObjK3s-api.md",
    "title": "ObjK3s API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjK3s"
    ],
    "methods": [
      "connect",
      "list_instances",
      "get_instance",
      "create_instance",
      "start_instance",
      "stop_instance",
      "delete_instance",
      "execute_command",
      "get_deployments",
      "get_services",
      "scale",
      "rollout_restart",
      "get_logs",
      "get_events",
      "apply_file",
      "delete_file"
    ],
    "body": "ObjK3s"
  },
  {
    "path": "factory-deploy/ObjLibvirt-api.md",
    "title": "ObjLibvirt API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjLibvirt"
    ],
    "methods": [
      "connect",
      "list_instances",
      "get_instance",
      "create_instance",
      "start_instance",
      "stop_instance",
      "delete_instance",
      "execute_command"
    ],
    "body": "ObjLibvirt"
  },
  {
    "path": "factory-deploy/ObjLxc-api.md",
    "title": "ObjLxc API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjLxc"
    ],
    "methods": [
      "connect",
      "list_instances",
      "create_instance",
      "start_instance",
      "stop_instance",
      "delete_instance",
      "get_instance",
      "execute_command"
    ],
    "body": "ObjLxc"
  },
  {
    "path": "factory-deploy/ObjProxmox-api.md",
    "title": "ObjProxmox API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProxmox"
    ],
    "methods": [
      "connect",
      "list_instances",
      "get_instance",
      "create_instance",
      "start_instance",
      "stop_instance",
      "delete_instance",
      "execute_command",
      "health_check",
      "get_metrics",
      "get_vm_tags",
      "set_vm_tags"
    ],
    "body": "ObjProxmox"
  },
  {
    "path": "factory-deploy/SubstrateConfig-api.md",
    "title": "SubstrateConfig API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "SubstrateConfig"
    ],
    "methods": [
      "get_substrate_config",
      "get",
      "reload",
      "set",
      "save"
    ],
    "body": "SubstrateConfig"
  },
  {
    "path": "factory-deploy/ObjCompileTUI-api.md",
    "title": "ObjCompileTUI API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "CompileTUI"
    ],
    "methods": [
      "start_copy_phase",
      "mark_copy_done",
      "end_copy_phase",
      "attach_progress",
      "log",
      "set_status",
      "start",
      "stop",
      "print_error_table"
    ],
    "body": "CompileTUI"
  },
  {
    "path": "factory-deploy/ObjTestTUI-api.md",
    "title": "ObjTestTUI API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "TestTUI"
    ],
    "methods": [
      "start",
      "stop",
      "update_result",
      "set_status",
      "print_summary"
    ],
    "body": "TestTUI"
  },
  {
    "path": "factory-deploy/generate_workflow_nodes-api.md",
    "title": "generate_workflow_nodes API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-deploy/implement_workflow_nodes-api.md",
    "title": "implement_workflow_nodes API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-deploy/validate_keycloak_config-api.md",
    "title": "validate_keycloak_config API",
    "factory": "factory.deploy",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-report/ObJReportJsonraw-api.md",
    "title": "ObJReportJsonraw API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportAlert-api.md",
    "title": "ObjReportAlert API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportBigButton-api.md",
    "title": "ObjReportBigButton API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportBigTable-api.md",
    "title": "ObjReportBigTable API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportBigtext-api.md",
    "title": "ObjReportBigtext API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportBootstrapCard-api.md",
    "title": "ObjReportBootstrapCard API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportBtn_href-api.md",
    "title": "ObjReportBtn_href API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportBtn_href2-api.md",
    "title": "ObjReportBtn_href2 API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportBtn_noact-api.md",
    "title": "ObjReportBtn_noact API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportButton-api.md",
    "title": "ObjReportButton API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportCalendar-api.md",
    "title": "ObjReportCalendar API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcEvents",
      "RpcResize",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportCard-api.md",
    "title": "ObjReportCard API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportCardrow-api.md",
    "title": "ObjReportCardrow API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportChat-api.md",
    "title": "ObjReportChat API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcConversation",
      "RpcUsers",
      "RpcSendmessage",
      "RpcSendimage",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportChathistory-api.md",
    "title": "ObjReportChathistory API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportCommand-api.md",
    "title": "ObjReportCommand API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RenderDetail",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportCommandvalue-api.md",
    "title": "ObjReportCommandvalue API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RenderDetail",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportConversation-api.md",
    "title": "ObjReportConversation API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcConversation",
      "RpcSendmessage",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDashChecklist-api.md",
    "title": "ObjReportDashChecklist API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RenderUpdate",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDashList-api.md",
    "title": "ObjReportDashList API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDashProgress-api.md",
    "title": "ObjReportDashProgress API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDashvalue-api.md",
    "title": "ObjReportDashvalue API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportData-api.md",
    "title": "ObjReportData API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDocument-api.md",
    "title": "ObjReportDocument API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "PatchDocument",
      "PatchNotes",
      "RenderDocumentHook",
      "RenderDocumentCreation",
      "RenderDocument",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportFormAudit-api.md",
    "title": "ObjReportFormAudit API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportGitflow-api.md",
    "title": "ObjReportGitflow API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportGrid-api.md",
    "title": "ObjReportGrid API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportHookRecord-api.md",
    "title": "ObjReportHookRecord API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "SplitOnCase",
      "ParamTrans",
      "GetType",
      "GetDisplayName",
      "GetValue",
      "RenderFooter",
      "RenderHeading",
      "EncodeStruct",
      "CheckRank",
      "RenderBlock",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportHookview-api.md",
    "title": "ObjReportHookview API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportIcon-api.md",
    "title": "ObjReportIcon API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportIform-api.md",
    "title": "ObjReportIform API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportIframe-api.md",
    "title": "ObjReportIframe API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportIframeform-api.md",
    "title": "ObjReportIframeform API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportInlineTable-api.md",
    "title": "ObjReportInlineTable API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportInsertsql-api.md",
    "title": "ObjReportInsertsql API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportJSTree2-api.md",
    "title": "ObjReportJSTree2 API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "CreateTreeTEMP",
      "getFilterClause",
      "getActionClause"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportJsonarray-api.md",
    "title": "ObjReportJsonarray API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportJsonlist-api.md",
    "title": "ObjReportJsonlist API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportKnob-api.md",
    "title": "ObjReportKnob API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportLayout-api.md",
    "title": "ObjReportLayout API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportLayoutGrid-api.md",
    "title": "ObjReportLayoutGrid API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportLeader-api.md",
    "title": "ObjReportLeader API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportLefttree-api.md",
    "title": "ObjReportLefttree API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "setJS",
      "setJSElements",
      "setMenu"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportList-api.md",
    "title": "ObjReportList API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportLive-api.md",
    "title": "ObjReportLive API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RenderJson",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportMap-api.md",
    "title": "ObjReportMap API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportMediumButton-api.md",
    "title": "ObjReportMediumButton API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportMenu-api.md",
    "title": "ObjReportMenu API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportMenulist-api.md",
    "title": "ObjReportMenulist API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportPanel-api.md",
    "title": "ObjReportPanel API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportPanolens-api.md",
    "title": "ObjReportPanolens API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportPanolens2-api.md",
    "title": "ObjReportPanolens2 API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportPayment-api.md",
    "title": "ObjReportPayment API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ReportCompany",
      "Report"
    ],
    "methods": [
      "Read",
      "Render"
    ],
    "body": "ReportCompany, Report"
  },
  {
    "path": "factory-report/ObjReportPictureButton-api.md",
    "title": "ObjReportPictureButton API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportPills-api.md",
    "title": "ObjReportPills API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportPivottable-api.md",
    "title": "ObjReportPivottable API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGetlist",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportQueryDocument-api.md",
    "title": "ObjReportQueryDocument API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportRadar-api.md",
    "title": "ObjReportRadar API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportRadialBar-api.md",
    "title": "ObjReportRadialBar API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportRangebar-api.md",
    "title": "ObjReportRangebar API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportReplace-api.md",
    "title": "ObjReportReplace API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportReport-api.md",
    "title": "ObjReportReport API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportReportRow-api.md",
    "title": "ObjReportReportRow API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportReports-api.md",
    "title": "ObjReportReports API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportResourceTest-api.md",
    "title": "ObjReportResourceTest API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSMSDashboard-api.md",
    "title": "ObjReportSMSDashboard API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSankeyChart-api.md",
    "title": "ObjReportSankeyChart API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportScatterPlot-api.md",
    "title": "ObjReportScatterPlot API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportScorecard-api.md",
    "title": "ObjReportScorecard API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSelection-api.md",
    "title": "ObjReportSelection API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSequence-api.md",
    "title": "ObjReportSequence API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportShowcreatetable-api.md",
    "title": "ObjReportShowcreatetable API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "CreateIndicesTable",
      "CreateColumnsTable"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSimpleDoughnut-api.md",
    "title": "ObjReportSimpleDoughnut API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSmallButton-api.md",
    "title": "ObjReportSmallButton API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSmallRow-api.md",
    "title": "ObjReportSmallRow API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSmsApi-api.md",
    "title": "ObjReportSmsApi API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RenderBanner",
      "RenderNotes",
      "RenderSmstime",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportStackedBar-api.md",
    "title": "ObjReportStackedBar API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSteps-api.md",
    "title": "ObjReportSteps API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGetseries",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportStepsArrow-api.md",
    "title": "ObjReportStepsArrow API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportStepsBase-api.md",
    "title": "ObjReportStepsBase API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGetseries",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportStepsCircle-api.md",
    "title": "ObjReportStepsCircle API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportStepsCustom-api.md",
    "title": "ObjReportStepsCustom API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportStepsDot-api.md",
    "title": "ObjReportStepsDot API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportStringrpc-api.md",
    "title": "ObjReportStringrpc API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RpcGetstring"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportStructuretree-api.md",
    "title": "ObjReportStructuretree API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "setJS",
      "setParentChild",
      "setJSElements",
      "setMenu"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTableHeaderless-api.md",
    "title": "ObjReportTableHeaderless API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTableprint-api.md",
    "title": "ObjReportTableprint API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RenderHeader",
      "RenderBody"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTextrow-api.md",
    "title": "ObjReportTextrow API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTimelines-api.md",
    "title": "ObjReportTimelines API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTransposedTable-api.md",
    "title": "ObjReportTransposedTable API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTreemap-api.md",
    "title": "ObjReportTreemap API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTreemenu-api.md",
    "title": "ObjReportTreemenu API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "setJS",
      "setJSElements",
      "setMenu",
      "setStyle"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportUser-api.md",
    "title": "ObjReportUser API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ReportCompany",
      "ReportLevel",
      "Report"
    ],
    "methods": [
      "Read",
      "Read",
      "RenderDetail",
      "Render"
    ],
    "body": "ReportCompany, ReportLevel, Report"
  },
  {
    "path": "factory-report/ObjReportValues-api.md",
    "title": "ObjReportValues API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportVpills-api.md",
    "title": "ObjReportVpills API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportVpillsrecursive-api.md",
    "title": "ObjReportVpillsrecursive API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportVreports-api.md",
    "title": "ObjReportVreports API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportVtabs-api.md",
    "title": "ObjReportVtabs API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportApexBar-api.md",
    "title": "ObjReportApexBar API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportApexBase-api.md",
    "title": "ObjReportApexBase API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "GetTemplate",
      "RpcGetseries",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportApexHeatmap-api.md",
    "title": "ObjReportApexHeatmap API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGetseries",
      "GetTemplate"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportApexLine-api.md",
    "title": "ObjReportApexLine API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportBar-api.md",
    "title": "ObjReportBar API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "getChartType"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportBubble-api.md",
    "title": "ObjReportBubble API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "getChartType"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDoughnut-api.md",
    "title": "ObjReportDoughnut API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RpcGetdata"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEcharts-api.md",
    "title": "ObjReportEcharts API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartsbar-api.md",
    "title": "ObjReportEchartsbar API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartsbase-api.md",
    "title": "ObjReportEchartsbase API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGetoption",
      "RpcGetseries",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartsboxplot-api.md",
    "title": "ObjReportEchartsboxplot API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartschord-api.md",
    "title": "ObjReportEchartschord API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartsdoughnut-api.md",
    "title": "ObjReportEchartsdoughnut API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartsfunnel-api.md",
    "title": "ObjReportEchartsfunnel API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartsgauge-api.md",
    "title": "ObjReportEchartsgauge API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartsgraph-api.md",
    "title": "ObjReportEchartsgraph API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartsheatmap-api.md",
    "title": "ObjReportEchartsheatmap API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartsline-api.md",
    "title": "ObjReportEchartsline API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartspictorialbar-api.md",
    "title": "ObjReportEchartspictorialbar API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartspie-api.md",
    "title": "ObjReportEchartspie API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartspolar-api.md",
    "title": "ObjReportEchartspolar API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartsradar-api.md",
    "title": "ObjReportEchartsradar API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartssankey-api.md",
    "title": "ObjReportEchartssankey API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartsscatter-api.md",
    "title": "ObjReportEchartsscatter API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartstreemap-api.md",
    "title": "ObjReportEchartstreemap API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartsvenn-api.md",
    "title": "ObjReportEchartsvenn API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEchartswordcloud-api.md",
    "title": "ObjReportEchartswordcloud API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportHistogram-api.md",
    "title": "ObjReportHistogram API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "get_data",
      "Render",
      "AddRPC"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportLine-api.md",
    "title": "ObjReportLine API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGetdata",
      "AddRPC",
      "getChartType",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportPixiBase-api.md",
    "title": "ObjReportPixiBase API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "GetTemplate",
      "Render",
      "GetChartType",
      "SetTitle",
      "SetDataUrl",
      "SetRefreshInterval",
      "SetDimensions"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportPixiFARCASTER-api.md",
    "title": "ObjReportPixiFARCASTER API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "GetTemplate",
      "SetGameDimensions",
      "SetGameState"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportPixiFARCASTERv2-api.md",
    "title": "ObjReportPixiFARCASTERv2 API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "GetTemplate"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportPixiGeneric-api.md",
    "title": "ObjReportPixiGeneric API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "GetTemplate",
      "SetDataMode",
      "SetPointSize",
      "SetColors"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSparkline-api.md",
    "title": "ObjReportSparkline API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RpcGetseries"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportChrysalisbar-api.md",
    "title": "ObjReportChrysalisbar API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportChrysalisbarstacked-api.md",
    "title": "ObjReportChrysalisbarstacked API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportChrysaliskendotable-api.md",
    "title": "ObjReportChrysaliskendotable API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RenderOld"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportChrysalisprogress-api.md",
    "title": "ObjReportChrysalisprogress API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportAccordion-api.md",
    "title": "ObjReportAccordion API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDash-api.md",
    "title": "ObjReportDash API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportMagicGrid-api.md",
    "title": "ObjReportMagicGrid API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RenderPanel",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportMasonry-api.md",
    "title": "ObjReportMasonry API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportAdminLte-api.md",
    "title": "ObjReportAdminLte API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "process_textLocal",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportBpmn-api.md",
    "title": "ObjReportBpmn API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportBuild-api.md",
    "title": "ObjReportBuild API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "render_email",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportCalculation-api.md",
    "title": "ObjReportCalculation API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "extract_strings_between_dollars",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportCalculationAlt-api.md",
    "title": "ObjReportCalculationAlt API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "add_decision",
      "generate_dicts",
      "generate_jinja_data",
      "generate_html",
      "make_decision_table",
      "make_versions_table",
      "addedit_modal",
      "edit_formclose",
      "delete_modal",
      "extras_if_dev"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportChat-api.md",
    "title": "ObjReportChat API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcConversation",
      "RpcUsers",
      "RpcSendmessage",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDecision-api.md",
    "title": "ObjReportDecision API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "add_decision",
      "generate_dicts",
      "generate_jinja_data",
      "generate_html",
      "make_decision_table",
      "make_versions_table",
      "addedit_modal",
      "edit_formclose",
      "delete_modal",
      "extras_if_dev"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDecisionAnalysis-api.md",
    "title": "ObjReportDecisionAnalysis API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "render_block",
      "render_fragment",
      "render_email_block",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDecisionRules-api.md",
    "title": "ObjReportDecisionRules API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "render_fragment",
      "render_email_fragment",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDecisionSwitchSim-api.md",
    "title": "ObjReportDecisionSwitchSim API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "render_email",
      "Render",
      "RpcCsv"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDir-api.md",
    "title": "ObjReportDir API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RenderDirDetail",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDistribution-api.md",
    "title": "ObjReportDistribution API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "render_fragment",
      "render_email_fragment",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDocumentation-api.md",
    "title": "ObjReportDocumentation API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "render_section",
      "render_table",
      "render_code_block",
      "render_mermaid",
      "render_kv_grid",
      "build_pages",
      "get_title",
      "get_subtitle",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDragula-api.md",
    "title": "ObjReportDragula API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEditClassification-api.md",
    "title": "ObjReportEditClassification API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "read_object",
      "node_style_split",
      "node_style_accept",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEditTable-api.md",
    "title": "ObjReportEditTable API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "provision_javascript",
      "get_table_form_css",
      "get_columns",
      "get_column_names",
      "get_table_data",
      "get_table_data_json",
      "RpcUpdatetable",
      "get_table_form_js",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEditTree-api.md",
    "title": "ObjReportEditTree API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcPositionnode",
      "RpcGetedgecount",
      "RpcGetcalculationgroupreport",
      "provision_javascript",
      "node_style_container",
      "node_style",
      "node_style_gate",
      "node_style_process",
      "get_element_json",
      "get_calculationgroup_form",
      "get_singleclick_js",
      "get_tooltip_js",
      "get_cytoscape_context_menus",
      "get_cytoscape_js",
      "get_edit_frame"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEditWorkflow-api.md",
    "title": "ObjReportEditWorkflow API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcNewnode",
      "RpcAddbranch",
      "RpcEditalert",
      "RpcEditnotify",
      "RpcEditservice",
      "RpcEditcalculation",
      "RpcGetcalculationgroup",
      "RpcUpdatecalculationgroup",
      "RpcDeletecalculation",
      "RpcAddcalculation",
      "RpcEditsms",
      "RpcEditchannel",
      "RpcEditgate",
      "RpcEditnode",
      "RpcDeletenode",
      "RpcInsert",
      "RpcCreateworkflow",
      "RpcCreateservice",
      "RpcCreatecalculation",
      "read_object",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEmail-api.md",
    "title": "ObjReportEmail API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "process_textLocal",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEmailDash-api.md",
    "title": "ObjReportEmailDash API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "process_textLocal",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportFeatureStoreSim-api.md",
    "title": "ObjReportFeatureStoreSim API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcStart",
      "RpcStatus",
      "RpcOutput",
      "RpcCsv",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportFooTable-api.md",
    "title": "ObjReportFooTable API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGetlist",
      "convert_dates_to_strings",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportForm-api.md",
    "title": "ObjReportForm API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportJson-api.md",
    "title": "ObjReportJson API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportKeycloakStatus-api.md",
    "title": "ObjReportKeycloakStatus API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportLeaflet-api.md",
    "title": "ObjReportLeaflet API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RpcGetdata",
      "process_dictionary"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportMarkdown-api.md",
    "title": "ObjReportMarkdown API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportMermaid-api.md",
    "title": "ObjReportMermaid API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report",
      "MermaidIcon"
    ],
    "methods": [
      "Render",
      "get_rpc_html",
      "RpcGetdata",
      "Render"
    ],
    "body": "Report, MermaidIcon"
  },
  {
    "path": "factory-report/ObjReportMermaidIcon-api.md",
    "title": "ObjReportMermaidIcon API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportMermaidSlide-api.md",
    "title": "ObjReportMermaidSlide API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RpcGetdata"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportMessageNotifications-api.md",
    "title": "ObjReportMessageNotifications API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "BuildHtml",
      "RpcGetseries"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportMessageTimeline-api.md",
    "title": "ObjReportMessageTimeline API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGetseries",
      "generate_inner_html",
      "decode_field_names",
      "map_fields",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportMinMaxTable-api.md",
    "title": "ObjReportMinMaxTable API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGetlist",
      "is_floats",
      "is_integers",
      "is_dates",
      "is_nones",
      "find_max_num",
      "find_min_num",
      "find_max_string",
      "find_min_string",
      "find_min_date",
      "find_max_date",
      "get_columm_options",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportPowerBIEmbed-api.md",
    "title": "ObjReportPowerBIEmbed API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report",
      "EmbedConfig",
      "EmbedToken",
      "EmbedTokenRequestBody",
      "ReportConfig",
      "PbiEmbedService",
      "AadService",
      "Utils",
      "BaseConfig"
    ],
    "methods": [
      "Render",
      "get_embed_params_for_single_report",
      "get_embed_params_for_multiple_reports",
      "get_embed_token_for_single_report_single_workspace",
      "get_embed_token_for_multiple_reports_single_workspace",
      "get_embed_token_for_multiple_reports_multiple_workspaces",
      "get_request_header",
      "get_access_token",
      "check_config"
    ],
    "body": "Report, EmbedConfig, EmbedToken, EmbedTokenRequestBody, ReportConfig, PbiEmbedService, AadService, Utils, BaseConfig"
  },
  {
    "path": "factory-report/ObjReportProgressbar-api.md",
    "title": "ObjReportProgressbar API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RpcGetseries"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportPromotionFlip-api.md",
    "title": "ObjReportPromotionFlip API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportRaci-api.md",
    "title": "ObjReportRaci API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "render_fragment",
      "render_email_fragment",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportReview-api.md",
    "title": "ObjReportReview API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "scan_variables",
      "render_clipboard",
      "render_sql",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportReviewCalculation-api.md",
    "title": "ObjReportReviewCalculation API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "render_set",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportReviewWorkflow-api.md",
    "title": "ObjReportReviewWorkflow API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "render_set",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportRss-api.md",
    "title": "ObjReportRss API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSankeyChart-api.md",
    "title": "ObjReportSankeyChart API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSimpleTable-api.md",
    "title": "ObjReportSimpleTable API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RpcGettable"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSipButton-api.md",
    "title": "ObjReportSipButton API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "add_scripts",
      "RpcGetsipcredentials",
      "get_sip_initialization",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSipSmartTable-api.md",
    "title": "ObjReportSipSmartTable API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSmartTable-api.md",
    "title": "ObjReportSmartTable API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGetlist",
      "decode",
      "convert_dates_to_strings",
      "get_columm_options",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSmartTablePT-api.md",
    "title": "ObjReportSmartTablePT API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGetlist",
      "decode",
      "convert_dates_to_strings",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSmartValue-api.md",
    "title": "ObjReportSmartValue API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGetlist",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSpinAndWin-api.md",
    "title": "ObjReportSpinAndWin API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportString-api.md",
    "title": "ObjReportString API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportStringPT-api.md",
    "title": "ObjReportStringPT API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSurvey-api.md",
    "title": "ObjReportSurvey API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTable-api.md",
    "title": "ObjReportTable API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTableAlert-api.md",
    "title": "ObjReportTableAlert API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTableShowHide-api.md",
    "title": "ObjReportTableShowHide API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGetlist",
      "decode",
      "convert_dates_to_strings",
      "build_toggle_button_html",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTableSort-api.md",
    "title": "ObjReportTableSort API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTableSortPT-api.md",
    "title": "ObjReportTableSortPT API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RpcGetSeries"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTablesearch-api.md",
    "title": "ObjReportTablesearch API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTabs-api.md",
    "title": "ObjReportTabs API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGetlist",
      "convert_dates_to_strings",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTabulator-api.md",
    "title": "ObjReportTabulator API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "isHtml",
      "isNumber",
      "convert_datetimes",
      "convert_decimal_to_float",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTicker-api.md",
    "title": "ObjReportTicker API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGetlist",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportWidget-api.md",
    "title": "ObjReportWidget API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGetlist",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportWorkflowAnimation-api.md",
    "title": "ObjReportWorkflowAnimation API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "read_object",
      "get_animated_edges_js",
      "RpcGetanimationedges",
      "RpcGetsimulationedges",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportWorkflowDiagram-api.md",
    "title": "ObjReportWorkflowDiagram API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "mm"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportWorkflowSim-api.md",
    "title": "ObjReportWorkflowSim API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGettable",
      "RpcEnsurewebhook",
      "RpcGetnodes",
      "RpcBulksim",
      "RpcGetbatch",
      "RpcGetsims",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportWorkflowdata-api.md",
    "title": "ObjReportWorkflowdata API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportWorkvisual-api.md",
    "title": "ObjReportWorkvisual API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportXml-api.md",
    "title": "ObjReportXml API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportYaml-api.md",
    "title": "ObjReportYaml API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportApexBar-api.md",
    "title": "ObjReportApexBar API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportApexBarLine-api.md",
    "title": "ObjReportApexBarLine API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportApexBarLineDuo-api.md",
    "title": "ObjReportApexBarLineDuo API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportApexLine-api.md",
    "title": "ObjReportApexLine API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportApexMultiArea-api.md",
    "title": "ObjReportApexMultiArea API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportApexMultiLine-api.md",
    "title": "ObjReportApexMultiLine API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportApexMultiType-api.md",
    "title": "ObjReportApexMultiType API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportApexStacked-api.md",
    "title": "ObjReportApexStacked API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportBootstrapCard-api.md",
    "title": "ObjReportBootstrapCard API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDebiCheckDashboard-api.md",
    "title": "ObjReportDebiCheckDashboard API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDebiCheckHeatmap-api.md",
    "title": "ObjReportDebiCheckHeatmap API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDebitOrdersLineGraph-api.md",
    "title": "ObjReportDebitOrdersLineGraph API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportFHclient-api.md",
    "title": "ObjReportFHclient API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "ComputeSettle",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportFHpayment-api.md",
    "title": "ObjReportFHpayment API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportFHpaymentcurrent-api.md",
    "title": "ObjReportFHpaymentcurrent API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "ComputeSettle",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportFHpaymentemail-api.md",
    "title": "ObjReportFHpaymentemail API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "ComputeSettle",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportFHpaymentjson-api.md",
    "title": "ObjReportFHpaymentjson API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Cleannumber",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportFHpaymentmail-api.md",
    "title": "ObjReportFHpaymentmail API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RenderHeader",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportFHpaymentsettlement-api.md",
    "title": "ObjReportFHpaymentsettlement API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "ComputeSettle",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportFHpriceset-api.md",
    "title": "ObjReportFHpriceset API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "ComputeInstalment",
      "RenderAPage",
      "RenderA7Set",
      "RenderA6Set",
      "RenderA5Set",
      "RenderA4Set",
      "RenderAWobbleSet",
      "RenderACustomSet",
      "CheckList",
      "Render",
      "BuildPage"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportFHpriceticket-api.md",
    "title": "ObjReportFHpriceticket API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "ComputeInstalment",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportFHpriceticketfancy-api.md",
    "title": "ObjReportFHpriceticketfancy API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report",
      "Report"
    ],
    "methods": [
      "ComputeInstalment",
      "ComputeInstalment",
      "RenderLine",
      "RenderFeatures",
      "Render",
      "Render",
      "OldRender"
    ],
    "body": "Report, Report"
  },
  {
    "path": "factory-report/ObjReportFHproduct-api.md",
    "title": "ObjReportFHproduct API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "ComputeInstalment",
      "RenderLine",
      "RenderFeatures",
      "NewRender",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportFHproductjson-api.md",
    "title": "ObjReportFHproductjson API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "ComputeInstalment",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportFHproductsale-api.md",
    "title": "ObjReportFHproductsale API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "ComputeInstalment",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportFHpromotion-api.md",
    "title": "ObjReportFHpromotion API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportJsonFH-api.md",
    "title": "ObjReportJsonFH API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportMasonrytemp-api.md",
    "title": "ObjReportMasonrytemp API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportPromotion-api.md",
    "title": "ObjReportPromotion API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportRadialBar-api.md",
    "title": "ObjReportRadialBar API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSankeyChart-api.md",
    "title": "ObjReportSankeyChart API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTermsOfBusiness-api.md",
    "title": "ObjReportTermsOfBusiness API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportImage-api.md",
    "title": "ObjReportImage API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportImageBar-api.md",
    "title": "ObjReportImageBar API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportImageGen-api.md",
    "title": "ObjReportImageGen API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportImageLine-api.md",
    "title": "ObjReportImageLine API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportImageWorkflow-api.md",
    "title": "ObjReportImageWorkflow API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportPakkieTable-api.md",
    "title": "ObjReportPakkieTable API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGetchoices",
      "RpcGetlist",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportRouteMap-api.md",
    "title": "ObjReportRouteMap API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportStatusPill-api.md",
    "title": "ObjReportStatusPill API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportVisitCard-api.md",
    "title": "ObjReportVisitCard API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcReschedule",
      "RpcUpdatevisitstatus",
      "RpcDeliveryitems",
      "RpcComplete",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSurvey-api.md",
    "title": "ObjReportSurvey API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "render_overall",
      "render_input",
      "getoptions",
      "vertical_options",
      "render_singlechoice_v",
      "render_multichoice_v",
      "horizontal_options",
      "render_singlechoice_h",
      "render_multichoice_h",
      "render_slider",
      "Render",
      "render_buttons"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDisplayBankStatement-api.md",
    "title": "ObjReportDisplayBankStatement API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "convert_datetimes",
      "convert_decimal_to_float",
      "RpcRendertable",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDisplayPayslip-api.md",
    "title": "ObjReportDisplayPayslip API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "convert_datetimes",
      "convert_decimal_to_float",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportApi-api.md",
    "title": "ObjReportApi API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "PatchHook",
      "render_card",
      "render_mermaid_diagram",
      "render_table_simple",
      "render_test_card",
      "render_highlight_block",
      "render_overview",
      "get_title",
      "get_subtitle",
      "build_pages"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportCalculation-api.md",
    "title": "ObjReportCalculation API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportChannel-api.md",
    "title": "ObjReportChannel API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportDataexport-api.md",
    "title": "ObjReportDataexport API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEndpointmonitor-api.md",
    "title": "ObjReportEndpointmonitor API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RpcList",
      "RpcSet",
      "RpcAddcustom",
      "RpcUnset"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportEnvironmentControls-api.md",
    "title": "ObjReportEnvironmentControls API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcGetstatus",
      "RpcRunaction",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportFirewall-api.md",
    "title": "ObjReportFirewall API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "get_title",
      "get_subtitle",
      "RpcAddrule",
      "RpcRemoverule",
      "RpcExportyaml",
      "RpcImportyaml",
      "RpcSyncufw",
      "RpcUfwstatus",
      "RpcTestip",
      "build_pages"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportHostdetail-api.md",
    "title": "ObjReportHostdetail API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportKanban-api.md",
    "title": "ObjReportKanban API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportModulechangelog-api.md",
    "title": "ObjReportModulechangelog API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportNetworkdashboard-api.md",
    "title": "ObjReportNetworkdashboard API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcRefresh",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportPalettecss-api.md",
    "title": "ObjReportPalettecss API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportPalettemanager-api.md",
    "title": "ObjReportPalettemanager API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RpcContext",
      "RpcList",
      "RpcGenerate",
      "RpcSave",
      "RpcApply"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportRegistry-api.md",
    "title": "ObjReportRegistry API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportServerState-api.md",
    "title": "ObjReportServerState API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportServeradmin-api.md",
    "title": "ObjReportServeradmin API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RpcContext",
      "RpcClients",
      "RpcList",
      "RpcGet",
      "RpcSave",
      "RpcSetactive"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSla-api.md",
    "title": "ObjReportSla API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSlaexport-api.md",
    "title": "ObjReportSlaexport API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RpcGenerate"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSolardashboard-api.md",
    "title": "ObjReportSolardashboard API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportStaffperformance-api.md",
    "title": "ObjReportStaffperformance API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RpcContext",
      "RpcServers",
      "RpcSummary"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportStatus-api.md",
    "title": "ObjReportStatus API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSysGuiAlert-api.md",
    "title": "ObjReportSysGuiAlert API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "GetNotificationCount",
      "GetItems"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSysGuiLeftmenu-api.md",
    "title": "ObjReportSysGuiLeftmenu API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Version",
      "render_reports",
      "render_workflows",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSysGuiMenu-api.md",
    "title": "ObjReportSysGuiMenu API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RenderMenuGroup",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSysGuiNotification-api.md",
    "title": "ObjReportSysGuiNotification API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "GetNotificationCount",
      "GetItems",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSysGuiUser-api.md",
    "title": "ObjReportSysGuiUser API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTicket-api.md",
    "title": "ObjReportTicket API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RpcList",
      "RpcSystems",
      "RpcMytickets",
      "RpcActionbyusers",
      "RpcSessioncontext",
      "RpcDetail",
      "RpcCreate",
      "RpcAction"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportTimeline-api.md",
    "title": "ObjReportTimeline API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportWebhook-api.md",
    "title": "ObjReportWebhook API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportWebhookDashboard-api.md",
    "title": "ObjReportWebhookDashboard API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "RpcRefresh",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportAnimation-api.md",
    "title": "ObjReportAnimation API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "options",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportInfoCard-api.md",
    "title": "ObjReportInfoCard API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RpcGetseries"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportInfoCardBar-api.md",
    "title": "ObjReportInfoCardBar API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RpcGetseries"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportInfoCardSpark-api.md",
    "title": "ObjReportInfoCardSpark API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RpcGetseries"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportKnobOut-api.md",
    "title": "ObjReportKnobOut API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render",
      "RpcGetseries",
      "GetKnobType"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportLiveWidget-api.md",
    "title": "ObjReportLiveWidget API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "GetTemplate",
      "RpcGetseries",
      "RpcGetlist",
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportPackery-api.md",
    "title": "ObjReportPackery API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportPackeryStill-api.md",
    "title": "ObjReportPackeryStill API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "isDraggable"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportReveal-api.md",
    "title": "ObjReportReveal API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSplideJS-api.md",
    "title": "ObjReportSplideJS API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportSwiper-api.md",
    "title": "ObjReportSwiper API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-report/ObjReportYoutube-api.md",
    "title": "ObjReportYoutube API",
    "factory": "factory.report",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Report"
    ],
    "methods": [
      "Render"
    ],
    "body": "Report"
  },
  {
    "path": "factory-web/ObjAcl-api.md",
    "title": "ObjAcl API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Acl"
    ],
    "methods": [
      "Version",
      "login_auth0",
      "login_federated_user",
      "login_session",
      "reset_user",
      "login_user",
      "get_login_url",
      "get_user_session",
      "logout_user",
      "set_user",
      "create_report_list",
      "create_form_list",
      "create_document_list",
      "create_text_list",
      "create_menu_list",
      "check_single_document",
      "Modify",
      "Read",
      "federation_onboard",
      "read_valid_companies",
      "read_valid_groups",
      "Validate",
      "validate_menu",
      "intersect",
      "validate_report",
      "validate_form",
      "validate_reports",
      "validate_forms",
      "validate_documents",
      "validate_users",
      "invalidate_acl",
      "invalidate_report_acl",
      "invalidate_form_acl",
      "invalidate_user_sessions",
      "get_cached_acl",
      "set_cached_acl",
      "Update"
    ],
    "body": "Acl"
  },
  {
    "path": "factory-web/ObjCss-api.md",
    "title": "ObjCss API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjCss"
    ],
    "methods": [
      "palette",
      "get_css_max_age",
      "get_component_css_link",
      "get_component_css"
    ],
    "body": "ObjCss"
  },
  {
    "path": "factory-web/ObjFlowGenerator-api.md",
    "title": "ObjFlowGenerator API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFlowGenerator"
    ],
    "methods": [
      "load_spec",
      "normalize_spec",
      "build_plan",
      "plan_summary",
      "apply_plan"
    ],
    "body": "ObjFlowGenerator"
  },
  {
    "path": "factory-web/ObjKeycloakAdmin-api.md",
    "title": "ObjKeycloakAdmin API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjKeycloakAdmin"
    ],
    "methods": [
      "list_users",
      "disable_user",
      "enable_user",
      "reset_password",
      "force_logout",
      "bulk_disable_users",
      "list_active_sessions",
      "invalidate_session",
      "get_sync_queue",
      "process_sync_queue_manual",
      "clear_failed_syncs",
      "toggle_emergency_mode",
      "get_statistics"
    ],
    "body": "ObjKeycloakAdmin"
  },
  {
    "path": "factory-web/ObjRichBridge-api.md",
    "title": "ObjRichBridge API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjRichBridge"
    ],
    "methods": [
      "render",
      "render_fn",
      "render_console",
      "wrap",
      "wrap_console"
    ],
    "body": "ObjRichBridge"
  },
  {
    "path": "factory-web/ObjRouteRegistry-api.md",
    "title": "ObjRouteRegistry API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjRouteRegistry"
    ],
    "methods": [
      "resolve",
      "resolve_from_path",
      "build_target_params"
    ],
    "body": "ObjRouteRegistry"
  },
  {
    "path": "factory-web/ObjSingleSignon-api.md",
    "title": "ObjSingleSignon API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "SingleSignon"
    ],
    "methods": [
      "ConnectKeycloak"
    ],
    "body": "SingleSignon"
  },
  {
    "path": "factory-web/ObjUser-api.md",
    "title": "ObjUser API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "User",
      "UserSet"
    ],
    "methods": [
      "gen_password",
      "ReviewPassword",
      "ReviewLogin",
      "ReviewCompany",
      "ReviewGroup",
      "ReviewAvatar",
      "ReviewUser",
      "UpdateFromFederation",
      "create_on_federation",
      "Read",
      "Validate",
      "Create",
      "Update",
      "GetFullname",
      "generate_auth",
      "check_auth",
      "QueryPassword",
      "Transform",
      "Activate",
      "Read",
      "Listed",
      "Transform"
    ],
    "body": "User, UserSet"
  },
  {
    "path": "factory-web/ObjUserSession-api.md",
    "title": "ObjUserSession API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjUserSession"
    ],
    "methods": [
      "create_session",
      "validate_session",
      "invalidate_session",
      "invalidate_user_sessions",
      "get_user_sessions",
      "count_concurrent_sessions",
      "cleanup_expired_sessions",
      "get_session_metrics"
    ],
    "body": "ObjUserSession"
  },
  {
    "path": "factory-web/ObjWeblog-api.md",
    "title": "ObjWeblog API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Weblog",
      "WeblogSet"
    ],
    "methods": [
      "read",
      "create",
      "update",
      "Modify",
      "read",
      "compress"
    ],
    "body": "Weblog, WeblogSet"
  },
  {
    "path": "factory-web/WebForm-api.md",
    "title": "WebForm API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "WebForm"
    ],
    "methods": [
      "set_user",
      "GetTemplate",
      "patch_sql",
      "build_create_sql",
      "build_read_sql",
      "build_update_sql",
      "patch_param",
      "process_text",
      "get_all_form_fields",
      "get_form_field_default",
      "read",
      "SetParam1",
      "SetParam2",
      "SetParam3",
      "SetParam4",
      "SetParam5",
      "SetParam6",
      "SetParam7",
      "RegisterField",
      "get_field_values",
      "SetElementField",
      "SetFields",
      "AddElement",
      "UnpackType",
      "field_factory",
      "GetFieldValue",
      "GetFieldValueInt",
      "SetAlerts",
      "AddField",
      "add_button",
      "pre_sql",
      "post_sql",
      "parse_binary",
      "create_base_table",
      "create_bloom_form",
      "bloom_key_value",
      "bloom_as_mongo",
      "bloom_as_table",
      "bloom_form",
      "Parse",
      "get_next_form",
      "Render",
      "convert_to_freeform",
      "validate_form_fields",
      "update_form",
      "layout_factory",
      "build_from_table"
    ],
    "body": "WebForm"
  },
  {
    "path": "factory-web/WebFormElement-api.md",
    "title": "WebFormElement API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "WebFormElement"
    ],
    "methods": [
      "RpcOptions",
      "render_peer_callback",
      "render_peer_actions",
      "render_peer_events",
      "ExecuteRpc",
      "RenderSetValue",
      "RenderElement",
      "ReadFields",
      "Parse",
      "patch_param",
      "parentpatch_param",
      "SetQuery",
      "SetDisplayQuery",
      "SetOptions",
      "GetOptions",
      "GetAjax",
      "SetDisplayOptions",
      "GetDisplay",
      "call_api",
      "get_callback_options",
      "RenderLabelandField",
      "RenderParentScript",
      "RenderElementScript",
      "render_inline_js",
      "Render",
      "OnElementChangeJavascript",
      "field_palette",
      "field_color",
      "field_defaults",
      "get_template",
      "get_svg",
      "render_template"
    ],
    "body": "WebFormElement"
  },
  {
    "path": "factory-web/WebFormTest-api.md",
    "title": "WebFormTest API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "WebFormTest"
    ],
    "methods": [
      "get_form_samples",
      "get_form_workflow",
      "get_form_tags",
      "checkform",
      "checkworkflow",
      "checkworkflow_chain"
    ],
    "body": "WebFormTest"
  },
  {
    "path": "factory-web/WebHooks-api.md",
    "title": "WebHooks API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "WebHooks",
      "WebHooksSet",
      "TestWebHooksMethods"
    ],
    "methods": [
      "set_bloom_guid",
      "set_kafka",
      "set_token",
      "set_token_group",
      "patch_param",
      "bloom_table_data",
      "clean",
      "Read",
      "create_guid",
      "bloom_payload",
      "get_hash",
      "stage_reflection",
      "commit",
      "fire_factory",
      "fire_workflow",
      "GetParameters",
      "get_alt_parameters",
      "set_parameter",
      "set_payload",
      "Create",
      "Transform",
      "Update",
      "RenderResult",
      "Reset",
      "ProcessSet",
      "ReadSet",
      "Transform",
      "setUp",
      "run_test",
      "test_payload_case1"
    ],
    "body": "WebHooks, WebHooksSet, TestWebHooksMethods"
  },
  {
    "path": "factory-web/WebObject-api.md",
    "title": "WebObject API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "WebObject"
    ],
    "methods": [
      "load_cdn_mappings",
      "WebIcon",
      "IconNotify",
      "Render"
    ],
    "body": "WebObject"
  },
  {
    "path": "factory-web/WebServer-api.md",
    "title": "WebServer API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Server",
      "GzipRequest",
      "GzipRoute",
      "CachedStaticFiles"
    ],
    "methods": [
      "set_token",
      "set_token_group",
      "set_agent",
      "add_content",
      "connect_redis",
      "render_resource_script",
      "render_resource_css",
      "parse_headers",
      "parse_params",
      "parse_payload",
      "get_string",
      "emerge_report",
      "get_template",
      "render_template",
      "clear_template",
      "render_template_jinja",
      "process_webhook",
      "render_webhook_result",
      "body",
      "get_route_handler",
      "get_response"
    ],
    "body": "Server, GzipRequest, GzipRoute, CachedStaticFiles"
  },
  {
    "path": "factory-web/WebTest-api.md",
    "title": "WebTest API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "WebTest"
    ],
    "methods": [
      "load_config",
      "check_node_installed",
      "check_npm_initialized",
      "install_dependencies",
      "run_linter",
      "check_file",
      "format_files",
      "show_summary"
    ],
    "body": "WebTest"
  },
  {
    "path": "factory-web/migrate_users_to_keycloak-api.md",
    "title": "migrate_users_to_keycloak API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-web/seed_usergroups-api.md",
    "title": "seed_usergroups API",
    "factory": "factory.web",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-conversation/ObjConversationConsole-api.md",
    "title": "ObjConversationConsole API",
    "factory": "factory.conversation",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ConversationInterface",
      "ConversationBroker"
    ],
    "methods": [
      "transmit_message",
      "display_context",
      "display_options",
      "connect",
      "subscribe",
      "run"
    ],
    "body": "ConversationInterface, ConversationBroker"
  },
  {
    "path": "factory-conversation/ObjConversationDialog360-api.md",
    "title": "ObjConversationDialog360 API",
    "factory": "factory.conversation",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ConversationInterface",
      "ConversationBroker"
    ],
    "methods": [
      "transmit_message",
      "display_context",
      "display_options",
      "verify_webhook",
      "verify_signature",
      "handle_webhook",
      "run"
    ],
    "body": "ConversationInterface, ConversationBroker"
  },
  {
    "path": "factory-conversation/ObjConversationDiscord-api.md",
    "title": "ObjConversationDiscord API",
    "factory": "factory.conversation",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ConversationInterface",
      "ConversationBroker"
    ],
    "methods": [
      "transmit_message",
      "display_context",
      "display_options",
      "run"
    ],
    "body": "ConversationInterface, ConversationBroker"
  },
  {
    "path": "factory-conversation/ObjConversationEngine-api.md",
    "title": "ObjConversationEngine API",
    "factory": "factory.conversation",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ConversationInterface",
      "ConversationBroker"
    ],
    "methods": [
      "set_context",
      "transmit_message",
      "transmit_message_file",
      "display_context",
      "display_options",
      "connect",
      "authenticate",
      "send",
      "receive",
      "subscribe",
      "run"
    ],
    "body": "ConversationInterface, ConversationBroker"
  },
  {
    "path": "factory-conversation/ObjConversationGui-api.md",
    "title": "ObjConversationGui API",
    "factory": "factory.conversation",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ConversationInterface",
      "WorkerThread",
      "HeaderWidget",
      "ContextWidget",
      "ContentWidget",
      "FooterWidget",
      "WebViewWidget",
      "ConversationWindow"
    ],
    "methods": [
      "transmit_message",
      "display_context",
      "display_options",
      "run",
      "tick",
      "start_call_timer",
      "stop_call_timer",
      "update_context",
      "show_busy",
      "render_page",
      "set_mode",
      "set_busy",
      "load_url",
      "keyPressEvent"
    ],
    "body": "ConversationInterface, WorkerThread, HeaderWidget, ContextWidget, ContentWidget, FooterWidget, WebViewWidget, ConversationWindow"
  },
  {
    "path": "factory-conversation/ObjConversationInfobip-api.md",
    "title": "ObjConversationInfobip API",
    "factory": "factory.conversation",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ConversationInterface",
      "ConversationBroker"
    ],
    "methods": [
      "transmit_message",
      "display_context",
      "display_options",
      "handle_webhook",
      "run"
    ],
    "body": "ConversationInterface, ConversationBroker"
  },
  {
    "path": "factory-conversation/ObjConversationMessageBird-api.md",
    "title": "ObjConversationMessageBird API",
    "factory": "factory.conversation",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ConversationInterface",
      "ConversationBroker"
    ],
    "methods": [
      "transmit_message",
      "display_context",
      "display_options",
      "verify_signature",
      "handle_webhook",
      "run"
    ],
    "body": "ConversationInterface, ConversationBroker"
  },
  {
    "path": "factory-conversation/ObjConversationMessenger-api.md",
    "title": "ObjConversationMessenger API",
    "factory": "factory.conversation",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ConversationInterface",
      "ConversationBroker"
    ],
    "methods": [
      "transmit_message",
      "display_context",
      "display_options",
      "verify_webhook",
      "verify_signature",
      "handle_message",
      "run"
    ],
    "body": "ConversationInterface, ConversationBroker"
  },
  {
    "path": "factory-conversation/ObjConversationSlack-api.md",
    "title": "ObjConversationSlack API",
    "factory": "factory.conversation",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ConversationInterface",
      "ConversationBroker"
    ],
    "methods": [
      "transmit_message",
      "display_context",
      "display_options",
      "handle_slack_command",
      "run"
    ],
    "body": "ConversationInterface, ConversationBroker"
  },
  {
    "path": "factory-conversation/ObjConversationTelegram-api.md",
    "title": "ObjConversationTelegram API",
    "factory": "factory.conversation",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ConversationInterface",
      "ConversationBroker"
    ],
    "methods": [
      "transmit_message",
      "display_context",
      "display_options",
      "handle_update",
      "run"
    ],
    "body": "ConversationInterface, ConversationBroker"
  },
  {
    "path": "factory-conversation/ObjConversationTui-api.md",
    "title": "ObjConversationTui API",
    "factory": "factory.conversation",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ConversationInterface",
      "ConversationBroker",
      "TuiHeader",
      "TuiContext",
      "TuiContent",
      "TuiFooter"
    ],
    "methods": [
      "transmit_message",
      "display_context",
      "display_options",
      "connect",
      "subscribe",
      "run",
      "update",
      "update_from_state",
      "set_error",
      "set_info",
      "set_help",
      "update",
      "set_input"
    ],
    "body": "ConversationInterface, ConversationBroker, TuiHeader, TuiContext, TuiContent, TuiFooter"
  },
  {
    "path": "factory-conversation/ObjConversationTwilio-api.md",
    "title": "ObjConversationTwilio API",
    "factory": "factory.conversation",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ConversationInterface",
      "ConversationBroker"
    ],
    "methods": [
      "transmit_message",
      "display_context",
      "display_options",
      "verify_signature",
      "handle_webhook",
      "run"
    ],
    "body": "ConversationInterface, ConversationBroker"
  },
  {
    "path": "factory-conversation/ObjConversationWeb-api.md",
    "title": "ObjConversationWeb API",
    "factory": "factory.conversation",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ConversationInterface",
      "ConversationBroker"
    ],
    "methods": [
      "display_context",
      "transmit_message",
      "display_options",
      "handle_receive",
      "handle_send",
      "run"
    ],
    "body": "ConversationInterface, ConversationBroker"
  },
  {
    "path": "factory-conversation/ObjConversationWhatsapp-api.md",
    "title": "ObjConversationWhatsapp API",
    "factory": "factory.conversation",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "WhatsAppConversationHandler"
    ],
    "methods": [
      "get_conversation_code",
      "process_message",
      "send_whatsapp_message"
    ],
    "body": "WhatsAppConversationHandler"
  },
  {
    "path": "factory-ai/ObjAiVision-api.md",
    "title": "ObjAiVision API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAiVision"
    ],
    "methods": [
      "analyse_url",
      "analyse_image",
      "analyse_url_diff",
      "analyse_image_multi"
    ],
    "body": "ObjAiVision"
  },
  {
    "path": "factory-ai/ObjAIImage-api.md",
    "title": "ObjAIImage API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjPrompt"
    ],
    "methods": [
      "set_model",
      "image_prompt"
    ],
    "body": "ObjPrompt"
  },
  {
    "path": "factory-ai/ObjAIImageStableDiffusion-api.md",
    "title": "ObjAIImageStableDiffusion API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjPrompt"
    ],
    "methods": [
      "set_model",
      "image_prompt"
    ],
    "body": "ObjPrompt"
  },
  {
    "path": "factory-ai/ObjAICommit-api.md",
    "title": "ObjAICommit API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjPrompt"
    ],
    "methods": [
      "query_git"
    ],
    "body": "ObjPrompt"
  },
  {
    "path": "factory-ai/ObjAIGemini-api.md",
    "title": "ObjAIGemini API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjPrompt"
    ],
    "methods": [
      "set_model",
      "query_gemini",
      "query_prompt"
    ],
    "body": "ObjPrompt"
  },
  {
    "path": "factory-ai/ObjAILlm-api.md",
    "title": "ObjAILlm API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjPrompt"
    ],
    "methods": [
      "set_model",
      "query_prompt"
    ],
    "body": "ObjPrompt"
  },
  {
    "path": "factory-ai/ObjAILlmLlava-api.md",
    "title": "ObjAILlmLlava API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjPrompt"
    ],
    "methods": [
      "set_model",
      "query_prompt"
    ],
    "body": "ObjPrompt"
  },
  {
    "path": "factory-ai/ObjAILlmOllama-api.md",
    "title": "ObjAILlmOllama API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjPrompt"
    ],
    "methods": [
      "set_model",
      "query_prompt"
    ],
    "body": "ObjPrompt"
  },
  {
    "path": "factory-ai/ObjAiMcpAnthropic-api.md",
    "title": "ObjAiMcpAnthropic API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAiMcpAnthropic"
    ],
    "methods": [
      "prompt"
    ],
    "body": "ObjAiMcpAnthropic"
  },
  {
    "path": "factory-ai/ObjAiMcpBase-api.md",
    "title": "ObjAiMcpBase API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAiMcpBase"
    ],
    "methods": [
      "prompt",
      "embed",
      "capture"
    ],
    "body": "ObjAiMcpBase"
  },
  {
    "path": "factory-ai/ObjAiMcpDatabase-api.md",
    "title": "ObjAiMcpDatabase API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAiMcpDatabase"
    ],
    "methods": [
      "get_schema",
      "get_sql_samples",
      "get_group_names",
      "get_execution_samples",
      "prompt",
      "embed"
    ],
    "body": "ObjAiMcpDatabase"
  },
  {
    "path": "factory-ai/ObjAiMcpGoogle-api.md",
    "title": "ObjAiMcpGoogle API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAiMcpGoogle"
    ],
    "methods": [
      "prompt"
    ],
    "body": "ObjAiMcpGoogle"
  },
  {
    "path": "factory-ai/ObjAiMcpGroq-api.md",
    "title": "ObjAiMcpGroq API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAiMcpGroq"
    ],
    "methods": [
      "prompt"
    ],
    "body": "ObjAiMcpGroq"
  },
  {
    "path": "factory-ai/ObjAiMcpHuggingface-api.md",
    "title": "ObjAiMcpHuggingface API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAiMcpHuggingface"
    ],
    "methods": [
      "prompt"
    ],
    "body": "ObjAiMcpHuggingface"
  },
  {
    "path": "factory-ai/ObjAiMcpMistral-api.md",
    "title": "ObjAiMcpMistral API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAiMcpMistral"
    ],
    "methods": [
      "prompt"
    ],
    "body": "ObjAiMcpMistral"
  },
  {
    "path": "factory-ai/ObjAiMcpOllama-api.md",
    "title": "ObjAiMcpOllama API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAiMcpOllama"
    ],
    "methods": [
      "prompt",
      "embed",
      "chat",
      "reset_context",
      "stream_prompt",
      "get_model_registry",
      "pull_model_set",
      "smoke_test",
      "warm_model",
      "get_loaded_models",
      "get_capabilities"
    ],
    "body": "ObjAiMcpOllama"
  },
  {
    "path": "factory-ai/ObjAiMcpOpenai-api.md",
    "title": "ObjAiMcpOpenai API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAiMcpOpenai"
    ],
    "methods": [
      "prompt"
    ],
    "body": "ObjAiMcpOpenai"
  },
  {
    "path": "factory-ai/ObjAiMcpOpenrouter-api.md",
    "title": "ObjAiMcpOpenrouter API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAiMcpOpenrouter"
    ],
    "methods": [
      "prompt"
    ],
    "body": "ObjAiMcpOpenrouter"
  },
  {
    "path": "factory-ai/ObjAiMcpPlaywright-api.md",
    "title": "ObjAiMcpPlaywright API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAiMcpPlaywright"
    ],
    "methods": [
      "capture",
      "prompt",
      "embed"
    ],
    "body": "ObjAiMcpPlaywright"
  },
  {
    "path": "factory-ai/ObjAITime-api.md",
    "title": "ObjAITime API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAIQuery"
    ],
    "methods": [
      "read",
      "get_date_range",
      "get_training_dataframe",
      "insert_prediction_rows",
      "query"
    ],
    "body": "ObjAIQuery"
  },
  {
    "path": "factory-ai/ObjAITimeProphet-api.md",
    "title": "ObjAITimeProphet API",
    "factory": "factory.ai",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjAIQuery"
    ],
    "methods": [
      "initialize_prophet_model",
      "generate_plots",
      "update_predictions",
      "query"
    ],
    "body": "ObjAIQuery"
  },
  {
    "path": "factory-field/ObjFieldApi-api.md",
    "title": "ObjFieldApi API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldAutoMap-api.md",
    "title": "ObjFieldAutoMap API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderLabelandField",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldBarcode-api.md",
    "title": "ObjFieldBarcode API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldBit-api.md",
    "title": "ObjFieldBit API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldBoolean-api.md",
    "title": "ObjFieldBoolean API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldCheckAccordian-api.md",
    "title": "ObjFieldCheckAccordian API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement",
      "RenderLabelandField"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldCheckStatic-api.md",
    "title": "ObjFieldCheckStatic API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldColour-api.md",
    "title": "ObjFieldColour API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldCurrency-api.md",
    "title": "ObjFieldCurrency API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement",
      "Process"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldCurrencyView-api.md",
    "title": "ObjFieldCurrencyView API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement",
      "Process"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldDate-api.md",
    "title": "ObjFieldDate API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderOptions"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldDateDOB-api.md",
    "title": "ObjFieldDateDOB API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldDateOnly-api.md",
    "title": "ObjFieldDateOnly API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldDatebasic-api.md",
    "title": "ObjFieldDatebasic API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldDatecustom-api.md",
    "title": "ObjFieldDatecustom API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldDateddmmyyyy-api.md",
    "title": "ObjFieldDateddmmyyyy API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldDatefull-api.md",
    "title": "ObjFieldDatefull API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderOptions"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldDaterange-api.md",
    "title": "ObjFieldDaterange API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldDatetime-api.md",
    "title": "ObjFieldDatetime API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderOptions"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldDatetimebasic-api.md",
    "title": "ObjFieldDatetimebasic API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldDualpass-api.md",
    "title": "ObjFieldDualpass API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldEmpty-api.md",
    "title": "ObjFieldEmpty API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldFile-api.md",
    "title": "ObjFieldFile API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "Parse",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldFixedNo-api.md",
    "title": "ObjFieldFixedNo API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldHeading-api.md",
    "title": "ObjFieldHeading API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement",
      "RenderAsMessage"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldIdentity-api.md",
    "title": "ObjFieldIdentity API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldIdnum-api.md",
    "title": "ObjFieldIdnum API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldIdnumber-api.md",
    "title": "ObjFieldIdnumber API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldImage-api.md",
    "title": "ObjFieldImage API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "ImageType"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldInt-api.md",
    "title": "ObjFieldInt API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldLocalJson-api.md",
    "title": "ObjFieldLocalJson API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "Parse",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldLong-api.md",
    "title": "ObjFieldLong API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldMask-api.md",
    "title": "ObjFieldMask API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldMobile-api.md",
    "title": "ObjFieldMobile API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldMonth-api.md",
    "title": "ObjFieldMonth API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldMultiCheck-api.md",
    "title": "ObjFieldMultiCheck API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldMultiDatespicker-api.md",
    "title": "ObjFieldMultiDatespicker API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldMultilist-api.md",
    "title": "ObjFieldMultilist API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "SetOptions",
      "GetOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldMultipair-api.md",
    "title": "ObjFieldMultipair API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "SetOptions",
      "GetOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldMultiquery-api.md",
    "title": "ObjFieldMultiquery API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "SetOptions",
      "GetOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldMultiselect-api.md",
    "title": "ObjFieldMultiselect API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "SetOptions",
      "GetOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldNone-api.md",
    "title": "ObjFieldNone API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderLabelandField",
      "OnElementChangeJavascript"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldNow-api.md",
    "title": "ObjFieldNow API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldNumber-api.md",
    "title": "ObjFieldNumber API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldPostcode-api.md",
    "title": "ObjFieldPostcode API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldQuerydisplay-api.md",
    "title": "ObjFieldQuerydisplay API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "SetOptions",
      "GetOptions",
      "RenderElement",
      "RenderElementOLD"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldQuerydisplayedit-api.md",
    "title": "ObjFieldQuerydisplayedit API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "SetOptions",
      "GetOptions",
      "RenderElement",
      "RenderElementOLD"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldQuerydisplaystatic-api.md",
    "title": "ObjFieldQuerydisplaystatic API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "SetOptions",
      "GetOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldRange-api.md",
    "title": "ObjFieldRange API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "SetQuery",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldSelect-api.md",
    "title": "ObjFieldSelect API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "SetOptions",
      "GetOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldStatic-api.md",
    "title": "ObjFieldStatic API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldTemplate-api.md",
    "title": "ObjFieldTemplate API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldText-api.md",
    "title": "ObjFieldText API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldTime-api.md",
    "title": "ObjFieldTime API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldTiny-api.md",
    "title": "ObjFieldTiny API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldTitatoggle-api.md",
    "title": "ObjFieldTitatoggle API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldTitle-api.md",
    "title": "ObjFieldTitle API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldToggle-api.md",
    "title": "ObjFieldToggle API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldToggleV-api.md",
    "title": "ObjFieldToggleV API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldUpload-api.md",
    "title": "ObjFieldUpload API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldUploadXt-api.md",
    "title": "ObjFieldUploadXt API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "Parse",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldUrl-api.md",
    "title": "ObjFieldUrl API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldUser-api.md",
    "title": "ObjFieldUser API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldValue-api.md",
    "title": "ObjFieldValue API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "SetOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldVoucher-api.md",
    "title": "ObjFieldVoucher API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/BaseFieldInput-api.md",
    "title": "BaseFieldInput API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "BaseFieldInput"
    ],
    "methods": [
      "default_field_width",
      "render_locked_result_card"
    ],
    "body": "BaseFieldInput"
  },
  {
    "path": "factory-field/BaseFieldOption-api.md",
    "title": "BaseFieldOption API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "BaseFieldOption"
    ],
    "methods": [
      "resolve_query",
      "restore_db",
      "fetch_options_sql",
      "fetch_options_callback",
      "build_html_options",
      "render_rpc_script"
    ],
    "body": "BaseFieldOption"
  },
  {
    "path": "factory-field/ObjFieldAvatar-api.md",
    "title": "ObjFieldAvatar API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldBlob-api.md",
    "title": "ObjFieldBlob API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldCamera-api.md",
    "title": "ObjFieldCamera API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderProcessFile",
      "RenderReadFile",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldCheck-api.md",
    "title": "ObjFieldCheck API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderSetValue",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldCheckLeft-api.md",
    "title": "ObjFieldCheckLeft API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderLabelandField",
      "OnElementChangeJavascript"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldCheckgroup-api.md",
    "title": "ObjFieldCheckgroup API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderLabelandField",
      "OnElementChangeJavascript"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldColourPicker-api.md",
    "title": "ObjFieldColourPicker API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldComplete-api.md",
    "title": "ObjFieldComplete API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "SetSource",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldDatalist-api.md",
    "title": "ObjFieldDatalist API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldDate-api.md",
    "title": "ObjFieldDate API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldDateTimeRange-api.md",
    "title": "ObjFieldDateTimeRange API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldDatehtml-api.md",
    "title": "ObjFieldDatehtml API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldDisplay-api.md",
    "title": "ObjFieldDisplay API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldDisplayHtml-api.md",
    "title": "ObjFieldDisplayHtml API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldDisplayStatic-api.md",
    "title": "ObjFieldDisplayStatic API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldEmail-api.md",
    "title": "ObjFieldEmail API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldFileUpload-api.md",
    "title": "ObjFieldFileUpload API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderSetValue",
      "size_human",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldFloat-api.md",
    "title": "ObjFieldFloat API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldGeolocation-api.md",
    "title": "ObjFieldGeolocation API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldHidden-api.md",
    "title": "ObjFieldHidden API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldHiddenStatic-api.md",
    "title": "ObjFieldHiddenStatic API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldList-api.md",
    "title": "ObjFieldList API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "SetOptions",
      "GetOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldLongmobile2-api.md",
    "title": "ObjFieldLongmobile2 API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldLookup-api.md",
    "title": "ObjFieldLookup API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "SetOptions",
      "GetLookupValue",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldMsisdn-api.md",
    "title": "ObjFieldMsisdn API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldNull-api.md",
    "title": "ObjFieldNull API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldPassword-api.md",
    "title": "ObjFieldPassword API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldQuadd-api.md",
    "title": "ObjFieldQuadd API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement",
      "RenderSetValue"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldQuery-api.md",
    "title": "ObjFieldQuery API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldQueryC-api.md",
    "title": "ObjFieldQueryC API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "SetOptions"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldQueryFilter-api.md",
    "title": "ObjFieldQueryFilter API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldQueryFilterMultiple-api.md",
    "title": "ObjFieldQueryFilterMultiple API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldRadio-api.md",
    "title": "ObjFieldRadio API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "SetOptions",
      "GetOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldRadioH-api.md",
    "title": "ObjFieldRadioH API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderLabelandField",
      "OnElementChangeJavascript"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldRadioInline-api.md",
    "title": "ObjFieldRadioInline API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldRadioV-api.md",
    "title": "ObjFieldRadioV API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderLabelandField",
      "OnElementChangeJavascript"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldSelectDisplay-api.md",
    "title": "ObjFieldSelectDisplay API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "SetOptions",
      "GetOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldSignature-api.md",
    "title": "ObjFieldSignature API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldString-api.md",
    "title": "ObjFieldString API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderLabelandField",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldStringQuery-api.md",
    "title": "ObjFieldStringQuery API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderLabelandField",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldSumoselect-api.md",
    "title": "ObjFieldSumoselect API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "SetOptions",
      "GetOptions",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldSumoselectsingle-api.md",
    "title": "ObjFieldSumoselectsingle API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldTimer-api.md",
    "title": "ObjFieldTimer API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldTimestamp-api.md",
    "title": "ObjFieldTimestamp API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldTurnstile-api.md",
    "title": "ObjFieldTurnstile API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldTypeAhead-api.md",
    "title": "ObjFieldTypeAhead API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "GetAjax",
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFormNull-api.md",
    "title": "ObjFormNull API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "WebFormNull"
    ],
    "methods": [
      "RenderElement",
      "RenderMessage"
    ],
    "body": "WebFormNull"
  },
  {
    "path": "factory-field/ObjFieldCodeedit-api.md",
    "title": "ObjFieldCodeedit API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldCodeeditcss-api.md",
    "title": "ObjFieldCodeeditcss API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldCodeeditgherkin-api.md",
    "title": "ObjFieldCodeeditgherkin API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElementOLD"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldCodeedithtml-api.md",
    "title": "ObjFieldCodeedithtml API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldCodeeditjs-api.md",
    "title": "ObjFieldCodeeditjs API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldCodeeditpy-api.md",
    "title": "ObjFieldCodeeditpy API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldCodeeditr-api.md",
    "title": "ObjFieldCodeeditr API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldCodeeditsql-api.md",
    "title": "ObjFieldCodeeditsql API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldEdit-api.md",
    "title": "ObjFieldEdit API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldEditTabulator-api.md",
    "title": "ObjFieldEditTabulator API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderElement"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldCheckgroup-api.md",
    "title": "ObjFieldCheckgroup API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderLabelandField",
      "OnElementChangeJavascript"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldRadioH-api.md",
    "title": "ObjFieldRadioH API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderLabelandField",
      "OnElementChangeJavascript"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-field/ObjFieldRadioV-api.md",
    "title": "ObjFieldRadioV API",
    "factory": "factory.field",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjFieldElement"
    ],
    "methods": [
      "RenderLabelandField",
      "OnElementChangeJavascript"
    ],
    "body": "ObjFieldElement"
  },
  {
    "path": "factory-export/ObjDataExportArrow-api.md",
    "title": "ObjDataExportArrow API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjExportApi"
    ],
    "methods": [
      "OpenFile",
      "CloseFile",
      "WriteHeader",
      "WriteData",
      "EscapeCSV",
      "DefaultExtension"
    ],
    "body": "ObjExportApi"
  },
  {
    "path": "factory-export/ObjDataExportAvro-api.md",
    "title": "ObjDataExportAvro API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjExportApi"
    ],
    "methods": [
      "OpenFile",
      "CloseFile",
      "WriteHeader",
      "WriteData",
      "EscapeCSV",
      "DefaultExtension"
    ],
    "body": "ObjExportApi"
  },
  {
    "path": "factory-export/ObjDataExportBase-api.md",
    "title": "ObjDataExportBase API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjExportBase"
    ],
    "methods": [
      "set_redact_columns"
    ],
    "body": "ObjExportBase"
  },
  {
    "path": "factory-export/ObjDataExportCsv-api.md",
    "title": "ObjDataExportCsv API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjExportApi"
    ],
    "methods": [
      "OpenFile",
      "CloseFile",
      "WriteHeader",
      "WriteData",
      "EscapeCSV",
      "DefaultExtension"
    ],
    "body": "ObjExportApi"
  },
  {
    "path": "factory-export/ObjDataExportCsvProcess-api.md",
    "title": "ObjDataExportCsvProcess API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjExportApi"
    ],
    "methods": [
      "WriteData"
    ],
    "body": "ObjExportApi"
  },
  {
    "path": "factory-export/ObjDataExportGsheets-api.md",
    "title": "ObjDataExportGsheets API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjExportApi"
    ],
    "methods": [
      "OpenFile",
      "CloseFile",
      "WriteHeader",
      "WriteData",
      "EscapeCSV",
      "DefaultExtension"
    ],
    "body": "ObjExportApi"
  },
  {
    "path": "factory-export/ObjDataExportHtml-api.md",
    "title": "ObjDataExportHtml API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjExportApi"
    ],
    "methods": [
      "OpenFile",
      "CloseFile",
      "WriteHeader",
      "WriteData",
      "EscapeCSV",
      "DefaultExtension"
    ],
    "body": "ObjExportApi"
  },
  {
    "path": "factory-export/ObjDataExportJson-api.md",
    "title": "ObjDataExportJson API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "DateTimeEncoder",
      "ObjExportApi"
    ],
    "methods": [
      "default",
      "OpenFile",
      "CloseFile",
      "WriteHeader",
      "WriteData",
      "EscapeCSV",
      "DefaultExtension"
    ],
    "body": "DateTimeEncoder, ObjExportApi"
  },
  {
    "path": "factory-export/ObjDataExportMarkdown-api.md",
    "title": "ObjDataExportMarkdown API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "Datetimeencoder",
      "ObjExportApi"
    ],
    "methods": [
      "default",
      "OpenFile",
      "CloseFile",
      "WriteHeader",
      "WriteData",
      "EscapeCSV",
      "DefaultExtension"
    ],
    "body": "Datetimeencoder, ObjExportApi"
  },
  {
    "path": "factory-export/ObjDataExportMysqltable-api.md",
    "title": "ObjDataExportMysqltable API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjExportApi"
    ],
    "methods": [
      "OpenFile",
      "CloseFile",
      "WriteHeader",
      "DropTable",
      "GetHeaderTypes",
      "GetColumnType",
      "CreateTable",
      "WriteData",
      "DefaultExtension"
    ],
    "body": "ObjExportApi"
  },
  {
    "path": "factory-export/ObjDataExportNdjson-api.md",
    "title": "ObjDataExportNdjson API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjExportApi"
    ],
    "methods": [
      "OpenFile",
      "CloseFile",
      "WriteHeader",
      "WriteData",
      "EscapeCSV",
      "DefaultExtension"
    ],
    "body": "ObjExportApi"
  },
  {
    "path": "factory-export/ObjDataExportOds-api.md",
    "title": "ObjDataExportOds API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjExportApi"
    ],
    "methods": [
      "OpenFile",
      "CloseFile",
      "WriteHeader",
      "WriteData",
      "EscapeCSV",
      "DefaultExtension"
    ],
    "body": "ObjExportApi"
  },
  {
    "path": "factory-export/ObjDataExportOrc-api.md",
    "title": "ObjDataExportOrc API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjExportApi"
    ],
    "methods": [
      "OpenFile",
      "CloseFile",
      "WriteHeader",
      "WriteData",
      "EscapeCSV",
      "DefaultExtension"
    ],
    "body": "ObjExportApi"
  },
  {
    "path": "factory-export/ObjDataExportParquet-api.md",
    "title": "ObjDataExportParquet API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjExportApi"
    ],
    "methods": [
      "OpenFile",
      "CloseFile",
      "WriteHeader",
      "WriteData",
      "EscapeCSV",
      "DefaultExtension"
    ],
    "body": "ObjExportApi"
  },
  {
    "path": "factory-export/ObjDataExportSftp-api.md",
    "title": "ObjDataExportSftp API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjExportApi"
    ],
    "methods": [
      "OpenFile",
      "CloseFile",
      "WriteHeader",
      "WriteData",
      "EscapeCSV",
      "DefaultExtension"
    ],
    "body": "ObjExportApi"
  },
  {
    "path": "factory-export/ObjDataExportSqlite-api.md",
    "title": "ObjDataExportSqlite API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjExportApi"
    ],
    "methods": [
      "OpenFile",
      "CloseFile",
      "WriteHeader",
      "WriteData",
      "EscapeCSV",
      "DefaultExtension"
    ],
    "body": "ObjExportApi"
  },
  {
    "path": "factory-export/ObjDataExportXls-api.md",
    "title": "ObjDataExportXls API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjExportApi"
    ],
    "methods": [
      "OpenFile",
      "CloseFile",
      "WriteHeader",
      "WriteData",
      "DefaultExtension"
    ],
    "body": "ObjExportApi"
  },
  {
    "path": "factory-export/ObjDataExportXlsx-api.md",
    "title": "ObjDataExportXlsx API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjExportApi"
    ],
    "methods": [
      "apply_palette",
      "OpenFile",
      "CloseFile",
      "WriteHeader",
      "WriteData",
      "DefaultExtension"
    ],
    "body": "ObjExportApi"
  },
  {
    "path": "factory-export/ObjDataExportXml-api.md",
    "title": "ObjDataExportXml API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjExportApi"
    ],
    "methods": [
      "OpenFile",
      "CloseFile",
      "WriteHeader",
      "WriteData",
      "EscapeCSV",
      "DefaultExtension"
    ],
    "body": "ObjExportApi"
  },
  {
    "path": "factory-export/ObjDataExportYaml-api.md",
    "title": "ObjDataExportYaml API",
    "factory": "factory.export",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjExportApi"
    ],
    "methods": [
      "OpenFile",
      "CloseFile",
      "WriteHeader",
      "WriteData",
      "EscapeCSV",
      "DefaultExtension"
    ],
    "body": "ObjExportApi"
  },
  {
    "path": "factory-import/ObjDataImportArrow-api.md",
    "title": "ObjDataImportArrow API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "prep_file",
      "open_file",
      "close_file",
      "column_list",
      "next_row"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-import/ObjDataImportAvro-api.md",
    "title": "ObjDataImportAvro API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "prep_file",
      "open_file",
      "close_file",
      "column_list",
      "next_row"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-import/ObjDataImportCSV-api.md",
    "title": "ObjDataImportCSV API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "detect_separator",
      "prep_file",
      "open_file",
      "close_file",
      "column_list",
      "next_row"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-import/ObjDataImportFwf-api.md",
    "title": "ObjDataImportFwf API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "prep_file",
      "open_file",
      "close_file",
      "column_list",
      "next_row"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-import/ObjDataImportGsheets-api.md",
    "title": "ObjDataImportGsheets API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "prep_file",
      "open_file",
      "close_file",
      "column_list",
      "next_row"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-import/ObjDataImportHtml-api.md",
    "title": "ObjDataImportHtml API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "prep_file",
      "open_file",
      "close_file",
      "column_list",
      "next_row"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-import/ObjDataImportJson-api.md",
    "title": "ObjDataImportJson API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "prep_file",
      "open_file",
      "close_file",
      "column_list",
      "next_row"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-import/ObjDataImportLog-api.md",
    "title": "ObjDataImportLog API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "DetectSeparator",
      "PrepFile",
      "OpenFile",
      "CloseFile",
      "ColumnList",
      "NextRow"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-import/ObjDataImportNdjson-api.md",
    "title": "ObjDataImportNdjson API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "prep_file",
      "open_file",
      "close_file",
      "column_list",
      "next_row"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-import/ObjDataImportOds-api.md",
    "title": "ObjDataImportOds API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "prep_file",
      "open_file",
      "close_file",
      "column_list",
      "next_row"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-import/ObjDataImportOrc-api.md",
    "title": "ObjDataImportOrc API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "prep_file",
      "open_file",
      "close_file",
      "column_list",
      "next_row"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-import/ObjDataImportParquet-api.md",
    "title": "ObjDataImportParquet API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "PrepFile",
      "OpenFile",
      "CloseFile",
      "ColumnList",
      "NextRow"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-import/ObjDataImportQuery-api.md",
    "title": "ObjDataImportQuery API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "DetectSeparator",
      "PrepFile",
      "OpenFile",
      "CloseFile",
      "ColumnList",
      "NextRow"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-import/ObjDataImportSftp-api.md",
    "title": "ObjDataImportSftp API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "prep_file",
      "open_file",
      "close_file",
      "column_list",
      "next_row"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-import/ObjDataImportSqlite-api.md",
    "title": "ObjDataImportSqlite API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "prep_file",
      "open_file",
      "close_file",
      "column_list",
      "next_row"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-import/ObjDataImportXls-api.md",
    "title": "ObjDataImportXls API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "Version",
      "OpenFile",
      "ColumnList",
      "NextRow"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-import/ObjDataImportXlsx-api.md",
    "title": "ObjDataImportXlsx API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "Version",
      "PrepFileOLD",
      "PrepFile"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-import/ObjDataImportXml-api.md",
    "title": "ObjDataImportXml API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "prep_file",
      "open_file",
      "close_file",
      "column_list",
      "next_row"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-import/ObjDataImportYaml-api.md",
    "title": "ObjDataImportYaml API",
    "factory": "factory.import",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjImportApi"
    ],
    "methods": [
      "prep_file",
      "open_file",
      "close_file",
      "column_list",
      "next_row"
    ],
    "body": "ObjImportApi"
  },
  {
    "path": "factory-text/ObjTextDict-api.md",
    "title": "ObjTextDict API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextDocForm-api.md",
    "title": "ObjTextDocForm API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "ReadForm",
      "RenderForm",
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextDownloadXlsx-api.md",
    "title": "ObjTextDownloadXlsx API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextField-api.md",
    "title": "ObjTextField API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "checkParam",
      "Process",
      "UnpackType",
      "GetFieldValue"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextForm-api.md",
    "title": "ObjTextForm API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "ReadForm",
      "RenderForm",
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextHelpup-api.md",
    "title": "ObjTextHelpup API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "checkParam",
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextLinuxcmd-api.md",
    "title": "ObjTextLinuxcmd API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextMaps-api.md",
    "title": "ObjTextMaps API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextNavigate-api.md",
    "title": "ObjTextNavigate API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "AddEvent",
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextQRImage-api.md",
    "title": "ObjTextQRImage API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextQuery-api.md",
    "title": "ObjTextQuery API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextQueryfull-api.md",
    "title": "ObjTextQueryfull API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextReportpdf-api.md",
    "title": "ObjTextReportpdf API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "process",
      "build_page"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextReportpdfLocal-api.md",
    "title": "ObjTextReportpdfLocal API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process",
      "BuildPage"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextReportshot-api.md",
    "title": "ObjTextReportshot API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextRunsql-api.md",
    "title": "ObjTextRunsql API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextScreenshot-api.md",
    "title": "ObjTextScreenshot API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextShowPdf-api.md",
    "title": "ObjTextShowPdf API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextSplittext-api.md",
    "title": "ObjTextSplittext API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextTexttosqlin-api.md",
    "title": "ObjTextTexttosqlin API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextTimeListToHuman-api.md",
    "title": "ObjTextTimeListToHuman API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "mark_slot",
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextTimeagoPy-api.md",
    "title": "ObjTextTimeagoPy API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextUser-api.md",
    "title": "ObjTextUser API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextWavePlayer-api.md",
    "title": "ObjTextWavePlayer API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextAuth0-api.md",
    "title": "ObjTextAuth0 API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextBadge-api.md",
    "title": "ObjTextBadge API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextBigavatar-api.md",
    "title": "ObjTextBigavatar API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextButton-api.md",
    "title": "ObjTextButton API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "checkParam",
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextCalculation-api.md",
    "title": "ObjTextCalculation API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextCallout-api.md",
    "title": "ObjTextCallout API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextCreate-api.md",
    "title": "ObjTextCreate API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextCurrency-api.md",
    "title": "ObjTextCurrency API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextDecrypt-api.md",
    "title": "ObjTextDecrypt API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextDocicon-api.md",
    "title": "ObjTextDocicon API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextEmail-api.md",
    "title": "ObjTextEmail API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextEncrypt-api.md",
    "title": "ObjTextEncrypt API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextEscape-api.md",
    "title": "ObjTextEscape API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextExport_workflow-api.md",
    "title": "ObjTextExport_workflow API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextFacebook-api.md",
    "title": "ObjTextFacebook API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextGitbranch-api.md",
    "title": "ObjTextGitbranch API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextGitdate-api.md",
    "title": "ObjTextGitdate API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextHighlight64-api.md",
    "title": "ObjTextHighlight64 API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextIf-api.md",
    "title": "ObjTextIf API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextImage-api.md",
    "title": "ObjTextImage API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextImport_workflow-api.md",
    "title": "ObjTextImport_workflow API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextInitials-api.md",
    "title": "ObjTextInitials API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "abbreviate_name",
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextInt-api.md",
    "title": "ObjTextInt API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextJson-api.md",
    "title": "ObjTextJson API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextLink-api.md",
    "title": "ObjTextLink API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextList-api.md",
    "title": "ObjTextList API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextLookup-api.md",
    "title": "ObjTextLookup API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextModal-api.md",
    "title": "ObjTextModal API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextMp3Player-api.md",
    "title": "ObjTextMp3Player API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextMultiply-api.md",
    "title": "ObjTextMultiply API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextNotation-api.md",
    "title": "ObjTextNotation API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextPrice-api.md",
    "title": "ObjTextPrice API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextProper-api.md",
    "title": "ObjTextProper API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextPublish-api.md",
    "title": "ObjTextPublish API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextQuerybuilder-api.md",
    "title": "ObjTextQuerybuilder API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextRenderJson-api.md",
    "title": "ObjTextRenderJson API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextReport-api.md",
    "title": "ObjTextReport API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "RenderDynampic",
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextSqlFormat-api.md",
    "title": "ObjTextSqlFormat API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextTel-api.md",
    "title": "ObjTextTel API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextXmlToSql-api.md",
    "title": "ObjTextXmlToSql API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextEasypay-api.md",
    "title": "ObjTextEasypay API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "digits_of",
      "Luhn",
      "AltLuhn",
      "EasyPay",
      "Process",
      "Check"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextFHDeletePimsImage-api.md",
    "title": "ObjTextFHDeletePimsImage API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextFHDescription-api.md",
    "title": "ObjTextFHDescription API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "ReadFeatures",
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextFHFeatures-api.md",
    "title": "ObjTextFHFeatures API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "ReadFeatures",
      "Import",
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextFHImages-api.md",
    "title": "ObjTextFHImages API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "ReadFeatures",
      "Import",
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextFHInstalment-api.md",
    "title": "ObjTextFHInstalment API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Compute",
      "BuildGrid",
      "BuildCurrentPrice",
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextFHSettlement-api.md",
    "title": "ObjTextFHSettlement API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "ComputeSettle",
      "Compute",
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextFHTotal-api.md",
    "title": "ObjTextFHTotal API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextNPER-api.md",
    "title": "ObjTextNPER API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextPMT-api.md",
    "title": "ObjTextPMT API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextPV-api.md",
    "title": "ObjTextPV API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextPaymentlink-api.md",
    "title": "ObjTextPaymentlink API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextPrintcurrency-api.md",
    "title": "ObjTextPrintcurrency API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextRATE-api.md",
    "title": "ObjTextRATE API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextTUPdfDecode-api.md",
    "title": "ObjTextTUPdfDecode API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "checkParam",
      "Process",
      "UnpackType",
      "GetFieldValue"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextFixmobile-api.md",
    "title": "ObjTextFixmobile API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextAvatar-api.md",
    "title": "ObjTextAvatar API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextGitbranch-api.md",
    "title": "ObjTextGitbranch API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextGitdate-api.md",
    "title": "ObjTextGitdate API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextMenu-api.md",
    "title": "ObjTextMenu API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextBanner-api.md",
    "title": "ObjTextBanner API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextCode128-api.md",
    "title": "ObjTextCode128 API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextDataimage-api.md",
    "title": "ObjTextDataimage API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextDocimage-api.md",
    "title": "ObjTextDocimage API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextEmoji-api.md",
    "title": "ObjTextEmoji API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextFlag-api.md",
    "title": "ObjTextFlag API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextGauge-api.md",
    "title": "ObjTextGauge API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextGo-api.md",
    "title": "ObjTextGo API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextHighlightJson-api.md",
    "title": "ObjTextHighlightJson API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextHighlightScript-api.md",
    "title": "ObjTextHighlightScript API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextHighlightSql-api.md",
    "title": "ObjTextHighlightSql API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextIframe-api.md",
    "title": "ObjTextIframe API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextKnob-api.md",
    "title": "ObjTextKnob API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextLocal-api.md",
    "title": "ObjTextLocal API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextMermaid-api.md",
    "title": "ObjTextMermaid API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextPanel-api.md",
    "title": "ObjTextPanel API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextQR-api.md",
    "title": "ObjTextQR API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextTilt-api.md",
    "title": "ObjTextTilt API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextTimeago-api.md",
    "title": "ObjTextTimeago API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-text/ObjTextYoutube-api.md",
    "title": "ObjTextYoutube API",
    "factory": "factory.text",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjProcessText"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjProcessText"
  },
  {
    "path": "factory-sms/ObjSmsConnect-api.md",
    "title": "ObjSmsConnect API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSmsApi"
    ],
    "methods": [
      "Version",
      "SetRemote",
      "SetStrategy",
      "Read",
      "SendSMS",
      "CheckReplies",
      "CheckDelivery"
    ],
    "body": "ObjSmsApi"
  },
  {
    "path": "factory-sms/ObjSmsEbulk-api.md",
    "title": "ObjSmsEbulk API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSmsApi"
    ],
    "methods": [
      "SetRemote",
      "SetStrategy",
      "Read",
      "SendSMS",
      "CheckReplies",
      "CheckDelivery"
    ],
    "body": "ObjSmsApi"
  },
  {
    "path": "factory-sms/ObjSmsEsoft-api.md",
    "title": "ObjSmsEsoft API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSmsApi"
    ],
    "methods": [
      "SetRemote",
      "Read",
      "SendSMS",
      "CheckReplies",
      "CheckDelivery"
    ],
    "body": "ObjSmsApi"
  },
  {
    "path": "factory-sms/ObjSmsFreshdesk-api.md",
    "title": "ObjSmsFreshdesk API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSmsApi"
    ],
    "methods": [
      "Version",
      "SetRemote",
      "SetStrategy",
      "Read",
      "SendSMS",
      "CheckReplies",
      "CheckDelivery",
      "stage_and_set"
    ],
    "body": "ObjSmsApi"
  },
  {
    "path": "factory-sms/ObjSmsGrapevine-api.md",
    "title": "ObjSmsGrapevine API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSmsApi"
    ],
    "methods": [
      "Version",
      "SetRemote",
      "SendSMS",
      "Read",
      "Build"
    ],
    "body": "ObjSmsApi"
  },
  {
    "path": "factory-sms/ObjSmsHomechoice-api.md",
    "title": "ObjSmsHomechoice API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSmsHomechoice"
    ],
    "methods": [
      "send"
    ],
    "body": "ObjSmsHomechoice"
  },
  {
    "path": "factory-sms/ObjSmsMT2-api.md",
    "title": "ObjSmsMT2 API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSmsApi"
    ],
    "methods": [
      "Version",
      "SetRemote",
      "SetStrategy",
      "Read",
      "SendSMS",
      "CheckReplies",
      "CheckDelivery"
    ],
    "body": "ObjSmsApi"
  },
  {
    "path": "factory-sms/ObjSmsMT2Utf-api.md",
    "title": "ObjSmsMT2Utf API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSmsApi"
    ],
    "methods": [
      "SetRemote",
      "SetStrategy",
      "Read",
      "HexEncode",
      "SendSMS",
      "CheckReplies",
      "CheckDelivery"
    ],
    "body": "ObjSmsApi"
  },
  {
    "path": "factory-sms/ObjSmsSmsPortal-api.md",
    "title": "ObjSmsSmsPortal API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSmsApi"
    ],
    "methods": [
      "Version",
      "SetRemote",
      "SetStrategy",
      "Create",
      "GenPassword",
      "ReadPage",
      "Modify",
      "GetXmlField",
      "CheckCredits",
      "GetCurrentTime",
      "GetCurrentDate",
      "prepPackageXML",
      "SendSMSCellnumber",
      "SendSMS",
      "CheckReplies",
      "ProcessReplies",
      "CheckDelivery",
      "ProcessDelivery",
      "Read",
      "ProcessResult",
      "Build",
      "Update"
    ],
    "body": "ObjSmsApi"
  },
  {
    "path": "factory-sms/ObjSmsSphinx-api.md",
    "title": "ObjSmsSphinx API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSmsApi"
    ],
    "methods": [
      "SetRemote",
      "SendSMS"
    ],
    "body": "ObjSmsApi"
  },
  {
    "path": "factory-sms/ObjSmsMessagebird-api.md",
    "title": "ObjSmsMessagebird API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSmsApi"
    ],
    "methods": [
      "SetRemote",
      "SetStrategy",
      "GenPassword",
      "GetCurrentTime",
      "GetCurrentDate",
      "SendSMSCellnumber",
      "SendSMS",
      "Read"
    ],
    "body": "ObjSmsApi"
  },
  {
    "path": "factory-sms/ObjNotifyDbus-api.md",
    "title": "ObjNotifyDbus API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjNotifyDbus"
    ],
    "methods": [
      "transmit_message"
    ],
    "body": "ObjNotifyDbus"
  },
  {
    "path": "factory-sms/ObjNotifyDiscord-api.md",
    "title": "ObjNotifyDiscord API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjNotifyDiscord"
    ],
    "methods": [
      "transmit_message"
    ],
    "body": "ObjNotifyDiscord"
  },
  {
    "path": "factory-sms/ObjNotifyPagerduty-api.md",
    "title": "ObjNotifyPagerduty API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjNotifyPagerduty"
    ],
    "methods": [
      "transmit_message",
      "trigger_incident",
      "acknowledge_incident",
      "resolve_incident"
    ],
    "body": "ObjNotifyPagerduty"
  },
  {
    "path": "factory-sms/ObjNotifySlack-api.md",
    "title": "ObjNotifySlack API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjNotifySlack"
    ],
    "methods": [
      "transmit_message",
      "read_messages",
      "transmit_message_file"
    ],
    "body": "ObjNotifySlack"
  },
  {
    "path": "factory-sms/ObjNotifyWhatsapp-api.md",
    "title": "ObjNotifyWhatsapp API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjNotifyWhatsapp"
    ],
    "methods": [
      "transmit_message"
    ],
    "body": "ObjNotifyWhatsapp"
  },
  {
    "path": "factory-sms/ObjSmsMqtt-api.md",
    "title": "ObjSmsMqtt API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSmsApi"
    ],
    "methods": [
      "SetRemote",
      "Read",
      "SendSMS",
      "SendFile",
      "CheckReplies",
      "CheckDelivery"
    ],
    "body": "ObjSmsApi"
  },
  {
    "path": "factory-sms/ObjSmsSlack-api.md",
    "title": "ObjSmsSlack API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSmsApi"
    ],
    "methods": [
      "SetRemote",
      "SetStrategy",
      "Read",
      "SendSMS",
      "SendFile",
      "CheckReplies",
      "CheckDelivery"
    ],
    "body": "ObjSmsApi"
  },
  {
    "path": "factory-sms/ObjSmsSmsPortal-api.md",
    "title": "ObjSmsSmsPortal API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSmsApi"
    ],
    "methods": [
      "Version",
      "SetRemote",
      "SetStrategy",
      "Create",
      "GenPassword",
      "ReadPage",
      "Modify",
      "GetXmlField",
      "CheckCredits",
      "GetCurrentTime",
      "GetCurrentDate",
      "prepPackageXML",
      "SendSMSCellnumber",
      "SendSMS",
      "CheckReplies",
      "ProcessReplies",
      "CheckDelivery",
      "ProcessDelivery",
      "Read",
      "ProcessResult",
      "Build",
      "Update"
    ],
    "body": "ObjSmsApi"
  },
  {
    "path": "factory-sms/ObjSmsVirtual-api.md",
    "title": "ObjSmsVirtual API",
    "factory": "factory.sms",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjSmsApi"
    ],
    "methods": [
      "set_remote",
      "set_strategy",
      "read",
      "send_sms",
      "check_replies",
      "check_delivery"
    ],
    "body": "ObjSmsApi"
  },
  {
    "path": "factory-pages/WebPageApp-api.md",
    "title": "WebPageApp API",
    "factory": "factory.pages",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-pages/WebPageAuth-api.md",
    "title": "WebPageAuth API",
    "factory": "factory.pages",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-pages/WebPageBase-api.md",
    "title": "WebPageBase API",
    "factory": "factory.pages",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-pages/WebPageDocument-api.md",
    "title": "WebPageDocument API",
    "factory": "factory.pages",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-pages/WebPageFlow-api.md",
    "title": "WebPageFlow API",
    "factory": "factory.pages",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-pages/WebPageForm-api.md",
    "title": "WebPageForm API",
    "factory": "factory.pages",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-pages/WebPageGo-api.md",
    "title": "WebPageGo API",
    "factory": "factory.pages",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-pages/WebPageLoginGoogle-api.md",
    "title": "WebPageLoginGoogle API",
    "factory": "factory.pages",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-pages/WebPageMail-api.md",
    "title": "WebPageMail API",
    "factory": "factory.pages",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-pages/WebPagePWA-api.md",
    "title": "WebPagePWA API",
    "factory": "factory.pages",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-pages/WebPagePush-api.md",
    "title": "WebPagePush API",
    "factory": "factory.pages",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-pages/WebPageReport-api.md",
    "title": "WebPageReport API",
    "factory": "factory.pages",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-pages/WebPageWebhook-api.md",
    "title": "WebPageWebhook API",
    "factory": "factory.pages",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [],
    "methods": [],
    "body": ""
  },
  {
    "path": "factory-workflow/ObjWorkflowAcl-api.md",
    "title": "ObjWorkflowAcl API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowAcl"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowAcl"
  },
  {
    "path": "factory-workflow/ObjWorkflowAi-api.md",
    "title": "ObjWorkflowAi API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowAi"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowAi"
  },
  {
    "path": "factory-workflow/ObjWorkflowApi-api.md",
    "title": "ObjWorkflowApi API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowApi"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowApi"
  },
  {
    "path": "factory-workflow/ObjWorkflowCalc-api.md",
    "title": "ObjWorkflowCalc API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowCalc"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowCalc"
  },
  {
    "path": "factory-workflow/ObjWorkflowClassification-api.md",
    "title": "ObjWorkflowClassification API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowClassification"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowClassification"
  },
  {
    "path": "factory-workflow/ObjWorkflowConstants-api.md",
    "title": "ObjWorkflowConstants API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowConstants"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowConstants"
  },
  {
    "path": "factory-workflow/ObjWorkflowDatastore-api.md",
    "title": "ObjWorkflowDatastore API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowDatastore"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowDatastore"
  },
  {
    "path": "factory-workflow/ObjWorkflowDatatransfer-api.md",
    "title": "ObjWorkflowDatatransfer API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowDatatransfer"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowDatatransfer"
  },
  {
    "path": "factory-workflow/ObjWorkflowDecision-api.md",
    "title": "ObjWorkflowDecision API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowDecision"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowDecision"
  },
  {
    "path": "factory-workflow/ObjWorkflowDecisionSegment-api.md",
    "title": "ObjWorkflowDecisionSegment API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowDecisionSegment"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowDecisionSegment"
  },
  {
    "path": "factory-workflow/ObjWorkflowDocument-api.md",
    "title": "ObjWorkflowDocument API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowDocument"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowDocument"
  },
  {
    "path": "factory-workflow/ObjWorkflowEmail-api.md",
    "title": "ObjWorkflowEmail API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowEmail"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowEmail"
  },
  {
    "path": "factory-workflow/ObjWorkflowExport-api.md",
    "title": "ObjWorkflowExport API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowExport"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowExport"
  },
  {
    "path": "factory-workflow/ObjWorkflowFeatureRender-api.md",
    "title": "ObjWorkflowFeatureRender API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowFeatureRender"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowFeatureRender"
  },
  {
    "path": "factory-workflow/ObjWorkflowFeatureStore-api.md",
    "title": "ObjWorkflowFeatureStore API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowFeatureStore"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowFeatureStore"
  },
  {
    "path": "factory-workflow/ObjWorkflowFlow-api.md",
    "title": "ObjWorkflowFlow API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowFlow"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowFlow"
  },
  {
    "path": "factory-workflow/ObjWorkflowGateExclusive-api.md",
    "title": "ObjWorkflowGateExclusive API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowGateExclusive"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowGateExclusive"
  },
  {
    "path": "factory-workflow/ObjWorkflowGateFanIn-api.md",
    "title": "ObjWorkflowGateFanIn API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowGateFanIn"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowGateFanIn"
  },
  {
    "path": "factory-workflow/ObjWorkflowGateFanOut-api.md",
    "title": "ObjWorkflowGateFanOut API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowGateFanOut"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowGateFanOut"
  },
  {
    "path": "factory-workflow/ObjWorkflowGateGather-api.md",
    "title": "ObjWorkflowGateGather API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowGateGather"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowGateGather"
  },
  {
    "path": "factory-workflow/ObjWorkflowGateInclusive-api.md",
    "title": "ObjWorkflowGateInclusive API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowGateInclusive"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowGateInclusive"
  },
  {
    "path": "factory-workflow/ObjWorkflowGateParallel-api.md",
    "title": "ObjWorkflowGateParallel API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowGateParallel"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowGateParallel"
  },
  {
    "path": "factory-workflow/ObjWorkflowGeo-api.md",
    "title": "ObjWorkflowGeo API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowGeocode",
      "ObjWorkflowGeoReverse",
      "ObjWorkflowGeoIp",
      "ObjWorkflowGeoZone"
    ],
    "methods": [
      "execute",
      "execute",
      "execute",
      "execute"
    ],
    "body": "ObjWorkflowGeocode, ObjWorkflowGeoReverse, ObjWorkflowGeoIp, ObjWorkflowGeoZone"
  },
  {
    "path": "factory-workflow/ObjWorkflowGui-api.md",
    "title": "ObjWorkflowGui API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowGui"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowGui"
  },
  {
    "path": "factory-workflow/ObjWorkflowImap-api.md",
    "title": "ObjWorkflowImap API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowImap"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowImap"
  },
  {
    "path": "factory-workflow/ObjWorkflowImport-api.md",
    "title": "ObjWorkflowImport API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowImport"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowImport"
  },
  {
    "path": "factory-workflow/ObjWorkflowMatrix-api.md",
    "title": "ObjWorkflowMatrix API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowMatrix"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowMatrix"
  },
  {
    "path": "factory-workflow/ObjWorkflowNode-api.md",
    "title": "ObjWorkflowNode API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowNode"
    ],
    "methods": [
      "DB",
      "package",
      "archetype",
      "debug",
      "error",
      "note",
      "info",
      "get_queries",
      "sql_get_value",
      "sql_get_values",
      "get_deployment",
      "get_uuid",
      "sql_get_dictionary",
      "add_column",
      "get_domongo",
      "local_patch_param",
      "start_timer",
      "end_timer",
      "update_result_context",
      "set_service_attributes_from_context",
      "queue_async_operation",
      "execute"
    ],
    "body": "ObjWorkflowNode"
  },
  {
    "path": "factory-workflow/ObjWorkflowNotify-api.md",
    "title": "ObjWorkflowNotify API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowNotify"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowNotify"
  },
  {
    "path": "factory-workflow/ObjWorkflowRuleset-api.md",
    "title": "ObjWorkflowRuleset API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowRuleset"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowRuleset"
  },
  {
    "path": "factory-workflow/ObjWorkflowScheduler-api.md",
    "title": "ObjWorkflowScheduler API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowScheduler"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowScheduler"
  },
  {
    "path": "factory-workflow/ObjWorkflowScorecard-api.md",
    "title": "ObjWorkflowScorecard API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowScorecard"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowScorecard"
  },
  {
    "path": "factory-workflow/ObjWorkflowSegment-api.md",
    "title": "ObjWorkflowSegment API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowSegment"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowSegment"
  },
  {
    "path": "factory-workflow/ObjWorkflowSendMail-api.md",
    "title": "ObjWorkflowSendMail API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowSendMail"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowSendMail"
  },
  {
    "path": "factory-workflow/ObjWorkflowSerializer-api.md",
    "title": "ObjWorkflowSerializer API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "WorkflowSerializer"
    ],
    "methods": [
      "export_to_yaml",
      "parse_bpmn",
      "import_from_yaml",
      "export_to_json"
    ],
    "body": "WorkflowSerializer"
  },
  {
    "path": "factory-workflow/ObjWorkflowService-api.md",
    "title": "ObjWorkflowService API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowService"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowService"
  },
  {
    "path": "factory-workflow/ObjWorkflowSignal-api.md",
    "title": "ObjWorkflowSignal API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowSignal"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowSignal"
  },
  {
    "path": "factory-workflow/ObjWorkflowSimul-api.md",
    "title": "ObjWorkflowSimul API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowSimul"
    ],
    "methods": [
      "debug",
      "info",
      "get_template",
      "benchmark_start_simulation",
      "benchmark_end_simulation",
      "benchmark_json_serialization",
      "get_benchmark_metrics",
      "reset_benchmark_metrics",
      "get_presim_data",
      "get_simulation_guids",
      "get_json_from_payload",
      "call_test_api",
      "get_primary_keys",
      "preserve_input",
      "parse_transit",
      "get_node_description",
      "simulation_summary",
      "run_simulation_mode",
      "display_simulation_tracking_summary",
      "closure",
      "save_workflow",
      "load_workflow",
      "trace_guid",
      "run_simulation",
      "run_simulation_api"
    ],
    "body": "ObjWorkflowSimul"
  },
  {
    "path": "factory-workflow/ObjWorkflowSleep-api.md",
    "title": "ObjWorkflowSleep API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowSleep",
      "ObjWorkflowWaitDate",
      "ObjWorkflowWaitTime"
    ],
    "methods": [
      "execute",
      "execute",
      "execute"
    ],
    "body": "ObjWorkflowSleep, ObjWorkflowWaitDate, ObjWorkflowWaitTime"
  },
  {
    "path": "factory-workflow/ObjWorkflowSms-api.md",
    "title": "ObjWorkflowSms API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowSms"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowSms"
  },
  {
    "path": "factory-workflow/ObjWorkflowTicket-api.md",
    "title": "ObjWorkflowTicket API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowTicket"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowTicket"
  },
  {
    "path": "factory-workflow/ObjWorkflowValue-api.md",
    "title": "ObjWorkflowValue API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowValue"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowValue"
  },
  {
    "path": "factory-workflow/ObjWorkflowWebhook-api.md",
    "title": "ObjWorkflowWebhook API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowWebhook"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowWebhook"
  },
  {
    "path": "factory-workflow/ObjWorkflowWorkflow-api.md",
    "title": "ObjWorkflowWorkflow API",
    "factory": "factory.workflow",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjWorkflowWorkflow"
    ],
    "methods": [
      "execute"
    ],
    "body": "ObjWorkflowWorkflow"
  },
  {
    "path": "factory-webhook/ObjHookBuild-api.md",
    "title": "ObjHookBuild API",
    "factory": "factory.webhook",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjHook"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjHook"
  },
  {
    "path": "factory-webhook/ObjHookWorkflow-api.md",
    "title": "ObjHookWorkflow API",
    "factory": "factory.webhook",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjHook"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjHook"
  },
  {
    "path": "factory-webhook/ObjHookBotswana-api.md",
    "title": "ObjHookBotswana API",
    "factory": "factory.webhook",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjHook"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjHook"
  },
  {
    "path": "factory-webhook/ObjHookHCScore-api.md",
    "title": "ObjHookHCScore API",
    "factory": "factory.webhook",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjHook"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjHook"
  },
  {
    "path": "factory-webhook/ObjHookHCScoreAO-api.md",
    "title": "ObjHookHCScoreAO API",
    "factory": "factory.webhook",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjHook"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjHook"
  },
  {
    "path": "factory-webhook/ObjHookHCScoreCR-api.md",
    "title": "ObjHookHCScoreCR API",
    "factory": "factory.webhook",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjHook"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjHook"
  },
  {
    "path": "factory-webhook/ObjHookHCScoreCR_UAT-api.md",
    "title": "ObjHookHCScoreCR_UAT API",
    "factory": "factory.webhook",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjHook"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjHook"
  },
  {
    "path": "factory-webhook/ObjHookHCScoreWA-api.md",
    "title": "ObjHookHCScoreWA API",
    "factory": "factory.webhook",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjHook"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjHook"
  },
  {
    "path": "factory-webhook/ObjHookSabcLicenceCheck-api.md",
    "title": "ObjHookSabcLicenceCheck API",
    "factory": "factory.webhook",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjHook"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjHook"
  },
  {
    "path": "factory-webhook/ObjHookScore-api.md",
    "title": "ObjHookScore API",
    "factory": "factory.webhook",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjHook"
    ],
    "methods": [
      "Process"
    ],
    "body": "ObjHook"
  },
  {
    "path": "factory-webhook/ObjHookGenomiPush-api.md",
    "title": "ObjHookGenomiPush API",
    "factory": "factory.webhook",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjHook"
    ],
    "methods": [
      "update_reservation",
      "update_reservation_list",
      "update_client",
      "update_booking",
      "Process"
    ],
    "body": "ObjHook"
  },
  {
    "path": "factory-webhook/ObjHookDevelopments-api.md",
    "title": "ObjHookDevelopments API",
    "factory": "factory.webhook",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjHook"
    ],
    "methods": [
      "fuzz_match",
      "Process"
    ],
    "body": "ObjHook"
  },
  {
    "path": "factory-webhook/ObjHookDevelopmentsOld-api.md",
    "title": "ObjHookDevelopmentsOld API",
    "factory": "factory.webhook",
    "type": "python",
    "tags": [
      "api"
    ],
    "classes": [
      "ObjHook"
    ],
    "methods": [
      "fuzz_match",
      "Process"
    ],
    "body": "ObjHook"
  }
]