Search Results for

    Show / Hide Table of Contents

    For Developers

    Welcome to the developer documentation for time cockpit! This section covers everything you need to customize the data model, build integrations, automate workflows, and extend time cockpit's functionality.

    🚀 Quick Start

    New to Time Cockpit Development?

    1. Developer FAQ - Common questions and quick answers
    2. Data Model Overview - Understand the entity structure
    3. Web API Overview - Access time cockpit programmatically
    4. TCQL Overview - Learn the query language

    Popular Use Cases

    • Budgetary Control Implementation
    • Project Budget Tracking
    • JIRA Integration
    • Custom Workflow Automation

    📊 Data Model

    Understand time cockpit's data structure and relationships.

    Core Concepts

    • Entity Relationships - Visual ER diagrams for all domains

      • Project & Billing domain
      • Time & Attendance domain
      • Security & User Management
      • Master Data & Configuration
    • Standard Entities Reference - Complete entity documentation

      • APP_Timesheet, APP_Project, APP_Task
      • Properties, relationships, permissions
      • TCQL and Web API examples
    • Permissions & Security Guide - Security architecture

      • Role-based access control (RBAC)
      • Row-level security patterns
      • Named sets
      • Common permission scenarios

    Customization

    • Data Model Customization Overview
    • Creating Custom Entities
    • Custom Lists
    • Custom Forms
    • Permission Configuration
    • Navigation Customization
    • Dashboards
    • Feature Flags

    🔍 TCQL - Time Cockpit Query Language

    TCQL is the expression-based query language for accessing and manipulating time cockpit data.

    Core Syntax

    • Overview - Introduction to TCQL
    • From Clause - Data source selection
    • Where Clause - Filtering data
    • Select Clause - Projections and aggregations
    • Order By Clause - Sorting results
    • Expression Language - Operators and functions

    Specialized Functions

    • Working Time & Holiday Functions
      • :GetWorkTime() - Calculate working hours
      • :GetWeeklyHoursOfWork() - Expected hours
      • :BookingCompletionDateOfUser() - Closing date
      • :FirstOfMonth(), :LastOfMonth() - Date helpers

    Advanced Topics

    • TCQL AST API - Programmatic query construction

    Example Queries

    Get unbilled hours per project:

    From T In APP_Timesheet
    Where T.APP_Billable = True And T.APP_Billed = False
    Select New With {
        .ProjectCode = T.APP_Project.APP_Code,
        .TotalHours = Sum(T.APP_DurationInHours),
        .Revenue = Sum(T.APP_Revenue)
    }
    

    Find timesheets in wrong department:

    From T In APP_Timesheet
    Where 
        T.APP_Project <> Null And
        T.APP_UserDetail.APP_Department <> T.APP_Project.APP_Customer.APP_Department
    Select T
    

    More examples → Developer FAQ

    🔌 Web API

    Access time cockpit data via REST/OData API.

    API Documentation

    • Overview - API architecture
    • Authentication - OAuth, bearer tokens
    • OData Endpoint - REST CRUD operations
    • Query Endpoint - Execute TCQL via HTTP
    • ExecuteList Endpoint - Run predefined lists
    • ExecuteAction Endpoint - Trigger actions
    • Reporting Endpoint - Generate reports
    • Sample Implementation - Client library

    Quick Examples

    Get current user's timesheets:

    GET https://api.timecockpit.com/odata/APP_Timesheet
      ?$filter=APP_UserDetailUuid eq current-user-uuid
      &$expand=APP_Project,APP_Task
      &$orderby=APP_BeginTime desc
      &$top=50
    

    Create a timesheet:

    POST https://api.timecockpit.com/odata/APP_Timesheet
    Content-Type: application/json
    
    {
      "APP_BeginTime": "2026-02-09T09:00:00Z",
      "APP_EndTime": "2026-02-09T12:30:00Z",
      "APP_Description": "Development work",
      "APP_ProjectUuid": "...",
      "APP_UserDetailUuid": "..."
    }
    

    Execute TCQL query:

    POST https://api.timecockpit.com/query
    Content-Type: application/json
    
    {
      "query": "From T In APP_Timesheet Where T.APP_BeginTime >= @StartDate Select T",
      "parameters": {
        "@StartDate": "2026-02-01T00:00:00Z"
      }
    }
    

    More examples → Web API Documentation

    ⚙️ Scripting & Automation

    Automate workflows and extend functionality using Python (IronPython).

    Core Concepts

    • Scripting Overview - Introduction to scripting
    • Actions - User-triggered operations
    • Triggers - Event-driven automation
    • Automating Scripts - Scheduled execution

    Common Scenarios

    How-To Guides:

    • Add a File Property
    • Add Holidays Using a Script
    • Export Data to Excel
    • Import Data from CSV
    • Import from SQL Server
    • Modify the Data Model
    • Send Mails When Over Budget
    • Use .NET Framework Classes
    • Use C# to Access API
    • Use XML in Scripts

    Example: Auto-Approve Vacation

    def approveVacationTrigger(actionContext):
        dc = actionContext.DataContext
        vacation = actionContext.InputSet.First()
    
        # Auto-approve if less than 1 day
        if vacation.APP_BeginTime == vacation.APP_EndTime:
            vacation.APP_ApprovedTimestampUtc = DateTime.UtcNow
            vacation.APP_Approver = dc.Environment.CurrentUser
            dc.SaveObject(vacation)
    

    More examples → Scripting How-To Guides

    📈 Reporting

    Create custom reports and data visualizations.

    • Overview - Reporting architecture
    • Standard Print View - Built-in templates
    • Custom Reports - Create your own
    • Built-In Reports - Available reports

    💡 Use Cases & Examples

    Real-world implementation examples:

    • Budgetary Control - Project budget tracking with calculated metrics
      • Hours booked vs. budgeted
      • Revenue vs. costs analysis
      • Effective billing rates
      • Python-based list implementation

    More use cases coming soon!

    📦 Integration Patterns

    Common Integration Scenarios

    1. External Project Management (JIRA, Azure DevOps)

    • Sync projects/tasks into time cockpit
    • Push time entries back to external system → JIRA Integration Example

    2. Accounting Systems (DATEV, SAP)

    • Export invoices and billable hours
    • Import customer/project master data → Data Export

    3. HR Systems

    • Sync employee master data
    • Export working time for payroll → Data Import/Export

    4. Custom Dashboards (Power BI, Tableau)

    • Query timesheet data via OData
    • Build real-time dashboards → OData Endpoint

    🔐 Security for Developers

    • Permissions Guide - Implement custom security
    • Default Permissions Migration - Enable new security model
    • AAD Integration - Enterprise authentication

    🛠️ Development Tools

    Testing Your Changes

    TCQL Console: Test queries interactively in the web client Script Debugger: Available in full client for script development API Testing: Use Postman or similar tools with Bearer authentication

    Best Practices

    1. Always test permissions - Verify users can't access unauthorized data
    2. Use transactions - Wrap multi-step operations in BeginTransaction()/CommitTransaction()
    3. Handle errors gracefully - Use try/catch blocks in scripts
    4. Document custom code - Add comments explaining business logic
    5. Version control - Export data model changes regularly

    📞 Getting Help

    Resources

    • Developer FAQ - Quick answers to common questions
    • Release Notes - Stay updated on API changes
    • Support - Contact time cockpit support for technical assistance

    Community

    • Share custom scripts and solutions
    • Learn from others' implementations
    • Contribute use cases and examples

    Looking for User Documentation?

    If you're looking for information on how to use time cockpit as an end user: → For Users

    • Improve this Doc
    In This Article
    Back to top Copyright © 2025 software architects gmbh