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

📊 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

🔍 TCQL - Time Cockpit Query Language

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

Core Syntax

Specialized Functions

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

Advanced Topics

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

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

Common Scenarios

How-To Guides:

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.

💡 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)

2. Accounting Systems (DATEV, SAP)

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

3. HR Systems

4. Custom Dashboards (Power BI, Tableau)

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

🔐 Security for Developers

🛠️ 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